电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>单片机>利用定时器和中断控制各种功能的程序代码分享

利用定时器和中断控制各种功能的程序代码分享

2017-09-06 | rar | 未知 | 次下载 | 免费

资料介绍

利用定时器和中断控制各种功能的程序代码分享

1、两个定时计数器合用的延时实验

ORG 000H
AJMP MAIN
ORG 000BH
AJMP T_0
ORG 001BH
AJMP T_1
ORG 0030H
MAIN:
MOV P0,#0FFH
MOV TMOD,#51H
MOV TH0,#15H
MOV TL0,#0A0H
MOV TH1,#0FCH
MOV TL1,#18H
MOV IE,#8AH
SETB TR0
SETB TR1
LL: SJMP LL
T_0:MOV TH0,#15H
MOV TL0,#0A0H
CPL P0.2
RETI
T_1:MOV TH1,#0FCH
MOV TL1,#18H
CPL P0.1
RETI
END
 

2、利用定时器演奏音乐

ORG  001BH   ;定时器T1的中断入口 
MOV  TH1,R1  ;重装定时初值 
MOV  TL1,R0  ; 
CPL  P3.7      ;P1.0输出方波 
RETI           ;中断返回 
ORG  100H     ;主程序 
START:MOV  TMOD,#01H ;定时器T1工作方式1 
MOV  IE,#88H           ;允许T1中断 
MOV  DPTR,#TAB        ;表格首地址 
LOOP:CLR  A           ; 
MOVC  A,@A+DPTR     ;查表 
MOV  R1,A              ;定时器高8为存R1 
INC  DPTR              ; 
CLR  A                 ; 
MOVC  A,@A+DPTR     ;查表 
MOV  R0,A              ;定时器低8为存R0 
ORL  A,R1               ; 
JZ  NEXT0               ;全0为休止符 
MOV  A,R0              ; 
ANL  A,R1               ; 
CJNE  A,#0FFH,NEXT     ;全1表示乐曲结束 
SJMP  START              ;从头开始循环演奏 
NEXT:MOV  TH1,R1       ;装入定时值 
MOV  TL1,R0             ; 
SETB  TR1                ;启动定时器 
SJMP  NEXT1             ; 
NEXT0:CLR  TR1          ;关闭定时器停止发音 
NEXT1:CLR  A            ; 
INC  DPTR                ; 
MOVC  A,@A+DPTR       ;查延迟常数 
MOV  R2,A                ; 
LOOP1:LCALL  D200       ;调用延时200mS子程序 
DJNZ  R2,LOOP1           ;控制延迟次数 
INC  DPTR                 ; 
AJMP  LOOP               ;处理下一个音符 
D200:MOV  R4,#81H        ;延时20mS子程序 
D200B:MOV  A,#0FFH      ; 
D200A:DEC  A             ; 
JNZ  D200A                ; 
DEC  R4                   ; 
CJNE  R4,#00H,D200B       ; 
RET                        ; 
TAB:      DB  0FEH,25H,02H,0FEH,25H,02H;   
          DB  0FEH,84H,02H,0FEH,84H,02H; 
          DB  0FEH,84H,04H,0FEH,25H,04H;    
   DB  0FEH,25H,02H,0FEH,84H,02H; 
          DB  0FEH,0C0H,04H,0FEH,0C0H,04H; 
   DB  0FEH,98H,02H,0FEH,84H,02H; 
          DB  0FEH,57H,08H,00H,00H,04H;     
   DB  0FFH,0FFH; 
          END

3、利用定时器通过延长定时方法实现灯的闪烁

ORG 0000H
AJMP START
ORG 000BH                ;定时器0的中断向量地址
AJMP TIME0               ;跳转到真正的定时器程序处
ORG 30H
START: MOV P0,#0FFH      ;关所有灯
MOV 30H,#00H                ;
MOV TMOD,#00000001B      ;定时/计数器0工作于方式1
MOV TH0,#3CH 
MOV TL0,#0A0H            ;以上两行预置立即数5536
SETB EA                  ;开总中断允许
SETB ET0                 ;开定时/计数器0允许
SETB TR0                 ;定时/计数器0开始运行
LOOP: AJMP LOOP          ;真正工作时,这里可写任意程序
TIME0:                   ;定时器0的中断处理程序
PUSH ACC                 ;将ACC推入堆栈保护
PUSH PSW                 ;将PSW推入堆栈保护
INC 30H
MOV A,30H
CJNE A,#20,TIME1         
CPL P0.0                 ;取反P0.0
MOV 30H,#0
TIME1: MOV TH0,#15H        ;重置定时常数
MOV TL0,#9FH            
POP PSW
POP ACC
RETI
END

4、利用中断方式实现灯的闪烁

