打印
[技术问答]

N76E003 接受DMX512协议信号,遇到问题

[复制链接]
2110|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zsp06312222|  楼主 | 2017-6-30 10:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zsp06312222 于 2017-6-30 10:04 编辑

串口初始化:
void InitialUART0_Timer1(UINT32 u32Baudrate)    //T1M = 1, SMOD = 1  
{
          P05_PushPull_Mode; //P05
                P06_Quasi_Mode;                //Setting UART pin as Quasi mode for transmit
                P07_Quasi_Mode;                //Setting UART pin as Quasi mode for transmit        
          TIMER1_MODE2_ENABLE;      
    SCON = 0x70;             //UART0 Mode1,REN=1,TI=1  //SCON = 0xD0; //0x50
    TMOD |= 0x20;            //Timer1 Mode2   
    set_SMOD;                //UART0 Double Rate Enable  //
    set_T1M;         
    clr_BRCK;                //Serial port 0 baud rate clock source = Timer1  //

    TH1 = 256 - (1000000/u32Baudrate+1);               /*16 MHz */
   
          clr_ET1;          //¹Ø±ÕTimer1ÖжÏ
          set_TR1;          //ʹÄܶ¨Ê±Æ÷1  TCON
        
          set_RB8;                                        //This bit is for setting the stop bit 2 high/low status, //ÉèÖýÓÊܵĵھÅλÊý¾Ý =1; //SCON
               
    set_ES;           //enable UART interrupt     //
    set_EA;           //enable global interrupt   //
}
串口中断处理函数:
void SerialPort0_ISR(void) interrupt 4   //4
{
          UINT8 rece_data;
    if(RI)      //´®¿Ú0½ÓÊÜÖжϱêÖ¾
    {                                       /* if reception occur */
      clr_RI;                             /* clear reception flag for next reception */
                          if(RB8==0)  //RB8
                                {
//                                        if(rece_data==0) //
//                                        {
                                                rec_ok = 1;
                                                dmx_channel = 0;
                                                Adr = Address - 1;  //Address    = dmx;
//                                        }
                                        Point = 100;   //3ms*250
                                }
                                else
                                {
                                        if(rec_ok)  //bit rec_ok;
                                        {
                                                if(Adr == 0) //uint Adr,Address;
                                                {
                                                        recbuf[dmx_channel] = SBUF;  //½ÓÊÜ
                                                        dmx_channel ++;
                                                        if(dmx_channel > RECCHANNEL) //RECCHANNEL = 2;
                                                        {
                                                                rec_ok = 0;
                                                                dmx_recok = 1;  //
                                                        }
                                                }
                                                else  Adr--;
                                        }
                                }

        
    }

}
沙发
643757107| | 2017-6-30 11:01 | 只看该作者
说的不明不白的,,,

使用特权

评论回复
板凳
lyn3210| | 2017-6-30 17:14 | 只看该作者
搞过,要用汇编语言。

使用特权

评论回复
地板
zsp06312222|  楼主 | 2017-7-3 15:10 | 只看该作者
lyn3210 发表于 2017-6-30 17:14
搞过,要用汇编语言。

官方给的例程都是C语言的

使用特权

评论回复
5
zsp06312222|  楼主 | 2017-7-6 11:45 | 只看该作者
自己搞定了这个通讯

使用特权

评论回复
6
lizhenming| | 2017-7-18 11:58 | 只看该作者
zsp06312222 发表于 2017-7-6 11:45
自己搞定了这个通讯

有什么需要注意的地方吗

使用特权

评论回复
7
HBZZwing| | 2019-3-8 18:23 | 只看该作者
请问怎么解决的?能交流一下吗

使用特权

评论回复
8
smallboy2005| | 2019-3-8 21:47 | 只看该作者
看Lz也是没有入LEd多久,这样的程式太不正规了,以后还有很路要走了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

13

帖子

0

粉丝