收藏 分享(赏)

单片机实验——利用中断控制LED灯.doc

上传人:dwy79026 文档编号:7007527 上传时间:2019-04-30 格式:DOC 页数:7 大小:29KB
下载 相关 举报
单片机实验——利用中断控制LED灯.doc_第1页
第1页 / 共7页
单片机实验——利用中断控制LED灯.doc_第2页
第2页 / 共7页
单片机实验——利用中断控制LED灯.doc_第3页
第3页 / 共7页
单片机实验——利用中断控制LED灯.doc_第4页
第4页 / 共7页
单片机实验——利用中断控制LED灯.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、单片机实验利用中断控制 LED 灯1.实验目的(1)掌握单片机中断的基本原理。(2)掌握单片机中断程序的编制方法。2.预习要点(1)单片机中断基本原理(2)中断程序编制方法3.实验设备计算机、单片机实验箱、信号发生器。4.实验内容基本要求:将信号发生器输出的脉冲信号连接到 CPU 的 INT0 上,将 CPU 的 P1.0 到 P1.7和八个 LED 连接,脉冲信号为 5V、100Hz ,每输入一百个脉冲 LED 灯亮一次,并且 LED 灯顺序循环移位一次,形成跑马灯。扩展要求:提高输入脉冲频率,但跑马灯的显示频率不变。实验 4ORG 0000HAJMP MAIN;*;中断子程序入口地址ORG

2、 0003HLJMP EXINT0;*;主程序ORG 0030HMAIN:MOV SP,#70HSETB IT0 ;设置为下降沿触发SETB EX0 ;开 INT0 的中断开关SETB EA ;开总中断开关MOV R0,#01H ;只让一盏灯亮,R0 赋给 P1 口MOV R3,#00H ;R3 用来记中断次数MOV A,R0MOV P1,AHERE:SJMP HERE ;死循环,还有另外一种形式是 SJMP $;*;外中断 0 服务程序EXINT0:INC R3 ;每来一次中断 R3 自加 1CJNE R3,#100,NEXT ;当来了 100 次中断之后,R3 清零,然后 P1 口的MOV

3、 R3,#00H ;数左移一位,也就是让下一个 LED 亮MOV A,R0RL AMOV P1,AMOV R0,A ;保存左移之后的结果NEXT:RETI;*END实验 4 扩展ORG 0000HAJMP MAIN;*;中断入口地址ORG 0003HLJMP EXINT0;*;主程序ORG 0030HMAIN:MOV SP,#70H;初始化外中断 0SETB IT0SETB EX0SETB EA;初始化 8155MOV DPTR,#0100HMOV A,#03HMOVX DPTR,A;显示缓存区MOV 30H,#1MOV 31H,#2MOV 32H,#3MOV 33H,#4MOV 34H,#5

4、MOV 35H,#6MOV 36H,#7MOV 37H,#8MOV 38H,#9 ;这一句后面的 CJNE 会用到,用来判断 1-8 是否已经显示完了MOV R2,#00H ;用 R2 来记中断来的次数MOV 40H,#01H ;用 40H 存放 LED 的状态MOV A,40HMOV P1,AMOV R0,#30H ;显示缓存区首地址给 R0MOV R4,#0FEH ;字位送 R4,因为只需要亮一个数码管 ,所以选择静态显示,没必要用动态显示LOOP:LCALL DISPLAY ;循环调用显示程序SJMP LOOP;*;中断子程序EXINT0:INC R2CJNE R2,#100,NEXT

5、;来 100 次中断之后才进行操作MOV R2,#00HMOV A,40H ;移动 LEDRL AMOV P1,AMOV 40H,AINC R0 ;让显示的数+1CJNE R0,#9,NEXT ;如果到了 9 就回到 1,因为我们只显示 1-8MOV R0,#30HNEXT:RETI;*;显示子程序DISPLAY:MOV DPTR,#0102H ;送字位MOV A,R4MOVX DPTR,AMOV DPTR,#DTAB ;查表,送字形MOV A,R0MOVC A,A+DPTRMOV DPTR,#0101HMOVX DPTR,ALCALL DELAYLD1:RET;*;字形表DTAB:DB 3F

6、H,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FH ;0-FDB 77H,7CH,39H,5EH,79HDB 71H;*;延时 1ms 子程序DELAY:MOV R7,#02HDEL1:MOV R6,#0FFHDEL2:DJNZ R6,DEL2DJNZ R7,DEL1RET;*ENDORG 0000HAJMP MAIN;中断入口地址ORG 0003HLJMP EXINT0;*主程序ORG 0030HMAIN:MOV SP,#70H;初始化外中断 0SETB IT0SETB EX0SETB EA;初始化 8155MOV DPTR,#0100HMOV A,#03HMOV

7、X DPTR,A;显示缓存区MOV 30H,#1MOV 31H,#2MOV 32H,#3MOV 33H,#4MOV 34H,#5MOV 35H,#6MOV 36H,#7MOV 37H,#8MOV 38H,#9MOV 40H,#01H ;用 40H 存发光二极管的状态MOV R2,#00HMOV A,40HMOV P1,AMOV R0,#30HMOV R4,#0FEHLOOP:LCALL DISPLAYSJMP LOOP;*;中断子程序EXINT0:INC R2CJNE R2,#100,NEXT MOV R2,#00HMOV A,40HRL AMOV P1,AMOV 40H,AINC R0CJN

8、E R0,#9,NEXT1MOV R0,#30HNEXT1:MOV A,R4 RL AMOV R4,A NEXT:RETI;显示子程序 DISPLAY:MOV A,R4MOV DPTR,#0102HMOVX DPTR,A MOV DPTR,#DTABMOV A,R0MOVC A,A+DPTRMOV DPTR,#0101HMOVX DPTR,ALCALL DELAYLD1:RET ;字形表DTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;延时 1ms 子程序 DELAY: MOV R7,#02HDEL1:MOV R6,#0FFHDEL2:DJNZ R6,D

9、EL2DJNZ R7,DEL1RETEND;说明: ;R4 是保存数码管字位;R3;R2 是保存中断次数 满 100 清 0;R1;R0 是保存数码管的字型实验 5(1)ORG 0000HSJMP MAIN;*8*;中断入口地址ORG 000BHLJMP T0INT;*;主程序ORG 0030H MAIN:MOV SP,#70HMOV TMOD,#01H ;T0 选择方式 1,16 位定时器MOV TH0,#0F6H ;#9EH ;因为用示波器观察 20HZ 的方波不易观察,频率太低了,所以我换成了MOV TL0,#3CH ;#58H ;200HZ 的,原理都是一样的 ,这样只是为了让波形更容易观察,后者是 20HZ 的初值SETB EA ;开总中断 SETB ET0 ;开定时器 0 中断 SETB TR0 ;启动定时器 0SJMP$ ;死循环;*;定时器 0 中断子程序 (25ms 2.5ms 来一次中断 )T0INT:MOV TH0,#0F6H ;#9EH ;重新赋初值 MOV TL0,#3CH ;#58HCPL P1.1 ;改变电平RETI;*

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报