ORG 0000H
AJMP START
ORG 000BH                ;定时器0的中断向量地址
AJMP TIME0               ;跳转到真正的定时器程序处
ORG 30H
START: MOV P0,#0FFH      ;关所有灯
MOV TMOD,#00000001B      ;定时/计数器0工作于方式1
MOV TH0,#15H 
MOV TL0,#0A0H            ;以上两行预置立即数5536
SETB EA                  ;开总中断允许
SETB ET0                 ;开定时/计数器0允许
SETB TR0                 ;定时/计数器0开始运行
LOOP: AJMP LOOP          ;真正工作时,这里可写任意程序
mov r7, #09H
djnz r7,start
TIME0:                   ;定时器0的中断处理程序
PUSH ACC                 ;将ACC推入堆栈保护
PUSH PSW                 ;将PSW推入堆栈保护
CPL P0.0                 ;取反P0.0
MOV TH0,#15H
MOV TL0,#0A0H            ;重置定时常数
POP PSW
POP ACC
RETI
END

5、外部中断实验

ORG 0000H 
AJMP START 
ORG 0003H              ;外部中断地直入口 
AJMP INTO 
ORG 30H 
START: MOV SP,#5FH 
MOV P0,#0FFH           ;灯全灭 
MOV P3,#0FFH           ;P3口置高电平 
SETB EA 
SETB EX0 
AJMP $ 
INTO: 
PUSH ACC 
PUSH PSW 
CPL P0.0 
POP PSW 
POP ACC 
RETI 
END

6、利用软件定时器实现灯的闪烁

;用软件定时器实现P0.0口所接灯按1S/次而P0.1口所接灯按2S/次闪烁
ORG 0000H
AJMP START
ORG 000BH                ;定时器0的中断向量地址
AJMP TIME0               ;跳转到真正的定时器程序处
ORG 0030H
START: MOV P0,#0FFH      ;关所有灯
MOV 30H,#00H             ;软件计数器清零
MOV TMOD,#00000001B      ;定时/计数器0工作于方式1
MOV TH0,#3CH 
MOV TL0,#0A0H            ;以上两行预置立即数15536
SETB EA                  ;开总中断允许
SETB ET0                 ;开定时/计数器0允许
SETB TR0                 ;定时/计数器0开始运行
LOOP: AJMP LOOP          ;真正工作时,这里可写任意程序
TIME0:                   ;定时器0的中断处理程序
PUSH ACC                 ;将ACC推入堆栈保护
PUSH PSW                 ;将PSW推入堆栈保护
INC 30H
INC 31H                  ;两个计数器都加1
MOV A,30H
CJNE A,#255,TNEXT         ;30H单元中的值到了20了吗         
CPL P0.0                 ;到了,取反P0.0
MOV 30H,#0               ;清软件计数器
TNEXT:MOV A,31H
CJNE A,#40,TRET           ;31H单元中的值到了40了吗
CPL P0.1
MOV 31H,#0                ;到了,取反P1.1并清零计数器,返回
TRET: MOV TH0,#15H        ;重置定时常数
MOV TL0,#9FH            
POP PSW
POP ACC
RETI
END

7、利用定时器实现灯的闪烁

ORG 0000H
AJMP START
ORG 30H
START: MOV P0,#0FFH  ;关闭所有的灯
MOV TMOD,#00000001B  ;定时/计数器0工作于方式1
MOV TH0,#15H
MOV TL0,#0A0H        ;以上两行预置计数5336(15A0H)
SETB TR0             ;定时/计数器0开始运行
LOOP: JBC TF0,NEXT   ;如果TF0等于1,则将TF0清0并转next处
AJMP LOOP            ;否则跳转到LOOP处运行
NEXT: CPL P0.0       ;点亮P0.0灯
MOV TH0,#15H         ;
MOV TL0,#0A0H        ;重置定时/计数器的初值
AJMP LOOP
END
 
下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1TC358743XBG评估板参考手册
  2. 1.36 MB  |  330次下载  |  免费
  3. 2开关电源基础知识
  4. 5.73 MB  |  6次下载  |  免费
  5. 3100W短波放大电路图
  6. 0.05 MB  |  4次下载  |  3 积分
  7. 4嵌入式linux-聊天程序设计
  8. 0.60 MB  |  3次下载  |  免费
  9. 5基于FPGA的光纤通信系统的设计与实现
  10. 0.61 MB  |  2次下载  |  免费
  11. 651单片机窗帘控制器仿真程序
  12. 1.93 MB  |  2次下载  |  免费
  13. 751单片机大棚环境控制器仿真程序
  14. 1.10 MB  |  2次下载  |  免费
  15. 8基于51单片机的RGB调色灯程序仿真
  16. 0.86 MB  |  2次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33564次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6653次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537796次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191185次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费