用89C51单片机代替PT2272解码PT2262的程序

[09-08 11:37:14]   来源:http://www.88dzw.com  微机|单片机   阅读:8720

文章摘要:for(i=21;i;i--) ;//延时2T+2T*i=(2i+2)T}}//<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-< //>>>>>>>>&

用89C51单片机代替PT2272解码PT2262的程序,标签:电路设计,http://www.88dzw.com
for(i=21;i;i--) ;//延时2T+2T*i=(2i+2)T
}
}
//<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<   //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
PT2272_deco() //解码
{
uchar i,cnt;
if(recv_flg) ;
else {
//清除上次解码内容
cnt =12; //接收12位编码
//解码 ------------------------------------------------------------------------
//先找出接收码的开头即5ms左右的高电平 ----------------------------------
//设置高电平时间为4~6ms
//检测和等待4ms的高电平
for(i=80;i;i--) { //延时4mS
if(!W_REM) i=80;
else d50us(1);
}   //等待在2ms内接收到的低电平 --------------------------------------------
for(i=40;i;i--) { //延时4mS
if(!W_REM) break;
else d50us(1);
}
//4ms到6ms内接收到下降沿则跳去解码否则返回
//超出6ms接收错误返回
if(i) {
recv_flg =0; //清按键没有放开过标志
goto PT2272_deco_exit; //返回 --------------------------------
}
//等待300us后采集接收信号
d50us(6);
//采集接收信号并记录
a_0.word=a_1.word=0;
for(i=0;i<6;i++) {
if(W_REM) {
a_0.word |=0x01;
}
a_0.word <<=1;
// MOV C,W_REM //读A0数据
// MOV A,DATA_A0
// RLC A
// MOV DATA_A0,A //保存相应位的A0
// MOV A,ADD_A0
// RLC A
// MOV ADD_A0,A //高位转移
//等待第二个下降沿
while(!W_REM) ;
while(W_REM) ;
// JNB W_REM,$
// JB W_REM,$
//等待300us后采集接收信号
d50us(6);
// MOV 40H,#150 //2T
// DJNZ 40H,$ //2T 延时:2T+2T*150=302T
if(W_REM) {
a_1.word |=0x01;
}
a_1.word <<=1;
// MOV C,W_REM //读A1数据
// MOV A,DATA_A1
// RLC A
// MOV DATA_A1,A //保存相应位的A1
// MOV A,ADD_A1
// RLC A
// MOV ADD_A1,A //高位转移
//等待第二个码值的下降沿
while(!W_REM) ; //___wd___
while(W_REM) LED2=~LED2;
// JNB W_REM,$
// JB W_REM,$
// DJNZ 34H,REMOTE6 //接收12 位编码 --------------------------------
}
//把接收的编码左移4位将8位密码放在同一字节上----------------------------
a_0.word <<=4;
a_1.word <<=4;
// MOV 40H,#4
//REMOTE7:
// CLR C
// MOV A,DATA_A0
// RLC A //送出低8位的bit7
// MOV DATA_A0,A //低8位的A0左移1位
// MOV A,ADD_A0
// RLC A //接收低8位的bit7
// MOV ADD_A0,A //高8位的A0左移1位
// CLR C
// MOV A,DATA_A1
// RLC A //送出低8位的bit7
// MOV DATA_A1,A //低8位的A1左移1位
// MOV A,ADD_A1
// RLC A //接收低8位的bit7
// MOV ADD_A1,A //高8位的A1左移1位
// DJNZ 40H,REMOTE7 //左移4位
// //把4位数据编码由高4位移到低4位上 ---------------------------------
// MOV A,DATA_A0
// SWAP A
// MOV DATA_A0,A //把4位数据编码A0由高4位移到低4位?
// MOV A,DATA_A1
// SWAP A
// MOV DATA_A1,A //把4位数据编码A1由高4位移到低4位?
//比较密码 --------------------------------------------------------------
if((a_0.bytes.byte_addr==addr_user_a0)&&(a_1.bytes.byte_addr==addr_user_a1)) {
recv_flg =1;
lianji_flg =1;

上一页  [1] [2] [3] [4]  下一页


Tag:微机|单片机电路设计家电维修 - 单元电路介绍 - 微机|单片机