1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单片机与接口技术 课后习题答案,第1页,习题答案,第二章:硬件结构,一、填空,1.0;低电平2.32;4;8;R0-R73.上电自动复位;手动按键复位;0;00H-07H;RS1=1,RS0=04.内部数据存放器;外部数据存放器;内部程序存放器;外部程序存放器;35.00H-FFH;0000H-FFFFH6.0B;4KB7.1.2MHz;12MHz;1us,二、选择,1.2.3.4.5.6.7.8.9.,三、判断,1.2.3.4.5.6.7.8.9.,第2页,习题答案,第三章:指令系统,一、填空,1.指令2
2、111;单;双;三3.74.操作数;A;B;DPTR5.操作数;地址;R0;R1;DPTR6.直接7.DPTR;PC;A;程序存放器8.DPTR;SP;MOVX9.直接;马上10.80H,第3页,习题答案,第三章:指令系统,一、填空,11.68H12.68H13.62H;68H;36H14.41H;39H;88H15.BFH;0;0;016.2EH;1;1;017.26H;118.90H;06H;0;1,19.16H;05H;0;0,20.06H;09H21.00H;96H,二、选择,1.2.3.4.,第4页,习题答案,三、编程与问答题,9:试编写程序,采取“与”运算,判断内RAM 20H单
3、元8位二进制数是整数还是负数。,ORG0000HMOV20H,#10;赋初值MOVA,#80H;(ACC.7)=1ANLA,20HJZPOS;正数?(POSITIVE NUMBER)NEG:CLRF0;负数(NEGATIVE NUMBER)SJMPOUT;ENDPOS:SETBF0;正数,置标志位F0OUT:NOPEND;结束,第5页,习题答案,11:试编写程序,将内RAM从20H开始存放16个数传送到从18H开始单元中。,ORG0000HMOVR0,#20H;存放数据原始起始地址MOVR1,#1;第一个数据为1INIT:MOVA,R1;循环送数(初始化)MOVR0,A;INCR0;INCR1
4、CJNER1,#11H,INIT;是否送完16个数?SETBF0;置初始化完成标志位MOVR0,#20H;存放数据原始起始地址MOVR1,#18H;存放数据目标起始地址MOVR2,#10H;计数:共16个数据LOOP:MOVA,R0;送数MOVR1,AINCR0INCR1DJNZR2,LOOP;是否传送结束?SETBP1.0;置传送结束标志位END;结束,第6页,习题答案,13:试编写程序,将片外RAM从H开始存放16个数传送到片外RAM从30H开始单元中。,ORG0000HMOVDPTR,#H;存放数据原始起始地址MOVA,#0;第一个数据为1INIT:MOVXDPTR,A;循环送数(初始
5、化)INCDPTR;INCA;CJNEA,#10H,INIT;是否送完16个数?SETBF0;置初始化完成标志位MOVDPTR,#H;存放数据原始起始地址MOVR0,#30H;存放数据目标起始地址MOVR1,#10H;计数:共16个数据LOOP:MOVXA,DPTR;循环送数(转储)MOVXR0,AINCDPTRINCR0DJNZR1,LOOP;是否传送结束?SETBP1.0;置传送结束标志位END;结束,第7页,习题答案,第四章:程序设计,一、填空,1.保护;恢复2.机器语言3.0500H;0505H;01H;0507H,二、编程,5.答案见下两页PPT,第8页,【习题P85-5】找最大数,
6、单片机与接口技术,开始,第一个数送入BIG,取数送入A,(BIG)(A)?,结束,交换两数,N,Y,初始化,还有数吗?,N,Y,第9页,单片机与接口技术,LISTEQU20HNUMEQU30BIGEQU40H,ORG1000HMOVR0,#LIST;设置地址指针,指向存放数据起始单元MOVR7,#NUM;数据个数MOVBIG,R0;将第一个数当做当前最大数DECR7;修改剩下数据个数,NEXT:INCR0;指向下一个数据单元MOVA,R0;取数据CJNEA,BIG,COMP;比较当前数与当前最大数SJMPCONT;两数相等,不用处理,COMP:JCCONT;两数不等,比较大小MOVBIG,A;
7、A中数大,送入BIG中,CONT:DJNZR7,NEXT;判断数据是否比较完成,RET,【习题P85-5】源程序,第10页,习题答案,第五章:中止系统,一、填空,1.共享2.外部3.PC;PC;外部中止0矢量地址4.外部中止05.电平;边缘,二、选择,1.2.3.4.5.6.7.8.,三、编程,3.题目及程序见下两页PPT,第11页,【习题P99-3】,试编写一段对中止系统初始化程序,要求允许外部中止0(电平触发)、T0中止、串行口中止,且使T0为高优先级中止。,单片机与接口技术,第12页,单片机与接口技术,ORG0000HAJMPMAIN,ORG0003H;外部中止0中止矢量地址AJMPIT
8、0,ORG000BH;定时器0中止矢量地址AJMPIT_T0,ORG0023H;串口中止矢量地址AJMPIT_S,ORG0100H;主程序起始地址MAIN:;主程序其它初始化工作,SETBEXO;开外部中止0CLRITO;置外部中止0电平触发方式,SETBET0;开定时器0中止,SETBES;开串口中止,SETBEA;开CPU总中止,SETBPT0;置定时器0为高优先级中止,;主程序主体内容,IT_0:;外部中止0中止处理子程序,IT_T0:;定时器0中止处理子程序,IT_S:;串口中止处理子程序,END;主程序结束,【习题P99-3】初始化程序,中止初始化,第13页,习题答案,第六章:定时
9、器,一、填空,1.16;4;32.中止标志位;查询标志位3.32768us,二、选择,1.2.,本章相关习题题目及答案详见后面内容。,第14页,单片机与接口技术,一、填空题1.8051单片机内部有2个()位加1定时/计数器,其中T0有()种工作模式;T1有()种工作模式。,2.当计数器产生溢出中止时,把定时器控制存放器TF0(或TF1)位置位。对计数器溢出处理,中止方式时,该位作为()位使用;在查询方式时,该位作为()位使用。3.在定时器工作模式0下,计数器宽度为13位,假如系统晶振频率为3MHz,则最大定时时间为()。,1.,16;4;3,2.,中止标志位;查询标志位,3.,8192X4=3
10、2768us=32.768ms,答案:,第15页,单片机与接口技术,二、选择题1.在以下存放器中,与定时/计数器无关是(),TCON TMOD SCON IE,2.若以查询方式进行定时应用,则应用程序中初始化内容应包含(),系统复位、设置工作方式、设置计数器初值 设置计数器初值、设置中止方式、开启定时器 设置工作方式、设置计数器初值、开中止 设置工作方式、设置计数器初值、关中止,第16页,单片机与接口技术,三、问答题1.定时/计数器用作定时器时,其定时时间与哪些原因相关?用作计数器时,对外部计数脉冲有何要求?2.当定时器0工作在模式3时,因为TR1被T0占用,那么应怎样控制订时器1开启和关闭?
11、1.与,fosc(晶振频率)、工作模式(0、1、2、3)、计数初值设置等原因相关;fmaxfosc/24,2.,开启:送入设置定时器T1为模式0、1、2控制字,如:,MOV TMOD,#23H;或13H,03H,关闭:送入设置定时器T1为模式3控制字,如:,MOV TMOD,#33H,答案:,第17页,单片机与接口技术,三、问答题3.定时器工作模式2有什么特点?适合用于什么场所?6.试说明当8031单片机,时钟频率,为12MHz时,其定时/计数器在计数状态下允许输入最高计数脉冲频率是多少?,1.,含有8位自动重装入计数初值功效,定时准确,但计数值有限,为0,255。适合用于对定时精度要求高,
12、如用作准确脉冲信号发生器,或用作串行口波特率发生器等。,2.,fmax=fosc/24=24MHz/24=1MHz,答案:,第18页,单片机与接口技术,四、计算与编程7.在定时器0工作模式0、1、2中,假如要求对T0端输入4个脉冲时,计数器就产生中止溢出,则3种工作模式下计数初值分别应该设置成多少?TMOD存放器应该怎样设置?,答案:,模式,TMOD,初值,(TH0)、(TL0),0,04H,X=2,13,-4=8192-4=8188D=1FFCH,(TH0)=0FFH,(TL0)=1CH,1,05H,X=2,16,-4=65536-4=65532D=0FFFCH,(TH0)=0FFH,(TL
13、0)=0FCH,2,06H,X=2,8,-4=256-4=252D=0FCH,(TH0)=0FCH,(TL0)=0FCH,共性问题:需置初值TH0,TL0,高四位若为A-F,前面应加0,第19页,单片机与接口技术,9.设单片机晶振频率为6MHz,编程用定时器T0,在P1.0口产生一个50Hz方波。(,要求用中止完成,),分析:,欲产生50Hz连续方波,其周期为1/50=0.02s=20ms,则只需在P1.0口以10ms周期交替输出高低电平即可,所以定时时间应为10ms。(如右图示),确定定时器工作模式:,依据单片机fosc=6MHz,可先计算确定T0在各种工作模式下最大定时时间:,模式0,t,
14、max,=2,13,12/fosc=819212/(610,6,)=16.384ms,模式1,t,max,=2,16,12/fosc=6553612/(610,6,)=131.072ms,模式2,t,max,=2,8,12/fosc=25612/(610,6,)=512us,依据以上计算结果可知,使用模式0或1都能够直接实现10ms定时,而要使用模式2则还需设置软计数器,下面就按模式0和模式1两种方案分别进行计算和编程。,P1.0,10ms,10ms,20ms,第20页,单片机与接口技术,方案一:T0工作于模式0,1.计算计数初值:,x=2,13,-t/(12/fosc)=8192-(1010
15、3,)/(6/(1210,6,)=3192D,将3192转换为二进制数:,x=0110001111000B,2.TMOD初始化,:,(TMOD)=00H,GATE,M1,M0,GATE,M1,M0,C/T,C/T,00000000,则,(TH0)=0110 0011B=63H,(TL0)=0001 1000B=18H,第21页,单片机与接口技术,方案一源程序(中止方式),;P113-9.asm(fosc=6MHz,T0中止方式,由P1.0输出50Hz方波)ORG 0000HAJMPSTART;跳转主程序ORG000BH;定时器T0中止矢量地址LJMPPITO;跳转中止服务程序ORG0100
16、HSTART:MOVSP,#60H;堆栈初始化,MOVTMOD,#00H;定时器T0工作方式0(13位计数器)MOVTH0,#63H;置计数初值MOVTL0,#18H,CLRP1.0;设置方波起始状态,SETBEA;开中止SETBET0SETBTR0;开启定时器,SJMP$;等候中止PITO:,MOVTL0,#18H;重送计数初值,确保定时时间一直为10msMOVTH0,#63HCPLP1.0;输出方波,RETI;中止返回END,第22页,单片机与接口技术,方案一源程序(查询方式),;P113-9.asm(fosc=6MHz,T0查询方式,由P1.0输出50Hz方波)ORG 0000HSTAR
17、T:MOVIE,#00H;关中止,考虑通用性,MOVTMOD,#00H;定时器T0工作方式0(13位计数器)MOVTL0,#18H;置计数初值MOVTH0,#63H,CLRP1.0;设置方波起始状态,SETBTR0;开启定时器,LOOP:JNBTF0,$;等候10ms定时时间到,MOVTL0,#18H;重送计数初值,确保定时时间一直为10msMOVTH0,#63HCLRTF0;清溢出标志,方便下次判断CPLP1.0;输出方波,SJMPLOOP;产生连续方波END,第23页,单片机与接口技术,方案二:T0工作于模式1,1.计算计数初值:,x=2,16,-t/(12/fosc)=65536-(10
18、10,-3,)/(6/(1210,6,)=60536D,2.TMOD初始化,:,(TMOD)=01H,GATE,M1,M0,GATE,M1,M0,C/T,C/T,00000001,将60536转换为二进制数:,x=1110 1100 0111 1000B,则,(TH0)=1110 1100B=0ECH,(TL0)=0111 1000B=78H,第24页,单片机与接口技术,方案二源程序(中止方式),;P113-9.asm(fosc=6MHz,T0中止方式,由P1.0输出50Hz方波)ORG 0000HAJMPSTART;跳转主程序ORG000BH;定时器T0中止矢量地址LJMPPITO;跳转中止
19、服务程序ORG0100HSTART:MOVSP,#60H;堆栈初始化,MOVTMOD,#01H;定时器T0工作方式1(16位计数器)MOVTH0,#0ECH;置计数初值MOVTL0,#78H,CLRP1.0;设置方波起始状态,SETBEA;开中止SETBET0SETBTR0;开启定时器,SJMP$;等候中止PITO:,MOVTL0,#78H;重送计数初值,确保定时时间一直为10msMOVTH0,#0ECHCPLP1.0;输出方波,RETI;中止返回END,第25页,单片机与接口技术,方案二源程序(查询方式),;P113-9.asm(fosc=6MHz,T0查询方式,由P1.0输出50Hz方波)
20、ORG 0000HSTART:MOVIE,#00H;关中止,考虑通用性,MOVTMOD,#01H;定时器T0工作方式1(16位计数器)MOVTL0,#78H;置计数初值MOVTH0,#0ECH,CLRP1.0;设置方波起始状态,SETBTR0;开启定时器,LOOP:JNBTF0,$;等候10ms定时时间到,MOVTL0,#78H;重送计数初值,确保定时时间一直为10msMOVTH0,#0ECHCLRTF0;清溢出标志,方便下次判断CPLP1.0;输出方波,SJMPLOOP;产生连续方波END,第26页,习题答案,第七章:系统扩展,一、填空,1.分时复用数据总线和低8位地址总线;高8位地址总线;
21、写控制线;读控制线2.64KB;64KB3.高4.统一;统一5.锁存;三态缓冲6.选通控制,二、选择,1.2.3.4.5.6.7.,第27页,习题答案,三、扩展,2.用2片Intel2716给8051单片机扩展一个4KB外部程序存放器,要求地址空间与8051内部ROM相衔接,画出逻辑连接图。,8051,7,4,L,S,3,7,3,D,0,D,7,Q,0,Q,7,O,0,O,7,CE,OE,OE,A,0,A,7,A,8,A,10,2716,(,A,),O,0,O,7,CE,OE,A,0,A,7,A,8,A,10,2716,(,B,),8,ALE,P,0,.,0,P,0,.,7,PSEN,3,P,
22、2,.,3,P,2,.,4,P,2,.,5,P,2,.,6,P,2,.,7,P,2,.,0,P,2,.,2,7,4,L,S,1,3,8,Y,3,Y,2,C,B,A,8,G,第28页,扩展补充练习,1.依据8031单片机片外扩展电路,完成以下几个问题。,第29页,(1)外扩程序存放器容量是,,外扩数据存放器容量是,。,(2)两片存放器芯片地址范围分别是多少?(地址线未用到位填1),2764范围:,。,1#6264范围:,。,2#6264范围,:,。,答案:,(1),8K,,,16K,。,(2)2764范围:,C000H,DFFFH,1#范 围:,A000H,BFFFH,2#范 围:,6000H,
23、7FFFH,第30页,扩展补充练习,2.依据四片8K8位存放器芯片连接图,请确定每片存放器芯片地址范围。,第31页,第32页,扩展补充练习,3.以下列图所表示,请使用74LS373作为地址锁存器,74LS139作为地址译码器,使用4片16KBE,2,PROM芯片27128扩展MCS-51单片机程序存放器至64KB,请完成电路连接,并确定各E,2,PROM芯片地址范围。,第33页,电路连接:,地址范围:,芯片,地址范围,1,0000H3FFFH,2,4000H7FFFH,3,8000HBFFFH,4,C000HFFFFH,第34页,习题答案,第八章:键盘与显示器接口,一、填空,1.段选;位选 2
24、4;1,二、问答,1.静态显示电路与动态扫描显示电路特点:参见课件。5.消除键盘抖动方法有硬件消抖和软件消抖,其中软件消抖普通是采取,延时,子程序实现。6.(下页),第35页,习题答案,+5V,P1.4,P1.3,P1.0,MCS-51,P1.7,P1.6,P1.5,P1.2,P1.1,3,2,1,0,4,7,6,5,11,10,9,8,15,14,13,12,电路连接如图程序在后两页,第36页,键盘扫描子程序,SERCH:MOVR2,#0EFH;扫描字初值(第0列低电平),MOVR3,#00H;R3放列号,LINE0:MOVA,R2;,MOVP1,A;,MOVA,P1;取键盘状态,JBAC
25、C.3,LINE1;第0行没有按键,再判断第1行,MOVA,#00H;第0行有按键,行首号送A,AJMPTRYK;,LINE1:JBACC.2,LINE2;第1行没有按键,再判断第2行,MOVA,#04H;第1行有按键,行首号送A,AJMPTRYK;,LINE2:JBACC.1,LINE3;第2行没有按键,再判断第3行,MOVA,#08H;第2行有按键,行首号送A,AJMPTRYK;,LINE3:JBACC.3,COLUM;第3行没有按键,转下一列判断,MOVA,#0CH;第3行有按键,行首号送A,AJMPTRYK,第37页,键盘扫描子程序(续),COLUM:INCR3;列号加1MOVA,R2
26、扫描字初值RLA;本列无按键,换下一列,再查JNBACC.0,BACK;全部列是否都扫描完成?,MOVR2,AAJMPLINE0;继续查下一列4行 TRYK:ADDA,R3;计算键号=行首号+列号BACK:RET,第38页,补充习题:,分析如图所表示单片机键盘电路,编写键盘扫描子程序。,电路连接如图程序在下一页,第39页,键盘扫描子程序,ORG0000H,KEY_0:MOVP1,#0FFH;置输入方式,MOVA,P1;读键盘,CPLA,JZKEY_0;若无键闭合,再查,ACALLDEL12ms;延时12ms消除抖动,MOVA,P1;再读键盘,CPLA,JZKEY_0;若为干扰,再查,JNBACC.0,KEY_1,AJMPProgram0;跳转K0功效程序,KEY_1:JNBACC.1,KEY_2,AJMPProgram1;跳转K1功效程序,KEY_2:JNBACC.2,KEY_3,AJMPProgram2;跳转K2功效程序,AJMPProgram7;跳转K7功效程序,Program0:,AJMPKEY_0;K0功效程序,Program1:,AJMPKEY_0;K1功效程序,Program2:,AJMPKEY_0;K2功效程序,Program7:,RET;假设K7功效为键扫描子程序返回,第40页,






