START:MOV R0,#30H
MOV R2,#21 H LOOP: MOV A,@R0
CJNE A,#0AAH,NEXT
MOV 51H,#01H LJMP EXIT
NEXT: INC R0
DJNZ R2,LOOP
MOV 51H,#00H
EXIT: RET
3.参考程序如下:
START:MOV 41H,#0
MOV R0,#20H MOV R2,#21H
LOOP: MOV A,@R0
JNZ NEXT INC 41H
NEXT: INC R0
DJNZ R2,LOOP RET
4.参考程序如下:
MAX EQU 60H
MOV R0,21H MOV R2,#20H DEC R2
MOV A,@R0
LOOP: MOV MAX,A
INC R0 CLR C
SUBB A,@R0 ;两个数比较
JNC LOOP1 ;C=0,A中的数大,跳LOOP1 MOV A,@R0 ;C=1,A中的数小,把大数送A SJMP LOOP2
LOOP1:MOV A,MAX LOOP2:DJNZ R2,LOOP MOV MAX,A ;存最大数
5.设进入查表程序前,路数x(x=0~15)已放于R2中,查表后,最大允许值y放在R3、R4中。
6
参考子程序如下: TB:MOV A,R2
ADD A,R2 ;(R2)×2→(A),因为表中数据为双字节数 MOV R3,A ;保存指针 MOV DPTR,TAB
MOVC A,@A+ DPTR ;查第一字节 XCH A,R3 ADD A,#1
MOVC A,@A+ DPTR ;查第二字节 MOV R4,A RET
TAB:DW 1520,3721,42645,7580 ;最大允许值表
DW 3483,32657,883,9943 DW 10000,40511,6758,8931 DW 4468,5871,13284,27808
5
一、选择题
1.D 2.D 3.B 4.A 5.A 6.D 7.B 8.C 9.D 二、填空题 1.2;IE;IP
2.0013H;001BH
3.跳沿触发方式;0 ;IT1;1 4.TL0;TH0;TH0;TH1 5.1;0
6.外部中断1;定时器T1 7.RETI
8.PC、PC、程序存储器 三、简答题
1.一个中断请求被CPU响应的条件: (1)IE寄存器中的中断总允许位EA=1。
(2)该中断源发出中断请求,即该中断源对应的中断请求标志为1。 (3)该中断源的中断允许标志位为1。
(4)CPU不在处理同级或高优先级的中断。
(5)所查询的机器周期是当前正在执行指令的最后一个机器周期。
(6)正在执行的指令不是返回指令RET、RETI,或是访问IE、IP的指令。
7
习题
2.关于各中断源的中断优先级关系,有下面两条基本规则: (1)低优先级可被高优先级中断,反之则不能。
(2)任何一个中断,一旦得到响应,就不会被与它同级的中断源所中断。 3.RETI指令在返回时,同时清除中断系统中相应的优先级触发器,以允许下次中断,而RET指令则没有这个操作。除此之外,其他操作都相同。
4.(1)为了防止在执行中断服务子程序时破坏这些数据或状态,导致在中断返回后影响主程序的运行,需要把它们送入堆栈保存起来。这就是现场保护。
(2)现场是指中断时单片机中某些存储器单元中的数据。需要进行现场保护的通常有程序状态字PSW、累加器A、工作寄存器Rn等。
(3)中断处理结束后,在返回主程序前,需要把保存的现场内容从堆栈中弹出,以恢复那些寄存器和存储器单元中的原有内容。这就是现场恢复。现场恢复是现场保护的逆过程。
5.由于每个中断源的中断区只有8个单元,一般难以安排一个完整的中断服务子程序,因此,通常在各中断区入口地址处放置一条无条件转移指令,使程序转向存放中断服务子程序的其他地址执行。
6.定时器/计数器在工作方式0下的最大定时时间为32.768ms;在方式1下的最大定时时间为262.144ms;在方式2下的最大定时时间为1024ms。
7.定时器/计数器用作定时器时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。
8.由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。
9.定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,如波特率的产生。
10.采用方式1定时工作方式。最大脉冲宽度为131.072ms。 四、程序设计题 1.参考程序如下:
SETB IT1
SETB EX1 SETB EA
2.参考程序如下:
ORG 0000H LJMP MAIN ORG 0013H LJMP INT_EX1 ORG 0030H
MAIN:CLR IT0 ;采用电平触发,低电平有效中断
SETB EX1 ;允许外部中断1 SETB EA
WAIT:LJMP WAIT ;用原地跳转代替一段用户程序
8
;以下为外部中断1服务子程序
INT_EX1:JNB P1.2,NEXT1 ;P1.2=0,不是3号中断,跳转NEXT1 LJMP INT_IR3 ;是3号中断,跳转到对应的中断处理程序
NEXT1: JNB P1.1,NEXT2 ;P1.1=0,不是2号中断,跳转NEXT2 LJMP INT_IR2 ;跳转到2号中断处理程序
NEXT2: LJMP INT_IR1 ;跳转到1号中断处理程序 ORG 1000H
INT_IR3:相应中断处理程序 RETI ;中断返回 ORG 1100H
INT_IR2:相应中断处理程序 RETI ;中断返回 ORG 1200H
INT_IR1:相应中断处理程序 RETI ;中断返回
3.定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。参考程序如下:
ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P
MAIN:MOV TMOD,#06H ;定时器/计数器T0为计数方式2
MOV TL0,#156 ;计数100个脉冲的初值赋值 MOV TH0,#156 SETB GATE ;打开计数门 SETB TR0 ;启动T0,开始计数 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 CLR F0 ;设置下一轮定时方式的标志位
WAIT:AJMP WAIT IT0P:CLR EA ;CPU关中断
JB F0,COUNT ;F0=1,转计数方式设置
MOV TMOD,#00H ;定时器/计数器T0为定时方式0 MOV TH0,#0FEH ;定时1ms初值赋值 MOV TL0,#0CH SETB EA RETI
COUNT:MOV TMOD,#06H
MOV TL0,#156 SETB EA RETI
9
4.根据题意,从P1.0输出的矩形脉冲的高低电平的时间为10∶1,则高低电平的时间分别为363.63μs和36.37μs。如果系统采用6MHz晶振,Tcy=2μs,因此高低电平输出取整,则约为364μs和36μs。参考程序如下:
ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P
MAIN:MOV TMOD,#02H ;定时器/计数器T0为定时方式2
MOV TL0,#4AH ;定时初值赋值 SETB TR0 ;启动T0,开始计数 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 SETB P1.0
WAIT:AJMP WAIT IT0P:CLR EA
CLR P1.0 ;关中断 MOV R0,#9
DLY:DJNZ R0,DLY ;延时36μs
MOV TL0,#4AH ;定时364μs初值赋值 SETB P1.0 SETB EA RETI
5.将P1.1的输入脉冲接入T0,即使用T0计数器完成对P1.1口的脉冲计数。参考程序如下:
MOV TMOD,#05H ;定时器/计数器T0为计数方式1 MOV TL0,#00H MOV TH0,#00H
MAIN:JNB P1.0,MAIN
SETB TR0 ;启动T0,开始计数
WAIT:JB P1.2,WAIT
CLR TR0
MOV R1,TH0 MOV R0,TL0
AJMP $ ;原地踏步
习题6
一、选择题
1.A 2.C 3.D 4.A 5.B 6.D
10
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《单片机原理及应用》习题答案-孙宝法(2)在线全文阅读。
相关推荐: