收藏 分享(赏)

单片机课后答案及实验.ppt

上传人:精品资料 文档编号:9672427 上传时间:2019-08-22 格式:PPT 页数:54 大小:156.50KB
下载 相关 举报
单片机课后答案及实验.ppt_第1页
第1页 / 共54页
单片机课后答案及实验.ppt_第2页
第2页 / 共54页
单片机课后答案及实验.ppt_第3页
第3页 / 共54页
单片机课后答案及实验.ppt_第4页
第4页 / 共54页
单片机课后答案及实验.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

1、习 题 讲 解,第4章 习题讲解,1. P98 第12题MOV R0,#0A7H ;R0=0A7H,A=XXCH A,R0 ;A=0A7H,R0=XSWAP A ;A=7AH,R0=XXCH A,R0 ;R0=7AH,A=X,2, P98,第15题若执行ADDC A,B 指令,A=37H,CY=1;若执行SUBB A,B 指令,A=3BH,CY=0,3, P99,第18题MOV 30H , #0A4H ;30H=A4HMOV A , #0D6H ;A=0D6HMOV R0 , #30H ;R0=30HMOV R2 , #47H ;R2=47HANL A , R2 ;A=46HORL A , R

2、0 ;A=E6HSWAP A ;A=6EHCPL A ;A=91HXRL A , #0FFH ;A=6EHORL 30H , A ;30H=EEH,4,P100,第27题MOV DPTR , #2100HMOVX A , DPTRORL A , #0F0HANL A , #0F0HMOVX DPTR , A,其实:MOV DPTR , #2100HMOV A , #0F0HMOVX DPTR , A,第5章 习题讲解,1,P130 第6题MOV 30H,#0MOV 31H,#0MOV 32H,#0MOV DPTR,#2000HMOV R7,#100 LOOP:MOVX A,DPTRINC DP

3、TRJNZ L1,INC 32H ;=0SJMP L3L1:JB ACC.7,L2INC 30H ;0SJMP L3L2:INC 31H ;0L3:DJNZ R7,LOOPSJMP $,2,P130 第12题MOV R2,#10MOV R3,#02HMOV R4,#00HMOV R5,#03HMOV R6,#00H LOOP:MOV DPH,R3MOV DPL,R4MOVX A,DPTR,ANL A,#0FHSWAP AXCH A,BINC DPTRMOVX A,DPTRANL A,#0FHORL A,BINC DPTRMOV R3,DPHMOV R4,DPTR,MOV DPH,R5MOV D

4、PL,R6MOVX DPTR,AINC DPTRMOV R5,DPHMOV R6,DPLDJNZ R2,LOOPSJMP $,另一种解法:at89s51具有双数据指针MOV R2,#10MOV DPTR,#0200HSETB DPS ;(AUXR1.0), P50 MOV DPTR,#0300H LOOP:CLR DPSMOVX A,DPTRANL A,#0FHSWAP AXCH A,B,INC DPTRMOVX A,DPTR ANL A,#0FHORL A,BINC DPTRSETB DPSMOVX DPTR,AINC DPTRDJNZ R2,LOOPCLR DPSSJMP $,3,P131

5、 第17题MOV R7,#33MOV R0,#40HMOV DPTR,#2540H LOOP:MOV A,R0MOVX DPTR,AINC R0INC DPTRDINZ R7,LOOPSJMP $,第6章 习题讲解,1. 设MCS-51单片机的晶振频率为12MHZ,试用单片机的内部定时器方式产生频率为10KHZ的等宽矩形方波信号。ORG 0000HMOV TMOD , #02HMOV TL0 , #0CEH ;T=100us,定时50usMOV TH0 , #0CEHSETB TR0 LOOP: JNB TF0,$CLR TF0CPL P1.0AJMP LOOPEND,若为方式0: 初值为FE

