利用定时器溢出充当中断,当定时器溢出时,液晶屛显示1,为什么实验时液晶屛不显示任何东西。请教大神!!!!
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
#define DATA P2
sbit rs=P1^6;
sbit rw=P1^5;
sbit en=P1^4;
unsigned char a=0;
void delay(u16 num) //延时
{
u16 x,y;
for(x=num;x>0;x--)
for(y=110;y>0;y--);
}
void InitTimer0() //初始化函数
{
TMOD=0x01; //设置定时器0工作模式1
TH0=0xFF; //计数器装初值
TL0=0xFF;
EA=1; //开总中断
ET0=1; //开计数器0中断
TR0=1; //启动定时器0
}
//计数器1
void write_cmd(u8 cmd)
{
rs=0;
rw=0;
DATA=cmd;
delay(5);
en=1;
delay(5);
en=0;
}
void write_data(u16 dat)
{
rs=1;
rw=0;
DATA=dat;
delay(5);
en=1;
delay(5);
en=0;
}
void lcd_init(void) //lcd初始化
{
write_cmd(0x02);
write_cmd(0x06);
write_cmd(0x0c);
write_cmd(0x38);
write_cmd(0x01);
}
void timer0() interrupt 1 //定时/计数器1中断服务程序
{
ET0=0; //关定时器1中断
a++;
}
int main(void) //主函数
{
rw=0;
rs=0;
en=0;
InitTimer0;
lcd_init();
while(1)
{
if(a==1)
{
write_cmd(0xc0); //液晶屛显示
write_data('1');
}
}
}
|