8051单片机实验ppt课件_单片机实验.ppt

上传人:小飞机 文档编号:4009654 上传时间:2023-03-31 格式:PPT 页数:51 大小:2.28MB
返回 下载 相关 举报
8051单片机实验ppt课件_单片机实验.ppt_第1页
第1页 / 共51页
8051单片机实验ppt课件_单片机实验.ppt_第2页
第2页 / 共51页
8051单片机实验ppt课件_单片机实验.ppt_第3页
第3页 / 共51页
8051单片机实验ppt课件_单片机实验.ppt_第4页
第4页 / 共51页
8051单片机实验ppt课件_单片机实验.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《8051单片机实验ppt课件_单片机实验.ppt》由会员分享,可在线阅读,更多相关《8051单片机实验ppt课件_单片机实验.ppt(51页珍藏版)》请在三一办公上搜索。

1、2023/3/31,电子工程设计中心,关于 8051单片机实验,1.首次多专业集中设课,2.以程序设计为主要内容,熟悉单片机程序开发环境,掌握单片机内、外资源使用方法,单片机汇编语言程序编写与调试,2023/3/31,电子工程设计中心,实验环境,1.单片机仿真器,可以控制程序运行过程的“单片机”,2023/3/31,电子工程设计中心,2.单片机实验板,单片机程序运行载体,2023/3/31,电子工程设计中心,3.单片机程序集成开发环境,中文版 MedWin 2.39,文本编辑器生成、编辑程序文本,编译器/汇编器将C/汇编语言源程序 翻译为二进制机器程序,链接器将二进制机器程序转换为带 调试信息

2、的可执行程序,调试器用多种调试方式运行程序,2023/3/31,电子工程设计中心,实验方法,1.功能演示,2.程序编写调试练习,调用单片机内、外部资源的示例,了解各种资源的使用方法,修改示例程序,上机调试实现新的功能,锻炼初步的程序设计、调试能力,2023/3/31,电子工程设计中心,运行集成开发环境,1.目标板、仿真器加电,加电顺序先目标板;后仿真器,真实环境仿真/模拟仿真选择,断电顺序先仿真器;后目标板,2.启动集成开发环境,关闭注册提示,选择工作目录,2023/3/31,电子工程设计中心,创建源程序/生成并下载目标程序,1.调用文本编辑功能,录入源程序文本生成.asm文件,2.调用汇编功

3、能,对.asm文件汇编生成.obj文件,3.调用链接功能,对.obj文件链接生成.hex文件,4.将目标代码装入仿真器进行调试,2023/3/31,电子工程设计中心,调试手段,1.观察项,2.运行方式,程序运行中,内、外部资源工作状态的观察窗口。,全速运行,单步运行,跟踪运行,运行到断点,运行到光标,2023/3/31,电子工程设计中心,并行数据操作程序调试练习,例1:跑马灯,通过 P1口采用负逻辑控制,0点亮,1熄灭。,2023/3/31,电子工程设计中心,程序清单,MOV A,#0FFH;清除挂接在总线上的数码管的显示内容 MOV DPTR,#00H MOVX DPTR,A MOV A,#

4、07FH;赋初始值并在发光二极管上显示该数值 MOV P1,ALOOP:CALL DELAY CALL DELAY RR A;A寄存器内容右移1位并送发光二极管显示 MOV P1,A AJMP LOOP;无限循环DELAY:MOV R5,#0H;延时子程序D1:MOV R6,#0H DJNZ R6,$DJNZ R5,D1 RET END,2023/3/31,电子工程设计中心,全速运行(3种方法),单步运行(3种方法),调试,观察发光二极管点亮位置移动方向,那条指令决定发光二极管移动方向。,观察发光二极管点亮位置移动速度,那段程序决定发光二极管移动速度。,观察第3次循环结束时寄存器A、P1的值,

5、发光二极管的点亮状态。,2023/3/31,电子工程设计中心,跟踪运行(3种方法),观察运行中除了寄存器A、P1的值在变,还有哪些寄存器的内容在变。,2023/3/31,电子工程设计中心,例2:数码管(DS1)点亮控制,“共阳”连接,负逻辑编码控制,2023/3/31,电子工程设计中心,ORG 0000HLJMP INITTAB:DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H;段码0-7DB080H,090H,088H,083H,0C6H,0A1H,086H,08EH;段码8-FINIT:MOV A,#0FFH;清除挂接在总线上的数码管的显示内容MOV DP