6、0EH; 若为方式1: 初值为FFCEH; 需要重装初值。,2. 已知80C51单片机系统时钟频率为6MHZ,请利用定时器T0和P1.2输出矩形脉冲。参考程序:ORG 0000HMOV TMOD , #02H ;定时模式2 MOV TH0 , #0E7H ;初始值 MOV TL0 , #0E7HSETB TR0,定时50us,L1: SETB P1.2MOV R0,#7DEL: JBC TF0,REPAJMP DEL REP: CLR P1.2DJNZ R0,DELAJMP L1END,3. 设MCS-51单片机的晶振频率为6MHZ,以计数器T0进行外部事件计数,每计数1000个外部事件输入脉

7、冲后,计数器T1开始2ms定时,定时时间到后,T0又开始计数,如此周而复始地工作。 参考程序:ORG 0000HMOV TMOD , #15H ;计数器工作模式 LOOP:MOV TL0 , #18H ;65536-1000MOV TH0 , #0FCHSETB TR0JNB TF0, $ ;等待计数1000次CLR TR0,若为方式0:TMOD14H,初值为E018H;不适合用方式2,CLR TF0MOV TL1 , #18H ;定时2msMOV TH1 , #0FCHSETB TR1JNB TF1 , $ ;等待1ms时间到CLR TR1CLR TF1AJMP LOOP ;循环重复END,

8、若为方式0:初值为E018H;不适合用方式2,第7章 习题讲解,1. 在80C51的应用系统总时钟频率为6MHZ,现需利用定时器T1产生波特率为1200bps。请计算初值,实际得到的波特率的误差是多少?波特率发生器T1采用工作方式2,波特率不加倍(即SMOD0),计算时间常数(初始值)。TL1TH1X2562SMODfosc/(3212B)243F3H(其中SMOD0) 实际波特率B(20/32)fosc / 12(28243)1201.923(误差0.16),2. 以80C51串行口按工作方式3进行串行数据通讯。假定波特率为1200bps,第9位作为奇校验位,以中断方式传送数据,请编写通讯程

9、序。假定晶振频率为11.0592MHZ。 (1)发送程序:ORG 0000HAJMP MAINORG 0023HAJMP INTSORG 0030H MAIN: MOV SCON , #0C0H ;串行口方式3 MOV TMOD , #20H ;T1方式2定时 MOV TL1 , #0E8H ;写入T1时间常数 MOV TH1 , #0E8HSETB TR1 ;启动T1,MOV R0,#30H ;设数据指针MOV R7,#20H ;数据长度MOV IE , #90HMOV A,R0 ;启动发送一次JB P ,SEND1SETB TB8SEND1:MOV SBUF,A ;启动一次发送INC R0

10、SJMP $INTS: CLR TIDJNZ R7 , OUT ;是否发送完?MOV A,R0 ;取一个字符JB P , SEND2 ;加奇校验SETB TB8AJMP INTS3,SEND2: CLR TR8 SEND3: MOV SBUF,A ;启动一次发送INC R0 ; 修改指针 OUT: RETIEND (2)接收程序:ORG 0000HAJMP MAINORG 0023HAJMP INTSORG 0030H MAIN: MOV SCON , #0D0H ;串行口方式3 MOV TMOD , #20H ;T1方式2定时 MOV TL1 , #0E8H ;写入T1时间常数 MOV TH

11、1 , #0E8H,SETB TR1 ;启动T1MOV R0,#30H ;设数据指针MOV IE , #90HSJMP $INTS:MOV A,SBUFCLR RIJB P , INTS1 ;奇校验JNB RB8 , ERRORAJMP INTS2INTS1: JB RB8 , ERRORINTS2: MOV R0 , A ;保存一个字符INC R0RETI ERROR: SETB 00H ;报错程序RETIEND,3. 以中断方式设计单片微机的秒、分发生器。假定P1.0每秒产生一个机器周期的正脉冲,P1.1实现每分钟产生一个机器周期的正脉冲。加上必要的伪指令和注释。假定晶振频率为12MHZ。

