在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

            ;數(shù)碼管段碼接法A-PD0,B-PD1....G-PD6,H-PD7
            ;數(shù)碼管位碼接法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://www.biyoush.com/article/201612/324338.htm

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

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

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



            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