编写单片机串口收发数据的完整程序(C语言编写)

编写单片机串口收发数据的完整程序(C语言编写),第1张

我用的新唐芯片,8051内核,跟51差不多,望采纳

void UART_Initial (void)

{

P02_Quasi_Mode //Setting UART pin as Quasi mode for transmit

P16_Quasi_Mode //Setting UART pin as Quasi mode for transmit

SCON_1 = 0x50 //UART1 Mode1,REN_1=1,TI_1=1

T3CON = 0x08 //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1

clr_BRCK

RH3= HIBYTE(65536 - (1000000/u32Baudrate)-1) /*16 MHz */

RL3= LOBYTE(65536 - (1000000/u32Baudrate)-1) /*16 MHz */

set_TR3//Trigger Timer3

}

以上是初始化的

void Send_Data_To_UART1(UINT8 c)

{

TI_1 = 0

SBUF_1 = c

while(TI_1==0)

}

这个是发送

void UART_isr (void) interrupt 4 //串行中断服务程序

{

if (RI_1==1)

{ /* if reception occur */

clr_RI_1/* clear reception flag for next reception */

Receive_Date[c] = SBUF_1

if (Receive_Date[0] == First_Date)

{

c++

}

else if(Receive_Date_Size >0 &&Receive_Date_Size <4)

{

c++

}

else if(Receive_Date[c] == Last_Date &&Receive_Date_Size ==4)

{

c = 0

Flag_Receive_One = 1

}

else

{

c = 0

}

}

}

接收

编写串口通讯程序步骤为:

1、设置波特率

2、设置串口工作方式

3、收发数据

比如:

main()

{

unsigned char dat

TMOD=0x20

TH1=0xfd

TL1=0xfd

TR1=1

SCON=0x50

while(1)

    {

    while(RI==0)

    RI=0

    dat=SBUF

    SBUF=~dat

    while(TI==0)

    TI=0

    }

}

你用的是AVR单片机吧,这种单片机里面是没有串口接收FIFO的,所以每次只能是接收一个字节数据,否则接收寄存器就溢出了,想接收多个字节指令,就需要你把每次接到的数据一次次串起来,在程序里组装这些数据然后存储


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11070907.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存