12、 解:要求定时时间为1s,若采用定时模式1,根据公式:定时时间T=(65536初始值x)Tcy,可知最大定时时间为65.536ms。若定时10ms,则必须有100个10ms,即100次溢出中断为1s,10ms时间常数为D8F0H。,ORG 0000HAJMP MAINORG 000BHAJMP INT_T0ORG 0030HMAIN: MOV TMOD , #01HMOV TL0 , #0F0H ;定时10msMOV TH0 , #0D8H SETB TR0MOV R6 , #00HMOV R7 , #00H,CLR P1.0CLR P1.1 SETB ET0SETB EASJMP $ INT

13、_T0: MOV TL0 , #0F0HMOV TH0 , #0D8HINC R6CJNE R6 , #100 , OUT ;定时1秒钟MOV R6 , #00H ;为下个周期作准备,SETB P1.0 ;正脉冲输出CLR P1.0 INC R7CJNE R7 , #60 , OUT ;定时1分钟MOV R7 , #00H ;为下个周期作准备SETB P1.1 ;正脉冲输出CLR P1.1OUT: RETIEND,实验知识预备,1. 单版微机实验装置相当于一个仿真器,可以仿真MCS-51单片机的绝大部分硬件功能;2. 像仿真器一样,我们可以在实验装置上进行软、硬件调试,观察控制硬件的执行结果或

14、每条指令的执行结果;3. 应该养成自己动手的习惯,只有多动手才有可能深入掌握软、硬件知识;4. 刚开始接触肯定会有很多问题,应该学会自己分析问题,解决问题,不要急于问老师;5. 做实验前要认真准备,编好源程序,有效利用紧张的实验时间。,实验的基本步骤(1): 1. 启动LCAET软件。 2. FileNew,建立新文件;输入汇编源程序。 3.另存为*.asm,此时操作码显示蓝色。 注意:汇编程序后缀必须为asm,否则不能正确编译;文件名不能太长,应小于8个字符;存放路径不能为中文; 4. 在“编译”菜单栏,使用编译当前文件命令,对源程序进行编译,下面信息栏会提示语法错误的位置和类型,若有错,修

15、改后继续编译,直至没有错误为止。 注意:其中若提示不能与实验机通讯,可打开实验装置电源(右上角有电源开关);若已经打开,请按RST键,使实验仪恢复,利于下载通讯。,实验的基本步骤(2): 5. 在断电状态下,按照实验指导书要求正确连线,不要随意乱插乱放,同时因导线容易损坏,请轻拔轻插,不能硬拉猛攥。 6. 打开实验装置电源(右上端),再次使用编译当前文件命令,使得将机器码传送到实验仪。 注意:若实验装置已经打开运行,请按RST键,使实验仪恢复,利于下载通讯。 7. 在“调试”菜单栏,使用全速运行或单步运行命令,执行程序,查看运行结果,检查内在逻辑错误,有错则返回第4步继续修改汇编源程序。,注意

16、: (1)若不能正常通讯,可能原因是:右下方的串行通讯波特率(9600)开关选择错误;或串口连接导线松动。 (2)若程序确定无误,而发光二极管显示不正常,可能是导线短路,请更换或叠加导线(个别不亮不影响观察结果,则无需更换);若8个发光管全都不受控制,则可能是芯片损坏,请联系老师更换。 (3)在输入指令过程中,要注意指令的完整性,不要遗漏“”、“END”,区别数字“0”与字母“o”、“O”, (4)程序编写完成后,应当自己先认真分析程序执行路径,查找明显的逻辑错误,以免产生莫名错误。特别注意子程序不能放在程序起始部位,同时要特别注意延时程序的循环构架。,实验一(1),实验要求: (1)P1口作

17、为输出口,接8只发光二极管,要求编程使放光二极管循环点亮; (2)P1口做输入口,接8个扭子开关,以实验机上的74LS273作为输出口(接8个发光管),要求编写程序使得发光管的状态能够反映出开关的状态; 实验目的:学习并行口的使用方法;请参考程序框图自己编程!,注 意,(1)这里将74LS273作为一个总线扩展,它的输出端Q1Q8相当于1个扩展片外RAM单元,它的地址决定于它的使能端CLK,所以这里它的地址是8300H,必须使用MOVX指令进行写操作; (2)8个发光管通过74LS240直接连接到P1口,这里的74LS240 为非门驱动电路; (3)人肉眼要能观察到两个状态间的变化,必须有一足

18、够的时间间隔,否则感觉所有发光管全亮。,参考程序(1):,ORG 0000HMOV A , #01H ROTATE: MOV P1 , A ;点亮一个LEDRL A ;循环右移LCALL DELAY ;延时SJMP ROTATE,DELAY: ;延时子程序(1秒)MOV R0 , #0AH DELAY1: MOV R1 , #00H DELAY2: MOV R2 , #0B2HDJNZ R2 , $DJNZ R1 , DELAY2DJNZ R0 , DELAY1RETEND,参考程序(2):,ORG 0000HMOV DPTR , #8300H ;并行输出口地址 READ: MOV P1 ,

19、#0FFH ;因P1口是准双向口,所以;把P1口作为输入口时,; 应先置高电平MOV A , P1 ;读开关状态MOVX DPTR,A ;把读入的数据输出AJMP READEND,返回,实验一(2),实验要求:利用P3口输出高低电平,控制继电器的开合,实现对外部功率元件的控制; 实验目的:掌握位操作控制的使用方法; 注意:继电器是一种非常好的功率控制元件,可以起到弱电强电的桥梁作用,我们这里是控制继电器线圈的通电,从而控制其触点的开合。同样两个状态之间必须有足够时间间隔,否则不能使线圈状态改变。 请参考程序框图自己编程!,参考程序:,ORG 0000H JD: CPL P3.5 ;继电器状态(

20、吸合/分开)切换LCALL DELAY;延时SJMP JD DELAY: 如上例RETEND,返回,实验二,实验要求:要求每1秒钟切换一种发光管显示方式(8个发光管通过74LS240直接连接到P1口,这里的74LS240 为非门驱动电路),共有8种不同的显示方式,然后是反复出现这个8个状态; 实验目的:掌握单片机内部定时器的使用方法和子程序的使用方法;,注 意晶振为11.0592MHZ,定时器最大定时时间为216Tcy71111us71ms。这里我们将定时器1工作于方式1,可以产生一个50ms的时基,所以要想得到1秒延时,必须有20个50ms的发生,即统计到20个定时,就为1秒。请参考程序框图

21、自己编程! 若有时间,请将实验一修改成 采用定时器定时方式控制。,实验指导书修改,实验目的2,“中断处理程序”修改为“子程序”; 删除实验说明4; 实验框图,“中断子程序”修改为“子程序”,“中断返回”修改为“返回”。,参考程序:,ORG 0000HMOV TMOD , #10H ;置T1为方式1MOV TL1 , #00H ;延时50mS的时间常数MOV TH1 , #4CHMOV 30H , #00HMOV R1 , #00HMOV DPTR , #TABSETB TR1,LL: JNB TF1,$MOV TL1 , #00H ;延时50mS常数MOV TH1 , #4CHCLR TF1I

22、NC R1CJNE R1, #20 , LLMOV R1,#0ACALL LT1AJMP LL,LT1: ;子程序MOV A , 30H ;置常数表偏移量MOVC A , A+DPTR ;读常数表MOV P1 , A ;送P1口显示INC 30HANL 30H , #07HRET ;LED显示常数表 TAB: DB 05H,0AH,50H,0A0HDB 55H,0AAH,0FFH,00HEND,实验三 外部中断,实验要求:以按键为中断申请,每按键一次,切换双色灯的显示颜色,红绿轮流显示。 实验目的:掌握单片机外部中断的使用方法; 注意:74LS273的地址仍为8300H;用开关发出外部中断所需

