单片机原理及其接口技能技术总结王敏课后作业答案_第1页
单片机原理及其接口技能技术总结王敏课后作业答案_第2页
单片机原理及其接口技能技术总结王敏课后作业答案_第3页
单片机原理及其接口技能技术总结王敏课后作业答案_第4页
单片机原理及其接口技能技术总结王敏课后作业答案_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

第二章作业(P40)2-4MCS-51单片机中执行程序的地址放在哪?由几个位组成?最大寻址范围是多少?答:放在程序计数器PC中,16位,64KB。2-5在程序存储器中,0000H、0003H、000BH、0013H、001BH、0023H这6个单元有什么特定的含义?答:0000H复位后,PC=0000H,开始执行程序的地址0003H外部中断0(INT0)入口地址000BH定时器0中断(TF0)入口地址0013H外部中断1(INT1)入口地址001BH定时器1中断(TF1)入口地址0023H串行口中断TI/RI入口地址2-10开机复位以后,CPU使用哪一组工作寄存器?它们的地址是什么?如何改变当前工作寄存器?答:使用第0组工作寄存器,00H-07H,通过修改PSW中的RS1和RS0两位来改变当前的工作寄存器。第三章作业(P75)3-7指出指令中的50H或66H个代表什么?解:①MOVA,#50H立即数MOVA,50H直接地址MOV50H,#20H直接地址MOVC,50H位地址MOV50H,20H直接地址②MOV@R0,#66H立即数MOVR6,#66H立即数MOV66H,#45H直接地址MOV66H,C位地址MOV66H,R1直接地址3-9写出能完成下列数据传送的指令:解:①R1中内容传送到R0;MOVA,R1MOVR0,A②内部RAM20H单元中的内容送到30H单元;MOV30H,20H③外部RAM20H单元中的内容送到内部RAM20H单元;MOVR0,#20HMOVXA,@R0MOV20H,A④外部RAM2000H单元中的内容送到内部RAM20H单元;MOVDPTR,#2000HMOVXA,@DPTRMOV20H,A⑤外部ROM2000H单元中的内容送到内部RAM20H单元;MOVDPTR,#2000HMOVA,#00HMOVCA,@A+DPTRMOV20H,A⑥外部2000H单元中的内容送到外部RAM3000H单元;MOVDPTR,#2000HMOVXA,@DPTRMOVDPTR,#3000HMOVX@DPTR,A3-11已知:(20H)=X;(21H)=Y;(22H)=Z,请用图示说明下列程序执行后堆栈的内容是多少?①MOVSP,#70H②MOVSP,#60HPUSH20HPUSH22HPUSH21HPUSH21HPUSH22HPUSH20H解:(73H)=Z;(72H)=Y;(71H)=X;(63H)=X;(62H)=Y;(61H)=Z;3-20试编出能完成如下操作的程序:解:①使20H单元中数的高两位变“0”,其余位不变;ANL20H,#3FH②使20H单元中数的高两位变“1”,其余位不变;0RL20H,#0C0H③使20H单元中数的高两位变反,其余位不变;XRL20H,#0C0H④使20H单元中数的高四位变“1”,低四位变“0”;MOV20H,#0F0H⑤使20H单元中数的所有位变反。XRL20H,#0FFH3-27已知:外部RAM2000H为始址的存储区有20个带符号补码数,请编一程序把正数和正零取出来放到内部RAM20H为始址的存储区(负数和负零不作处理)。解:ORG0000HAJMPMAINORG0100HMAIN:MOVR0,#14HMOVR1,#20HMOVDPTR,#2000HROT:MOVXA,@DPTRJBACC.7,NEXTMOV@R1,AINCR1NEXT:INCDPTRDJNZR0,ROTSJMP$END第四章作业(P104)4-7已知RAM的BLOCK单元,请编写其中可以统计正负数个数分别存入NUM和NUM+1单元的程序。解:ORG0100HLENDATA20HNUMDATA21HBLOCKDATA23HMAIN:MOVNUM,#00HMOVNUM+1,#00HMOVR0,#BLOCKLOOP:MOVA,@R0JNBACC.7,POSIINCNUM+1SJMPNEXTPOSI:INCNUMNEXT:INCR0DJNZLEN,LOOPSJMP$END4-9外部RAM从2000H-2100H单元有一数据块,请编出将它们传送到外部RAM3000H-3100H区域的程序。解:采用当型循环,判断程序结束条件ORG1000HMOVDPTR,#2000HNEXT:MOVXA,@DPTRORLDPH,#10H;将DPH中的20H变成30HMOVX@DPTR,AANLDPH,#0EFH;将DPH中的30H变成20HINCDPTRMOVA,DPHCJNEA,#21H,NEXTMOVXA,@DPTR;将2100H单元的数据送AMOVDPH,#31HMOVX@DPTR,A;将A的数据送3100H单元SJMP$END4-11将内部RAM的AAA单元中8位无符号数转换成BCD码表示的十进制数。(要求用连续除10的方法实现)解:ORG0100HAAADATA20HBAIDATA21HSHIDATA22HGEDATA23HMOVA,AAAMOVB,#0AHDIVABMOVGE,BMOVB,#0AHDIVABMOVSHI,BMOVBAI,ASJMP$END4-15请编写能从内部RAM的BLOCK为起始地址的20个无符号数找出最小值,并把它送到MIN单元的程序。解:ORG0100HMINDATA20HBLOCKDATA21HMAIN:MOVR0,#BLOCKMOVR2,#13HMOVA,@R0LOOP:INCR0MOVB,@R0CJNEA,B,NEXTNEXT:JCNEXT1MOVA,@R0NEXT1:DJNZR2,LOOPMOVMIN,ASJMP$END第五章作业(P155)6-4编程,利用定时器T0(工作在方式1)产生一个50Hz的方波,由P1.0输出,晶振频率为12MHz。解:按照题意,定时器T0需要工作在方式1定时10ms,则TMOD控制字为01H;已知fosc=12MHz,则机器周期为1μs。定时初值=216–10ms/1μs=55536=D8F0H,即TH0=0D8H,TL0=0F0H。则相应的程序如下:ORG0000HAJMPSTARTORG2000HSTART:MOVTMOD,#01H;写入工作方式字MOVTH0,#0D8H;写入计数初值MOVTL0,#0F0HSETBTR0;启动T0LOOP:JBCTF0,PE;TF0=1溢出转移PE,并清除TF0AJMPLOOP;TF0为0转LOOP等待PE:MOVTH0,#0D8H;重装初值MOVTL0,#0F0HCPLP1.0;取反AJMPLOOP;转LOOP等定时时间到END6-5在8051单片机中,已知晶振频率为12MHz,试编程使P1.0和P1.2分别输出周期为2ms和500ms的方波。设晶振频率为6MHz,试用T0作为外部计数器,编程实现每当计到1000个脉冲,使T1开始2ms定时,定时时间到后,T0又开始计数,这样反复循环下去。解:1)按照题意,定时器T0需要工作在方式1定时1ms,则TMOD控制字为01H;已知fosc=12MHz,则机器周期为1μs。定时初值=216–1ms/1μs=64536=FC18H,即TH0=0FCH,TL0=18H。则相应的程序如下:主程序:ORG1000HSTART:MOVTMOD,#01HMOVTH0,#0FCHMOVTL0,#18HMOVIE,#82H;开T0中断SETBTR0;启动T0MOVR0,#0FAH;软件计数器赋初值LOOP:SJMP$;等待中断中断程序:ORG000BHAJMPBRT0ORG0080HBRT0:CPLP1.0DJNZR0,NEXT;250ms未到,转NEXTCPLP1.2;250ms到,改变P1.2电平MOVR0,#0FAHNEXT:MOVTH0,#0FCHMOVTL0,#18HRETIEND2)按照题意,定时器T0需要工作在方式1计数方式,定时器T1需要工作在方式1定时方式,则TMOD控制字为15H;T0计数初值为216–1000=64536=FC18H,即TH0=0FCH,TL0=18H;已知fosc=6MHz,则机器周期为2μs。T1定时初值=216–2ms/2μs=64536=FC18H,即TH1=0FCH,TL1=18H。则相应的程序如下:ORG2000HSTART:MOVTMOD,#15H;写入工作方式字MOVTH0,#0FCH;写入计数初值MOVTL0,#18HMOVTH1,#0FCHMOVTL1,#18HSETBTR0;启动T0LOOP:JBCTF0,PE;TF0=1溢出转移PE,并清除TF0AJMPLOOP;TF0为0转LOOP等待PE:SETBTR1;启动T1定时,关T0计数CLRTR0LOOP1:JBCTF1,PE1;TF1=1溢出转移PE1,并清除TF1AJMPLOOP1;TF1为0转LOOP1等待PE1:MOVTH0,#0FCH;重装初值MOVTL0,#18HMOVTH1,#0FCHMOVTL1,#18HSETBTR0;启动T0计数,关T1定时CLRTR1AJMPLOOPEND6-6已知单片机系统时钟频率为6MHz,若要求定时值分别为0.1ms、1ms和10ms,定时器T0工作在方式0、方式1和方式2时,定时器对应的初值各为多少?解:已知fosc=6MHz,则机器周期为2μs。方式0的初值分别为:8142(1FCEH),即TH0=0FEH,TL0=0EH;7692(1E0CH),即TH0=0F0H,TL0=0CH;3192(0C78H),即TH0=63H,TL0=18H。方式1的初值分别为:65486(FFCEH);65036(FE0CH);60536(EC78H)。方式2定时0.1ms的初值为206(CEH),不能直接定时1ms和10ms。第六章作业(P210)8-2什么是半双工、全双工方式?MCS-51单片机属于哪种传送方式?解:1)半双工方式——通信双方只有一条双向传输线,允许数据双向传送,但每个时刻上只能有一方发送,另一方接收,这是一种能够切换传送方向的单工方式;2)全双工方式——通信双方有两条传输线,允许数据同时双向传送,其通信设备应具有完全独立的收发功能。单片机属于全双工传送方式。8-6设串行口通信波特率为2400bps,异步帧信号由8位数据,无校验位和一个停止位组成,请问传输1024个字节数据,需要多少时间?解:每一个字符规定包含10个位(一个起始位、8个数据位和1个停止位),则每秒钟可以传送240个字节数据,传输1024个字节数据共需要4.2667秒8-7请用中断法编出串行口方式1下的发送程序,设单片机主频为6MHz,波特率为1200bps,发送数据缓冲区在外部RAM,始址为Tblock,数据块长度为30,采用偶校验,放在发送数据第8位(数据块长度不发送)。解:串行口工作在方式1,定时器T1工作在方式2,作为波特率发生器。定时常数:X=256―(fosc*2SMOD)/(384*波特率)取SMOD=1,则X=229.96=230=E6H。(若取SMOD=0,则X=F3H)采用中断方式编程,单片机发送程序如下:主程序:ORG2000HTblockDATA2000HMOVTMOD,#20H;定时器(波特率)初始化MOVTL1,#0E6HMOVTH1,#0E6HCLRET1;关定时器T1中断SETBTR1;启动T1MOVSCON,#40H;串行口初始化(方式1)MOVPCON,#80H;SMOD=1MOVDPTR,#TblockMOVR7,#1EHTRS:MOVXA,@DPTRMOVC,PSW.0MOVACC.7,CMOVSBUF,A;启动发送DECR7INCDPTRSETBEA;允许串行口中断WAIT:SETBESSJMPWAIT;等待串行口中断中断服务程序:ORG0023HLJMPSBVORG0100HSBV:CLRESCLRTIMOVXA,@DPTRMOVC,PSW.0MOVACC.7,CMOVSBUF,A;启动发送DJNZR7,NEXTSJMP$NEXT:INCDPTRRETI;中断返回END第七章作业(补充题)7-1如下图所示8051的P1.4~P1.7接有4个发光二极管,P1.0~P1.3接有4个开关,最下方按键用于产生中断请求信号。每中断一次,采集一次P1.0~P1.3的开关状态反映到P1.4~P1.7的发光二极管上。解:程序清单如下:ORG0000H;主程序SJMPMAINORG0003HAJMPINT0;转入服务程序ORG0030HMAIN:SETBIT0;设INT0为边沿触发SETBEX0;允许INT0中断SETBEA;开放总允许SJMP$INT0:ORLP1,#0FH;中断服务程序:MOVA,P1;从P1口输入开关状态SWAPA;交换高、低4位XRLA,#0F0H;低4位不变,高4位取反MOVP1,A;输出RETIEND7-2单片机P1端口并行连接两只共阴极数码管显示器,利用扫描方式循环显示两位数00、01、02、……98、99。1)写出共阴极接法下数码管显示0~9的字型码;2)编写程序实现上述功能。解:1)3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH2)程序清单如下:ORG0000HAJMPMAINORG000BHAJMPTIMERORG0030HTABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHMAIN:MOVR0,#00HMOVDPTR,#30HMOVTMOD,#01HMOVTH0,#0D8HMOVTL0,#0F0HSETBET0SETBEASETBTR0START:INCR0CJNER0,#100,NEXTMOVR0,#00HNEXT:MOVA,R0MOVB,10DIVABMOVR1,A;十位缓存MOVR2,B;个位缓存MOVR4,#200DELAY:MOVR5,#200DJNZR5,$DJNZR4,DELAYAJMPSTARTTIMER:CLRTR0MOVA,R1MOVCA,@A+DPTRMOVP1,ASETBP2.1MOVR6,#200DJNZR6,$CLRP2.1MOVA,R2MOVCA,@A+DPTRMOVP1,ASETBP2.0MOVR6,#200DJNZR6,$CLRP2.0MOVTH0,#0D8HMOVTL0,#0F0HSETBTR0RETIEND第八章作业(补充题)8-1根据图9-3电路,请编写如下图所示梯形波,要求梯形波的下底由8031内部定时器实现。(设fosc=12MHz)解:ORG0000HAJMPSTARTORG0100HSTART:MOVTMOD,#10H;写入工作方式控制字MOVTH1,#3CH;写入计数初值MOVTL1,#B0HMOVR0,#0FEHCLRADOWN:MOVX@R0,A;线性下降段INCAJNZDOWNSETBTR1;启动T1工作WAIT:JBCTF1,NEXT;等待50ms时间到SJMPWAITNEXT:CLRTR1;关闭T1MOVTH1,#3CH;重装计数初值MOVTL1,#B0HMOVA,#0FEHUP:MOVX@R0,A;线性上升段DECAJNZUPSJMPDOWNEND8-2用查询和中断方式实现AD转换编程,要求对通道5连续采集3次取中值作为本次采样值,并存于内部RAM30H单元。中断方法:;主程序……ORG0100HSTART:MOVR0,#0F0HMOVR1,#30HMOVR2,#05H;IN5通道号MOVR3,#03H;循环次数SETBEASETBEX1;开外中断0SETBIT1;中断请求信号为下降沿触发MOVA,R2;选通道IN5MOVX@R0,A;启动A/D转换LOOP:SJMPLOOP;等待中断;中断服务程序……ORG1000HADINT0:MOVXA,@R0;读取A/D转换数据MOV@R1,A;存储数据INCR1;数据指针加1DJNZR3,ROTACALLADSHUJU;调用数据处理子程序CLREX0JMPEXITROT:MOVA,R2MOVX@DPTR,A;启动A/D转换EXIT:RETI;数据处理子程序ADSHUJU:MOVA,30HCJNEA,31H,NEXT

温馨提示

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

评论

0/150

提交评论