<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 合泰單片機接收紅外遙控器程序(NEC碼)

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

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò ) 收藏
;;內容:按下PA3接的按鍵進(jìn)中斷LED數碼管加1

;數碼管段碼接法A-PD0,B-PD1....G-PD6,H-PD7
;數碼管位碼接法OM0-PC0...COM4-PC3
;紅外頭接-PA.3
;完整源代碼下載:http://www.51hei.com/f/hthw.rar
include HT66F50.inc
ORG0000H
JMPA1
ORG04H;外部中斷0入口地址
JMPZD01;
ORG0014H ;多功能中斷入口地址
JMPZD1
ORG30H;
Q1:
DC03FH; 0
DC006H; 1
DC05BH; 2
DC04FH; 3
DC066H; 4
DC06DH; 5
DC07DH; 6
DC007H; 7
DC07FH; 8
DC06FH; 9
DC077H; A
DC07CH; B
DC039H; C
DC05EH; D
DC079H; E
DC071H; F
A1:

本文引用地址:http://dyxdggzs.com/article/201612/324338.htm

MOVA,3FH;顯示內容
MOV[8AH],A;第一位數碼管段碼顯示內容寄存器
MOVA,3FH;顯示內容
MOV[8BH],A;第二位數碼管段碼顯示內容寄存器
MOVA,3FH;顯示內容
MOV[8CH],A;第三位數碼管段碼顯示內容寄存器
MOVA,3FH;顯示內容
MOV[8DH],A;第四位數碼管顯示內容寄存器
MOVA,08H;跟CP1C寄存器設置要求選擇數據
MOVCP1C,A;設置PC口為I/0口而不是中斷口
CLRPCC;設置pc 口為輸出口
CLRPDC;設置PD 口為輸出口
MOVA,1;設置初始顯示位碼顯示第一位
MOV[80H],A;位碼寄存器
MOVA,8AH;設置對應第一位段碼寄存器
MOVMP0,A;間接寄存器指針
MOVA,00000000B;
MOVPRM1,A;設置外部中斷0的管腳為PA.3
MOVA,00000010B;
MOVINTEG,A;設置外部中斷0為下降沿觸發(fā)
CLRACERL;設置PA口不為AD輸入口
SETPAPU.3;設置PA.3上拉
SETPAC.3;設置PA.3為輸入口
MOVA,08H;
MOVCP0C,A;設置PA3不為比較器輸入口
CLRPDC;設置PD口為輸出口
MOVA,01H;設置PD口初始狀態(tài)
MOVPD,A;PD口顯示初始狀態(tài)
MOVA,00000000B;設置TM2 計數時(shí)鐘位為fSYS/4
MOVTM2C0,A
MOVA,11000001B ;設置TM2中斷為定時(shí)/計數模式選擇比較器A匹配
MOVTM2C1,A
MOVA,LOW 5000;設置中斷時(shí)間為5000個(gè)時(shí)鐘周期
MOVTM2AL,A;低8位
MOVA,HIGH 5000;設置中斷時(shí)間為5000個(gè)時(shí)鐘周期
MOVTM2AH,A;高8位
CLRMF0F;清多功能中斷0標志
CLRT2AF;清定時(shí)器2較器A中斷標志
SETMF0E;使能多功能0中斷
SETT2AE;使能定時(shí)器2較器A中斷
CLRINT0F;清中斷0標志
SETINT0E;使能外部0中斷
SETEMI;使能總中斷
SETT2ON;開(kāi)始計數
JMP$
;*************************************************
;外部中斷0服務(wù)子程序
;*************************************************