23、的低电平信号,若采用电平触发方式,在中断程序返回前,必须撤销低电平信号,否则将反复中断;若采用跳变方式就不会有这问题。 请参考程序框图自己编程! 将实验二修改成中断方式。,返回,实验指导书修改,删除“四.实验说明”中第二段文字,以免误解:“本例中使用了INT0中断,一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的寄存器。本例的INT0程序保护了PSW,ACC,2等三个寄存器并且在退出前恢复了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。本例中没有涉及这种情况。”,ORG 0000HAJMP MAINORG 0003H ;中断入口 AJMP P

24、INT0ORG 0030H ;主程序MAIN: SETB IT0 ;负跳变触发或: CLR IT0 ;低电平触发SETB EX0 ;开INT0中断SETB EA ;开总允许开关MOV A , #0FHMOV DPTR , #8300HHere:SJMP Here ;执行其它任务,ORG 0200H ;中断服务程序PINT0:MOVX DPTR , ACPL A或: JNB P3.2 , $ ;等待按键释放CLR IE0 ;清除误触发RETI ;返回主程序END,实验五,实验要求:使用62256,作为数据空间07FFFH,对其进行读写,检验硬件线路; 实验目的:学习片外存储器扩展方法;学习数据存

25、储器不同的读写方法;学习延时程序的编写方法; 实验方法:检验硬件线路一般使用55H(0101,0101B)与AAH(1010,1010B),可以有效检查总线是否短路、断路或接错。 注意:实验装置使用的晶振为11.0592MHZ,主要是为了得到准确的串行通讯波特率,计算延时程序时应该注意机器周期时间。 请参考程序框图自己编程!,参考程序:,ORG 0000H START:MOV DPTR , #4100H ;置外部RAM读写地址MOV A , #55H ;测试的数据一MOV B , AMOVX DPTR , A ;写外部RAMMOVX A , DPTR ;读外部RAM XRL A , B ;比较

26、读回的数据JNZ ERROR MOV A , #0AAH ;测试的数据二MOV B , A,MOVX DPTR , AMOVX A , DPTRXRL A , BJZ PASS ;测试通过 ERROR: SETB P1.0 ;测试失败,点亮LEDSJMP $PASS: CPL P1.0 ;LED状态(亮/灭)转换MOV R1 , #00H ;延时 DELAY: MOV R2 , #00HDJNZ R2 , $DJNZ R1 , DELAYLJMP START ;循环测试END,返回,实验七,实验要求:8031内部定时器T0工作于计数器方式,累计来自P3.4引脚的脉冲信号;定时器T1用于产生50

27、ms定时,统计50ms时间内的脉冲个数;每5秒测试并显示一次。 实验目的:掌握单片机内部定时器/计数器不同工作方式和中断处理的使用方法; 注意:74LS273的地址仍为8300H; 8个发光管通过74LS240直接连接到P0口;引到P3.4的脉冲信号来自经74LS393分频的振荡信号(类似晶振回路,有较高的频率)。 请参考程序框图自己编程!,参考程序:,ORG 0000HAJMP STARTORG 000BH ;T0中断入口地址RETIORG 001BH ;T1中断入口地址AJMP INT_T1ORG 0040H START:MOV SP , #60HMOV TMOD , #15H ;置T1为

28、方式1;置T0为方式1,计数方式,MOV TL0 , #00H ;计数器清零MOV TH0 , #00HMOV TL1 , #00H ;延时50mS常数MOV TH1 , #4BHMOV R0 , #100 ;延时 5 秒常数SETB TR0 ;启动T0SETB ET0SETB TR1 ;启动T1SETB ET1SETB EA ;开中断SJMP $ INT_T1: PUSH ACCPUSH PSW,MOV TL1 , #00H ;延时 50mS 常数MOV TH1 , #4BHMOV R1 , TL0 ;保存计数值MOV R2 , TH0MOV TL0 , #00H ;清计数器MOV TH0 , #00HDJNZ R0 , EXITMOV R0 , #100 ;延时 5 秒常数MOV DPTR , #8300H ;LED地址MOV A , R1MOVX DPTR , A ;把计数值在LED上显示 EXIT: POP PSWPOP ACCRETIEND,返回,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报