8051单片机实验课件-单片机实验_第1页
8051单片机实验课件-单片机实验_第2页
8051单片机实验课件-单片机实验_第3页
8051单片机实验课件-单片机实验_第4页
8051单片机实验课件-单片机实验_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

关于

8051单片机实验1.首次多专业集中设课2.以程序设计为主要内容⑴熟悉单片机程序开发环境⑵掌握单片机内、外资源使用方法⑶单片机汇编语言程序编写与调试11/27/2023电子工程设计中心实验环境1.单片机仿真器可以控制程序运行过程的“单片机”11/27/2023电子工程设计中心2.单片机实验板单片机程序运行载体11/27/2023电子工程设计中心3.单片机程序集成开发环境中文版MedWin2.39文本编辑器—生成、编辑程序文本编译器/汇编器—将C/汇编语言源程序翻译为二进制机器程序链接器—将二进制机器程序转换为带调试信息的可执行程序调试器—用多种调试方式运行程序11/27/2023电子工程设计中心实验方法1.功能演示2.程序编写调试练习调用单片机内、外部资源的示例了解各种资源的使用方法修改示例程序,上机调试实现新的功能锻炼初步的程序设计、调试能力11/27/2023电子工程设计中心运行集成开发环境1.目标板、仿真器加电加电顺序—先目标板;后仿真器⑴真实环境仿真/模拟仿真选择断电顺序—先仿真器;后目标板2.启动集成开发环境⑵关闭注册提示⑶选择工作目录11/27/2023电子工程设计中心创建源程序/生成并下载目标程序1.调用文本编辑功能录入源程序文本—生成.asm文件2.调用汇编功能对.asm文件汇编—生成.obj文件3.调用链接功能对.obj文件链接—生成.hex文件4.将目标代码装入仿真器进行调试11/27/2023电子工程设计中心调试手段1.观察项2.运行方式程序运行中,内、外部资源工作状态的观察窗口。全速运行单步运行跟踪运行运行到断点运行到光标11/27/2023电子工程设计中心并行数据操作程序调试练习例1:跑马灯通过P1口采用负逻辑控制,0点亮,1熄灭。11/27/2023电子工程设计中心程序清单 MOVA,#0FFH ;清除挂接在总线上的数码管的显示内容 MOVDPTR,#00H MOVX@DPTR,A MOVA,#07FH;赋初始值并在发光二极管上显示该数值 MOVP1,ALOOP: CALLDELAY CALLDELAY RR A ;A寄存器内容右移1位并送发光二极管显示 MOVP1,A AJMPLOOP ;无限循环DELAY:MOVR5,#0H ;延时子程序D1: MOVR6,#0H DJNZR6,$ DJNZR5,D1 RET END11/27/2023电子工程设计中心①全速运行(3种方法)②单步运行(3种方法)调试观察发光二极管点亮位置移动方向,那条指令决定发光二极管移动方向。观察发光二极管点亮位置移动速度,那段程序决定发光二极管移动速度。观察第3次循环结束时寄存器A、P1的值,发光二极管的点亮状态。11/27/2023电子工程设计中心③

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

MOV DPTR,#00H MOVX @DPTR,A MOV R1,#00H ;操作数据初始值

MOV A,R1 MAIN:MOV DPTR,#TAB ;读取与A中数值对应的显示段码

MOVC A,@A+DPTR MOV P1,A ;段码送并行口1显示

CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY

程序清单11/27/2023电子工程设计中心 INC R1 ;操作数据(R1)增1 MOV A,R1 CJNEA,#10H,MAIN ;检查操作数据是否大于显示范围(F) SJMPINIT ;无限循环

