本帖最后由 贺信 于 2009-10-13 22:13 编辑
回复:
问题出在这里:
//节点2
ET1 = 1; //当有低电平到来打开定时器
while(IR_RE == 0); //低电平等待,T0计数 ...
程序匠人 发表于 2009-10-13 21:17 [/quote]
思路2和3的故障可以排除,我这程序只是为实现这一解码方法而独立写的,里面还有个串口发射函数就没有其他的东西!!
/***********************串口初始化***********************************/
#define RELOAD_COUNT 0xF3 //12MHz,12T,SMOD=0,2400bps
sfr AUXR = 0x8e;
void Uart_initial()
{
SCON = 0x50; //0101,0000 方式1:8位可变波特率
PCON = 0X00; //设置SMOD=0 波特率不加倍
TMOD = 0x21; //0011,0001 设置定时器1为8位自动重装计数器
TH1 = RELOAD_COUNT; //设置定时器1自动重装数
TL1 = RELOAD_COUNT;
TR1 = 1; //开定时器1
AUXR = 0X00; //不允许独立波特率发生器运行,用定时器1做波特率发生器
ES = 1; //允许串口中断
EA = 1; //开总中断
}
/***************************定时器0初始化*********************************/
void InitialTimer0()
{
TMOD = 0x11; // 定时器0, 1工作模式1, 16位定时方式
TH1 = 0xfe; //定时500uS
TL1 = 0x0c;
//TCON = 0x01;
EA = 1;
TR0 = 1;
}
方法1暂时没试 |