📄 rs232.c
字号:
/*实验名称:RS232通信实验
功能:接收电脑送过来的数据,并且显示16进制数,并将数据回传到电脑
作者:http://www.mcuprog.com
08-04-008
*/
#include <reg51.h>
//LCD的口线
sbit E=P2^2;
sbit RW=P2^1;
sbit RS=P2^0;
unsigned char recdata; //RS232收到的值
unsigned char bdata myflag;
sbit recokbit = myflag^0;
void Delay(unsigned int t);
void SendCommandByte(unsigned char ch);
void SendDataByte(unsigned char ch);
void InitLcd(void);
void disprec(void);
void rs232(void);
void main(void)
{
InitLcd();
myflag=0x00;
SendCommandByte(0x80);
Delay(2);
SendDataByte('R');
SendDataByte('E');
SendDataByte('C');
SendDataByte('D');
SendDataByte('A');
SendDataByte('T');
SendDataByte('A');
SendDataByte(':');
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
TR1=1;
REN=1;
IE=0x90;
while(1)
{
if(recokbit==1)
{
recokbit=0;
disprec();
}
}
}
//以下为串口中断程序
void rs232(void) interrupt 4
{
if(RI==1)
{
RI=0;
recdata=SBUF;
SBUF=recdata;
recokbit=1;
}
else
{
TI=0;
}
}
void Delay(unsigned int t) // delay 40us
{
for(;t!=0;t--) ;
}
//=============================================
void SendCommandByte(unsigned char ch)
{
RS=0;
RW=0;
P0=ch;
E=1;
Delay(1);
E=0;
Delay(100); //delay 40us
}
//-------------------------------------------------------
void SendDataByte(unsigned char ch)
{ RS=1;
RW=0;
P0=ch;
E=1;
Delay(1);
E=0;
Delay(100); //delay 40us
}
//-------------------------------------------------
void InitLcd(void)
{SendCommandByte(0x30);
SendCommandByte(0x30);
SendCommandByte(0x30);
SendCommandByte(0x38); //设置工作方式
SendCommandByte(0x0c); //显示状态设置
SendCommandByte(0x01); //清屏
SendCommandByte(0x06); //输入方式设置
}
void disprec(void)
{
SendCommandByte(0x89);
SendDataByte(recdata);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -