




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机原理及应用技术课后习题参考答案第三章MCS-51指令系统3-1MCS-51指令系统有哪几种寻址方式?按功能分类有哪几种指令?3-2设A=0FH,R0=30H,片内RAM的(30H)=0AH,(31H)=0BH,(32H)=0CH,下歹U程序段运行后的结果?MOVA,R0;A=0AHMOVR0,32H;(30H)=0CHMOV32H,A;(32H)=0AHMOVR0,#31H;R0=31HMOVA,R0;A=(31H)=0BH3-3(1)R0的内容传送到R1MOVA,R0MOVR1,A(2)内部RAM20H单元的内容传送到AMOVA,20H(3)外部RAM30H单元的内容传送到R0MOVR
2、1,#30HMOVXA,R1MOVR0,A外部RAM30H单元的内容传送到内部RAM20H单元MOVR1,#30HMOVXA,R1MOV20H,A(5)外部RAM1000H单元的内容传送到内部RAM20H单元MOVDPTR,#1000HMOVXA,DPTRMOV20H,A(6)程序存储器ROM2000H单元的内容传送到R1MOVDPTR,#2000HCLRAMOVCA,A+DPTRMOVR1,ARAM2000H单元的内容传送到内部RAM20H单元MOVDPTR,#2000HMOVXA,DPTRMOV20H,A(8)RAM2000H单元的内容传送到外部RAM30H单元MOVDPTR,#2000H
3、MOVXA,DPTRMOVR0,#30HMOVXR0,ARAM2000H单元的内容传送到外部RAM1000H单元MOVDPTR,#2000HMOVXA,DPTRMOVDPTR,#1000HMOVXDPTR,A3-4设内部RAM30H=5AH,5AH=40H,40H=00H,P1=7FH,下面程序执行后的结果如何?MOVR0,#30H;R0=30HMOVA,R0;A=(30H)=5AHMOVR1,A;R1=5AHMOVR1,P1;(5AH)=7FHMOVA,P1;A=7FHMOV40H,#20H;(40H)=20HMOV30H,40H;(30H)=00H3-5编程,将内部RAM20H-2FH共1
4、6个连续单元清零ORG0100HMOVR0,#20HMOVR2,#16LOOP:MOVR0,#00HINCR0DJNZR2,LOOPEND3-6编程,求出内部RAM20H单元中的数据含“1”的个数,并将结果存入21H单元中ORG0100HMOV21H,#0MOVR2,#8MOVA,20HCLRCLOOP:RLCAJCCOUNTDJNZR2,LOOPSJMPSTOPCOUNT:INC21HDJNZR2,LOOPSTOP:SJMP$END3-7编程,找出内部RAM30H-50H单元中出现FFH的次数,并将结果存入51H单元中ORG0100HMOV51H,#0MOVR0,#30HMOVR2,#20H
5、LOOP:MOVA,R0CJNEA,#0FFH,AGAININC51HAGAIN:INCR0DJNZR2,LOOPSJMP$ENDi03-8编程,计算2i,并将结果存入内部的30H单元ORG0100HMOV30H,#0MOV31H,#0;i的初值MOVR0,#30HMOVR2,#11MOVA,31HLOOP:INC31HADDA,R0MOVR0,AMOVA,31HRLADJNZR2,LOOPSJMP$END3-9已知片内RAM(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H.说明下列指令源操作数的寻址方式,及指令执行的结果MOVA,40H;A=48H直接寻址MOV
6、R0,A;R0=48H寄存器寻址MOVP1,#0F0H;P1=0F0H直接寻址MOVR0,30H;(48H)=38H寄存器间接寻址MOVDPTR,#3848H;DPTR=3848H直接寻址MOV40H,38H;(40H)=(38H)=40H直接寻址MOVR0,30H;R0=(30H)=38H寄存器寻址MOVP0,R0;P0=38H直接寻址MOV18H,#30H;(18H)=30H直接寻址MOVA,R0;A=(38H)=40H直接寻址MOVP2,P1;P2=0F0H直接寻址3-10设R0=32H,A=48H,片内RAM(32H)=80H,(40H)=08H.求指令运行的结果MOVA,R0;A=(
7、32H)=80HMOVR0,40H;(32H)=(40H)=08HMOV40H,A;(40H)=80HMOVR0,#35H;R0=35H3-11设A=83H,R0=17H,片内RAM(17H)=34H,求指令运行的结果ANLA,#17H;A=03HORLA,17H;(17H)=(37HXRLA,R0;A=37HCPLA;A=C8H3-12编程实现片内RAM20H-2FH与30H-3FH中数据的对换ORG0100HMOVR0,#20HMOVR1,#40HMOVR2,#0FHLOOP:MOVA,R0MOVR1,AINCR0INCR1DJNZR2,LOOPMOVR0,#30HMOVR1,#20HMO
8、VR2,#0FHLOOP1:MOVA,R0MOVR1,AINCR0INCR1DJNZR2,LOOP1MOVR0,#30HMOVR1,#40HMOVR2,#0FHLOOP1:MOVA,R1MOVR0,AINCR0INCR1DJNZR2,LOOP1SJMP$END3-13A=34H,(30H)=4FH,ADDA,30H执行后的结果A=83H,PSW=41H3-14SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26)=56H,执行RET后SP=PC=SP=23H,PC=3412H3-15SP=25H,PC=2345H标号LABEL所在的地址3456H,执行LCALLLAB
9、EL后SP=PC=,堆栈中的数据有何变化?SP=27H(26H)=48H(27H)=23HPC=3456H第四章程序设计基础4-1片内RAM30H单元开始存放着一组用补码表示的有符号数,数目存于20H单元。编程统计出正数,0,负数的数目,分别存到21H,22H,23H单元。ORG0100HMOV21H,#0MOV22H,#0MOV23H,#0MOVR0,#30HLOOP:MOVA,R0CJNEA,#0,PDINC22HSJMPDONEPD:JB,FUINC21HSJMPDONEFU:INC23HDONE:INCR0DJNZ20H,LOOPSJMP$END4-2片内RAM20H-2FH.凡是满足
10、奇偶校验的数据(1的个数为偶数)的数转存到片外8000H开始的数据区ORG0100HMOVR0,#20HMOVDPTR,#8000HMOVR2,#0FHLOOP:MOVA,R0JB,DONEMOVXDPTR,AINCDPTRDONE:INCR0DJNZR2,LOOPSJMP$END4-3编程,把外部RAM1000H-10FFH的数据传送到2000H开始的区域ORG0100HMOVR3,#10HMOVR4,#20HMOVDPL,#00HMOVR2,#0LOOP:MOVDPH,R3MOVXA,DPTRMOVDPH,R4MOVXDPTR,AINCDPLDJNZR2,LOOPSJMP$END4-4片内
11、RAM30H单元开始存放着一组无符号数,其数目在21H单元中。编程将其中最小的数存入21HORG0100HMOVR0,#30HMOVR2,21HMOVA,30HLOOP:CJNEA,R0,PDSJMPDONEPD:JNCDONEMOV22H,R0XCHA,22HDONE:INCR0DJNZR2,LOOPMOV21H,ASJMP$END4-5编程实现片内RAM30H单元开始的16个数按顺序颠倒过来ORG0100HMOVR0,#30HMOVR1,#40HMOVR2,#0FHLOOP:MOVA,R0MOVR1,AINCR0INCR1DJNZR2,LOOPMOVR2,#0FHMOVR0,#40HMOV
12、R1,#3FHLOOP1:MOVA,R0MOVR1,AINCR0DECR1DJNZR2,LOOP1SJMP$END4-6编程实现片内RAM30H单元开始的16个数,存有最小数值的所在单元的内容改为0FFHORG0100HMOVR0,#30HMOVR2,#16MOVA,30HMOV22H,#022H存放找到的16个数中的最小值MOV23H,#0;存放最小数值的地址放到23HLOOP:CJNEA,R0,PDSJMPDONEPD:JNCDONEMOV22H,R0MOV23H,R0XCHA,22HDONE:INCR0DJNZR2,LOOPMOVR0,23HMOVR0,#0FFHSJMP$END4-7编
13、程实现=ORG0100HMOVC,ANLC,/MOV20H,CMOVC,ANLC,/ORLC,20HANLC,MOV,CEND4-8编程统计片内RAM30H单元开始的16个数,有多少数大于40,小于80,将结果存入40H单元中ORG0100HMOVR0,#30HMOVR2,#16MOV40H,#0LOOP:MOVA,R0CJNEA,#40,PDSJMPDONEPD:JNCPD2SJMPDONEPD2:CJNEA,#80,PD3SJMPDONEPD3:JCCOUNTSJMPDONECOUNT:INC40HDONE:INCR0DJNZR2,LOOPSJMP$END第六章中断系统6-1定时器T0和T
14、1各有几种工作方式?请简述。答:四种。工#T0T1最大计数模值初值加载方式最大计数模值初值加载方式方式0213人工加载213人工加载方式12伯人工加载2伯人工加载方式228自动加载28自动加载(常用于串口通信波特率发生器)方式328TH0、TL0被分成两个相互独立的8位计数器;TL0既可做定时器也可做计数器;TH0可做内部定时器。人工加载初值8位计数,无中断产生,自动加载初值,用于/、需要中断的场合6-2已知单片机系统时钟频率fosc=12MHz,若要求定时值分别为、1ms、10ms,定时器T0工作在方式0,方式1和方式3时,定时器对应的初值各为多少?定时时间工作方式0初值工作方式1初值工作方
15、式2初值工作方式3初值FC1CHFF9CH9CH9CH1msE018HFC18H10msD8F0H6-3定时器/计数器T0已预置为156,工作于方式2计数,现T0引脚上输入周期为1ms的脉冲,问:(1)此时T0的实际用途是?(2)在什么情况下,T0溢出?答:(1)计数器(2)T0可记录100个外部脉冲,即从开始启动工作,经过100ms开始溢出。6-4设系统时钟为6MHz,利用T0和产生连续矩形波,高电平宽度为50us,低电平宽度为300uso解:因为系统时钟为6MHz,则一个计数脉冲为2us若T0工作于方式1,则输出高电平T0需记录25个脉冲,计数初值为216-25=FFE7H,则输出低电平T
16、0需记录150个脉冲,计数初值为216-150=FF6AH,编程如下ORG0000HLJMPMAINORG000BHLJMPT00ORG0100HMAIN:MOVSP,#60HMOVTMOD,#01HMOVTH0,#0FFHMOVTL0,#0E7HSETBEASETBET0SETBSETBTR0SJMP$T00:JNB,QFMOVTH0,#FFHMOVTL0,#0E7HSJMPDONEQF:MOVTH0,#0FFHMOVTL0,#6AHDONE:CPLRETIEND6-5利用定时器来测量单次正脉冲宽度,米用何种方式可获得最大量程?设f0sc=6MHz,求允许测量的最大脉冲宽度是多少?答:定时器
17、方式1,最大脉冲宽度为2us*216=6-6试编制一程序,其功能为:当引脚的电平上跳时,对的输入脉冲进行计数;当引脚的电平下跳时,停止计数,并将计数值写入R6与R7。解:接引脚,利用T0做计数器,工作于方式1,初值为0(T0未工作于中断方式)ORG0000HLJMPMAIN;ORG000BHORG0100HMAIN:MOVSP,#60HMOVR6,#0MOVR7,#0MOVTMOD,#05HMOVTH0,#0MOVTL0,#0LOOP:JNB,LOOPSETBTR0LOOP1:JB,LOOP1CLRTR0MOVR6,TH0MOVR7,TL0SJMP$END6-7试用中断技术设计一发光二极管LE
18、D闪烁电路,闪烁周期为2s,要求亮1s,再日f1s。解:设接1发光二极管,低电平点亮;利用定时器T0,工作于定时器方式2,设系统频率为fosc=12MHz,则一个定时脉冲为1us,每次中断定时250us则需要4000个中断实现1s的定时利用R6,R7做软件计数器,初值分别为40,100;定时初值28-250=06HORG0000HLJMPMAINORG000BHLJMPT00ORG0100HMAIN:MOVSP,#60HMOVTMOD,#02HMOVTH0,#06HMOVTL0,#06HMOVR6,#40MOVR7,#100CLRSETBEASETBET0SETBTR0SJMP$T00:DJN
19、ZR6,DONEMOVR6,#40DJNZR7,DONEMOVR7,#100DONE:CPLRETIEND6-8试用中断方法设计秒、分脉冲发生器,即由8031的每秒产生一个机器周期的正脉冲,由每分钟产生一个机器周期的正脉冲。解:设系统时钟频率为12MHz,则一个计数脉冲为1us,禾J用T0做定时器记录50ms,计数初值为216-50000=3CB0H,利用R6,R7为软件计数器,初值为20,60,分别实现1s和1分钟的定时ORG0000HLJMPMAINORG000BHLJMPT00ORG0100HMAIN:MOVSP,#60HMOVTMOD,#01H;T0定时器,工作方式1MOVTH0,#3
20、CHMOVTL0,#0B0H;装入50ms的初始值MOVR6,#20MOVR7,#60CLR;,均输出低电平CLRSETBEASETBET0SETBTR0;中断允许,开始定时SJMP$T00:DJNZR6,DONE;R6-1=0,定时1秒时间至USETB;输出1us的高电平CLR;继续输出低电平MOVR6,#20DJNZR7,DONE;R7-1=0,定时1分钟时间到SETB;输出1us的高电平CLR;继续输出低电平MOVR7,#60DONE:MOVTH0,#3CHMOVTL0,#0B0HRETIEND第七章串口工作方式0关于I0接口的扩展7-1利用74LS164并行输出8只发光二极管,将二极管
21、从左至右点亮,时间间隔1S左右,并循环往复,画出电路原理图,编程实现。(P109)ORG0100HMOVSCON,#00HMOVA,#80HLOOP:MOVSBUF,AACALLDEL1SRRASJMPLOOP7-4利用MCS-51系列单片机的串行接口设计键盘输入电路(P111)第九章模拟量输入输出接口技术9-1在一个fosc为12MHz的8031单片机系统中,接有一片DAC0832,它的地址为7FFFH,输出电压为0-5V,请画出有关逻辑框图并编写程序,使其运行后能在示波器上显示锯齿波(设示波器X方向扫描频率为50us格,Y方向扫描频率为1V/格)。答:ORG0000HLJMPMAINORG
22、0100HMAIN:MOVSP,#60HMOVDPTR,#7FFFHLOOP:MOVA,#00HLOOP1:MOVXDPTR,A;2INCA;1CJNEA,#0,LOOP1;2SJMPLOOPEND输出波形为周期是255us幅值为5V的锯齿波.9-2在fosc=12MHz的系统中,接有ADC0809,地址为7FF8H-7FFFH,试画出逻辑框图并编写ADC0809的初始化程序和定时取样通道2的程序(假设取卞¥频率为1ms一次,每次取样4个数据,存于8031单片机内部RAM70h-73h中)。答:连接0809的START端ORG0000HLJMPMAINORG0100HMAIN:MOV
23、SP,#60HMOVDPTR,#7FFAHMOV70H,#0MOV71H,#0MOV72H,#0MOV73H,#0MOVR2,#4MOVR0,#70HLOOP:ACALLDEL_1msLOOP1:SETBNOPNOPNOPCLRMOVXA,DPTRMOVR0,AACALLDEL_100usINCR0DJNZR2,LOOP1MOVR0,#70HMOVR2,#4SJMPLOOPDEL_1ms:MOVR7,#5;1DEL2:MOVR6,#100;1DEL1:DJNZR6,DEL1;2DJNZR7,DEL2;2RETDEL_100us:MOVR5,#5;1DEL21:MOVR4,#10;1DEL11:
24、DJNZR4,DEL11;2DJNZR5,DEL21;2RETEND9-3DAC0832与8031单片机连接时有哪些控制信号?其作用是什么?P201答:CS,WRi,WR2,XFERo而,碉两个引脚,使数据线上的数据送入输入寄存器;当CPU发出控制信号WR2,XFER时,把输入寄存器中的数据送给DAC寄存器,并随即由D/A转换器进行转换,变成模拟信号输出。9-4已知DAC0832的地址为7FFFH,输出电压为0-5V,编写产生矩形波的转换程序,其波形占空比为1:4,高电平电压为,低电平电压为。答:ORG0000HLJMPMAINORG0100HMAIN:MOVSP,#60HMOVDPTR,#7
25、FFFHMOVR2,#3LOOP:MOVA,#7FHMOVXDPTR,A;2ACALLDELMOVA,#40HMOVXDPTR,ADELL:ACALLDELDJNZR2,DELLMOVR2,#3SJMPLOOPDEL:MOVR7,#10;若主频为12MHz,则波形周期为400usDEL2:MOVR6,#20DEL1:DJNZR6,DEL1DJNZR7,DEL2RETEND9-5已知ADC0809的地址为7FF8H-7FFFH。编写每隔100ms轮流采集一次8个通道数据的程序,共取样10次,其取样值存入片外RAM从3000H开始的存储单元中(设fosc=6MHz)答:连接0809的START端,OR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论