久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

合泰單片機接收紅外遙控器程序(NEC碼)

作者:huqin   來源:本站原創   點擊數:  更新時間:2014年02月12日   【字體:

;;內容:按下PA3接的按鍵進中斷LED數碼管加1
;數碼管段碼接法A-PD0,B-PD1....G-PD6,H-PD7
;數碼管位碼接法OM0-PC0...COM4-PC3
;紅外頭接-PA.3
;完整源代碼下載:http://www.zg4o1577.cn/f/hthw.rar
include HT66F50.inc
ORG 0000H
JMP A1
ORG 04H ;外部中斷0入口地址
JMP ZD01 ; 
ORG 0014H ;多功能中斷入口地址
JMP ZD1
ORG 30H ;
Q1:
DC 03FH ; 0
DC 006H ; 1
DC 05BH ; 2
DC 04FH ; 3
DC 066H ; 4
DC 06DH ; 5
DC 07DH ; 6
DC 007H ; 7
DC 07FH ; 8
DC 06FH ; 9
DC 077H ; A
DC 07CH ; B
DC 039H ; C
DC 05EH ; D
DC 079H ; E
DC 071H ; F 
A1: 

MOV A,3FH ;顯示內容
MOV [8AH],A ;第一位數碼管段碼顯示內容寄存器
MOV A,3FH ;顯示內容
MOV [8BH],A ;第二位數碼管段碼顯示內容寄存器
MOV A,3FH ;顯示內容
MOV [8CH],A ;第三位數碼管段碼顯示內容寄存器
MOV A,3FH ;顯示內容
MOV [8DH],A ;第四位數碼管顯示內容寄存器 
MOV A,08H ;跟CP1C寄存器設置要求選擇數據
MOV CP1C,A ;設置PC口為I/0口而不是中斷口
CLR PCC ;設置pc 口為輸出口
CLR PDC ;設置PD 口為輸出口
MOV A,1 ;設置初始顯示位碼顯示第一位
MOV [80H],A ;位碼寄存器
MOV A,8AH ;設置對應第一位段碼寄存器
MOV MP0,A ;間接寄存器指針
MOV A,00000000B ;
MOV PRM1,A ;設置外部中斷0的管腳為PA.3
MOV A,00000010B ;
MOV INTEG,A ;設置外部中斷0為下降沿觸發
CLR ACERL ;設置PA口不為AD輸入口
SET PAPU.3 ;設置PA.3上拉
SET PAC.3 ;設置PA.3為輸入口
MOV A,08H ; 
MOV CP0C,A ;設置PA3不為比較器輸入口
CLR PDC ;設置PD口為輸出口
MOV A,01H ;設置PD口初始狀態
MOV PD,A ;PD口顯示初始狀態
MOV A,00000000B ;設置TM2 計數時鐘位為fSYS/4
MOV TM2C0,A
MOV A,11000001B ;設置TM2中斷為定時/計數模式選擇比較器A匹配
MOV TM2C1,A
MOV A,LOW  5000 ;設置中斷時間為5000個時鐘周期
MOV TM2AL,A ;低8位
MOV A,HIGH 5000 ;設置中斷時間為5000個時鐘周期
MOV TM2AH,A ;高8位
CLR MF0F ;清多功能中斷0標志
CLR T2AF ;清定時器2較器A中斷標志
SET MF0E ;使能多功能0中斷
SET T2AE ;使能定時器2較器A中斷
CLR INT0F ;清中斷0標志
SET INT0E ;使能外部0中斷
SET EMI ;使能總中斷
SET T2ON ;開始計數
JMP $
;*************************************************
; 外部中斷0服務子程序
;************************************************* 

ZD01: ;進入中斷自動關閉總中斷
SET EMI ;打開總中斷允許嵌套
CLR INT0E ;關閉外部中斷0避免為完成操作2次中斷
MOV [0F2H],A ;壓棧ACC到0F2H
MOV A,STATUS ;
MOV [0F3H],A ;壓棧status標志寄存器到0F3H
MOV A,18 ;設置起始碼時間(0.5*18=9MS)
MOV [0A0H],A
A2: CALL M001 ;調用0.5MS延時
SZ PA.3 ;9MS時間內判斷PA3是否為高電平
JMP ZD02 ;是高電平不是起始碼則跳出中斷
SDZ [0A0H] ;判斷是否到9MS
JMP A2 ;不到則返回繼續等待
MOV A,9 ;設置結果碼時間4.5MS(0.5*9=4.5MS)
MOV [0A0H],A ;
SNZ PA.3 ;判斷是否為高電平(起始碼是否結束, 
JMP $-1 ;起始碼必須結束,結果碼才能開始)
A3: CALL M001 ;調用0.5MS延時
SNZ PA.3 ;4.5MS時間內判斷PA3是否為低電平
JMP ZD02 ;是低電平則不是結果碼跳出中斷
SDZ [0A0H] ;判斷是否到4.5ms
JMP A3 ;不到這繼續等待
SZ PA.3 ;到了則是結果碼則等待判斷結果碼是否結束
JMP $-1 ;結果碼必須結束后才能繼續下一步判斷
MOV A,8 ;設置接收的數為8bit
MOV [0A1H],A ;
MOV A,4 ;設置接收個數
MOV [0A2H],A ;
MOV A,3 ;設置分辨0或1的時間1.5MS以上為1
MOV [0A0H],A ;
MOV A,0A4H ;設置收到的數存到0A4H(地址碼)0A5H(地址反碼)
MOV MP1,A ;0A6H(數據碼)0A7H(數據反碼)
A4:
SNZ PA.3 ;判斷0.565MS低電平是否結束
JMP A4 ;必須在0.565MS低電平結束后才能判斷所收的數是1還是0
A5:
CALL M001 ;延時0.5MS
SNZ PA.3 ;1.5MS內判斷PA3是否為0
JMP A6 ;是0則說明時間小于1.5MS為0
SDZ [0A0H] ;判斷是否到1.5MS
JMP A5 ;1 ;否則繼續等待
SET C ;置位標志C
RLC IAR1 ;通過帶進位左移指令把當前數保存起來
JMP A7 ;
A6: 
CLR C ;清標志C
RLC IAR1 ;通過帶進位左移指令把當前數保存起來
A7:

