单片机课后答案和实验市公开课金奖市赛课一等奖课件_第1页
单片机课后答案和实验市公开课金奖市赛课一等奖课件_第2页
单片机课后答案和实验市公开课金奖市赛课一等奖课件_第3页
单片机课后答案和实验市公开课金奖市赛课一等奖课件_第4页
单片机课后答案和实验市公开课金奖市赛课一等奖课件_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

习题讲解第1页第4章习题讲解1.P98第12题 MOVR0,#0A7H;R0=0A7H,A=X XCHA,R0;A=0A7H,R0=X SWAPA;A=7AH,R0=X XCHA,R0;R0=7AH,A=X2,P98,第15题若执行ADDCA,B指令,A=37H,CY=1;若执行SUBBA,B指令,A=3BH,CY=0第2页3,P99,第18题

MOV30H,#0A4H;30H=A4HMOVA,#0D6H;A=0D6HMOVR0,#30H;R0=30HMOVR2,#47H;R2=47H ANLA,R2;A=46HORLA,@R0;A=E6HSWAPA;A=6EHCPLA;A=91HXRLA,#0FFH;A=6EHORL30H,A;30H=EEH

第3页4,P100,第27题MOVDPTR,#2100HMOVXA,@DPTRORLA,#0F0HANLA,#0F0HMOVX@DPTR,A

其实:MOVDPTR,#2100HMOVA,#0F0HMOVX@DPTR,A

第4页第5章习题讲解1,P130第6题 MOV30H,#0 MOV31H,#0 MOV32H,#0 MOVDPTR,#H MOVR7,#100LOOP:MOVXA,@DPTR INCDPTR JNZL1第5页 INC32H;=0 SJMPL3 L1:JBACC.7,L2 INC30H;>0 SJMPL3 L2:INC31H;<0 L3:DJNZR7,LOOP

SJMP$第6页2,P130第12题 MOVR2,#10 MOVR3,#02H MOVR4,#00H MOVR5,#03H MOVR6,#00HLOOP:MOVDPH,R3 MOVDPL,R4 MOVXA,@DPTR第7页

ANLA,#0FH SWAPA XCHA,B INCDPTR MOVXA,@DPTR ANLA,#0FH ORLA,B INCDPTR MOVR3,DPH MOVR4,DPTR

第8页 MOVDPH,R5 MOVDPL,R6 MOVX@DPTR,A

INCDPTR MOVR5,DPH MOVR6,DPL DJNZR2,LOOP SJMP$

第9页另一个解法:at89s51含有双数据指针 MOVR2,#10 MOVDPTR,#0200H SETBDPS;(AUXR1.0),P50 MOVDPTR,#0300HLOOP:CLRDPS MOVXA,@DPTRANLA,#0FH SWAPA XCHA,B第10页 INCDPTR MOVXA,@DPTR ANLA,#0FH ORLA,B INCDPTRSETBDPS MOVX@DPTR,A

INCDPTR DJNZR2,LOOPCLRDPS SJMP$第11页3,P131第17题 MOVR7,#33 MOVR0,#40H MOVDPTR,#2540HLOOP:MOVA,@R0 MOVX@DPTR,AINCR0 INCDPTR DINZR7,LOOP SJMP$第12页第6章习题讲解1.设MCS-51单片机晶振频率为12MHZ,试用单片机内部定时器方式产生频率为10KHZ等宽矩形方波信号。ORG0000HMOVTMOD,#02HMOVTL0,#0CEH;T=100us,定时50usMOVTH0,#0CEHSETBTR0LOOP:JNBTF0,$CLRTF0CPLP1.0AJMPLOOPEND若为方式0:初值为FE0EH;若为方式1:初值为FFCEH;需要重装初值。第13页2.已知80C51单片机系统时钟频率为6MHZ,请利用定时器T0和P1.2输出矩形脉冲。

参考程序:ORG0000HMOVTMOD,#02H;定时模式2MOVTH0,#0E7H;初始值MOVTL0,#0E7HSETBTR0定时50us第14页L1:SETBP1.2MOVR0,#7DEL:JBCTF0,REPAJMPDELREP:CLRP1.2DJNZR0,DEL AJMPL1END

第15页3.设MCS-51单片机晶振频率为6MHZ,以计数器T0进行外部事件计数,每计数1000个外部事件输入脉冲后,计数器T1开始2ms定时,定时时间到后,T0又开始计数,如此周而复始地工作。参考程序:ORG0000H MOVTMOD,#15H;计数器工作模式LOOP:MOVTL0,#18H;65536-1000MOVTH0,#0FCHSETBTR0JNBTF0,$;等候计数1000次CLRTR0若为方式0:TMOD=14H,初值为E018H;不适适用方式2第16页

CLRTF0 MOVTL1,#18H;定时2msMOVTH1,#0FCHSETBTR1JNBTF1,$;等候1ms时间到CLRTR1CLRTF1AJMPLOOP;循环重复END若为方式0:初值为E018H;不适适用方式2第17页第7章习题讲解1.在80C51应用系统总时钟频率为6MHZ,现需利用定时器T1产生波特率为1200bps。请计算初值,实际得到波特率误差是多少?波特率发生器T1采取工作方式2,波特率不加倍(即SMOD=0),计算时间常数(初始值)。TL1=TH1=X=256-2SMOD×fosc/(32×12×B)=243=F3H(其中SMOD=0)实际波特率B=(20/32)×fosc/[12×(28-243)]=1201.923(误差0.16%)第18页2.以80C51串行口按工作方式3进行串行数据通讯。假定波特率为1200bps,第9位作为奇校验位,以中止方式传送数据,请编写通讯程序。

假定晶振频率为11.0592MHZ。(1)发送程序:ORG0000HAJMPMAINORG0023HAJMPINTSORG0030HMAIN:MOVSCON,#0C0H;串行口方式3MOVTMOD,#20H;T1方式2定时MOVTL1,#0E8H;写入T1时间常数MOVTH1,#0E8HSETBTR1;开启T1

第19页MOVR0,#30H;设数据指针MOVR7,#20H;数据长度MOVIE,#90HMOVA,@R0;开启发送一次JBP,SEND1SETBTB8SEND1:MOVSBUF,A;开启一次发送INCR0SJMP$INTS:CLRTI

DJNZR7,OUT;是否发送完?MOVA,@R0;取一个字符JBP,SEND2;加奇校验SETBTB8

AJMPINTS3第20页SEND2:CLRTR8SEND3:MOVSBUF,A;开启一次发送 INCR0;修改指针OUT:RETIEND(2)接收程序:ORG0000HAJMPMAINORG0023HAJMPINTSORG0030HMAIN:MOVSCON,#0D0H;串行口方式3MOVTMOD,#20H;T1方式2定时MOVTL1,#0E8H;写入T1时间常数MOVTH1,#0E8H第21页SETBTR1;开启T1MOVR0,#30H;设数据指针MOVIE,#90HSJMP$INTS:MOVA,SBUFCLRRI

JBP,INTS1;奇校验

JNBRB8,ERROR

AJMPINTS2INTS1:JBRB8,ERRORINTS2:MOV@R0,A;保留一个字符INCR0

RETIERROR:SETB00H;报错程序RETIEND第22页3.以中止方式设计单片微机秒、分发生器。假定P1.0每秒产生一个机器周期正脉冲,P1.1实现每分钟产生一个机器周期正脉冲。加上必要伪指令和注释。假定晶振频率为12MHZ。解:要求定时时间为1s,若采取定时模式1,依据公式:定时时间T=(65536-初始值x)Tcy,可知最大定时时间为65.536ms。若定时10ms,则必须有100个10ms,即100次溢出中止为1s,10ms时间常数为D8F0H。第23页 ORG0000H AJMPMAIN ORG000BH AJMPINT_T0 ORG0030H MAIN:MOVTMOD,#01H MOVTL0,#0F0H;定时10ms MOVTH0,#0D8H

SETBTR0MOVR6,#00HMOVR7,#00H

第24页 CLRP1.0CLRP1.1SETBET0 SETBEA SJMP$INT_T0:MOVTL0,#0F0H MOVTH0,#0D8HINCR6

CJNER6,#100,OUT;定时1秒钟MOVR6,#00H;为下个周期作准备第25页 SETBP1.0;正脉冲输出CLRP1.0INCR7

