【文档资料】【精品课件】 精品课件-8051单片机实验课件-单片机实验_第1页
【文档资料】【精品课件】 精品课件-8051单片机实验课件-单片机实验_第2页
【文档资料】【精品课件】 精品课件-8051单片机实验课件-单片机实验_第3页
【文档资料】【精品课件】 精品课件-8051单片机实验课件-单片机实验_第4页
【文档资料】【精品课件】 精品课件-8051单片机实验课件-单片机实验_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、关于 8051单片机实验1. 首次多专业集中设课2. 以程序设计为主要内容 熟悉单片机程序开发环境 掌握单片机内、外资源使用方法 单片机汇编语言程序编写与调试9/2/2022实验环境1. 单片机仿真器可以控制程序运行过程的“单片机9/2/20222. 单片机实验板单片机程序运行载体9/2/20223. 单片机程序集成开发环境中文版 MedWin 2.39文本编辑器生成、编辑程序文本编译器/汇编器将C/汇编语言源程序 翻译为二进制机器程序链接器将二进制机器程序转换为带 调试信息的可执行程序调试器用多种调试方式运行程序9/2/2022实验方法1. 功能演示2. 程序编写调试练习调用单片机内、外部资

2、源的例如了解各种资源的使用方法修改例如程序,上机调试实现新的功能锻炼初步的程序设计、调试能力9/2/2022运行集成开发环境1. 目标板、仿真器加电加电顺序先目标板;后仿真器 真实环境仿真/模拟仿真选择断电顺序先仿真器;后目标板2. 启动集成开发环境 关闭注册提示 选择工作目录9/2/2022创立源程序/生成并下载目标程序1. 调用文本编辑功能录入源程序文本生成 .asm文件2. 调用汇编功能对.asm文件汇编生成 .obj文件3. 调用链接功能对.obj文件链接生成 .hex文件4. 将目标代码装入仿真器进行调试9/2/2022调试手段1. 观察项2. 运行方式 程序运行中,内、外部资源工作

3、状态的观察窗口。全速运行单步运行跟踪运行运行到断点运行到光标9/2/2022并行数据操作程序调试练习例1:跑马灯通过 P1口采用负逻辑控制,0点亮,1熄灭。9/2/2022程序清单 MOV A, #0FFH ;去除挂接在总线上的数码管的显示内容 MOV DPTR, #00H MOVX DPTR,A MOV A,#07FH ;赋初始值并在发光二极管上显示该数值 MOV P1,ALOOP: CALL DELAY CALL DELAY RR A ;A存放器内容右移1位并送发光二极管显示 MOV P1,A AJMP LOOP ;无限循环DELAY: MOV R5,#0H ;延时子程序D1: MOV R

4、6,#0H DJNZ R6,$ DJNZ R5,D1 RET END9/2/2022 全速运行3种方法 单步运行3种方法调试 观察发光二极管点亮位置移动方向,那条指令决定发光二极管移动方向。 观察发光二极管点亮位置移动速度,那段程序决定发光二极管移动速度。 观察第3次循环结束时存放器A、P1的值,发光二极管的点亮状态。9/2/2022 跟踪运行3种方法 观察运行中除了存放器A、P1的值在变,还有哪些存放器的内容在变。9/2/2022例2:数码管DS1点亮控制“共阳连接,负逻辑编码控制9/2/2022ORG 0000HLJMP INITTAB:DB0C0H,0F9H,0A4H,0B0H,099H

5、,092H,082H,0F8H; 段码0-7DB080H,090H,088H,083H,0C6H,0A1H,086H,08EH; 段码8-FINIT:MOV A,#0FFH ;去除挂接在总线上的数码管的显示内容MOV DPTR,#00HMOVX DPTR,AMOV R1,#00H;操作数据初始值MOV A,R1MAIN: MOV DPTR,#TAB;读取与A中数值对应的显示段码MOVC A,A+DPTRMOV P1,A;段码送并行口1显示CALL DELAYCALL DELAYCALL DELAYCALL DELAYCALL DELAY程序清单9/2/2022 INC R1 ;操作数据(R1)

6、增1 MOV A,R1 CJNE A,#10H,MAIN;检查操作数据是否大于显示范围F SJMP INIT;无限循环DELAY: MOV R5,#0H;延时子程序D1: MOV R6,#0H DJNZ R6,$ DJNZ R5,D1 RET END9/2/2022 运行到断点1 运行到断点2调试源程序第14行设断点,全速运行至断点单步执行第14、15行指令,观察存放器A的值及数码管显示数值源程序第24行设断点,全速运行至断点观察存放器A的值,A中能否为其它值9/2/2022例3:数码管DS2点亮控制通过总线扩展实现的数码管点亮控制9/2/2022程序清单ORG 0000HLJMP INITT

