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

下载本文档

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

文档简介

2018/1/29,电子工程设计中心,关于 8051单片机实验,1. 首次多专业集中设课,2. 以程序设计为主要内容, 熟悉单片机程序开发环境, 掌握单片机内、外资源使用方法, 单片机汇编语言程序编写与调试,2018/1/29,电子工程设计中心,实验环境,1. 单片机仿真器,可以控制程序运行过程的“单片机”,2018/1/29,电子工程设计中心,2. 单片机实验板,单片机程序运行载体,2018/1/29,电子工程设计中心,3. 单片机程序集成开发环境,中文版 MedWin 2.39,文本编辑器生成、编辑程序文本,编译器/汇编器将C/汇编语言源程序 翻译为二进制机器程序,链接器将二进制机器程序转换为带 调试信息的可执行程序,调试器用多种调试方式运行程序,2018/1/29,电子工程设计中心,实验方法,1. 功能演示,2. 程序编写调试练习,调用单片机内、外部资源的示例,了解各种资源的使用方法,修改示例程序,上机调试实现新的功能,锻炼初步的程序设计、调试能力,2018/1/29,电子工程设计中心,运行集成开发环境,1. 目标板、仿真器加电,加电顺序先目标板;后仿真器, 真实环境仿真/模拟仿真选择,断电顺序先仿真器;后目标板,2. 启动集成开发环境, 关闭注册提示, 选择工作目录,2018/1/29,电子工程设计中心,创建源程序/生成并下载目标程序,1. 调用文本编辑功能,录入源程序文本生成 .asm文件,2. 调用汇编功能,对.asm文件汇编生成 .obj文件,3. 调用链接功能,对.obj文件链接生成 .hex文件,4. 将目标代码装入仿真器进行调试,2018/1/29,电子工程设计中心,调试手段,1. 观察项,2. 运行方式,程序运行中,内、外部资源工作状态的观察窗口。,全速运行,单步运行,跟踪运行,运行到断点,运行到光标,2018/1/29,电子工程设计中心,并行数据操作程序调试练习,例1:跑马灯,通过 P1口采用负逻辑控制,0点亮,1熄灭。,2018/1/29,电子工程设计中心,程序清单,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 R6,#0H DJNZ R6,$ DJNZ R5,D1 RET END,2018/1/29,电子工程设计中心, 全速运行(3种方法), 单步运行(3种方法),调试,观察发光二极管点亮位置移动方向,那条指令决定发光二极管移动方向。,观察发光二极管点亮位置移动速度,那段程序决定发光二极管移动速度。,观察第3次循环结束时寄存器A、P1的值,发光二极管的点亮状态。,2018/1/29,电子工程设计中心, 跟踪运行(3种方法),观察运行中除了寄存器A、P1的值在变,还有哪些寄存器的内容在变。,2018/1/29,电子工程设计中心,例2:数码管(DS1)点亮控制,“共阳”连接,负逻辑编码控制,2018/1/29,电子工程设计中心,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 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,程序清单,2018/1/29,电子工程设计中心,INC R1 ;操作数据(R1)增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 END,2018/1/29,电子工程设计中心, 运行到断点1, 运行到断点2,调试,源程序第14行设断点,全速运行至断点,单步执行第14、15行指令,,观察寄存器A的值及数码管显示数值,源程序第24行设断点,全速运行至断点,观察寄存器A的值,A中能否为其它值,2018/1/29,电子工程设计中心,例3:数码管(DS2)点亮控制,通过总线扩展实现的数码管点亮控制,2018/1/29,电子工程设计中心,程序清单,ORG 0000HLJMP INITTAB: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,R1,2018/1/29,电子工程设计中心,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行指令,2018/1/29,电子工程设计中心,例4:按键控制操作,利用P3口的部分口线实现并行数据输入,2018/1/29,电子工程设计中心,程序清单,DISP_BUFEQUP1;发光二级管显示端口INPUT_BUFEQU P3;准并行数据(按键状态)输入端口KEYEQU30H;按键状态暂存单元MAIN:MOVDPTR,#0MOVA,#0FFHMOVXDPTR,A;清除挂接在总线上的数码管的显示内容MOVDISP_BUF,A;清除挂接在P1口上的数码管的显示内容MOVKEY,#0HMOVA,#0FEH;发光二极管循环移位操作初始值L1:RLA;发光二极管循环右移操作CALLDELAYMOVDISP_BUF,A;发光二极管显示刷新CALLPROC;调用延时处理子程序SJMPL1,2018/1/29,电子工程设计中心,PROC:PUSHACC;根据键值确定调用延时子程序的次数MOVA,KEYCJNEA,#01H,PR1SJMPPR7PR1:CJNEA,#02H,PR2SJMPPR6PR2:CJNEA,#03H,PR3SJMPPR5PR3:CJNEA,#04H,PR8SJMPPR4PR4:CALLDELAYPR5:CALLDELAYPR6:CALLDELAYPR7:CALLDISPLAY;调用显示子程序PR8:POPACCRET,2018/1/29,电子工程设计中心,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,D3MOVKEY,#2D3:CJNER5,#0EFH,D4MOVKEY,#3,2018/1/29,电子工程设计中心,D4:CJNER5,#0DFH,D5MOVKEY,#4D5:DJNZR7,D1 RET TAB:DB0FFH,0F9H,0A4H,0B0H,099H;显示字符段码表END,2018/1/29,电子工程设计中心,本节作业,1. 观察与思考1-1到1-5,2. 练习题一 1-1/1-2,1-1要求:, 解决问题的思路/理由, 解决方法用什么指令, 修改后的源程序,该过或添加的 指令加下划线,2018/1/29,电子工程设计中心,中断控制操作程序调试练习,中断控制原理,2018/1/29,电子工程设计中心,操作方法,2018/1/29,电子工程设计中心,例5:中断控制程序调试,外部中断触发电路,2018/1/29,电子工程设计中心,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,#1H;发光二极管点亮位置初值 MOV IP,#01H ;设置INT0(开始键STAR)为高优先级 MOV TCON,#05H ;外中断采用边沿触发 SETB EX1 ;INT1(停止键STOP)开中断 SETB EA ;开放中断,程序清单,2018/1/29,电子工程设计中心,LOOP: 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,R1;读取发光二极管点亮位置计数值 MOV DPTR,#TAB MOVC A,A+DPTR;获取发光二极管点亮位置计数值的显示段码 MOV DPTR,#00H MOVX DPTR,A;发光二极管点亮位置计数值的显示数据送显示 SETB EX0 ;INT0(启动键STAR)开中断 JNZ $;等待重新启动条件-A=0,2018/1/29,电子工程设计中心,MOV A,#0FFH MOVX DPTR,A ;清除数码管2(DS2)显示 CLR EX0 ;禁止INT0中断(避免程序误动作) 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,2018/1/29,电子工程设计中心,定时器/计数器操作程序调试练习,定时器/计数器工作原理,2018/1/29,电子工程设计中心,定时/计数器1,定时/计数器0, 定时/计数选择,计数器,定时器, 工作方式选择,方式1,方式2,M1/M0 = 01,M1/M0 = 10, 控制方式选择,TRx单独控制,TRx与INTx共同控制,GATE = 0,GATE = 1,操作方法,2018/1/29,电子工程设计中心, 启动控制,2018/1/29,电子工程设计中心,例6:计数器程序调试,外部计数脉冲输入电路,2018/1/29,电子工程设计中心,DP2EQU00000HDP_L EQU 30H ;低位数值暂存器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中为16时MOVTL1,#0;计数器1清0,程序清单,2018/1/29,电子工程设计中心,L2: 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 RET,2018/1/29,电子工程设计中心,DELAY: MOVR5,#80HD1: 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,2018/1/29,电子工程设计中心,例7:定时器程序调试,DS1EQUP1;数码管1(DS1)访问地址DS2EQU0H;数码管2(DS2)访问地址US100EQU30H;100uS 软件计数器地址MS1EQU31H;1MS 软件计数器地址MS100EQU32H;100MS 软件计数器地址S1EQU33H;1S 软件计数器地址ORG0000HAJMPMAINORG000BH;定时器/计数器0中断服务程序入口地址AJMPTIMERMAIN:MOVA,#0FFH;清除显示MOVDS1,AMOVDPTR,#DS2MOVXDPTR,ACLRA;软件计数器清0,2018/1/29,电子工程设计中心,MOVUS100,AMOVMS1,AMOVMS100,AMOVS1,AMOVTMOD,#02H;定时器/计数器0 工作于方式二MOVTL0,#155;定时器/计数器0 100uS计数值MOVTH0,#155;定时器/计数器0 重装填计数值SETBTR0;启动定时器/计数器0 计数SETBET0;开放定时器/计数器0 中断SETBEA;中断允许SJMP$TIMER:INCUS100;100uS软件计数器加1MOVR0,#US100CJNER0,#10,TIM3;计数未达到1MS转TIM3MOVUS100,#0;否则100uS软件计数器清0INCMS1;1MS软件计数器加1INCR0,2018/1/29,电子工程设计中心,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软件计数器清0TIM1:MOVA,S1;读取秒计数值CALLDECODE;转换为显示段码MOVDS1,A;秒计数值送数码管1显示TIM2:MOVA,MS100;读取100毫秒计数值CALLDECODE;转换为显示段码MOVDPTR,#DS2MOVXDPTR,A;100毫秒计数值送数码管2显示TIM3:RETI;中断返回,2018/1/29,电子工程设计中心,DECODE:MOVDPTR,#TAB;段码表头地址送DPTRMOVCA,A+DPTR; 读取显示段码数据RET;子程序返回TAB:DB 0C0H,0F9H,0A4H,0B0H,099H;0-4段码DB 092H,082H,0F8H,080H,090H;5-9段码END,2018/1/29,电子工程设计中心,本节作业,1. 练习题二 2-1 (1),2. 练习题二 2-1 (2)-(4)任选1题,以上各题要求同1-1,3. 练习题二 2-3,2018/1/29,电子工程设计中心,串行数据传送操作程序调试练习,准备工作,1. 串行通信接口工作方式设置,2. 串行通信中断控制设置,3. 波特率发生器设置,2018/1/29,电子工程设计中心,例8:串行通信程序调试,PC机串行通信程序调试环境,2018/1/29,电子工程设计中心,DP2EQU00000H;数码管2(DS2)访问地址TIM_LEQU 0FDH;定时器/计数器1计数值(9600波特率)TIM_HEQU 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 ;串行端口工作于方式1SETB ES ;开放串行端口中断SETB EA ;中断允许,2018/1/29,电子工程设计中心,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: PUSH ACC ;保护累加器AMOVA,SBUF ;接收串行数据 PUSHACC;暂存ANLA,#0FH;取低4位MOVDP_L,A;送低位显示数据缓冲器,2018/1/29,电子工程设计中心,POP ACC ;

温馨提示

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

最新文档

评论

0/150

提交评论