#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是主动的,不会产生重叠问题。
voidSend_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!")
}
这是串口中断程序,其他的你可以自己根据实际情况编写
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)