DELAY:MOV R5,#0H ;延时子程序D1: MOV R6,#0H DJNZ R6,$ DJNZ R5,D1 RET END11/27/2023电子工程设计中心①运行到断点1②运行到断点2调试源程序第14行设断点,全速运行至断点单步执行第14、15行指令,观察寄存器A的值及数码管显示数值源程序第24行设断点,全速运行至断点观察寄存器A的值,A中能否为其它值11/27/2023电子工程设计中心例3:数码管(DS2)点亮控制通过总线扩展实现的数码管点亮控制11/27/2023电子工程设计中心程序清单 ORG 0000H LJMP INITTAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H ;段码0-7 DB 080H,090H,088H,083H,0C6H,0A1H,086H,08EH ;段码8-FINIT: MOV R1,#00H ;操作数据初始值 MOV A,R1MAIN:MOV DPTR,#TAB ;读取与A中数值对应的显示段码 MOVC A,@A+DPTR MOV DPTR,#00H ;段码送总线地址0000H单元显示 MOVX @DPTR,A CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY INC R1 ;操作数据(R1)增1 MOV A,R1

11/27/2023电子工程设计中心 CJNEA,#10H,MAIN ;检查操作数据是否大于显示范围(F) SJMPINIT ;无限循环

DELAY:MOV R5,#0H ;延时子程序D1: MOV R6,#0H DJNZ R6,$ DJNZ R5,D1 RET END调试运行到光标光标放在源程序第11行,运行至光标然后单步执行第11、12、13行指令11/27/2023电子工程设计中心例4:按键控制操作利用P3口的部分口线实现并行数据输入11/27/2023电子工程设计中心程序清单 DISP_BUF EQU P1 ;发光二级管显示端口 INPUT_BUF EQUP3 ;准并行数据(按键状态)输入端口 KEY EQU 30H ;按键状态暂存单元MAIN: MOV DPTR,#0 MOV A,#0FFH MOVX @DPTR,A ;清除挂接在总线上的数码管的显示内容 MOV DISP_BUF,A ;清除挂接在P1口上的数码管的显示内容 MOV KEY,#0H MOV A,#0FEH ;发光二极管循环移位操作初始值L1: RL A ;发光二极管循环右移操作 CALL DELAY MOV DISP_BUF,A ;发光二极管显示刷新 CALL PROC ;调用延时处理子程序 SJMP L1

11/27/2023电子工程设计中心 PROC: PUSH ACC ;根据键值确定调用延时子程序的次数 MOV A,KEY CJNE A,#01H,PR1 SJMP PR7PR1: CJNE A,#02H,PR2 SJMP PR6PR2: CJNE A,#03H,PR3 SJMP PR5PR3: CJNE A,#04H,PR8 SJMP PR4PR4: CALL DELAYPR5: CALL DELAYPR6: CALL DELAYPR7: CALL DISPLAY ;调用显示子程序PR8: POP ACC RET11/27/2023电子工程设计中心DISPLAY: MOV DPTR,#TAB ;在数码管2上显示对应的键值 MOV A,KEY MOVC A,@A+DPTR MOV DPTR,#0 MOVX @DPTR,A RETDELAY: MOV R7,#0H ;延时子程序 D1: MOV R6,#0H DJNZ R6,$ MOV R5,INPUT_BUF ;从P3口读入按键状态

CJNE R5,#0FBH,D2 ;根据所按的键存储对应的键值1-4 MOV KEY,#1D2: CJNE R5,#0F7H,D3 MOV KEY,#2D3: CJNE R5,#0EFH,D4 MOV KEY,#311/27/2023电子工程设计中心D4: CJNE R5,#0DFH,D5 MOV KEY,#4D5: DJNZ R7,D1 RET

