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

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

學習型紅外遙控器匯編語言程序

作者:佚名   來源:本站原創   點擊數:  更新時間:2010年04月19日   【字體:

;可用,版本3 ,能接收長碼
;2001.10.20
;
;
;******************************************

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

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


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

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

LED             BIT       P0.7            ;
RECE            BIT       P0.6           ;串口接收發送位

                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         ;脈沖個數計數器清0
               MOV        TMOD,#022H       ;設置定時器0和1為方式2,定時控制方式,以運行控制位TR0,TR1啟動定時器
               MOV        TH0,#00H         ;加載計數初值
               MOV        TL0,#00H         ;保存計術數值,計時
               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,是紅外線設備型號
                                           ;低四位    ,是紅外線設備的地址
               LCALL       GETADDR         ;調用,檢查地址子程式
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
               MOV        PT0AD,#010H      ;禁止CIN1A(P0.4) 的數字輸入功能
               ANL        P0M2,#0EFH       ;CIN1A(P0.4)僅為輸入功能
               ORL        P0M1,#010H
               MOV        CMP1,#028H       ;正向輸入為CIN1A
                                           ;選擇內部1.23V作為參考電壓
                                           ;比較結果輸出到中斷
             ; SETB       EC1              ;打開中比較器1中斷

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

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

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


AFFL1:
              CLR         LED
              CLR         ES                ;串行中斷關閉
              CLR         TR1
              MOV         R5, SUBADR

;********************判斷紅外線碼學習還是發射**********************************

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

由于程序太大,帖子無法全部貼出 請點這里下載程序的完整版本: http://m.zg4o1577.cn/ziliao/file/STC89C52學習型遙控器.rar

關閉窗口

相關文章

主站蜘蛛池模板: 3d动漫精品h区xxxxx区 | 人人射人人干 | 激情网站在线观看 | 国产超碰在线 | 99久久久国产精品 | 亚洲日本高清 | 一区二区三区视频在线 | 怡红院久久 | 亚洲黄色成人 | 久久久成人免费视频 | 国产在线小视频 | 亚洲精品18在线观看 | 国产日本在线 | 亚洲午夜在线 | 亚洲精品一区二区三 | 国产成人精品一区二区三区在线 | 久久精品一区二区三区四区 | a亚洲天堂 | 国产成人免费视频 | 欧美日韩一区二区在线观看 | 久久国产99 | 香蕉视频一区二区 | 青青国产视频 | 四虎影院最新网址 | 国产成人aⅴ | 国产传媒av | 国产欧美日韩视频 | 黄色三级av | www.wuye| 婷婷六月色 | 欧美又粗又长 | 日韩小视频在线观看 | 99视频精品 | 国产一级黄色大片 | 欧美日韩国| 少妇高潮露脸国语对白 | 亚洲天堂视频在线观看 | 中文字幕亚洲一区 | 日韩综合精品 | 久热伊人| 国产精品免费一区 |