l基于labview 单片机串口通信下位机程序编写

2019-07-17 14:26发布

本帖最后由 ren1feng 于 2012-5-26 21:47 编辑

基于labview 单片机串口通信下位机程序如何编写?用C语言写。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
595418772
2019-07-19 19:57
//串口通讯与LabVIEW联调
#include <REG51.H>                           
#define uchar unsigned char
#define uint unsigned int
sbit ring=P3^7;
sbit CASE1=P1^0;
sbit CASE2=P1^1;
sbit CASE3=P1^2;
sbit CASE4=P1^3;
uchar se=0,re=0;  
uchar temp=0;
void wait(uint cnt)
{
        while(--cnt);
}
//串口发送程序
void send(uchar se)
{
SBUF=se;           //发送数据
while(TI==0);
TI=0;       
}
//串口接收程序
uchar receive(void)
{
re=SBUF;           //接收数据
while(RI==0);
RI=0;
return re;       
}
//串口初始化
void  sinti(void)
{
        SCON=0x50;                        
    TMOD=0x20;               
    TH1=0xfd;              
    TR1=1;                  
    EA=1;                 
    ES=1;               
}
void delay(int cnt)
{
        while(--cnt);
}        

//主程序
int main (void)
{
        int i;
        sinti();        //串口初始化程序
        ring=1;
        while(1)
        {
                while (1)                  
                    {
                                if(CASE1==0)
                                {
                                        send('a');
                                        ring=0;
                                        break;
                                }
                                if(CASE2==0)
                                {
                                        send('b');
                                        ring=0;
                                        break;
                                }
                            if(CASE3==0)
                                {
                                        send('c');
                                        ring=0;
                                        break;
                                }
                                if(CASE4==0)
                                {
                                        send('d');
                                        ring=0;
                                        break;
                                }       
                        }
                if(ring==0)
                {
                         wait(60000);
                        ring=1;
                }
                for(i=0;i<10000;i++);
        }
}
//串口中断程序
void UART_SER (void) interrupt 4 //串行中断服务程序
{
   if(RI)                        //判断是接收中断产生
   {
          RI=0;                      //标志位清零
          temp=SBUF;
        }
   if(TI)                        //如果是发送标志位,清零
     TI=0;
}

一周热门 更多>