TAB: DB 0FFH,0F9H,0A4H,0B0H,099H ;显示字符段码表END11/27/2023电子工程设计中心本节作业1.观察与思考1-1到1-52.练习题一1-1/1-21-1要求:①解决问题的思路/理由②解决方法—用什么指令②修改后的源程序,该过或添加的指令加下划线11/27/2023电子工程设计中心中断控制操作程序调试练习中断控制原理TCONIPIESCONTIRI+TXRXEX0IE0TF0TF1IE1ET0EX1ET1ESIT0IT1边沿边沿电平电平PX0PX1PT0PT1PSC/T0C/T1INT0EA矢量地址矢量地址INT1PCPC高级低级中断请求中断请求11/27/2023电子工程设计中心操作方法B8HB9HBAHBBHBCH位地址PX0PT0PX1PT1PSIPA8HA9HAAHABHACHAFH位地址EX0ET0EX1ET1ESEAIE88H89H8AH8BH8DH8FH位地址IT0IE0IT1IE1TF0TF1TCON98H99H位地址R1T1SCON中断优先级寄存器IP(B8H)中断允许寄存器IE(A8H)定时计数器控制寄存器TCON(88H)串行通信控制寄存器SCON(98H)11/27/2023电子工程设计中心例5:中断控制程序调试外部中断触发电路11/27/2023电子工程设计中心 ORG 0000H LJMPINITIAL ;主程序入口

ORG 0003H LJMPSTAR ;外中断0服务程序入口,开始键(STAR)

ORG 0013H LJMPSTOP ;外中断1服务程序入口停止键(STOP)

ORG 0100HINITIAL:MOVA,#0FFH MOV P1,#0FFH ;熄灭全部发光二极管

MOVDPTR,#00H MOVX@DPTR,A ;清除数码管2(DS2)显示

MOVA,#0FEH ;点亮发光二极管的初始数据

MOVR1,#1H ;发光二极管点亮位置初值

MOV IP,#01H ;设置INT0(开始键STAR)为高优先级

MOV TCON,#05H ;外中断采用边沿触发

SETBEX1 ;INT1(停止键STOP)开中断

SETBEA ;开放中断

程序清单11/27/2023电子工程设计中心LOOP: CLR EA ;关闭中断

RL A MOV P1,A ;刷新发光二极管控制数据

INC R1 ;发光二极管点亮位置计数值增1 SETBEA ;开放中断

LCALLDELAY1 ;延时

LCALLDELAY1 CJNER1,#8,LOOP;发光二极管点亮位置计数值有效性检测

MOVR1,#0H ;发光二极管点亮位置计数值等于8则回0 SJMPLOOP ;无限次循环 ;停止键的中断服务程序STOP: PUSHACC ;保护A寄存器内容 MOVA,R1 ;读取发光二极管点亮位置计数值 MOVDPTR,#TAB MOVCA,@A+DPTR ;获取发光二极管点亮位置计数值的显示段码 MOVDPTR,#00H MOVX@DPTR,A ;发光二极管点亮位置计数值的显示数据送显示

SETBEX0 ;INT0(启动键STAR)开中断

JNZ $ ;等待重新启动条件--A=0

11/27/2023电子工程设计中心 MOVA,#0FFH MOVX@DPTR,A ;清除数码管2(DS2)显示

CLREX0 ;禁止INT0中断(避免程序误动作)

POPACC ;恢复A寄存器内容

CLR IE1 ;清除INT1中断标志(避免程序误动作) RETI ;中断返回

;启动键的中断服务程序STAR:MOVA,#00H ;设置启动条件--A=0 CLR IE0 ;清除INT0中断标志(避免程序误动作) RETI ;中断返回TAB: DB 0C0H,0F9H,0A4H,0B0H,099H ;0--4段码 DB 092H,082H,0F8H,080H ;5--8段码

DELAY1:MOVR6,#0 ;延时子程序D1: MOVR7,#0 DJNZR7,$ DJNZR6,D1 RET11/27/2023电子工程设计中心定时器/计数器操作程序调试练习定时器/计数器工作原理OSC

÷12

计数器TF

T0(P3.4)

TR0GATE

