📄 uarttest.c
字号:
/*********串口调试,并于LCD显示************/
#include <reg52.H>
#define uchar unsigned char
uchar code dispcode1[]={" chong welcome! "};
uchar code dispcode2[]={"www.ywcdream.com"};
uchar i,j,k,l,DData;
sbit RS=P1^1;
sbit RW=P1^0;
sbit E=P1^2;
uchar m=0;
//void delay()
//{for(l=0;l<=100;l++){}}
void enable() //write order
{
RS=0;RW=0;E=0;//delay();
E=1;
}
void enabledata() //write data
{
RS=1;RW=0;E=0;//delay();
E=1;
}
void initializtion() //lcd initializtion
{
for(i=0;i<=100;i++) //初始化LCD需先延时
P0=0x01;enable(); //开显示器
P0=0x38;enable();
P0=0x0c;enable();
P0=0x06;enable();
}
void Display(m,DData) // display data
{
P0=0xC0+m; //write address
enable();
P0=DData; //write data
enabledata();
}
void Esisr() interrupt 4 //串口接收中断服务程序
{
uchar temp;
ES=0;
if(RI == 1)
{
RI = 0;
temp = SBUF; //接收数据
SBUF=temp; //将接收到的数据发送至PC机
Display(m,temp); //将接收到的数据送LCD显示
while(!TI); //等待数据发送完成
TI=0;
m++;
if(m>15)
m=0;
}
ES=1; //开中断
}
void system_initial(void) //system initializtion
{
TMOD=0x21;// 定时器1工作方式2,定时器0工作方式1
PCON=0x00;//数据传输率选择,0倍频。
SCON=0x50;//串口工作方式选择,并打开接收允许。
TH1=0xfa;//定时器赋初值。
TL1=0xfa;//波特率4800bit/s
TR1=1;//启动定时器。
EA = 1; //开总中断
ES = 1; //开串口中断
}
void main()
{
initializtion();
P0=0x80;enable(); //第一行第一个地址
for(j=0;j<=15;j++)
{
P0=dispcode1[j];
enabledata();
}
P0=0xC0;enable();
for(k=0;k<=15;k++)
{
P0=dispcode2[k];
enabledata();
}
system_initial(); //T1、串口中断
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -