本系列共6篇文章,本文作为本系列的第二篇文章,介绍实验二 :中断控制实验,本系列文章基于Dais-52PRO实验箱。
本系列文章链接:
-----------------------------------------------------------------------------
51单片机汇编语言实验(一)-----数字量输入输出(附参考代码及注释)
51单片机汇编语言实验(二)-----中断控制实验(附参考代码及注释)
51单片机汇编语言实验(三)-----定时/计数器实验(附参考代码及注释)
51单片机汇编语言实验(四)----串行通信实验(附参考代码及注释)
51单片机汇编语言实验(五)-----A/D 0809模数转换和DA0832数模转换实验(附参考代码及注释)
51单片机汇编语言实验(六)-----8255键盘与显示设计(附参考代码及注释)
-----------------------------------------------------------------------------
一、实验目的:
1.学习中断控制技术的基本原理;
2.掌握51单片机的中断子程序的编写方法。
二、实验设备:
PC计算机一台,Dais-52PRO+实验系统一套。
三、实验内容:
1. 外部中断实验
2. 定时器中断实验
四、外部中断实验
1、实验原理:
每触发按键一次,INT0管脚就得到一次中断触发,从而引发单片机的中断响应。
2、实验步骤:
① 将试验箱IO区的P1.0与LED区的L0按下图连线;
② 将试验箱IO区的P3.2与脉冲区的SP按下图连线;
③ 编写程序,经编译、链接无语法错误后装载到实验系统;
④ 运行程序,每按动一次单脉冲按钮令发光二极管L0交替点亮或熄灭;
⑤ 实验完毕后,应使用暂停命令中止程序的运行。
3、参考代码:
//实验二 外部中断实验
LED BIT P1.0
ORG 0000H
AJMP MAIN ;上电,转向主程序
ORG 0003H ;外部中断0入口地址
AJMP INT0SVR ;转向中断服务程序
ORG 0100H ;主程序
MAIN:
SETB EX0 ;允许外部中断0中断
SETB IT0 ;选择边沿触发方式
SETB EA ;CPU开中断
HERE:
SJMP HERE ;等待中断
INT0SVR: CPL LED ;LED取反
RETI ;中断返回
END
五、中断控制实验:
1、实验原理:
利用51单片机的定时器T0,使P1.0控制的发光二极管L0每隔1秒交替点亮或熄灭。
2、实验步骤:
① 将试验箱IO区的P1.0与LED区的L0按下图连线;
② 编写程序,经编译、链接无语法错误后装载到实验系统;
③ 运行程序,观察发光二极管L0,应每隔1秒交替点亮或熄灭;
④ 实验完毕后,应使用暂停命令中止程序的运行。
3、参考代码:
//实验二 定时器中断实验
COUNT EQU 9217 ;11.0592MHz 延时10ms
LED EQU P1.0
ORG 0000H ;复位地址
AJMP MAIN ;开始时跳转转到主程序
ORG 000BH ;T0入口地址
AJMP INT_T0
ORG 0100H
MAIN: SETB LED
MOV TMOD,#00000001B ;设置定时器T0工作在方式1(16位
MOV TH0,#HIGH(65536-COUNT) ;设置初值
MOV TL0,#LOW(65536-COUNT)
CLR TF0 ;先把溢出标志位清零
SETB TR0 ;开始计时
SETB EA ;全局中断打开
SETB ET0 ;定时器/计数器T0溢出中断打开
MOV R7,#00H ;作为定时器累加器使用
SJMP $ ;循环,等待中断
;中断服务子程序
INT_T0: INC R7 ;计数增量
CLR TF0 ;重新置中断标志位为0
MOV TH0,#(65536-COUNT)/256 ;重新符初值65536-9217=56319 即 1101101111111111 低八位正好是255
MOV TL0,#255
CJNE R7,#100,RETURN ;让灯明暗相间1s
MOV R7,#00H
CPL LED ;让灯明暗交替变化
RETURN: RETI
END
本文介绍的内容完整的工程文件我会放在附件里,需要者自取,放的时候都是免费,它会自己涨,链接失效或者需要的可以在评论区留言,我直接发给你。本文附件链接如下: