利用VIRTUAL TERMINAL模拟单片机串口收发实验
程序
#include <reg51.h> //包含头文件
//毫秒级延时函数
void delay(unsigned int x)
{
unsigned char i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//字符发送函数
void putchar(unsigned char data1)
{
SBUF=data1; //将待发送的字符送入发送缓冲器
while(TI==0); //等待发送完成
TI=0; //发送中断标志请0
}
//字符串发送函数
void putstring(unsigned char *dat)
{
while(*dat!='\0') //判断字符串是否发送完毕
{
putchar(*dat); //发送单个字符
dat++; //字符地址加1,指向先下一个字符
delay(5);
}
}
//主函数
void main(void)
{
unsigned char c=0;
SCON=0x50; //串口方式1 ,允许接收
TMOD=0x20; //T1工作于方式2
PCON=0x00; //波特率不倍增
TL1=0xfd; //波特率设置
TH1=0xfd; //
EA=1; //开总中断
ES=1; //开串口接收中断
//TI = 0;
TR1=1; //定时器开启
delay(200);
putstring("abc\r\n"); //串口向终端发送字符串,结尾处回车换行putstring("----------------------\r\n");
delay(50);
while(1)
{
}
}
//
void revdata(void) interrupt 4
{
unsigned char temp;
if(RI==0) return; //如果没有接收中断标志,返回
ES=0; //关闭串口中断
RI=0; //清串行中断标志位
temp=SBUF; //接收缓冲器中的字符
putchar(temp); //将接收的字符发送出去
ES=1; //开启串口中断
}。