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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

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

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年04月19日   【字體:

;可用,版本3 ,能接收長(zhǎng)碼
;2001.10.20
;
;
;******************************************

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

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


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

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

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

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

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

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

               MOV         WDCON,#017H
             ; MOV        MODE,#70H        ;高四位0111,是紅外線設(shè)備型號(hào)
                                           ;低四位    ,是紅外線設(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             ;啟動(dòng)串行中斷,啟動(dòng)TR1定時(shí)
               MOV         ER,#00H
;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;
              LCALL       LOP
              AJMP        MAIN
;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;

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

;********************命令處理************************************************
;主機(jī)命令: 第1個(gè)字節(jié)(前4位是設(shè)備婁型,后4位是設(shè)備地址)
;          第2個(gè)字節(jié)(前4位是命令,后4位是數(shù)據(jù)字節(jié)數(shù))
;          第3~N個(gè)字節(jié)(EEPROM的地址)
;          最后一位是CRC
;接收前四位命令: 0111  7   是查詢?cè)O(shè)備狀態(tài)
;                0101  5   是學(xué)習(xí)紅外線指令命令
;                0110  6   是發(fā)送紅外線指令命令
;從機(jī)應(yīng)答:
;發(fā)射前4位命令:  0111  7   命令已接受
;                0101  5   紅外碼學(xué)習(xí)正確
;                0000      紅外碼學(xué)習(xí)錯(cuò)或超時(shí)
;接收后四位數(shù)據(jù)長(zhǎng)度為1個(gè)字節(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     ;判斷是錯(cuò)誤碼,還是正常按鍵值
              AJMP        TTMM              ;命令=4,則轉(zhuǎn)發(fā)送紅外碼子程序
ORDER1:
              JNC         TTM3              ;命令大于4,則置錯(cuò)誤標(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                ;清出錯(cuò)標(biāo)志
              MOV         A,R5              ;命令前四位入A
              CJNE        A,#05H,ORDER      ;是學(xué)習(xí)紅外碼和發(fā)射碼嗎?不是置錯(cuò)誤標(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)用子程序出錯(cuò),置錯(cuò)誤標(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              ;出錯(cuò)返回等待中斷
;***********************************************************************
;                紅外線接收存EEPROM程序
;***********************************************************************

由于程序太大,帖子無法全部貼出 請(qǐng)點(diǎn)這里下載程序的完整版本: http://m.zg4o1577.cn/ziliao/file/STC89C52學(xué)習(xí)型遙控器.rar

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 成人av网站在线观看 | 亚洲伊人a | 午夜一区二区三区在线观看 | 国产成人精品免高潮在线观看 | 亚洲视频中文 | 中文成人在线 | 亚洲欧洲精品在线 | 久草网址 | 亚洲精品国产偷自在线观看 | 在线免费观看欧美 | 成人精品视频在线观看 | 一区视频在线播放 | 国产高清一二三区 | 国产精品毛片一区二区在线看 | 亚洲av毛片成人精品 | 色妹子综合网 | 午夜爱爱网 | 在线视频三区 | 久久久精品网 | 一区二区国产精品 | 天天操夜夜操 | 国产日韩欧美 | 中文字幕蜜臀av | 在线视频一区二区 | 一区二区三区免费观看 | 成人伊人 | 天天干天天爽 | 一区二区三区视频在线观看 | 四虎最新视频 | av免费看在线 | 免费啪啪| 亚洲欧美一区二区三区视频 | 狠狠躁夜夜躁人人爽天天高潮 | 一区二区免费在线观看 | 偷拍自拍网 | 免费看黄视频网站 | 国产91 在线播放 | 日本午夜网站 | 91av在线视频观看 | 亚洲免费观看视频网站 | 国产精品久久久久久一级毛片 |