?? 6221.asm
字號:
;倚天版遙控器控制顯示0123456789
;***************************************************************************
;* Date : 2003.10.22 *
;* Support telephone: 0755-27529065,27529081(51c51 test web) *
;* Support fax :0755-28068492 Support E-mail:sxj1974@163.com,aa815@163.com*
;* Create by :石學軍,劉永忠 www.51c51.com 更多例程請登陸網(wǎng)站 *
;***************************************************************************
org 00h
ORG 0000H
START:
MOV P0,#0ffH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
JNB P3.7,$ ;等待遙控信號出現(xiàn)
MOV R6,#10
SB: ACALL YS1 ;調(diào)用882微秒延時子程序
JB P3.7,START ;延時882微秒后判斷P3.7腳是否出現(xiàn)高電平如果有就退出解碼程序
DJNZ R6, SB ;重復10次,目的是檢測在8820微秒內(nèi)如果出現(xiàn)高電平就退出解碼程序
JNB P3.7, $ ;等待高電平避開9毫秒低電平引導脈沖
ACALL YS2 ;延時4.74毫秒避開4.5毫秒的結(jié)果碼
MOV R1,#1AH ;設定1AH為起始RAM區(qū)
MOV R2,#4
PP: MOV R3,#8
JJJJ: JNB P3.7,$ ;等待地址碼第一位的高電平信號
LCALL YS1 ;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態(tài)
MOV C,P3.7 ;將P3.7引腳此時的電平狀態(tài)0或1存入C中
JNC UUU ;如果為0就跳轉(zhuǎn)到UUU
LCALL YS3
JB P3.7,$ ;如果為1就等待高電平信號結(jié)束
UUU: MOV A,@R1 ;將R1中地址的給A
RC A ;將C中的值0或1移入A中的最低位
MOV @R1,A ;將A中的數(shù)暫時存放在R1中
DJNZ R3,JJJJ ;接收地址碼的高8位
INC R1 ;對R1中的值加1,換成下一個RAM
DJNZ R2,PP ;接收完16位地址碼和8位數(shù)據(jù)碼和8位數(shù)據(jù)反碼,存放在1AH/1BH/1CH/1DH的RAM中
;以下對代碼是否正確和定義進行識別
MOV A,1AH ;比較高8位地址碼
XRL A,#00000000B ;判斷1AH的值是否等于00000000,相等的話A為0
JNZ EXIT ;如果不相等說明解碼失敗退出解碼程序
MOV A,1BH ;比較低8位地址
XRL A,#11111111B ;再判斷高8位地址是否正確
JNZ EXIT ;如果不相等說明解碼失敗退出解碼程序
LCALL YS3
MOV A,1CH ;比較數(shù)據(jù)碼和數(shù)據(jù)反碼是否正確?
CPL A
XRL A,1DH ;將1CH的值取反后和1DH比較 不同則無效丟棄,核對數(shù)據(jù)是否準確
JNZ EXIT ;如果不相等說明解碼失敗退出解碼程序
LCALL YS3
CLR P2.6 ;選中數(shù)碼管
CLR P3.3 ;解碼成功喇叭響
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -