单片机综合实验 - 02 | 中断与定时/计数器实验
Posted Neutionwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机综合实验 - 02 | 中断与定时/计数器实验相关的知识,希望对你有一定的参考价值。
一、实验目的和任务
1、掌握80C51单片机外部中断的初始化及中断服务子程序设计方法。
2、掌握80C51单片机定时器/计数器的程序控制方法。
二、实验原理简介
中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。引起突发事件的来源称为中断源,中断源要求服务的请求称为中断请求,对中断请求提供的服务称为中断服务,中断管理系统处理事件的过程称为中断响应过程。80C51单片机至少包括5个中断源:
INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。(本实验用)
INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。
T0:定时器/计数器0中断,由T0计满回零引起。(本实验用)
T1:定时器/计数器l中断,由T1计满回零引起。
TI/RI:串口中断,串口完成一帧字符发送/接收后引起。
本实验对应的硬件电路与实验三相同(见图3.6.1)。P0口用于控制发光管L101~L108,口线输出0(低电平)时,对应的发光管点亮,口线输出1(高电平)时,对应的发光管熄灭。P3口的4根口线连接独立按键KX0~KX3,其中KX0对应外部中断0,进行KX0按键动作的时候可以触发外部中断。
注意:在做本实验时,须将拨码开关JUMP2置为接通状态(向左)。
三、实验内容和步骤
1、编写一段程序,用P0口作为控制端口,使实验箱上的LED轮流点亮(走马灯)。用外部中断0/KX0控制走马灯的暂停/继续。
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP ZEX0
ORG 0100H
MAIN: MOV SP,#60H
SETB IT0
SETB EX0
SETB EA
MOV A,#0FEH
MOV R5,#00H
NEXT: CJNE R5,#00H,NEXT
MOV P0,A
ACALL DELAY
RL A
SJMP NEXT
;延时子程序
DELAY: MOV R2,#3
DELAY2: MOV R3,#200
DELAY3: MOV R4,#200
DJNZ R4,$
DJNZ R3,DELAY3
DJNZ R2,DELAY2
RET
;外部中断0服务子程序
ZEX0: PUSH ACC
SETB RS0
MOV R2,#2
ACALL DELAY2
CLR RS0
JB P3.2,EXIT
MOV A,R5
XRL A,#0FFH
MOV R5,A
EXIT: POP ACC
CLR IE0
RETI
- 观察实验结果,解释如何实现走马灯的暂停和继续。
- 比较电平触发和边沿触发时走马灯控制的难易程度。
答: 走马灯的暂停和继续是通过外部按下按键而使单片机触发外部中断0,此时会进入外部中断0服务子程序,然后通过异或操作指令来修改工作寄存器R5的值为FFH,使其在跳出外部中断0服务子程序之后在NEXT: CJNE R5,#00H,NEXT这条程序中进入死循环,而无法执行程序下面的位左移操作。在控制走马灯时经过验证电平触发相比边沿触发要困难。
2、编写一段程序,用P0口作为控制端口,使实验箱的LED轮流点亮(走马灯)。用定时/计数器0控制走马灯切换速度。
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP ZIT0
ORG 0100H
MAIN: MOV SP,#60H
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R6,#1
MOV R7,#0FEH
SETB ET0
SETB EA
SETB TR0
SJMP $
;定时中断0服务子程序
ZIT0: DJNZ R6,ZRET
MOV A,R7
MOV P0,A
RL A
MOV R7,A
MOV R6,#1
ZRET: MOV TH0,#3CH
MOV TL0,#0B0H
RETI
END
- 修改R6=0或1时,观察走马灯的速度快慢。
- ZRET处没有重置初值时的走马灯的速度与 ZRET处有重置初值时的走马灯的速度的比较。
- R6=50时,改变T0的初值,设为最大、最小时,比较走马灯的速度。
- 去掉R6的软件辅助延时,是否可以?速度怎样?
答:经过验证,R6=0时走马灯的速度慢,R6=1时走马灯的速度快,原因是在DJNZ R6,ZRET这条程序中,R6=0时DJNZ的减一操作进行了255次,也就是装载了255次TH0和HL0的值,而R6=1时只执行了1次。ZRET处没有重置初值时的走马灯的速度相比有重置初值时要慢,原因是没有重置初值,那么初值为0。当R6=50时,T0的初值设为最大时走马灯的速度要比T0的初值设为最小时要快。不可以去掉R6的软件辅助延时,此时走马灯的速度快到人眼无法识别。
以上是关于单片机综合实验 - 02 | 中断与定时/计数器实验的主要内容,如果未能解决你的问题,请参考以下文章
单片机原理及其应用——单片机定时器中断实验(八段数码管依次显示0~9数字)