#include
#include
#include
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
unsigned long i=0;
unsigned long k=0;
sbit E=P2^7; //1602使能引脚
sbit RW=P2^6; //1602读写引脚
sbit RS=P2^5; //1602数据/命令选择引脚
sbit key1=P2^0;
Sbit Q=P1.3;
void Outside_Init(void)
{
EX0=1; //开外部中断0
IT0=1; //负边沿触发
EA=1; //开总中断
}
void Outside_Int1(void)interrupt0 using 1
{if(Q=1) i=0;
Else i=36000;
}
void delays()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
bit Busy(void)
{
bit busy_flag=0;
RS=0;
RW=1;
E=1;
delays();
busy_flag=(bit)(P0&0x80);
E=0;
return busy_flag;
}
void wcmd(uchar del)
{
while(Busy());
RS=0;
RW=0;
E=0;
delays();
E=1;
delays();
E=0;
}
void wdata(uchar del)
{
while(Busy());
RS=1;
RW=0;
E=0;
delays();
P0=del;
delays();
E=1;
delays();
E=0;
}
void L1602_init(void)
{
wcmd(0x38);
wcmd(0x0c);
wcmd(0x06);
wcmd(0x01);
}
void L1602_string(uchar hang,uchar lie,uchar *p)
{
uchar a,b=0;
if(hang==1)a=0x80;
if(hang==2)a=0xc0;
a=a+lie-1;
whlie(1)
{
wcmd(a++);
if((*p=='\0')||(b==16))break;
b++;
wdata(*p);
p++;
}
}
void Delay(uint i)
{
uint x,j;
for(j=0;jfor(x=0;x<=148:x++);
}
void Time0_Init()
{
TMOD=0x06;
TH0=0xff;
TL0=0xff;
IE=0x82;
TR0=1;
}
void Time0_Int() interrupt 1
{if(Q=1) i++;
Else i--;
}
void main()
{
uchar tabPL[9];
L1602_init();
Time0_Init();
Outside_Init();
while(1)
{ k=i;
tabPL[8]=k%10+'0';
tabPL[7]=(k/10)%10+'0';
tabPL[5]=(k/100)%10+'0';
tabPL[4]=(k/1000)%10+'0';
tabPL[3]=(k/10000)%10+'0';
tabPL[2]=(k/100000)%10+'0';
tabPL[1]=(k/1000000)%10+'0';
tabPL[0]=(k/10000000)%10+'0';
tabPL[6]='.';
wcmd(0x01);
L1602_string(1,1,tabPL);
if(key1==0)
{ Delay(2);
if(key1==0)
{i=0;
}
}
}
}
if(Q=1)
应该是==
根据错误提示,应该是在 'Q' 前面少了一个分号。但是在提供的代码中,没有出现 'Q' 这个字符,因此无法确定具体出错位置。建议检查代码中所有的语句,逐一排查是否存在缺失分号的情况。同时,建议提供更完整的代码,方便更准确地定位问题。