7、AB:DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H; 段码0-7DB080H,090H,088H,083H,0C6H,0A1H,086H,08EH; 段码8-FINIT:MOV R1,#00H;操作数据初始值MOV A,R1MAIN: MOV DPTR,#TAB;读取与A中数值对应的显示段码MOVC A,A+DPTRMOV DPTR,#00H;段码送总线地址0000H单元显示MOVX DPTR,ACALL DELAYCALL DELAYCALL DELAYCALL DELAYCALL DELAYINC R1;操作数据(R1)增1MOV A,R19/2/20

8、22 CJNE A,#10H,MAIN;检查操作数据是否大于显示范围F SJMP INIT;无限循环DELAY: MOV R5,#0H;延时子程序D1: MOV R6,#0H DJNZ R6,$ DJNZ R5,D1 RET END调试运行到光标光标放在源程序第11行,运行至光标然后单步执行第11、12、13行指令9/2/2022例4:按键控制操作利用P3口的局部口线实现并行数据输入9/2/2022程序清单DISP_BUFEQUP1;发光二级管显示端口INPUT_BUFEQU P3;准并行数据按键状态输入端口KEYEQU30H;按键状态暂存单元MAIN:MOVDPTR,#0MOVA,#0FFH

9、MOVXDPTR,A;去除挂接在总线上的数码管的显示内容MOVDISP_BUF,A;去除挂接在P1口上的数码管的显示内容MOVKEY,#0HMOVA,#0FEH;发光二极管循环移位操作初始值L1:RLA;发光二极管循环右移操作CALLDELAYMOVDISP_BUF,A;发光二极管显示刷新CALLPROC;调用延时处理子程序SJMPL19/2/2022PROC:PUSHACC;根据键值确定调用延时子程序的次数MOVA,KEYCJNEA,#01H,PR1SJMPPR7PR1:CJNEA,#02H,PR2SJMPPR6PR2:CJNEA,#03H,PR3SJMPPR5PR3:CJNEA,#04H,

10、PR8SJMPPR4PR4:CALLDELAYPR5:CALLDELAYPR6:CALLDELAYPR7:CALLDISPLAY;调用显示子程序PR8:POPACCRET9/2/2022DISPLAY:MOVDPTR,#TAB;在数码管2上显示对应的键值MOVA,KEYMOVCA,A+DPTRMOVDPTR,#0MOVXDPTR,ARETDELAY:MOVR7,#0H;延时子程序D1:MOVR6,#0HDJNZR6,$ MOVR5,INPUT_BUF ;从P3口读入按键状态CJNER5,#0FBH,D2 ;根据所按的键存储对应的键值1-4MOVKEY,#1D2:CJNER5,#0F7H,D3M

11、OVKEY,#2D3:CJNER5,#0EFH,D4MOVKEY,#39/2/2022D4:CJNER5,#0DFH,D5MOVKEY,#4D5:DJNZR7,D1 RET TAB:DB0FFH,0F9H,0A4H,0B0H,099H;显示字符段码表END9/2/2022本节作业1. 观察与思考1-1到1-52. 练习题一 1-1/1-21-1要求: 解决问题的思路/理由 解决方法用什么指令 修改后的源程序,该过或添加的 指令加下划线9/2/2022中断控制操作程序调试练习中断控制原理TCONIPIESCONTIRI+TXRXEX0IE0TF0TF1IE1ET0EX1ET1ESIT0IT1边沿

12、边沿电平电平PX0PX1PT0PT1PSC/T0C/T1INT0EA矢量地址矢量地址INT1PCPC高级低级中断请求中断请求9/2/2022操作方法B8HB9HBAHBBHBCH位地址PX0PT0PX1PT1PSIPA8HA9HAAHABHACHAFH位地址EX0ET0EX1ET1ESEAIE88H89H8AH8BH8DH8FH位地址IT0IE0IT1IE1TF0TF1TCON98H99H位地址R1T1SCON中断优先级寄存器IP(B8H)中断允许寄存器IE(A8H)定时计数器控制寄存器TCON(88H)串行通信控制寄存器SCON(98H)9/2/2022例5:中断控制程序调试外部中断触发电路

13、9/2/2022 ORG 0000H LJMP INITIAL ;主程序入口 ORG 0003H LJMP STAR ;外中断0效劳程序入口,开始键STAR ORG 0013H LJMP STOP ;外中断1效劳程序入口 停止键STOP ORG 0100HINITIAL: MOV A,#0FFH MOV P1,#0FFH ;熄灭全部发光二极管 MOV DPTR,#00H MOVX DPTR,A ;去除数码管2DS2显示 MOV A,#0FEH ;点亮发光二极管的初始数据 MOV R1,#1H;发光二极管点亮位置初值 MOV IP,#01H ;设置INT0开始键STAR为高优先级 MOV TCO

14、N,#05H ;外中断采用边沿触发 SETB EX1 ;INT1停止键STOP开中断 SETB EA ;开放中断程序清单9/2/2022LOOP: CLR EA;关闭中断 RL A MOV P1,A;刷新发光二极管控制数据 INC R1;发光二极管点亮位置计数值增1 SETB EA;开放中断 LCALL DELAY1 ;延时 LCALL DELAY1 CJNE R1,#8,LOOP ;发光二极管点亮位置计数值有效性检测 MOV R1,#0H ;发光二极管点亮位置计数值等于8那么回0 SJMP LOOP ;无限次循环;停止键的中断效劳程序STOP: PUSH ACC;保护A存放器内容 MOV A

15、,R1;读取发光二极管点亮位置计数值 MOV DPTR,#TAB MOVC A,A+DPTR;获取发光二极管点亮位置计数值的显示段码 MOV DPTR,#00H MOVX DPTR,A;发光二极管点亮位置计数值的显示数据送显示 SETB EX0 ;INT0启动键STAR开中断 JNZ $;等待重新启动条件-A=09/2/2022 MOV A,#0FFH MOVX DPTR,A ;去除数码管2DS2显示 CLR EX0 ;禁止INT0中断防止程序误动作 POP ACC ;恢复A存放器内容 CLR IE1;去除INT1中断标志防止程序误动作 RETI ;中断返回 ;启动键的中断效劳程序STAR:

16、MOV A,#00H;设置启动条件-A=0 CLR IE0;去除INT0中断标志防止程序误动作 RETI;中断返回TAB: DB0C0H,0F9H,0A4H,0B0H,099H ;0-4段码 DB092H,082H,0F8H,080H ;5-8段码DELAY1: MOV R6,#0;延时子程序D1: MOV R7,#0 DJNZ R7,$ DJNZ R6,D1 RET9/2/2022定时器/计数器操作程序调试练习定时器/计数器工作原理OSC 12 计数器TF T0(P3.4) TR0GATE P3.2中断计数器溢出,TF=1发出中断申请9/2/2022寄存器D7D6D5D4D3D2D1D0TM

17、ODGATEM1M0GATEM1M0定时/计数器1定时/计数器0 定时/计数选择计数器定时器 工作方式选择方式1方式2M1/M0 = 01M1/M0 = 10 控制方式选择TRx单独控制TRx与INTx共同控制GATE = 0GATE = 1操作方法9/2/2022XXXXXXXXTHxD0D1D2D3D4D5D6D7寄存器XXXXXXXXTLxD0D1D2D3D4D5D6D7寄存器 计数值装载寄存器D7D6D5D4D3D2D1D0TCONTF1TR1TF0TR0 启动控制9/2/2022例6:计数器程序调试外部计数脉冲输入电路9/2/2022DP2EQU00000HDP_L EQU 30H

18、;低位数值暂存器DP_H EQU 31H;高位数值暂存器MAIN: MOV TMOD,#01100110B ;C/T0,C/T1工作在方式2MOVA,#0;显示初值为0MOVDP_L,AMOVDP_H,ACALLDISPLAY;调用显示子程序显示初值0MOVTL0,#0;C/T0置初值0MOVTL1,#0;C/T1置初值0SETBTR1;启动计数器1LOOP:MOVA,TL0;读计数器0的计数值CJNEA,#10H,L1;如果A中为16时MOVTL0,#0;计数器0清0L1:MOVDP_H,A;在DS2显示计数器0的计数值MOVA,TL1;读计数器1的计数值CJNEA,#10H,L2;如果A中

19、为16时MOVTL1,#0;计数器1清0程序清单9/2/2022L2: MOV DP_L,A;在DS2显示计数器0的计数值 CALLDISPLAY;调用显示子程序显示计数值 SJMPLOOP ;无限次循环DISPLAY: MOVA,DP_L;读低位显示值 CALLDECODE;调用换码子程序 MOVDPTR,#DP2;显示段码送DS2 MOVXDPTR,A MOVA,DP_H;读高位显示值 CALLDECODE;调用换码子程序 MOVP1,A;显示段码送DS1 RETDECODE: MOVDPTR,#TAB MOVCA,A+DPTR RET9/2/2022DELAY: MOVR5,#80HD1

