資料介紹
利用定時器和中斷控制各種功能的程序代碼分享
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
?
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
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
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
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
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
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、兩個定時計數器合用的延時實驗
ORG 000HAJMP 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 0000HAJMP 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 0000HAJMP 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 0000HAJMP 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
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 利用定時器中斷方式控制led燈的閃爍速度_項目四 定時器和中斷概念的基本認識...
- 定時器中斷實驗
- 51單片機中斷主要關于計時--定時--計算定時器初值--的簡介 ~~~看到的關于中斷? 計時器/定時器的介紹,覺得
- 51單片機自學筆記定時器中斷
- 51單片機:開啟中斷和定時器
- 51單片機入門教程(5)——定時器中斷
- 定時器延時控制電機驅動程序下載 21次下載
- 使用單片機實現定時器的程序代碼免費下載
- PIC單片機定時器的外設中斷的使用程序免費下載
- 使用單片機的中斷及定時器實現時鐘功能的程序和資料免費下載
- 使用51單片機定時器中斷控制LED燈亮1S的程序免費下載
- 同時使用兩個定時器控制蜂鳴器發聲的程序代碼免費下載
- 定時器中斷程序資料合集免費下載 1次下載
- 各種定時器的功能設置 3次下載
- 中斷和定時器/計數器
- 51單片機定時器和中斷的介紹 2893次閱讀
- 利用定時器中斷代替延時函數(包含例程+原理思想) 4416次閱讀
- 如何使用MAXQ微控制器上的定時器B生成PWM波形 802次閱讀
- MAXQ微控制器中斷編程 728次閱讀
- 如何利用定時器產生PWM波 3995次閱讀
- 基于定時器和計數器改善微控制器的設計性能 1024次閱讀
- 在應用程序中使定時器或計數器改善微控制器的應用功能 1562次閱讀
- stm32定時器中斷與誤區 2.7w次閱讀
- 8051單片機定時器溢出中斷與CPU響應中斷的時間誤差分析 4177次閱讀
- 51單片機定時器控制LED燈 1w次閱讀
- 51單片機內部定時器和中斷系統以及編寫第一個簡單的定時器實驗程序 4.1w次閱讀
- 詳細介紹定時器和定時器中斷 1.7w次閱讀
- stm32定時器中斷程序 1.3w次閱讀
- 單片機必須了解的外設功能——定時器/中斷功能 7399次閱讀
- 有循環控制功能的定時器 2311次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 651單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 751單片機大棚環境控制器仿真程序
- 1.10 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論