6、TR,#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,程序清单,2023/3/31,电子工程设计中心,INC R1;操作数据(R1)增1 MOV A,R1 CJNE A,#10H,MAIN;检查操作数据是否大于显示范围(F)SJMP INIT;无限循环DELAY:MOV R5,#0H;延时子程序D1:MOV R6,#0H DJNZ

7、R6,$DJNZ R5,D1 RET END,2023/3/31,电子工程设计中心,运行到断点1,运行到断点2,调试,源程序第14行设断点,全速运行至断点,单步执行第14、15行指令,,观察寄存器A的值及数码管显示数值,源程序第24行设断点,全速运行至断点,观察寄存器A的值,A中能否为其它值,2023/3/31,电子工程设计中心,例3:数码管(DS2)点亮控制,通过总线扩展实现的数码管点亮控制,2023/3/31,电子工程设计中心,程序清单,ORG 0000HLJMP INITTAB:DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H;段码0-7DB080H,0

8、90H,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,R1,2023/3/31,电子工程设计中心,CJNE A,#10H,MAIN;检查操作数据是否大于显示范围(F)SJMP INIT;无限循

9、环DELAY:MOV R5,#0H;延时子程序D1:MOV R6,#0H DJNZ R6,$DJNZ R5,D1 RET END,调试,运行到光标,光标放在源程序第11行,运行至光标,然后单步执行第11、12、13行指令,2023/3/31,电子工程设计中心,例4:按键控制操作,利用P3口的部分口线实现并行数据输入,2023/3/31,电子工程设计中心,程序清单,DISP_BUFEQUP1;发光二级管显示端口INPUT_BUFEQU P3;准并行数据(按键状态)输入端口KEYEQU30H;按键状态暂存单元MAIN:MOVDPTR,#0MOVA,#0FFHMOVXDPTR,A;清除挂接在总线上的

10、数码管的显示内容MOVDISP_BUF,A;清除挂接在P1口上的数码管的显示内容MOVKEY,#0HMOVA,#0FEH;发光二极管循环移位操作初始值L1:RLA;发光二极管循环右移操作CALLDELAYMOVDISP_BUF,A;发光二极管显示刷新CALLPROC;调用延时处理子程序SJMPL1,2023/3/31,电子工程设计中心,PROC:PUSHACC;根据键值确定调用延时子程序的次数MOVA,KEYCJNEA,#01H,PR1SJMPPR7PR1:CJNEA,#02H,PR2SJMPPR6PR2:CJNEA,#03H,PR3SJMPPR5PR3:CJNEA,#04H,PR8SJMPP

11、R4PR4:CALLDELAYPR5:CALLDELAYPR6:CALLDELAYPR7:CALLDISPLAY;调用显示子程序PR8:POPACCRET,2023/3/31,电子工程设计中心,DISPLAY: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,D3

12、MOVKEY,#2D3:CJNER5,#0EFH,D4MOVKEY,#3,2023/3/31,电子工程设计中心,D4:CJNER5,#0DFH,D5MOVKEY,#4D5:DJNZR7,D1 RET TAB:DB0FFH,0F9H,0A4H,0B0H,099H;显示字符段码表END,2023/3/31,电子工程设计中心,本节作业,1.观察与思考1-1到1-5,2.练习题一 1-1/1-2,1-1要求:,解决问题的思路/理由,解决方法用什么指令,修改后的源程序,该过或添加的 指令加下划线,2023/3/31,电子工程设计中心,中断控制操作程序调试练习,中断控制原理,2023/3/31,电子工程设

13、计中心,操作方法,2023/3/31,电子工程设计中心,例5:中断控制程序调试,外部中断触发电路,2023/3/31,电子工程设计中心,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;清除数码管2(DS2)显示 MOV A,#0FEH;点亮发光二极管的初始数据 MOV R1

