void uart() interrupt 4
{
RI=0;
temp=SBUF;
if(num==0)
{
if(temp!=0xff)
num=1;
}
if(num!=0)
{
if(temp==0x01);
i=0;
if(i<16)
{
write_lcdcmd(0x80+i);
write_lcddata(temp);
}
if(i>15&&i<32)
{
write_lcdcmd(0x80+0x40+i-16);
write_lcddata(temp);
}
flag=1;
i++;
if(i>31)
i=0;
}
}
void main()
{
init();
while(1)
{
if(flag==1)
{
flag=0;
ES=0;
SBUF=temp;
while(!TI);
TI=0;
ES=1;
}
}
}
==========================================================
1602能和PC机通过串口通讯,想给1602发送个0x01让其能够清屏,可是发送完0x01之后光标
就不在加1了,总是在显示屏第一个位置显示。没有if(temp==0x01);i=0;这两条语句时都是
正常的,有了光标就不动了,什么原因啊?
还有个问题:向1602发送字符串时,只能是两个两个的发送,如发送hello,显示屏就只显示
he,mcu发到PC的数据也只是一个字母e,什么原因呢? |