標(biāo)題:
XF.C(16): error C141: syntax error near 'bit'
[打印本頁]
作者:
pingdiguo
時(shí)間:
2018-11-9 23:18
標(biāo)題:
XF.C(16): error C141: syntax error near 'bit'
#include <reg52.h> //LED雙閃訓(xùn)練+定時(shí)器中斷+包括精度訓(xùn)練+中斷
//注:配置定時(shí)器中斷時(shí),需要加EA(總開關(guān)) = 1,ET0(定時(shí)器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; //記錄進(jìn)入定時(shí)器次數(shù)
unsigned bit sym = 0; //進(jìn)入預(yù)定時(shí)間標(biāo)志
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; //選擇定時(shí)器模式
TMOD|= 0x01; //選擇定時(shí)器模式
TL0 = 0x00; //配置T0的初始值
TH0 = 0xB8; //配置T0的初始值
ET0 = 1; //打開定時(shí)器T0中斷使能開關(guān)
TR0 = 1; //打開定時(shí)器開關(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; //補(bǔ)償計(jì)時(shí)誤差
TH0 = (unsigned char)(tmp>>8); //重裝T0定時(shí)器高8位
TL0 = (unsigned char)tmp; //重裝T0定時(shí)器低8位
cnt++;
if(cnt==20)
sym = 1;
}
同志們,俺有個(gè)問題,請教下各位大佬:為什么加上bit 關(guān)鍵字就報(bào)上面的錯誤提示,把bit改成char就無錯誤,無警告呢?
作者:
pingdiguo
時(shí)間:
2018-11-9 23:22
補(bǔ)充一下,這句:sbit LED = P0;刪除后還是報(bào)一樣的錯誤
作者:
zhanghyg
時(shí)間:
2018-11-10 11:50
這句應(yīng)該這樣寫#define LED P0
作者:
HC6800-ES-V2.0
時(shí)間:
2018-11-10 18:59
你的程序中,有兩個(gè)錯誤。
第一:第十行sbit LED=P0;
開玩笑,定義一個(gè)位變量的sbit,你定義了一個(gè)口。但編譯時(shí)這里沒有報(bào)錯。應(yīng)該改為#define LED P0;
第二:你說的報(bào)錯,在十六行unsigned bit sym = 0; //進(jìn)入預(yù)定時(shí)間標(biāo)志
開玩笑,有無符號位這樣的數(shù)據(jù)類型嗎?bit定義一個(gè)位變量,只有一位,要么0,要么1,需要定義有無符號嗎?
應(yīng)該改為bit sym=0;
作者:
sxhwdz
時(shí)間:
2018-11-11 09:37
沒有這個(gè)數(shù)據(jù)類型: unsigned bit
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1