MOV A,3 ;到了1.5MS還是高電平說明為1
MOV [0A0H],A ;重新設置分辨0或1的時間1.5MS以上為1
SZ PA.3 ;判斷是否結束回到0.565MS低電平狀態
JMP $-1 ;必須要回到0.565MS才能接收下一個數
SDZ [0A1H] ;判斷是否收夠了8位數
JMP A4 ;否則繼續
MOV A,8 ;重新設置位數
MOV [0A1H],A ;
INC MP1 ;間接寄存器加1
SDZ [0A2H] ;判斷是否收夠4個NEC碼
JMP A4 ;
MOV A,[0A4H] ;地址碼
MOV [8AH],A ;第一位數碼管段碼顯示內容寄存器
MOV A,[0A5H] ;地址反碼
MOV [8BH],A ;第二位數碼管段碼顯示內容寄存器
MOV A,[0A6H] ;數據碼
MOV [8CH],A ;第三位數碼管段碼顯示內容寄存器
MOV A,[0A7H] ;數據反碼
MOV [8DH],A ;第四位數碼管顯示內容寄存器 
ZD02: 
MOV A,[0F3H] ;彈棧后進先出先進后出 
MOV STATUS,A ;彈棧0F1H的數到標志寄存器
MOV A,[0F2H] ;彈棧0F0H的數到acc
CLR INT0F ;清中斷標志
SET INT0E ;使能外部中斷
RETI ;中斷返回
;*******************************************************
; 中斷服務子程序
;******************************************************* 
ZD1: 
MOV [0F0H],A ;壓棧ACC到0F0H
MOV A,STATUS ;
MOV [0F1H],A ;壓棧status標志寄存器到0F1H
CLR PC ;清PC(清屏幕)
MOV A,Q1 ;數據表地址
CLR TBHP ;清數據表地址高位否則出錯
ADD A,IAR0 ;利用間接寄存器找到要顯示段碼所在數據表的地址 
MOV TBLP,A ;表格指針寄存器TBLP
; TABRD PD ;查表并將數據存到PD口寄存器
MOV A,IAR0 ;
MOV PD,A ;顯示收到的數到LED上
MOV A,[80H] ;位碼寄存器
MOV PC,A ;將位碼寄存器的數存到PC口寄存器
;段碼和位碼的數都有了所以數碼管被點亮
INC MP0 ;間接寄存器指針加1指向下一個段碼寄存器
RL [80H] ;左移位碼寄存器控制下一個數碼管
SNZ [80H].5 ;判斷是否控制完4個數碼管
JMP ZD2 ;退出中斷繼續
MOV A,1 ;是則從新初始化寄存器數據
MOV [80H],A ; 
MOV A,8AH ;千位數碼管對應寄存器
MOV MP0,A ;存到間接寄存器0
ZD2: 
MOV A,[0F1H] ;彈棧后進先出先進后出 
MOV STATUS,A ;彈棧0F1H的數到標志寄存器
MOV A,[0F0H] ;彈棧0F0H的數到acc
CLR MF0F ;清多功能標志
CLR T2AF ;清定時器2比較器A標志
RETI ;中斷返回 
;**************************************
; 延時子程序
;************************************** 
M001: 
MOV A,1
MOV [85H],A
M002: 
MOV A,3
MOV [86H],A
M003: 
MOV A,105 
MOV [87H],A
M004: 
SDZ [87H]
JMP M004
SDZ [86H]
JMP M003
SDZ [85H]
JMP M002 
    RET 
END
 

關閉窗口

相關文章

主站蜘蛛池模板: 精品欧美色视频网站在线观看 | 久久99久久99精品免视看婷婷 | 久久久男人的天堂 | 中文字幕一区二区三区在线观看 | 欧美日韩视频在线第一区 | 99亚洲 | 日韩在线一区二区三区 | 久久免费观看一级毛片 | 婷婷福利 | 中文字幕免费在线 | 欧洲精品码一区二区三区免费看 | 午夜男人免费视频 | 国产1区2区在线观看 | 美女久久视频 | 日韩一区中文字幕 | 免费视频一区 | 日韩中文字幕2019 | 国产专区在线 | h在线| 久久99深爱久久99精品 | 男女羞羞视频在线 | 欧美成人精品一区二区男人看 | 国产91视频免费 | 精品一区二区免费视频 | 综合久| 在线成人免费视频 | 99国产视频| 亚洲xx在线 | 天堂精品| 成人国产精品久久 | 亚洲午夜电影 | 在线永久看片免费的视频 | 日韩av第一页 | 久久精品中文 | 国产色婷婷久久99精品91 | 一级毛片在线播放 | 伊人久久综合影院 | 成人 在线 | 国产精品不卡一区 | 精品亚洲一区二区 | 国产福利在线播放麻豆 |