4587|4

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

急求韦根26、34的接收程序 [复制链接]

谁有PIC单片机上韦根的接收程序,发我参考下,多谢了。。我自己也写了个是用数组来接收的,不过用不起来。。。
要是C语言的哦。。最好是整个的,包括中断什么的。。。


E-mail:shanligang@vip.qq.com

最新回复

谢谢啊,大侠,我仙子啊需要一些韦根26 的资料,如果你有的话请给我传一份吧,675385918@qq.com  详情 回复 发表于 2013-4-12 19:19
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
怎么没人来支援下下啊。。。
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
#include "at89x52.h"

typedef unsigned char BYTE;
typedef unsigned int  WORD;

BYTE state;
BYTE wg0;
BYTE wg1;
BYTE wg2;
BYTE count;
BYTE cnt;
bit r_done;
bit firstbit;
bit lastbit;
bit D0_done;
bit D1_done;


sbit WG_IN1          = P3^2;
sbit WG_IN0          = P3^3;

void delay_30us(void)
{
        TR0 = 0;
        TH0 = (65536 - 20)/256; //定时30us
        TL0 = ((65536 - 20)%256);
        TF0 = 0;
        ET0 = 0;
        TR0 = 1;
        while (!TF0) { ;}
        TF0 = 0;
}

void Sys_init(void)  //4800
{
   SCON=0x50;                        // UART_mode=1,REN=1
   PCON=0x00;
   TMOD=0x21;
   TL1=0xfa;
   TH1=0xfa;
   TR1=1;
//   ES=1;
   ES=0;
   IT0=1;
   IT1=1;
//  IP=0x10;
   EX0=1;
   EX1=1;
   EA=1;
}
void IT0_int(void) interrupt 0   //D1
{
                                if(count==0){
                                          firstbit=1;
                                   }else if(count<9){
                                           wg0=(wg0<<1)|0x01;
                                   }else if(count<17){
                                              wg1=(wg1<<1)|0x01;
                                }else if(count<25){
                                          wg2=(wg2<<1)|0x01;
                                   }else {lastbit=1;r_done=1;}
                                   count++;
                                   if(count==26)
                                     count=0;
}
void IT1_int(void) interrupt 2   //D0
{
                                if(count==0){
                                        firstbit=0;
                                   }else if(count<9){
                                      wg0=(wg0<<1)&0xfe;
                                   }else if(count<17){
                                      wg1=(wg1<<1)&0xfe;
                                   }else if(count<25){
                                      wg2=(wg2<<1)&0xfe;
                                   }else {lastbit=0;r_done=1;}
                                   count++;
                                   if(count==26)
                                             count=0;
}

void T0_init(void)
{

//   TMOD=0x01;
   TH0=TL0=0;
   ET0=1;
   TR0=1;
   IP=0x03;
   
}

void T0_Int(void) interrupt 1
{
  if(cnt){
    cnt--;
    if(cnt==0){
      count=0;
    }
  }
}

void wg_process(void)
{

//   BYTE i;
   BYTE sum=0;
   SBUF=wg0;
   while(TI==0);
   TI=0;
   SBUF=wg1;
   while(TI==0);
   TI=0;
   SBUF=wg2;
   while(TI==0);
   TI=0;
}

void main(void)
{
    Sys_init();
    T0_init();
        cnt=0;
        while(1){
       if(r_done){
              r_done=0;
          wg_process();
                  wg0=wg1=wg2=0;
       }
    }
}
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

4
 
多谢分享,代码很好!
 
 
 

回复

205

帖子

0

TA的资源

一粒金砂(高级)

5
 

请问楼主现在手头有资料么?能给我传一点资料不?

谢谢啊,大侠,我仙子啊需要一些韦根26 的资料,如果你有的话请给我传一份吧,675385918@qq.com
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表