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

上传人:M****1 文档编号:552725829 上传时间:2022-09-29 格式:DOCX 页数:6 大小:17.01KB
返回 下载 相关 举报
单片机实验——利用中断控制LED灯_第1页
第1页 / 共6页
单片机实验——利用中断控制LED灯_第2页
第2页 / 共6页
单片机实验——利用中断控制LED灯_第3页
第3页 / 共6页
单片机实验——利用中断控制LED灯_第4页
第4页 / 共6页
单片机实验——利用中断控制LED灯_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《单片机实验——利用中断控制LED灯》由会员分享,可在线阅读,更多相关《单片机实验——利用中断控制LED灯(6页珍藏版)》请在金锄头文库上搜索。

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 0

2、003HLJMP 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,A;死循环,还有另外一种形式是 SJMP $HERE:SJMP HERE“ ;*;外中断0服务程序EXINT0:INC R3CJNE R3,#100,NEXTMOV R3,#00HMOV A,R0RL AMOV P1,AMOV R0,ANEXT:RETI“个个个*个*;END

3、;每来一次中断R3自加1;当来了 100次中断之后,R3清零,然后P1 口的;数左移一位,也就是让下一个LED亮;保存左移之后的结果实验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 32H,#3MOV 33H,#4MOV 34H,#5MOV 35H,#6MOV 36H,

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

5、MOV 40H,A;来100次中断之后才进行操作;移动LEDINC R0CJNE R0,#9,NEXTMOV R0,#30H;让显示的数+1;如果到了 9就回到1,因为我们只显示1-8NEXT:RETI“ 个个个*个*;显示子程序DISPLAY:MOV DPTR,#0102H;送字位MOV A,R4MOVX DPTR,AMOV DPTR,#DTABMOV A,R0MOVC A,A+DPTR;查表,送字形MOV DPTR,#0101HMOVX DPTR,ALCALL DELAYLD1:RET“ 个个个*个*,;字形表DTAB:DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07

6、H,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 0003H主程序LJMP EXINT0“ ;*个*;ORG 0030HMAIN:MOV SP,#70H;初始化外中断0SETB IT0SETB EX0SETB EA;初始化8155MOV DPTR,#0100HMOV A,#03HMOVX DPTR,A;显示缓存区MOV 30H,#1M

7、OV 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,NEXTMOV R2,#00HMOV A,40HRL AMOV P1,AMOV 40H,AINC R0CJNE R0,#9,NEXT1MOV R0,#30HNEX

8、T1:MOV A,R4RL AMOV R4,ANEXT:RETI;显示子程序DISPLAY:MOV A,R4MOV DPTR,#0102HMOVX DPTR,AMOV 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,DEL2DJNZ R7,DEL1RETEND;说明:;R4是保存数码管字位;

9、R3;R2是保存中断次数 满100清0;R1;R0是保存数码管的字型实验5(1)ORG 0000HSJMP MAIN;*8*;中断入口地址ORG 000BHLJMP T0INT“ ;*;主程序ORG 0030HMAIN: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中断子程序(25ms2.5ms来一次中断)T0INT:MOV TH0,#0F6H;#9EH;重新赋初值MOV TL0,#3CH ;#58HCPL P1.1;改变电平RETI“ 个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号