📄 main.c
字号:
#include <AT892051.h>
#include <intrins.h>
#include "LCD1602.h"
#define uchar unsigned char
#define uint unsigned int
#define MYADD 0x02
#define _ERR_ 0xff
#define _SUCC_ 0xfe
sbit REDE = P3^4;
uchar buf[10];
void delay(uint t)
{
for(;t>0;t--);
}
uchar Rec_date(uchar *buf)
{
uchar len;
uchar ecc;
uchar tmp;
uchar i;
REDE = 0;
RI = 0;
while(!RI);
if(RB8 == 1)
return 0xfe;
len = SBUF;
RI = 0;
ecc = len;
for(i=0;i<len;i++)
{
while(!RI);
if(RB8 == 1)
return 0xfe;
*buf = SBUF;
RI = 0;
ecc = ecc^(*buf);
buf++;
}
*buf = '\0';
while(!RI);
if(RB8 == 1)
return 0xfe;
tmp = SBUF;
RI = 0;
ecc = tmp^ecc;
if(ecc != 0)
{
*(buf-len) = '\0';
REDE = 1;
TI = 0;
TB8 = 0;
SBUF = _ERR_;
while(!TI);
TI = 0;
REDE = 0;
return 0xff;
}
REDE = 1;
TI = 0;
TB8 = 0;
SBUF = _SUCC_;
while(!TI);
TI = 0;
REDE = 0;
return 0;
}
void serial_RI()interrupt 4
{
uchar tmp;
tmp = 0;
while(tmp != MYADD)
{
while(!RI);
tmp = SBUF;
RI = 0;
}
delay(2000);
REDE = 1;
TI = 0;
TB8 = 0;
SBUF = MYADD;
while(!TI);
TI = 0;
REDE = 0;
SM2 = 0;
tmp = 0xff;
while(tmp == 0xff)
{
tmp = Rec_date(buf);
}
if(tmp == 0xfe)
SM2 = 1;
wstr(buf);
}
void init()
{
delay(10); //延时等待复位
wcmd(0x38); //设置为8总线16*2,5*7点阵
wcmd(0x01); //清屏幕
wcmd(0x06); //光标移动,显示区不移动
wcmd(0x0f); //开显示,光标闪烁
}
void main()
{
init();
wstr("fenj2");
loc(2,1);
SCON=0xb0;
PCON = 0x80;
ES=1;
EA=1;
REDE = 0;
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -