急求韦根26、34的接收程序

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


E-mail:shanligang@vip.qq.com
...全文
352 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
学习来了
xujinhui197 2010-01-12
  • 打赏
  • 举报
回复
#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;
}
}
}
shanligang 2008-03-15
  • 打赏
  • 举报
回复
怎么没人来支援下下啊。。。

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