RS串行通讯用C语言怎么写

RS串行通讯用C语言怎么写,第1张

给你看两个森宽或发送函数, 十分简单

接收的巧衫道理一此伍样, 只是检测的标志位不同和SBUF赋值方向不同而已

#include <reg51.h>

#define UINT8 unsigned char

void UARTSendByte(UINT8 Byte)

{//串口发送1个字节

while(TI==1)

SBUF=Byte//向串口发送数据

while(TI==0)//等待发送完成

TI=0//清楚标志位

}

void UARTSendStr(UINT8 *String)

{//串口发送一个字符串

int i

UINT8 len = strlen(String)

for (i = 0i <leni++)

UARTSendByte(String[i])

}

#define SENDLEN 14

unsigned char sendbuf[SENDLEN ]

//初始化串口

SCON = 0x50//串口旁肆轿方式1,允许接收

TMOD = 0x20//定时器1定时方式2

TCON = 0x40//设定时器1开始计数

TH1 = 250//波特率9600

TL1 = 250

PCON = 0x80//波特率加倍控制,SMOD位

RI = 0//清收发标志

TI = 0

TR1 1 = 1//启动定时器

//运肆在这里要给sendbuf装雹哗入要发送的数据

for(i=0 i <S ENDLEN i++)

{

while(!TI)

SBUF = sendbuf[i]

}

通过穗好RS232总线与PC进行通信的测试程序(c语言)

/*这是一个使用单片机串行通信口通过RS232总线与PC进行通信的测试程序,无需扩展.可将DB9的第2和第3脚短路,进行自收自发猜迹铅测试.采州卜用串行中断接收,速率:9600,通信方式2,晶振使用:osc=11.0592MHz。使用SW1-SW6键盘发送文本数字1-6,数码管显示接收的ASCII数据*/

void main(void)

{

SCON=0x50

TMOD=0x21

TH1=0xfd

TL1=0xfd

TH0=0xf4

TL0=0x48

ES=1ET0=1EA=1

TR1=1

TR0=1

while(1)

{

if(!key){ Delay(30000)

a=Key_down()

SBUF=table[a]

while(TI==0)

TI=0

}

}

}

uchar Key_down(void)

{ uchar x

if(!sw1)x=1

else if(!sw2)x=2

else if(!sw3)x=3

else if(!sw4)x=4

else if(!sw5)x=5

else if(!sw6)x=6

return(x)

}

void Int_T0(void) interrupt 1

{

TH0=0xf4

TL0=0x48

if(count==5)count=0

else count++

switch(count)

{

case 0:DIG_NUM=0x7f

LED_DISPLAY=buff_led1

break

case 1:DIG_NUM=0xbf

LED_DISPLAY=buff_led2

break

case 2:DIG_NUM=0xdf

LED_DISPLAY=buff_led3

break

case 3:DIG_NUM=0xef

LED_DISPLAY=buff_led4

break

case 4:DIG_NUM=0xf7

LED_DISPLAY=buff_led5

break

case 5:DIG_NUM=0xfb

LED_DISPLAY=buff_led6

break

default:break

}

}

void Int_Serial(void) interrupt 4

{

while(RI==0)

a=SBUFRI=0

buff_led1=buff_led2

buff_led2=buff_led3

buff_led3=buff_led4

buff_led4=buff_led5

buff_led5=buff_led6

buff_led6=a

}

void Delay(int t)

{while(--t)}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存