钻石会员
  
主题
帖子
积分19891
阅读权限50
注册时间2009-4-2
最后登录1970-1-1
在线时间 小时
|

楼主 |
发表于 2011-3-12 12:00
|
显示全部楼层
下面这个程序(网上下来修改了的)仅仅是能用而已,敷衍塞责而已。有时间还要下功夫搞。
我想达到的要求是:1.对所有的震荡电阻均能适应(这个有可能达到。)2.对315Mhz和433Mhz均能适应(这个比较难。)3.遥控距离应能和硬解码基本相同(这个也有可能。)
套用一句老话:想做的事情太多,能做的时间太少。呵呵。
; 晶振:6MHz
; 效果:按手持式4键发射器上的任意按键,程序能解码出来,并在led上显示
;p3.5=蜂鸣器 fz
;2011-3
led_8 bit p1.1 ;=0-->on 亮
led_4 bit p1.2 ;
led_2 bit p1.3 ;
led_1 bit p1.4 ;
led_vt bit p3.3 ;
fmq bit p3.5
key_1 bit p3.2
key_2 bit p3.4
pca_in bit p3.7
pt2272_P bit P3.7 ;可以使用任意I/O
org 0000h
AUXR DATA 8EH ;新增特殊功能寄存器定义
MOV AUXR, #00000001B; EXTRAM位清为0,MOVX指令可直接访问内部扩展的EXTRAM.
; AO位置为1,禁止ALE信号输出, 提升了系统的抗干扰性能
clr led_8
clr led_4
clr led_2
clr led_1
call ys_f
setb led_8
setb led_4
setb led_2
setb led_1
clr fmq
call ys_f
setb fmq
loop: nop
call pt2272
nop
jmp loop
PT_dalay:
MOV B,#155 ;根据pt2262振荡电阻改变而改变!!!
DJNZ B ,$ ;其它电阻R= X(M) 时,B=42*X/4.7
INC R7
RET
;--------------------------------------------------------------------
pt2272: nop
JB pt2272_P,$+5
RET
;---------测 同 步 码---------------
MOV R7,#0
syn :
JNB pt2272_P, syn0
LCALL PT_dalay
MOV A, R7
ADD A,#18
JNC syn
ajmp exit
NOP
syn0:
MOV R7,#0
syn1:
JB pt2272_P,syn2
LCALL PT_dalay
MOV A,R7
ADD A,#100
JNC syn1
ajmp exit
NOP
syn2:
MOV A,R7
SUBB A,#22
JNC addr_data ;同步码成功转测地址和数据
ajmp exit ;不成功退出
NOP
;------ 测 地 址 和 数 据--------------------------------
addr_data:
MOV R6,#24
a_d_loop:
MOV R7,#0
a_d_0:
JNB pt2272_P, a_d_1
LCALL PT_dalay
MOV A,R7
ADD A,#240
JNC a_d_0
ajmp exit
RET
NOP
a_d_1: ;1
MOV A,R7
SUBB A,#2
JNC $+5
ajmp exit
SUBB A,#4
JNC a_d_2
CLR C
SJMP a_d_4
NOP
a_d_2:
SUBB A,#1
JNC $+5
ajmp exit
NOP
SETB C
a_d_4:
MOV A,22h ;22h-- 数据
RLC A
MOV 22h,A
MOV A,21h ;21h-- 地址 低8位
RLC A
MOV 21h,A
MOV A,20h ;20h-- 地址 高8位
RLC A
MOV 20h,A
MOV R7,#0
a_d_5:
JB pt2272_P,a_d_6
LCALL PT_dalay
MOV A,R7
ADD A,#240
JNC a_d_5
ajmp exit
NOP
a_d_6:
MOV A,R7
SUBB A,#2
JNC $+5
ajmp exit
NOP
DJNZ R6,a_d_loop
NOP
MOV R5,#2
MOV R6,#1
MOV R7,#4
MOV R0,#20h
addr_loop:
MOV A,@R0
MOV R2,A
MOV R4,#0
addr_lp:
MOV A,R2
ANL A,#3
MOV B,A
XRL A,#2
JNZ $+5
ajmp exit
NOP
MOV A,B
XRL A,#3
JNZ $+4
DEC B
MOV A,R6
MUL AB
ADD A,R4
MOV R4,A
MOV A,#3
MOV B,R6
MUL AB
MOV R6,A
MOV A,R2
RR A
RR A
MOV R2,A
DJNZ R7,addr_lp
MOV A,R4
MOV @R0,A
MOV R6,#1
MOV R7 ,#4
INC R0
DJNZ R5,addr_loop
NOP
MOV R0,#22h ;
MOV R6,#1
MOV R7,#4
MOV A,@R0
MOV R2,A
MOV R4,#0
data_loop:
MOV A,R2
ANL A,#3
MOV B,A
XRL A,#0
JZ data_0
MOV A,B
XRL A,#3
JZ $+5
ajmp exit
NOP
DEC B
DEC B
data_0:
MOV A,R6
MUL AB
ADD A,R4
MOV R4,A
MOV A,R6
RL A
MOV R6,A
MOV A,R2
RR A
RR A
MOV R2,A
DJNZ R7,data_loop
MOV A,R4
MOV @R0,A
cpl A
swap A
mov P0,A
mov P2,A
clr fmq
call ys_f
setb fmq
exit: ret
ys_f:mov r7,#255
ys3: mov r6,#255
ys2:djnz r6,ys2
djnz r7,ys3
ret
end |
|