<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è) > 嵌入式系統 > 設計應用 > 學(xué)習型紅外遙控器匯編語(yǔ)言程序

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

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

;************紅外線(xiàn)接收程序******************

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


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

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

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è)數計數器清0
MOV TMOD,#022H ;設置定時(shí)器0和1為方式2,定時(shí)控制方式,以運行控制位TR0,TR1啟動(dòng)定時(shí)器
MOV TH0,#00H ;加載計數初值
MOV TL0,#00H ;保存計術(shù)數值,計時(shí)
MOV TH1,#0FAH
MOV TL1,#0FAH ;波特率為4800
MOV SADEN,#0FFH
MOV SCON,#0F0H ;串口工作方式3,多機通信控制,允許接收
MOV TCON,#040H ;啟動(dòng)T1定時(shí)
MOV PCON,#00H ;波特率加倍
MOV IEN0,#092H ;允許定時(shí)T0中斷,
;中斷總充許
;允許串行中斷

MOV WDCON,#017H
; MOV MODE,#70H ;高四位0111,是紅外線(xiàn)設備型號
;低四位 ,是紅外線(xiàn)設備的地址
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 ;打開(kāi)中比較器1中斷

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETB WP ;禁止寫(xiě)EEPROM
SETB TR1 ;啟動(dòng)串行中斷,啟動(dòng)TR1定時(shí)
MOV ER,#00H
;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;
LCALL LOP
AJMP MAIN
;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;

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

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


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

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

;取得EEPROM的高低字節地址
MOV A,22H ;把數據中的按鍵值入A
CJNE A,#04H,ORDER1 ;判斷是錯誤碼,還是正常按鍵值
AJMP TTMM ;命令=4,則轉發(fā)送紅外碼子程序
ORDER1:
JNC TTM3 ;命令大于4,則置錯誤標志返回等待中斷
JC TTMM ;命令小于4, 則順繼執行
TTMM:
MOV B,#60H ;把96放入乘數B中
MUL AB ;把接收到的鍵碼乘以96,取得學(xué)習碼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 ;是學(xué)習紅外碼和發(fā)射碼嗎?不是置錯誤標記
AJMP TTM1 ;
ORDER:
CJNE A,#06H,TTM3 ;是學(xué)習紅外碼嗎?
TTMM1:
LCALL LOP ;SUBADR=0則調用學(xué)習紅外碼子程序
AJMP TTM2
TTM1:
LCALL LDD ;調用紅外線(xiàn)發(fā)射子程式
TTM2:
JB F0,TTM3 ;調用子程序出錯,置錯誤標記
SETB ES ;打開(kāi)串行中斷
SETB TR1
MOV ER,#05H ;調用子程式正確,則置正確標記
AJMP AFFL ;返回等待中斷
TTM3:
MOV ER,#00H
SETB ES ;串行中斷打開(kāi)
SETB TR1
CLR LED
AJMP AFFL ;出錯返回等待中斷
;***********************************************************************
; 紅外線(xiàn)接收存EEPROM程序
;***********************************************************************

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

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


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

評論


相關(guān)推薦

技術(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>