目的:利用“模块化单片机教学实验平台”,加深对单片机的中断系统的理解。
任务:利用单片机的中断系统完成程序设计。
使用AT89S52单片机的外部中断1控制实验箱母板上的LED1点亮和熄灭。外部按键SKEY1与AT89S52单片机的P3.3引脚连接,LED1的阴极与AT89S52单片机的P1.5引脚连接。当按下按键SKEY1,LED1点亮,再按下按键SKEY1,LED1熄灭,如此反复。(注意:本实验使用单片机的中断系统编程。)
- 实验过程和结果
(1)基本实验
硬件连线:
CPU_CORE_51 | MAIN_BOARD |
P2:P3.3 | J26:SKEY1 |
P2:P1.5 | J48:LED1 |
(2)扩展实验
编写主程序实现左右跑马灯(8个LED灯依次单个点亮,方向先从左到右然后从右到左,如此循环),同时使用AT89S52单片机的外部中断1控制实验箱母板上的蜂鸣器发声和关声。
单片机的P2.0~P2.7引脚分别接实验箱母板LED1~LED8的阴极。
外部按键SKEY1与AT89S52单片机的P3.3引脚连接,蜂鸣器的输入端(高电平有效)与AT89S52单片机的P1.0引脚连接。当按下按键SKEY1,蜂鸣器发声,再按下按键SKEY1,蜂鸣器关声,如此反复。(注意:本实验使用单片机的中断系统编程。)
硬件连线:
CPU_CORE_51 | MAIN_BOARD |
P3:P2.0-P2.7 | J48:LED1-LED8 |
P2:P3.3 | J26:SKEY1 |
P2:P1.0 | BUZZER IN |
实验结果图
本次程序编写中断系统的实验,中断系统是单片机的基本功能之一。使用终端系统能方便的打断主程序或低级中断程序执行,跳转到中断程序。使用终端系统能方便的响应外部事件或程序设计,方便编写单片机程序。
在编写过程中,由于对终端系统的引脚关系和处罚方式的不熟悉,让我走了些弯路,例如设置位地址控制中断响应,也可以通过对字节地址赋值的方式实现功能,编写程序更多的是对程序设计的思维和逻辑性,以及单片机特点的掌握。
ORG 0000H
LJMP MAIN
ORG 0013H ;外部中断1跳转地址
LJMP ON ;响应外部中断后跳转到ON
MAIN:SETB IT1 ;设置外部中断为负跳
SETB EX1 ;允许外部中断1的中断请求
SETB EA ;终端系统总开关
LJMP $ ;死循环,等待外部中断
ON: JC OF ;判断进位标志位,此时的灯是否亮起
CLR P1.5 ;将灯点亮
SETB C ;将进位标志位设置为1
RETI ;结束中断
OF:SETB P1.5 ;将灯熄灭
CLR C ;将进位标志位设置为0
RETI
END
(2)扩展实验
ORG 0000H
LJMP MAIN
ORG 0013H
LJMP ON
MAIN:SETB IT1
SETB EX1
SETB EA
CLR C
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.3
SETB P2.4
SETB P2.5
SETB P2.6
SETB P2.7
LOOP:CLR P2.0
LCALL TIME
SETB P2.0
CLR P2.1
LCALL TIME
SETB P2.1
CLR P2.2
LCALL TIME
SETB P2.2
CLR P2.3
LCALL TIME
SETB P2.3
CLR P2.4
LCALL TIME
SETB P2.4
CLR P2.5
LCALL TIME
SETB P2.5
CLR P2.6
LCALL TIME
SETB P2.6
CLR P2.7
LCALL TIME
SETB P2.7
CLR P2.6
LCALL TIME
SETB P2.6
CLR P2.5
LCALL TIME
SETB P2.5
CLR P2.4
LCALL TIME
SETB P2.4
CLR P2.3
LCALL TIME
SETB P2.3
CLR P2.2
LCALL TIME
SETB P2.2
CLR P2.1
LCALL TIME
SETB P2.1
CLR P2.0
LCALL TIME
SETB P2.0
LJMP LOOP
TIME:MOV R1,#00H
O:MOV R0,#00H
J:INC R0
CJNE R0,#7FH,J
INC R1
CJNE R1,#7FH,O
RET
ON:JC OF
CLR P1.0
SETB C
RETI
OF:SETB P1.0
CLR C
RETI
END