在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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è)計應(yīng)用 > 學(xué)習(xí)型紅外遙控器匯編語言程序

            學(xué)習(xí)型紅外遙控器匯編語言程序

            作者: 時間:2012-10-27 來源:網(wǎng)絡(luò) 收藏

            ;************紅外線接收程序******************

            ;*********************************************
            ;器件地址
            EEPROM EQU 0A0H
            ;MODE EQU 070H ;高四位0111,是紅外線設(shè)備型號
            ;低四位 ,是紅外線設(shè)備的地址


            ;R2,R3 是延時計數(shù)器
            ;R4 :脈沖電平寬度計時器,算法,計數(shù)26次(也就是26US)R4加1
            ;R5 :脈沖個數(shù)計數(shù)器
            ;內(nèi)存數(shù)據(jù)定義
            SP_STATR EQU 01H
            SP_END EQU 00H
            ACK BIT 08H ;接收數(shù)據(jù)非應(yīng)答標(biāo)志
            BITCNT DATA 15H ;IIC數(shù)據(jù)計數(shù)器 ;SADDP:類型+地址
            BYTECNT DATA 16H ;IIC數(shù)據(jù)字節(jié)計數(shù)器 ;SCISTEP:串行通信進程
            SLVADR DATA 14H ;被控器地址,EEPROM的地址 ;SCILEN:后4位數(shù)據(jù)長度(幾個字節(jié))
            SUBADR DATA 17H ;被控器單元地址 ;SCICOM:前4位是命令
            RCVDAT DATA 18H ;接收數(shù)據(jù)緩沖區(qū) ;CRC :校驗寄存器
            XMTDAT DATA 19H ;發(fā)送數(shù)據(jù)緩沖區(qū) ;SCODE :校驗寄存器
            CYCLE DATA 22H ;循環(huán)計數(shù)器 ;RBUFSP:接收緩沖區(qū)指針
            DAT DATA 21H ;脈沖個數(shù)計數(shù)器 ;SCISP :發(fā)送數(shù)據(jù)緩沖區(qū)指針
            STU DATA 20H ;學(xué)習(xí)過的置0,沒有學(xué)習(xí)過的置1
            ER DATA 13H ;出錯標(biāo)志位,為0則出錯,為1則是正確
            MODE DATA 09H ;高四位0111,是紅外線設(shè)備型號
            ;低四位 ,是紅外線設(shè)備的地址

            ;端口位定義
            IN BIT P1.4; P0.0 ;紅外線接收位
            BZ BIT P0.5 ;蜂鳴器輸出位
            OUT BIT P1.7 ;紅外線發(fā)射位
            WP BIT P0.0;P1.4 ;寫保護,為0時可讀寫,為1時不能寫
            SDA BIT P1.3 ;模擬IIC數(shù)據(jù)傳送位
            SCL BIT P1.2 ;模擬IIC時鐘控制狀態(tài)標(biāo)志

            LED BIT P0.7 ;
            RECE BIT P0.6 ;串口接收發(fā)送位

            ORG 0000H
            AJMP MAIN
            ORG 000BH ;定時器TO0中斷入口地址
            AJMP LOPP
            ORG 0023H
            AJMP SINT ;串口中斷入口地址
            ORG 063H

            ;***************主程序******************************

            MAIN:
            MOV STU,#00H
            MOV SP,#0AH
            MOV P0M2,#080h
            CLR LED
            MOV DAT,#00H ;脈沖個數(shù)計數(shù)器清0
            MOV TMOD,#022H ;設(shè)置定時器0和1為方式2,定時控制方式,以運行控制位TR0,TR1啟動定時器
            MOV TH0,#00H ;加載計數(shù)初值
            MOV TL0,#00H ;保存計術(shù)數(shù)值,計時
            MOV TH1,#0FAH
            MOV TL1,#0FAH ;波特率為4800
            MOV SADEN,#0FFH
            MOV SCON,#0F0H ;串口工作方式3,多機通信控制,允許接收
            MOV TCON,#040H ;啟動T1定時
            MOV PCON,#00H ;波特率加倍
            MOV IEN0,#092H ;允許定時T0中斷,
            ;中斷總充許
            ;允許串行中斷

            MOV WDCON,#017H
            ; MOV MODE,#70H ;高四位0111,是紅外線設(shè)備型號
            ;低四位 ,是紅外線設(shè)備的地址
            LCALL GETADDR ;調(diào)用,檢查地址子程式
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            MOV PT0AD,#010H ;禁止CIN1A(P0.4) 的數(shù)字輸入功能
            ANL P0M2,#0EFH ;CIN1A(P0.4)僅為輸入功能
            ORL P0M1,#010H
            MOV CMP1,#028H ;正向輸入為CIN1A
            ;選擇內(nèi)部1.23V作為參考電壓
            ;比較結(jié)果輸出到中斷
            ; SETB EC1 ;打開中比較器1中斷

            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            SETB WP ;禁止寫EEPROM
            SETB TR1 ;啟動串行中斷,啟動TR1定時
            MOV ER,#00H
            ;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;
            LCALL LOP
            AJMP MAIN
            ;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;

            AFFL:
            JBC B.7,AFFL1 ;中斷返回時,接受命令正確,則調(diào)用命令處理程式
            MOV WDRST,#01EH
            MOV WDRST,#0E1H
            AJMP AFFL ;等待中斷

            ;********************命令處理************************************************
            ;主機命令: 第1個字節(jié)(前4位是設(shè)備婁型,后4位是設(shè)備地址)
            ; 第2個字節(jié)(前4位是命令,后4位是數(shù)據(jù)字節(jié)數(shù))
            ; 第3~N個字節(jié)(EEPROM的地址)
            ; 最后一位是CRC
            ;接收前四位命令: 0111 7 是查詢設(shè)備狀態(tài)
            ; 0101 5 是學(xué)習(xí)紅外線指令命令
            ; 0110 6 是發(fā)送紅外線指令命令
            ;從機應(yīng)答:
            ;發(fā)射前4位命令: 0111 7 命令已接受
            ; 0101 5 紅外碼學(xué)習(xí)正確
            ; 0000 紅外碼學(xué)習(xí)錯或超時
            ;接收后四位數(shù)據(jù)長度為1個字節(jié)0001
            ;數(shù)據(jù)字節(jié):為學(xué)習(xí)或發(fā)送的按鍵值(就是EEPROM 的地址)
            ;設(shè)備婁型,地址是01000000


            AFFL1:
            CLR LED
            CLR ES ;串行中斷關(guān)閉
            CLR TR1
            MOV R5, SUBADR

            ;********************判斷紅外線碼學(xué)習(xí)還是發(fā)射**********************************

            ;取得EEPROM的高低字節(jié)地址
            MOV A,22H ;把數(shù)據(jù)中的按鍵值入A
            CJNE A,#04H,ORDER1 ;判斷是錯誤碼,還是正常按鍵值
            AJMP TTMM ;命令=4,則轉(zhuǎn)發(fā)送紅外碼子程序
            ORDER1:
            JNC TTM3 ;命令大于4,則置錯誤標(biāo)志返回等待中斷
            JC TTMM ;命令小于4, 則順繼執(zhí)行
            TTMM:
            MOV B,#60H ;把96放入乘數(shù)B中
            MUL AB ;把接收到的鍵碼乘以96,取得學(xué)習(xí)碼EEPROM
            ;的按鍵地址
            MOV SUBADR,A ;把乘積的低字節(jié)入EEPROM的低字節(jié)地址
            MOV A,B ;把B 存A中
            RL A ;把乘積的高字節(jié)左移一位
            MOV SLVADR,#EEPROM
            MOV B,SLVADR
            ADD A,B ;把乘積的高字節(jié)與EEPROM的芯片地址相加
            MOV SLVADR,A ;后放入高字節(jié)
            CLR F0 ;清出錯標(biāo)志
            MOV A,R5 ;命令前四位入A
            CJNE A,#05H,ORDER ;是學(xué)習(xí)紅外碼和發(fā)射碼嗎?不是置錯誤標(biāo)記
            AJMP TTM1 ;
            ORDER:
            CJNE A,#06H,TTM3 ;是學(xué)習(xí)紅外碼嗎?
            TTMM1:
            LCALL LOP ;SUBADR=0則調(diào)用學(xué)習(xí)紅外碼子程序
            AJMP TTM2
            TTM1:
            LCALL LDD ;調(diào)用紅外線發(fā)射子程式
            TTM2:
            JB F0,TTM3 ;調(diào)用子程序出錯,置錯誤標(biāo)記
            SETB ES ;打開串行中斷
            SETB TR1
            MOV ER,#05H ;調(diào)用子程式正確,則置正確標(biāo)記
            AJMP AFFL ;返回等待中斷
            TTM3:
            MOV ER,#00H
            SETB ES ;串行中斷打開
            SETB TR1
            CLR LED
            AJMP AFFL ;出錯返回等待中斷
            ;***********************************************************************
            ; 紅外線接收存EEPROM程序
            ;***********************************************************************

            由于程序太大,帖子無法全部貼出 請點這里下載程序的完整版本: http://www.51hei.com/ziliao/file/STC89C52學(xué)習(xí)型遙控器.rar

            塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理
            蜂鳴器相關(guān)文章:蜂鳴器原理


            關(guān)鍵詞: 紅外遙控器 匯編語言

            評論


            相關(guān)推薦

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

            關(guān)閉