#include <reg52.h> //LED双闪训练+定时器中断+包括精度训练+中断
//注:配置定时器中断时,需要加EA(总开关) = 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动态显示接口
unsigned char code LEDShow[] = {0xE7,0xDB,0xBD,0x7E}; //lLED双闪段
unsigned int cnt = 0; //记录进入定时器次数
unsigned bit sym = 0; //进入预定时间标志
void main()
{
unsigned char i = 0;//LED步调指示
EA = 1; //中断总开关
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中断使能开关
TR0 = 1; //打开定时器开关
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 关键字就报上面的错误提示,把bit改成char就无错误,无警告呢?
|