20、: MOVR6,#0H DJNZR6,$ DJNZR5,D1 RETTAB: DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H; 段码0-7 DB080H,090H,088H,083H,0C6H,0A1H,086H,08EH; 段码8-F END 9/2/2022例7:定时器程序调试DS1EQUP1;数码管1DS1访问地址DS2EQU0H;数码管2DS2访问地址US100EQU30H;100uS 软件计数器地址MS1EQU31H;1MS 软件计数器地址MS100EQU32H;100MS 软件计数器地址S1EQU33H;1S 软件计数器地址ORG0000HAJM

21、PMAINORG000BH;定时器/计数器0中断效劳程序入口地址AJMPTIMERMAIN:MOVA,#0FFH;去除显示MOVDS1,AMOVDPTR,#DS2MOVXDPTR,ACLRA;软件计数器清09/2/2022MOVUS100,AMOVMS1,AMOVMS100,AMOVS1,AMOVTMOD,#02H;定时器/计数器0 工作于方式二MOVTL0,#155;定时器/计数器0 100uS计数值MOVTH0,#155;定时器/计数器0 重装填计数值SETBTR0;启动定时器/计数器0 计数SETBET0;开放定时器/计数器0 中断SETBEA;中断允许SJMP$TIMER:INCUS1

22、00;100uS软件计数器加1MOVR0,#US100CJNER0,#10,TIM3;计数未到达1MS转TIM3MOVUS100,#0;否那么100uS软件计数器清0INCMS1;1MS软件计数器加1INCR09/2/2022CJNER0,#100,TIM3;计数未到达100MS转TIM3MOVMS1,#0;否那么1MS软件计数器清0INCMS100;100MS软件计数器加1INCR0CJNER0,#10,TIM2;计数未到达1S转TIM2MOVMS100,#0;100MS软件计数器清0INCS1;1S软件计数器加1INCR0CJNER0,#10,TIM1;计数未到达10S转TIM1MOVS1

23、,#0;1S软件计数器清0TIM1:MOVA,S1;读取秒计数值CALLDECODE;转换为显示段码MOVDS1,A;秒计数值送数码管1显示TIM2:MOVA,MS100;读取100毫秒计数值CALLDECODE;转换为显示段码MOVDPTR,#DS2MOVXDPTR,A;100毫秒计数值送数码管2显示TIM3:RETI;中断返回9/2/2022DECODE:MOVDPTR,#TAB;段码表头地址送DPTRMOVCA,A+DPTR; 读取显示段码数据RET;子程序返回TAB:DB 0C0H,0F9H,0A4H,0B0H,099H;0-4段码DB 092H,082H,0F8H,080H,090H

24、;5-9段码END9/2/2022本节作业1. 练习题二 2-1 12. 练习题二 2-1 2-4任选1题以上各题要求同1-13. 练习题二 2-39/2/2022串行数据传送操作程序调试练习准备工作1. 串行通信接口工作方式设置2. 串行通信中断控制设置3. 波特率发生器设置9/2/2022例8:串行通信程序调试PC机串行通信程序调试环境9/2/2022DP2EQU00000H;数码管2DS2访问地址TIM_LEQU 0FDH;定时器/计数器1计数值9600波特率TIM_HEQU 0FDH ;定时器/计数器1 重装填计数值DP_L EQU 40H ;数码管2DS2显示数据缓冲器DP_H EQ

25、U 41H;数码管1DS1显示数据缓冲器FLAGBIT01H;按键有效标志ORG 0000HLJMP MAIN ;转主程序ORG 0023HLJMP RECE ;转串行通信中断效劳程序MAIN: MOV TMOD,#00100000B ;定时器/计数器1 工作于方式二 MOV TH1,#TIM_H ;定时器/计数器1重装填值MOV TL1,#TIM_L ;定时器/计数器1计数值SETB TR1 ;启动定时器/计数器1计数 MOV SCON,#01010000B ;串行端口工作于方式1SETB ES ;开放串行端口中断SETB EA ;中断允许9/2/2022LOOP:CALLKEYBOARD

26、;调用键值读取子程序CJNEA,#0FFH,L0;键值不为FFH表示收到数据CLRFLAG;去除有键按下标志SJMPLOOP ;键值为FFH无按键按下不作处理L0:JBFLAG,LOOP;按下的按键尚未释放不作处理ADDA,#30H;键值小于10,加30H转换为ASCII码MOVSBUF,A;发送SETBFLAG;置位有键按下的标志SJMPLOOP;无限次循环 RECE: JNBTI,REC1;非发送转接收处理CLRTI ;去除发送中断标志 RETI ;中断返回REC1: PUSH ACC ;保护累加器AMOVA,SBUF ;接收串行数据 PUSHACC;暂存ANLA,#0FH;取低4位MOVDP_L,A;送低位显示数据缓冲器9/2/2022POP ACC ;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论