利用定時器溢出充當中斷,當定時器溢出時,液晶屛顯示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');
}
}
}
|