P3.2中断计数器溢出,TF=1发出中断申请11/27/2023电子工程设计中心寄存器D7D6D5D4D3D2D1D0TMODGATEM1M0GATEM1M0定时/计数器1定时/计数器0①定时/计数选择计数器定时器②工作方式选择方式1方式2M1/M0=01M1/M0=10③控制方式选择TRx单独控制TRx与INTx共同控制GATE=0GATE=1操作方法11/27/2023电子工程设计中心XXXXXXXXTHxD0D1D2D3D4D5D6D7寄存器XXXXXXXXTLxD0D1D2D3D4D5D6D7寄存器④计数值装载寄存器D7D6D5D4D3D2D1D0TCONTF1TR1TF0TR0⑤启动控制11/27/2023电子工程设计中心例6:计数器程序调试外部计数脉冲输入电路11/27/2023电子工程设计中心DP2 EQU 00000H DP_L EQU 30H ;低位数值暂存器DP_H EQU 31H ;高位数值暂存器

MAIN:MOV TMOD,#01100110B ;C/T0,C/T1工作在方式2 MOV A,#0 ;显示初值为0

MOV DP_L,A MOV DP_H,A CALL DISPLAY ;调用显示子程序显示初值0 MOV TL0,#0 ;C/T0置初值0 MOV TL1,#0 ;C/T1置初值0 SETB TR1 ;启动计数器1LOOP: MOV A,TL0 ;读计数器0的计数值

CJNE A,#10H,L1 ;如果A中为16时

MOV TL0,#0 ;计数器0清0L1: MOV DP_H,A ;在DS2显示计数器0的计数值

MOV A,TL1 ;读计数器1的计数值

CJNE A,#10H,L2 ;如果A中为16时

MOV TL1,#0 ;计数器1清0程序清单11/27/2023电子工程设计中心L2: MOVDP_L,A ;在DS2显示计数器0的计数值

CALL DISPLAY ;调用显示子程序显示计数值

SJMP LOOP ;无限次循环

DISPLAY:MOV A,DP_L ;读低位显示值

CALL DECODE ;调用换码子程序 MOV DPTR,#DP2 ;显示段码送DS2 MOVX @DPTR,A MOV A,DP_H ;读高位显示值 CALL DECODE ;调用换码子程序 MOV P1,A ;显示段码送DS1 RET

DECODE:MOV DPTR,#TAB MOVC A,@A+DPTR RET

11/27/2023电子工程设计中心

DELAY:MOV R5,#80HD1: MOV R6,#0H DJNZ R6,$ DJNZ R5,D1 RETTAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H ;段码0-7 DB 080H,090H,088H,083H,0C6H,0A1H,086H,08EH ;段码8-F END 11/27/2023电子工程设计中心例7:定时器程序调试DS1 EQU P1 ;数码管1(DS1)访问地址DS2 EQU 0H ;数码管2(DS2)访问地址US100 EQU 30H ;100uS软件计数器地址MS1 EQU 31H ;1MS软件计数器地址MS100 EQU 32H ;100MS软件计数器地址S1 EQU 33H ;1S软件计数器地址 ORG 0000H AJMP MAIN

ORG 000BH ;定时器/计数器0中断服务程序入口地址 AJMP TIMER

MAIN: MOV A,#0FFH ;清除显示 MOV DS1,A MOV DPTR,#DS2 MOVX @DPTR,A CLR A ;软件计数器清0

11/27/2023电子工程设计中心 MOV US100,A MOV MS1,A MOV MS100,A MOV S1,A MOV TMOD,#02H ;定时器/计数器0工作于方式二 MOV TL0,#155 ;定时器/计数器0100uS计数值 MOV TH0,#155 ;定时器/计数器0重装填计数值 SETB TR0 ;启动定时器/计数器0计数 SETB ET0 ;开放定时器/计数器0中断 SETB EA ;中断允许 SJMP $

