帮忙看一个c语言编的串口通信程序

帮忙看一个c语言编的串口通信程序,第1张

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

unsigned char a,i

uchar code table[]="I get "

void init()

{

TMOD=0x20

TH1=0xfd

TL1=0xfd

TR1=1

REN=1

SM0=0

SM1=1

EA=1

ES=1

}

void main()

{

init()

while(1)

}

void ser() interrupt 4

{

while(RI==0)//收去一个字符

a=SBUF

RI=0

if(a=='x')

for(i=0i<6i++) //发送部分,中断要做的事情尽量放在中断里

{

TI=0

SBUF=table[i]

while(TI==0)

TI=0

}

}

SBUF是可以直接寻址的专用寄存器。物理上,它对应着两个寄存器,即一个发送寄存器一个接收寄存器,CPU写SBUF就是修改发送寄存器;读SBUF就是读接收寄存器。接收器是双缓冲的,以避免在接收下一帧数据之前,CPU未能及时的响应接收器的中断,没有把上一帧的数据读走而产生两帧数据重叠的问题。对于发送器,为了保持最大的传输速率,一般不需要双缓冲,因为发送时CPU是主动的,不会产生重叠问题。

void

Send_Byte(uchar

i)

{

WDI

=

~WDI

TI

=

0

SBUF

=

i

while(TI==0)

WDI

=

~WDI

TI

=

0

}

void

Send_String(uchar

*string)

{

while(*string!=0)

{

Send_Byte(*string)

string

++

}

}

void

Com_A_Int()

interrupt

4

{

uchar

idata

status

status

=

SBUF

RI

=

0

if

(status

==

0x02)

Send_String("HELLO")

if

(status

==

0x55)

Send_String("THIS

IS

A

WELL

BEGIN!")

}

这是串口中断程序,其他的你可以自己根据实际情况编写


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存