dmx512灯光控制协义 ICCAVR 接收和发送程序

发布时间:2024-10-11

基于AVE单片机的,DMX512的信号接收与发送程序

//UART0 initialisation

// desired baud rate: 250000

// actual: baud rate:250000 (0.0%)

// char size: 9 bit

// parity: Disabled

void uart0_init(void)

{

UCSRB = 0x00; // RXEN //disable while setting baud rate

UCSRA= 0x00; // RXC=0 RXC TXC UDRE FE DOR PE U2X MPCM

UCSRB = 0xDC; //0XF8 RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8 UCSRC = 0x06; // 9 bit URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL UBRRH = 0x00; //set baud rate hi

UCSRC = 0x86; // 9 bit 86

UBRRL = 0x01; //set baud rate lo ( 0x01 u2x=0)

}

#pragma interrupt_handler uart0_rx_isr:12

void uart0_rx_isr(void)

{ unsigned char status, resh, resl;

while ( !(UCSRA & (1<<RXC)) ); // from buffer

status = UCSRA; ////if ( status & (1<<FE)|(1<<DOR)|(1<<PE) ) //return ;

resh = UCSRB;

resl = UDR;

resh = (resh >> 1) & 0x01; // TAKE RX B8

if (resh==1)//(1<<RXB8))

{

if (CUR_BYTE_A==0)

{ CODE_Data=resl;

if (CODE_Data==0) //UDR_empty=0;

++CUR_BYTE_A; //TEST ok

}

else

{

if (CUR_BYTE_A==IADDRESS_A+0) DMX_data_0=resl; //001

if (CUR_BYTE_A==IADDRESS_A+1) DMX_data_1=resl;

if (CUR_BYTE_A==IADDRESS_A+2) DMX_data_2=resl;

if (CUR_BYTE_A==IADDRESS_A+3) DMX_data_3=resl;

if (CODE_Data==0) ++CUR_BYTE_A;

}

}

else

基于AVE单片机的,DMX512的信号接收与发送程序

{

CUR_BYTE_A = 0; //test OK

CODE_Data = 0xff;

}

}

//DMX512发送程序自己研发原创作品

//****************************************

void DMX_SEND() //100US /TIMES

{

++JS_DMX_SEND;

DMX_SEND_PAN=1;

DMX_PORTD|=DMX_control_send;

if (JS_DMX_SEND==1){

UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<UCSZ2)|(0<<TX B8);

}

//delay_us(200); //BREAK ucsrb RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8 if (JS_DMX_SEND==3){

while (!(UCSRA&(1<<UDRE))); //start code

UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<UCSZ2)|(0<<TX B8);

UDR=0;

}

if (JS_DMX_SEND==4){

while (!(UCSRA&(1<<UDRE))); //cannel 0

UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<UCSZ2)|(1<<TX B8);

//SEND_DA TA=LED_DISPLAY_V2*100+LED_DISPLAY_V3*10+LED_DISPLAY_V4;

UDR=0;

}

if (JS_DMX_SEND==5){

while (!(UCSRA&(1<<UDRE))); //cannel 1

UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<UCSZ2)|(1<<TX B8);

UDR=LED_RED;

}

if (JS_DMX_SEND==6){

while (!(UCSRA&(1<<UDRE))); //cannel 2

基于AVE单片机的,DMX512的信号接收与发送程序

UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<UCSZ2)|(1<<TX B8);

//SEND_DA TA=LED_DISPLAY_V2*100+LED_DISPLAY_V3*10+LED_DISPLAY_V4;

//UDR=SEND_DA TA;

UDR=LED_GREEN;

}

if (JS_DMX_SEND==7){

while (!(UCSRA&(1<<UDRE))); //cannel 3

UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<UCSZ2)|(1<<TX B8);

UDR=LED_BLUE;//SEND_DA TA;

}

if (JS_DMX_SEND==8){

while (!(UCSRA&(1<<UDRE))); //cannel 4

UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<UCSZ2)|(1<<TX B8);

//SEND_DA TA=LED_DISPLAY_V2*100+LED_DISPLAY_V3*10+LED_DISPLAY_V4;

UDR=LED_SHUTER;//SEND_DA TA;

}

if (JS_DMX_SEND==9){

while (!(UCSRA&(1<<UDRE))); //cannel 5

UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<UCSZ2)|(1<<TX B8);

UDR=0;//SEND_DA TA;

}

if (JS_DMX_SEND==10){

while (!(UCSRA&(1<<UDRE))); //cannel 6

UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<UCSZ2)|(1<<TX B8);

UDR=0;//SEND_DA TA;

}

if (JS_DMX_SEND==11){

while (!(UCSRA&(1<<UDRE))); //cannel 7

UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<UCSZ2)|(1<<TX B8);

UDR=0;//SEND_DA TA;

}

if (JS_DMX_SEND==12){ JS_DMX_SEND=0;

while (!(UCSRA&(1<<UDRE))); //cannel 8

基于AVE单片机的,DMX512的信号接收与发送程序

UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<UCSZ2)|(1<<TX B8);

UDR=0;//SEND_DA TA;

}

DMX_SEND_PAN=0;

}

参考链接:http://www.77cn.com.cn/show.aspx?id=2334&cid=14

dmx512灯光控制协义 ICCAVR 接收和发送程序.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219