ZD01:;進(jìn)入中斷自動(dòng)關(guān)閉總中斷
SETEMI;打開(kāi)總中斷允許嵌套
CLRINT0E;關(guān)閉外部中斷0避免為完成操作2次中斷
MOV[0F2H],A;壓棧ACC到0F2H
MOVA,STATUS;
MOV[0F3H],A;壓棧status標志寄存器到0F3H
MOVA,18;設置起始碼時(shí)間(0.5*18=9MS)
MOV[0A0H],A
A2:CALLM001;調用0.5MS延時(shí)
SZPA.3;9MS時(shí)間內判斷PA3是否為高電平
JMPZD02;是高電平不是起始碼則跳出中斷
SDZ[0A0H];判斷是否到9MS
JMPA2;不到則返回繼續等待
MOVA,9;設置結果碼時(shí)間4.5MS(0.5*9=4.5MS)
MOV[0A0H],A;
SNZPA.3;判斷是否為高電平(起始碼是否結束,
JMP$-1;起始碼必須結束,結果碼才能開(kāi)始)
A3:CALLM001;調用0.5MS延時(shí)
SNZPA.3;4.5MS時(shí)間內判斷PA3是否為低電平
JMPZD02;是低電平則不是結果碼跳出中斷
SDZ[0A0H];判斷是否到4.5ms
JMPA3;不到這繼續等待
SZPA.3;到了則是結果碼則等待判斷結果碼是否結束
JMP$-1;結果碼必須結束后才能繼續下一步判斷
MOVA,8;設置接收的數為8bit
MOV[0A1H],A;
MOVA,4;設置接收個(gè)數
MOV[0A2H],A;
MOVA,3;設置分辨0或1的時(shí)間1.5MS以上為1
MOV[0A0H],A;
MOVA,0A4H;設置收到的數存到0A4H(地址碼)0A5H(地址反碼)
MOVMP1,A;0A6H(數據碼)0A7H(數據反碼)
A4:
SNZPA.3;判斷0.565MS低電平是否結束
JMPA4;必須在0.565MS低電平結束后才能判斷所收的數是1還是0
A5:
CALLM001;延時(shí)0.5MS
SNZPA.3;1.5MS內判斷PA3是否為0
JMPA6;是0則說(shuō)明時(shí)間小于1.5MS為0
SDZ[0A0H];判斷是否到1.5MS
JMPA5 ;1;否則繼續等待
SETC;置位標志C
RLCIAR1;通過(guò)帶進(jìn)位左移指令把當前數保存起來(lái)
JMPA7;
A6:
CLRC;清標志C
RLCIAR1;通過(guò)帶進(jìn)位左移指令把當前數保存起來(lái)
A7:

MOVA,3;到了1.5MS還是高電平說(shuō)明為1
MOV[0A0H],A;重新設置分辨0或1的時(shí)間1.5MS以上為1
SZPA.3;判斷是否結束回到0.565MS低電平狀態(tài)
JMP$-1;必須要回到0.565MS才能接收下一個(gè)數
SDZ[0A1H];判斷是否收夠了8位數
JMPA4;否則繼續
MOVA,8;重新設置位數
MOV[0A1H],A;
INCMP1;間接寄存器加1
SDZ[0A2H];判斷是否收夠4個(gè)NEC碼
JMPA4;
MOVA,[0A4H];地址碼
MOV[8AH],A;第一位數碼管段碼顯示內容寄存器
MOVA,[0A5H];地址反碼
MOV[8BH],A;第二位數碼管段碼顯示內容寄存器
MOVA,[0A6H];數據碼
MOV[8CH],A;第三位數碼管段碼顯示內容寄存器
MOVA,[0A7H];數據反碼
MOV[8DH],A;第四位數碼管顯示內容寄存器
ZD02:
MOVA,[0F3H];彈棧后進(jìn)先出先進(jìn)后出
MOVSTATUS,A;彈棧0F1H的數到標志寄存器
MOVA,[0F2H];彈棧0F0H的數到acc
CLRINT0F;清中斷標志
SETINT0E;使能外部中斷
RETI;中斷返回
;*******************************************************
;中斷服務(wù)子程序
;*******************************************************
ZD1:
MOV[0F0H],A;壓棧ACC到0F0H
MOVA,STATUS;
MOV[0F1H],A;壓棧status標志寄存器到0F1H
CLRPC;清PC(清屏幕)
MOVA,Q1;數據表地址
CLRTBHP;清數據表地址高位否則出錯
ADDA,IAR0;利用間接寄存器找到要顯示段碼所在數據表的地址
MOVTBLP,A;表格指針寄存器TBLP
;TABRDPD;查表并將數據存到PD口寄存器
MOVA,IAR0;
MOVPD,A;顯示收到的數到LED上
MOVA,[80H];位碼寄存器
MOVPC,A;將位碼寄存器的數存到PC口寄存器
;段碼和位碼的數都有了所以數碼管被點(diǎn)亮
INCMP0;間接寄存器指針加1指向下一個(gè)段碼寄存器
RL[80H];左移位碼寄存器控制下一個(gè)數碼管
SNZ[80H].5;判斷是否控制完4個(gè)數碼管
JMPZD2;退出中斷繼續
MOVA,1;是則從新初始化寄存器數據
MOV[80H],A;
MOVA,8AH;千位數碼管對應寄存器
MOVMP0,A;存到間接寄存器0
ZD2:
MOVA,[0F1H];彈棧后進(jìn)先出先進(jìn)后出
MOVSTATUS,A;彈棧0F1H的數到標志寄存器
MOVA,[0F0H];彈棧0F0H的數到acc
CLRMF0F;清多功能標志
CLRT2AF;清定時(shí)器2比較器A標志
RETI;中斷返回
;**************************************
;延時(shí)子程序
;**************************************
M001:
MOVA,1
MOV[85H],A
M002:
MOVA,3
MOV[86H],A
M003:
MOVA,105
MOV[87H],A
M004:
SDZ[87H]
JMPM004
SDZ[86H]
JMPM003
SDZ[85H]
JMPM002
RET
END



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>