TIMER:INC US100 ;100uS软件计数器加1 MOV R0,#US100 CJNE @R0,#10,TIM3 ;计数未达到1MS转TIM3 MOV US100,#0 ;否则100uS软件计数器清0 INC MS1 ;1MS软件计数器加1 INC R0

11/27/2023电子工程设计中心

CJNE @R0,#100,TIM3 ;计数未达到100MS转TIM3 MOV MS1,#0 ;否则1MS软件计数器清0 INC MS100 ;100MS软件计数器加1 INC R0 CJNE @R0,#10,TIM2 ;计数未达到1S转TIM2 MOV MS100,#0 ;100MS软件计数器清0 INC S1 ;1S软件计数器加1 INC R0 CJNE @R0,#10,TIM1 ;计数未达到10S转TIM1 MOV S1,#0 ;1S软件计数器清0TIM1: MOV A,S1 ;读取秒计数值 CALL DECODE ;转换为显示段码 MOV DS1,A ;秒计数值送数码管1显示TIM2: MOV A,MS100 ;读取100毫秒计数值 CALL DECODE ;转换为显示段码 MOV DPTR,#DS2 MOVX @DPTR,A ;100毫秒计数值送数码管2显示TIM3: RETI ;中断返回11/27/2023电子工程设计中心DECODE: MOV DPTR,#TAB ;段码表头地址送DPTR MOVC A,@A+DPTR ;读取显示段码数据 RET ;子程序返回

TAB: DB0C0H,0F9H,0A4H,0B0H,099H ;0-4段码 DB092H,082H,0F8H,080H,090H ;5-9段码 END11/27/2023电子工程设计中心本节作业1.练习题二2-1(1)2.练习题二2-1(2)--(4)任选1题以上各题要求同1-13.练习题二2-311/27/2023电子工程设计中心串行数据传送操作程序调试练习准备工作1.串行通信接口工作方式设置2.串行通信中断控制设置3.波特率发生器设置11/27/2023电子工程设计中心例8:串行通信程序调试PC机串行通信程序调试环境11/27/2023电子工程设计中心DP2 EQU 00000H ;数码管2(DS2)访问地址TIM_L EQU 0FDH ;定时器/计数器1计数值(9600波特率)TIM_H EQU 0FDH ;定时器/计数器1重装填计数值 DP_L EQU 40H ;数码管2(DS2)显示数据缓冲器DP_H EQU 41H ;数码管1(DS1)显示数据缓冲器FLAG BIT 01H ;按键有效标志

ORG 0000H LJMP MAIN ;转主程序

ORG 0023H LJMP RECE ;转串行通信中断服务程序

MAIN:MOV TMOD,#00100000B ;定时器/计数器1工作于方式二 MOV TH1,#TIM_H ;定时器/计数器1重装填值 MOV TL1,#TIM_L ;定时器/计数器1计数值 SETB TR1 ;启动定时器/计数器1计数 MOV SCON,#01010000B ;串行端口工作于方式1 SETB ES ;开放串行端口中断 SETB EA ;中断 允许

11/27/2023电子工程设计中心LOOP: CALL KEYBOARD ;调用键值读取子程序 CJNE A,#0FFH,L0 ;键值不为FFH表示收到数据 CLR FLAG ;清除有键按下标志 SJMP LOOP ;键值为FFH(无按键按下)不作处理L0: JB FLAG,LOOP ;按下的按键尚未释放不作处理 ADD A,#30H ;键值小于10,加30H转换为ASCII码 MOV SBUF,A ;发送 SETB FLAG ;置位有键按下的标志 SJMP LOOP ;无限次循环

RECE:JNB TI,REC1 ;非发送转接收处理 CLR TI ;清除发送中断标志 RETI ;中断返回 REC1:PUSH ACC ;保护累加器A MOV A,SBUF ;接收串行数据 PUSH ACC ;暂存 ANL A,#0FH ;取低4位 MOV DP_L,A ;送低位显示数据缓冲器

1

温馨提示

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

评论

0/150

提交评论