找回密码
 注册
搜索
查看: 474|回复: 0

[讨论] 烦请班竹,高手门进来帮我评评这个程序到底错在那里

[复制链接]
发表于 2009-3-10 00:43:38 | 显示全部楼层 |阅读模式
烦请班竹,高手门进来帮我评评这个程序到底错在那里

大家好!请问谁能帮我看看这个程序错在那里了啊!编译OK了  可是就是解不了码
2262(3.3M)解码;
"1"  1.2ms-0.4ms-1.2ms-0.4ms
"0"   0.4ms-1.2ms-0.4ms-1.2ms
"f"    0.4ms-1.2ms-1.2ms-0.4ms
sync(同位码)0.4ms-12.4ms
找同位码:先搜索宽度为0.4MS的高电平,找到后确认,然后
检测低电平是否为12.4MS。
读代码字:找同位码后,在每次上升沿开始延时600us检测电
平,连续24次,放入3byte;
确认码字;连续两次一致,就确认此码有效#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar date[4],date1,i,flag,a;
sbit int0=P3^2;
sbit beep=P3^4;
void delay_100us(void)
{
   unsigned char i=48;
   while(--i);
}
void rx()
{a=0;
int0=1;
while(!int0)
{  
   delay_100us();
   a++;
  if(a>100)
{
  flag=1;//同步码标志位
}
else{
     a=0;
    return;
}
if(flag)
{   a=0;
   while(int0)
{
    delay_100us();
    a++;
    if(a>4)//是否大于400us(判断600us)
{
     a=0;

    while(!int0)//针测电平的变化
{
  delay_100us();
  a++;
for(i=1;i<25;i++)
  {if(a>8)   //半字节传送
{   date[i/4]|=0x01;
    date[i/4]<<=1;
   }
else{
    date[i/4]&=0xfe;
}
}
}
}
}
}
}
}
void main()
{  EA=1;
   ET0=1;
    while(1)
{
   rx();//接收
         //校码
    if((date[1]|date[2])==(date[4]|date[5]))//地址码校验
{
     if(date[3]==date[6])//数据码校验
     {
        beep=1;
}
}
}

}
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-8 06:26 , Processed in 0.052022 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表