14、,#1H;发光二极管点亮位置初值 MOV IP,#01H;设置INT0(开始键STAR)为高优先级 MOV TCON,#05H;外中断采用边沿触发 SETB EX1;INT1(停止键STOP)开中断 SETB EA;开放中断,程序清单,2023/3/31,电子工程设计中心,LOOP:CLR EA;关闭中断 RL A MOV P1,A;刷新发光二极管控制数据 INC R1;发光二极管点亮位置计数值增1 SETB EA;开放中断 LCALL DELAY1;延时 LCALL DELAY1 CJNE R1,#8,LOOP;发光二极管点亮位置计数值有效性检测 MOV R1,#0H;发光二极管点亮位置计数

15、值等于8则回0 SJMP LOOP;无限次循环;停止键的中断服务程序STOP:PUSH ACC;保护A寄存器内容 MOV A,R1;读取发光二极管点亮位置计数值 MOV DPTR,#TAB MOVC A,A+DPTR;获取发光二极管点亮位置计数值的显示段码 MOV DPTR,#00H MOVX DPTR,A;发光二极管点亮位置计数值的显示数据送显示 SETB EX0;INT0(启动键STAR)开中断 JNZ$;等待重新启动条件-A=0,2023/3/31,电子工程设计中心,MOV A,#0FFH MOVX DPTR,A;清除数码管2(DS2)显示 CLR EX0;禁止INT0中断(避免程序误动

16、作)POP ACC;恢复A寄存器内容 CLR IE1;清除INT1中断标志(避免程序误动作)RETI;中断返回;启动键的中断服务程序STAR: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 RET,2023/3/31,电子工程设计中心,定时器/计数器操作程序调试练习,定时器/计数器工作原理,2

17、023/3/31,电子工程设计中心,定时/计数器1,定时/计数器0,定时/计数选择,计数器,定时器,工作方式选择,方式1,方式2,M1/M0=01,M1/M0=10,控制方式选择,TRx单独控制,TRx与INTx共同控制,GATE=0,GATE=1,操作方法,2023/3/31,电子工程设计中心,启动控制,2023/3/31,电子工程设计中心,例6:计数器程序调试,外部计数脉冲输入电路,2023/3/31,电子工程设计中心,DP2EQU00000HDP_L EQU 30H;低位数值暂存器DP_H EQU 31H;高位数值暂存器MAIN:MOV TMOD,#01100110B;C/T0,C/T1

18、工作在方式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中为16时MOVTL1,#0;计数器1清0,程序清单,2023/3/31,电子工程设计中心,L2:MOV DP_L,A;在DS2显

19、示计数器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 RET,2023/3/31,电子工程设计中心,DELAY:MOVR5,#80HD1:MOVR6,#0H DJNZR6,$DJNZR5,D1 RETTAB:DB0C0H,0

20、F9H,0A4H,0B0H,099H,092H,082H,0F8H;段码0-7 DB080H,090H,088H,083H,0C6H,0A1H,086H,08EH;段码8-F END,2023/3/31,电子工程设计中心,例7:定时器程序调试,DS1EQUP1;数码管1(DS1)访问地址DS2EQU0H;数码管2(DS2)访问地址US100EQU30H;100uS 软件计数器地址MS1EQU31H;1MS 软件计数器地址MS100EQU32H;100MS 软件计数器地址S1EQU33H;1S 软件计数器地址ORG0000HAJMPMAINORG000BH;定时器/计数器0中断服务程序入口地址A

21、JMPTIMERMAIN:MOVA,#0FFH;清除显示MOVDS1,AMOVDPTR,#DS2MOVXDPTR,ACLRA;软件计数器清0,2023/3/31,电子工程设计中心,MOVUS100,AMOVMS1,AMOVMS100,AMOVS1,AMOVTMOD,#02H;定时器/计数器0 工作于方式二MOVTL0,#155;定时器/计数器0 100uS计数值MOVTH0,#155;定时器/计数器0 重装填计数值SETBTR0;启动定时器/计数器0 计数SETBET0;开放定时器/计数器0 中断SETBEA;中断允许SJMP$TIMER:INCUS100;100uS软件计数器加1MOVR0,

22、#US100CJNER0,#10,TIM3;计数未达到1MS转TIM3MOVUS100,#0;否则100uS软件计数器清0INCMS1;1MS软件计数器加1INCR0,2023/3/31,电子工程设计中心,CJNER0,#100,TIM3;计数未达到100MS转TIM3MOVMS1,#0;否则1MS软件计数器清0INCMS100;100MS软件计数器加1INCR0CJNER0,#10,TIM2;计数未达到1S转TIM2MOVMS100,#0;100MS软件计数器清0INCS1;1S软件计数器加1INCR0CJNER0,#10,TIM1;计数未达到10S转TIM1MOVS1,#0;1S软件计数器

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

24、;5-9段码END,2023/3/31,电子工程设计中心,本节作业,1.练习题二 2-1(1),2.练习题二 2-1(2)-(4)任选1题,以上各题要求同1-1,3.练习题二 2-3,2023/3/31,电子工程设计中心,串行数据传送操作程序调试练习,准备工作,1.串行通信接口工作方式设置,2.串行通信中断控制设置,3.波特率发生器设置,2023/3/31,电子工程设计中心,例8:串行通信程序调试,PC机串行通信程序调试环境,2023/3/31,电子工程设计中心,DP2EQU00000H;数码管2(DS2)访问地址TIM_LEQU 0FDH;定时器/计数器1计数值(9600波特率)TIM_HE

25、QU 0FDH;定时器/计数器1 重装填计数值DP_L EQU 40H;数码管2(DS2)显示数据缓冲器DP_H EQU 41H;数码管1(DS1)显示数据缓冲器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;串行端口工作于方式1SET

26、B ES;开放串行端口中断SETB EA;中断允许,2023/3/31,电子工程设计中心,LOOP:CALLKEYBOARD;调用键值读取子程序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:PU

27、SH ACC;保护累加器AMOVA,SBUF;接收串行数据 PUSHACC;暂存ANLA,#0FH;取低4位MOVDP_L,A;送低位显示数据缓冲器,2023/3/31,电子工程设计中心,POP ACC;读取暂存数据 SWAPAANLA,#0FH;取高4位MOVDP_H,A;送高位显示数据缓冲器CALLDISPLAY;调用显示子程序POP ACC;恢复累加器A CLRRI;清除接收中断标志RETI;中断返回 KBD:MOVA,P3;读取按键状态数据RRA;按键状态数据右移2位,取得有效数据RRARRCA;按键状态数据带进位右移1位,按键K1状态装入CYJCK1;按键K1未按下转按键K5的处理M

28、OVA,#1;否则按键K1代码1送A寄存器SJMPK5;返回K1:RRCA;按键状态数据带进位右移1位,按键K5状态装入CYJCK2;按键K5未按下转按键K9的处理MOVA,#2;否则按键K5代码2送A寄存器SJMPK5;返回,2023/3/31,电子工程设计中心,K2:RRCA;按键状态数据带进位右移1位,按键K9状态装入CYJCK3;按键K9未按下转按键K13的处理MOVA,#3;否则按键K9代码3送A寄存器SJMPK5;返回K3:RRCA;按键状态数据带进位右移1位,按键K13状态装入CYJCK4;按键K13未按下转无按键按下的处理MOVA,#4;否则按键K13代码4送A寄存器SJMPK

29、5;返回K4:MOVA,#0FFH;无按键按下代码0FFH送A寄存器K5:RET;返回DSPY:MOVA,DP_L;接收数据显示子程序CALLDECODEMOVDPTR,#DP2MOVXDPTR,AMOVA,DP_HCALLDECODEMOVP1,ARET,2023/3/31,电子工程设计中心,DCODE:MOV DPTR,#TAB;换码子程序 MOVC A,A+DPTR RETDELAY:MOV R5,#80H;延时子程序D1:MOV R6,#0H DJNZR6,$DJNZR5,D1RETTAB:DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H;0-7段码DB080H,090H,088H,083H,0C6H,0A1H,086H,08EH;8-F段码END,2023/3/31,电子工程设计中心,本节作业,练习题三 3-1,要求同1-1,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号