CJNER7,#60,OUT;定时1分钟MOVR7,#00H;为下个周期作准备SETBP1.1;正脉冲输出CLRP1.1OUT:RETIEND第26页试验知识预备1.单版微机试验装置相当于一个仿真器,能够仿真MCS-51单片机绝大部分硬件功效;2.像仿真器一样,我们能够在试验装置上进行软、硬件调试,观察控制硬件执行结果或每条指令执行结果;3.应该养成自己动手习惯,只有多动手才有可能深入掌握软、硬件知识;4.刚开始接触必定会有很多问题,应该学会自己分析问题,处理问题,不要急于问老师;5.做试验前要认真准备,编好源程序,有效利用担心试验时间。第27页试验基本步骤(1):1.开启LCAET软件。2.File→New,建立新文件;输入汇编源程序。3.另存为*.asm,此时操作码显示蓝色。注意:汇编程序后缀必须为asm,不然不能正确编译;文件名不能太长,应小于8个字符;存放路径不能为汉字;4.在“编译”菜单栏,使用编译当前文件命令,对源程序进行编译,下面信息栏会提醒语法错误位置和类型,若有错,修改后继续编译,直至没有错误为止。注意:其中若提醒不能与试验机通讯,可打开试验装置电源(右上角有电源开关);若已经打开,请按RST键,使试验仪恢复,利于下载通讯。第28页试验基本步骤(2):5.在断电状态下,按照试验指导书要求正确连线,不要随意乱插乱放,同时因导线轻易损坏,请轻拔轻插,不能硬拉猛攥。6.打开试验装置电源(右上端),再次使用编译当前文件命令,使得将机器码传送到试验仪。注意:若试验装置已经打开运行,请按RST键,使试验仪恢复,利于下载通讯。7.在“调试”菜单栏,使用全速运行或单步运行命令,执行程序,查看运行结果,检验内在逻辑错误,有错则返回第4步继续修改汇编源程序。第29页注意:(1)若不能正常通讯,可能原因是:右下方串行通讯波特率(9600)开关选择错误;或串口连接导线松动。(2)若程序确定无误,而发光二极管显示不正常,可能是导线短路,请更换或叠加导线(个别不亮不影响观察结果,则无需更换);若8个发光管全都不受控制,则可能是芯片损坏,请联络老师更换。(3)在输入指令过程中,要注意指令完整性,不要遗漏“#”、“END”,区分数字“0”与字母“o”、“O”,(4)程序编写完成后,应该自己先认真分析程序执行路径,查找显著逻辑错误,以免产生莫名错误。尤其注意子程序不能放在程序起始部位,同时要尤其注意延时程序循环构架。第30页试验一(1)试验要求:(1)P1口作为输出口,接8只发光二极管,要求编程使放光二极管循环点亮;(2)P1口做输入口,接8个扭子开关,以试验机上74LS273作为输出口(接8个发光管),要求编写程序使得发光管状态能够反应出开关状态;试验目标:学习并行口使用方法;请参考程序框图自己编程!第31页注意(1)这里将74LS273作为一个总线扩展,它输出端Q1~Q8相当于1个扩展片外RAM单元,它地址决定于它使能端CLK,所以这里它地址是8300H,必须使用MOVX指令进行写操作;(2)8个发光管经过74LS240直接连接到P1口,这里74LS240为非门驱动电路;(3)人肉眼要能观察到两个状态间改变,必须有一足够时间间隔,不然感觉全部发光管全亮。第32页参考程序(1):ORG0000HMOVA,#01HROTATE:MOVP1,A;点亮一个LEDRLA;循环右移LCALLDELAY;延时SJMPROTATE

第33页DELAY:;延时子程序(1秒)MOVR0,#0AHDELAY1:MOVR1,#00HDELAY2:MOVR2,#0B2HDJNZR2,$DJNZR1,DELAY2DJNZR0,DELAY1RETEND第34页参考程序(2):ORG0000HMOVDPTR,#8300H;并行输出口地址READ:MOVP1,#0FFH;因P1口是准双向口,所以;把P1口作为输入口时,;应先置高电平MOVA,P1;读开关状态MOVX@DPTR,A;把读入数据输出AJMPREADEND返回第35页试验一(2)试验要求:利用P3口输出高低电平,控制继电器开合,实现对外部功率元件控制;试验目标:掌握位操作控制使用方法;注意:继电器是一个非常好功率控制元件,能够起到弱电→强电桥梁作用,我们这里是控制继电器线圈通电,从而控制其触点开合。一样两个状态之间必须有足够时间间隔,不然不能使线圈状态改变。请参考程序框图自己编程!第36页参考程序:

ORG0000HJD:CPLP3.5;继电器状态(吸合/分开)切换LCALLDELAY;延时SJMPJDDELAY:如上例RETEND返回第37页试验二试验要求:要求每1秒钟切换一个发光管显示方式(8个发光管经过74LS240直接连接到P1口,这里74LS240为非门驱动电路),共有8种不一样显示方式,然后是重复出现这个8个状态;试验目标:掌握单片机内部定时器使用方法和子程序使用方法;第38页注意晶振为11.0592MHZ,定时器最大定时时间为216×Tcy=71111us≈71ms。这里我们将定时器1工作于方式1,能够产生一个50ms时基,所以要想得到1秒延时,必须有20个50ms发生,即统计到20个定时,就为1秒。请参考程序框图自己编程!若有时间,请将试验一修改成采取定时器定时方式控制。第39页试验指导书修改实验目2,“中断处理程序”修改为“子程序”;删除实验说明4;实验框图,“中断子程序”修改为“子程序”,“中断返回”修改为“返回”。第40页参考程序:

ORG0000HMOVTMOD,#10H;置T1为方式1MOVTL1,#00H;延时50mS时间常数MOVTH1,#4CHMOV30H,#00HMOVR1,#00HMOVDPTR,#TABSETBTR1第41页LL:JNBTF1,$MOVTL1,#00H;延时50mS常数MOVTH1,#4CHCLRTF1INCR1CJNER1,#20,LLMOVR1,#0ACALLLT1AJMPLL第42页LT1:;子程序 MOVA,30H;置常数表偏移量MOVCA,@A+DPTR;读常数表MOVP1,A;送P1口显示INC30HANL30H,#07HRET;LED显示常数表TAB:DB05H,0AH,50H,0A0HDB55H,0AAH,0FFH,00HEND第43页试验三外部中止试验要求:以按键为中止申请,每按键一次,切换双色灯显示颜色,红绿轮番显示。试验目标:掌握单片机外部中止使用方法;注意:74LS273地址仍为8300H;用开关发出外部中止所需低电平信号,若采取电平触发方式,在中止程序返回前,必须撤消低电平信号,不然将重复中止;若采取跳变方式就不会有这问题。请参考程序框图自己编程!将试验二修改成中止方式。返回第44页试验指导书修改删除“四.试验说明”中第二段文字,以免误解:“本例中使用了INT0中止,普通中止程序进入时应保护PSW,ACC以及中止程序使用但非其专用存放器。本例INT0程序保护了PSW,ACC,2等三个存放器而且在退出前恢复了这三个存放器。另外中止程序中包括到关键数据设置时应关中止,即设置时不允许重入。本例中没有包括这种情况。”第45页

ORG 0000H AJMP MAIN

ORG 0003H ;中止入口 AJMP PINT0

ORG 0030H ;主程序MAIN:SETB IT0 ;负跳变触发 或:CLR IT0 ;低电平触发SETB EX0 ;开INT0中止SETB EA ;开总允许开关MOVA,#0FH MOV DPTR,#8300HHere:SJMP Here ;执行其它任务第46页

ORG 0200H ;中止服务程序PINT0:MOVX @DPTR,ACPL A或:JNB P3.2,$;等候按键释放CLR IE0 ;去除误触发 RETI ;返回主程序END第47页试验五试验要求:使用62256,作为数据空间0~7FFFH,对其进行读写,检验硬件线路;试验目标:学习片外存放器扩展方法;学习数据存放器不一样读写方法;学习延时程序编写方法;试验方法:检验硬件线路普通使用55H(0101,0101B)与AAH(1010,1010B),能够有效检验总线是否短路、断路或接错。注意:试验装置使用晶振为11.0592MHZ,主要是为了得到准确串行通讯波特率,计算延时程序时应该注意机器周期时间。请参考程序框图自己编程!第48页参考程序:

ORG0000HSTART:MOVDPTR,#4100H;置外部RAM读写地址MOVA,#55H;测试数据一MOVB,AMOVX@DPTR,A;写外部RAMMOVXA,@DPTR;读外部RAM

XRLA,B;比较读回数据JNZERROR

MOVA,#0AAH;测试数据二MOVB,A第49页MOVX@DPTR,AMOVXA,@DPTRXRLA,BJZPASS;测试经过ERROR:SETBP1.0;测试失败,点亮LEDSJMP$PASS:CPLP1.0;LED状态(亮/灭)转换MOVR1,#00H;延时DELAY:MOVR2,#00HDJNZR2,$DJNZR1,DELAYLJMPSTART;循环测试END返回第50页试验七试验要求:8031内部定时器T0工作于计数器方式

温馨提示

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

评论

0/150

提交评论