问题如下,请各位帮忙看看是怎么回事??
//单片机用STC12C5608AD,此程序只有一个通道,address用于设置本机地址,RE_RXD是SN75176接收使能。程序的结果是:
//在8个LED灯一起频闪,推控台时并不影响。并不是预期的结果。请各位看看到底是什么问题??
//硬件电路没有问题
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp;
uint address;
uint n;
sbit RE_RXD=P2^2;
sbit d1=P1^0;
sbit d2=P1^1;
sbit d3=P1^2;
sbit d4=P1^3;
sbit d5=P1^4;
sbit d6=P1^5;
sbit d7=P1^6;
sbit d8=P2^1;
void init();
main()
{
init();
d1=0;
d2=0;
d3=0;
d4=0;
d5=0;
d6=0;
d7=0;
d8=0;
while(1)
{
if(temp>3)d1=1; ///将收到的数据反映到LED灯上
else
d1=0;
if(temp>32)d2=1;
else
d2=0;
if(temp>64)d3=1;
else
d3=0;
if(temp>96)d4=1;
else
d4=0;
if(temp>128)d5=1;
else
d5=0;
if(temp>160)d6=1;
else
d6=0;
if(temp>192)d7=1;
else
d7=0;
if(temp>224)d8=1;
else
d8=0;
}
}
void init()
{
PCON=0x00;
SM0=1; //串行口工作方式2,9位 固定波特率250K ,使用16MHZ晶振
SM1=0;
SM2=0;
REN=1;
IP=0x10; //
EA=1;
ES=1;
address=1;
RE_RXD=0;
temp=0;
n=0;
}
/***DMX512接收程序*****/
void serial() interrupt 4 using 0
{
RI=0;
if(RB8==0){n=0;return;};
if(n!=address)
{
n++;
return;
}
else if(n==address)
{
temp=SBUF;
return;
}
} |