本帖最后由 kxc2008 于 2011-12-7 21:24 编辑
最简单的一个DMX512接收程序,各位高手看下有没有什么问题。[local]1[/local]
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp;
uchar data m[1];//接收数据缓存
uint address;
uint n=0;
uchar b1,b2;
sbit RE_RXD=P2^2;
sbit d1=P3^7;
sbit d2=P2^4;
void init();
void main()
{
init();
d1=0;
d2=0;
while(1)
{
b1=m[0];b2=m[1];
if(b1>100)
d1=1;
else
d1=0;
if(b2>100)
d2=1;
else
d2=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+1)
{
n++;
return;
}
else
{
m[n-address]=SBUF;
n++;
}
} |