#include <reg52.h> //LED雙閃訓練+定時器中斷+包括精度訓練+中斷
//注:配置定時器中斷時,需要加EA(總開關(guān)) = 1,ET0(定時器0中斷使能) = 1
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit LED = P0; //定義P0端口為LED動態(tài)顯示接口
unsigned char code LEDShow[] = {0xE7,0xDB,0xBD,0x7E}; //lLED雙閃段
unsigned int cnt = 0; //記錄進入定時器次數(shù)
unsigned bit sym = 0; //進入預(yù)定時間標志
void main()
{
unsigned char i = 0;//LED步調(diào)指示
EA = 1; //中斷總開關(guān)
ADDR3 = 1; //啟動74HC138譯碼器使能端子
ENLED = 0; //啟動74HC138譯碼器使能端子
ADDR0 = 0; //選擇LED的控制位
ADDR1 = 1; //選擇LED的控制位
ADDR2 = 1; //選擇LED的控制位
TMOD&= 0xF0; //選擇定時器模式
TMOD|= 0x01; //選擇定時器模式
TL0 = 0x00; //配置T0的初始值
TH0 = 0xB8; //配置T0的初始值
ET0 = 1; //打開定時器T0中斷使能開關(guān)
TR0 = 1; //打開定時器開關(guān)
while(1)
{
if (sym==1)
{
sym = 0;
P0 = LEDShow[i];
i++;
if(i>=4)
P0 = LEDShow[8-i];
if(i>=8)
i = 0;
}
}
}
void InterruptTimer0() interrupt 1
{
unsigned int tmp;
tmp = 11059200/12;
tmp = tmp*2/1000;
tmp = 65536-tmp;
tmp = tmp+18; //補償計時誤差
TH0 = (unsigned char)(tmp>>8); //重裝T0定時器高8位
TL0 = (unsigned char)tmp; //重裝T0定時器低8位
cnt++;
if(cnt==20)
sym = 1;
}
同志們,俺有個問題,請教下各位大佬:為什么加上bit 關(guān)鍵字就報上面的錯誤提示,把bit改成char就無錯誤,無警告呢?
|