?? rf.asm
字號(hào):
IRDA_RD_BIT BIT P3.3 ; 紅外接收
RF_JS: CLR EA ; 紅外接收及譯碼程序
MOV R0,#80H
SETB IRDA_RD_BIT
RF_1: JNB IRDA_RD_BIT,RF_2
RET
RF_2: LCALL DL1MS
LCALL DL1MS
JB IRDA_RD_BIT,RF_1 ; 消抖動(dòng),確認(rèn)信號(hào)
JNB IRDA_RD_BIT,$ ; 等待高電平
MOV R3,#00H ; 8位計(jì)數(shù)初始化
RF_3: JB IRDA_RD_BIT,$ ; 開始等待低電平
JNB IRDA_RD_BIT,$ ; 再等高電平
MOV R2,#00H ; 0.1ms延時(shí)幾次
RF_4: LCALL DL01MS
JNB IRDA_RD_BIT,RF_5 ; 高電平結(jié)束
INC R2 ; 次數(shù)加一
CJNE R2,#30,RF_4 ; 計(jì)數(shù)超過30次自動(dòng)結(jié)束
LJMP RF_CODE
RF_5: MOV A,#08H
CLR C
SUBB A,R2 ; 用進(jìn)位C判別信號(hào)是0還是1
MOV A,@R0
RRC A ; 右移入寄存器
MOV @R0,A ; 重新存入內(nèi)存單元
INC R3 ; 判別下一位
CJNE R3,#08H,RF_3 ; 8位沒到繼續(xù)判別
MOV R3,#00H ; 8位到,清位計(jì)數(shù)器
INC R0 ; 接收下一個(gè)字節(jié)
CJNE R0,#8EH,RF_3
RF_CODE:LCALL SHOW_RFCODE
SETB EA
RET
說明:
1. DL1MS: 延時(shí)1ms 子程序, DL01MS : 延時(shí)0.1ms 子程序
2. MOV R0,#80H 紅外接收的數(shù)據(jù)的地址 80H~8DH
3. SHOW_RFCODE 在LCD上顯示紅外接收的數(shù)據(jù)(演示用)
4. 在中斷中建立紅外接收數(shù)據(jù)標(biāo)記,在主程序中調(diào)用RF_JS
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -