MAIN.C(8): error C100: unprintable character 0xB4 skipped
当不要KeyRead函数声明时可以正常编译,但点亮是就会出现error
#include <reg52.h>
#include <sure.h>
#include <intrins.h>
extern void GetTimer();
extern void InitTimer();
extern void GetTimerRe();
extern void delay(unsigned int i);
void display1();
void display2();
void display3();
void display();
void sec_t();
void min_t();
void hour_t();
void TS();
void sendout();
//void KeyRead(); //当不要KeyRead函数声明时可以正常编译,但点亮是就会出现error。
unsigned char code Disp_Tab[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
unsigned long idata D[6], Led[8];
unsigned int z=0;
unsigned int TIM;
unsigned int m,r;
unsigned char Trg,Cont;
/***********系统初始化*************/
void system_Ini()
{
IE = 0x8B;//开启T0,T1,外部中断1
TMOD = 0x11;
TH0 = 0xFE; //11.0592M
TL0 = 0x0B;
TH1= 0xc1;
TL1=0x7f;
TCON=0xF3;//开启T0,T1,IE1(低电平有效)
}
/*******************显示函数*********************/
void display()
{
/********以下将分/秒中数据送到LED数码管显示*************/
//D[0]秒 D[1]分 D[2]时
Led[0]=Disp_Tab[10];
Led[1]=Disp_Tab[10];
Led[2]=Disp_Tab[D[2]%100/10];
Led[3]=Disp_Tab[D[2]%10]&0x7f;
Led[4]=Disp_Tab[D[1]%100/10];
Led[5]=Disp_Tab[D[1]%10]&0x7f;
Led[6]=Disp_Tab[D[0]%100/10];
Led[7]=Disp_Tab[D[0]%10];
}
/*************输出数码管**************/
void sendout()
{
unsigned int i,j;
for( i=0; i<8; i++)
{ P1 = Led[i];
switch(i)
{
case 0:LS138A=0; LS138B=0; LS138C=0; break;
case 1:LS138A=1; LS138B=0; LS138C=0; break;
case 2:LS138A=0; LS138B=1; LS138C=0; break;
case 3:LS138A=1; LS138B=1; LS138C=0; break;
case 4:LS138A=0; LS138B=0; LS138C=1; break;
case 5:LS138A=1; LS138B=0; LS138C=1; break;
case 6:LS138A=0; LS138B=1; LS138C=1; break;
case 7:LS138A=1; LS138B=1; LS138C=1; break;
}
for (j = 0 ; j<250 ;j++) {;}
}
P1 = 0XFF;
}
main()
{
Trg=0;// 按键按下触发标志
Cont=0; //长按按键标志位
system_Ini(); //系统初始化
InitTimer(); //时钟初始化
while(1)
{
IE0=1; //外部中断0标志位
TS(); //调节时间函数
}
}
/**************按键读取函数**************/
void KeyRead()
{
unsigned char ReadData=plus^0xff;
Trg=ReadData & (ReadData ^ Cont);
Cont= ReadData;
}
/*************调节时间函数****************/
void TS()
{
if(K_change==1)
{
while(K_change)
{
IE1=1;
if(z==1) //时调整
{
display1();
KeyRead();
hour_t();
}
if(z==2) //分调整
{
display2();
KeyRead();
min_t();
}
if(z==3) //秒调整
{
display3();
KeyRead();
sec_t();
if(sure==0)z=0; //标志位清零
}
if(sure==0)
{
K_change=0;
GetTimerRe();//时间更新函数
break;
}
}
}
}
/***********秒调节**********/
void sec_t()
{
if(Cont&&Trg==1) //是否松开,1为按下并松开。
{
D[0]++;
if(D[0]%100==60)D[0]=0;
}
}
/***********分调节**********/
void min_t()
{
if(Cont&&Trg==1)
{
D[1]++;
if(D[1]%100==60)D[1]=0;
}
}
/***********时调节**********/
void hour_t()
{
if(Cont&&Trg==1)
{
D[2]++;
if(D[2]%100==24)D[2]=0;
}
}
/********外部中断进行按键检测***********/
void int0() interrupt 0
{
if(change==0)
{
K_change=1; //改变标志位
z++; //时分秒调整计数器
}
}
/*************定时中断0,500ms读一次时间****************/
void timer0(void) interrupt 1 //3定时器1的中断号 1定时器0的中断号 0外部中断0 2外部中断1 4串口中断
{
TH0 = 0xfe; //机器周期=12/12MHz(晶振)=1μs TH0+TL0=0xfe33=65075 定时时间=65535-65035= 500ms
TL0 = 0x0b;
TIM=1;
}
/******定时中断1,16ms显示一次****************/
void timer1() interrupt 3 //定时器中断2
{
TH1=0xC1; //1s 60帧 16ms 初值=65535-16000=C17F
TL1=0x7f;
if(K_change==0)
GetTimer();
display();
sendout();
}
/***********时位突出*******************/
void display1() //时位闪烁
{
Led[0]=Disp_Tab[10];
Led[1]=Disp_Tab[10];
Led[2]=Disp_Tab[D[2]%100/10];
Led[3]=Disp_Tab[D[2]%10]&0x7f;
Led[4]=Disp_Tab[10];
Led[5]=Disp_Tab[10]&0x7f;
Led[6]=Disp_Tab[10];
Led[7]=Disp_Tab[10];
sendout();
}
/***********分位突出*******************/
void display2() //分位闪烁
{
//D[0]秒 D[1]分 D[2]时
Led[0]=Disp_Tab[10];
Led[1]=Disp_Tab[10];
Led[2]=Disp_Tab[10];
Led[3]=Disp_Tab[10];
Led[4]=Disp_Tab[D[1]%100/10];
Led[5]=Disp_Tab[D[1]%10]&0x7f;
Led[6]=Disp_Tab[10];
Led[7]=Disp_Tab[10];
sendout();
}
/***********秒位突出*******************/
void display3() //秒位闪烁
{
//D[0]秒 D[1]分 D[2]时
Led[0]=Disp_Tab[10];
Led[1]=Disp_Tab[10];
Led[2]=Disp_Tab[10];
Led[3]=Disp_Tab[10]&0x7f;
Led[4]=Disp_Tab[10];
Led[5]=Disp_Tab[10];
Led[6]=Disp_Tab[D[0]%100/10];
Led[7]=Disp_Tab[D[0]%10];
sendout();
}
=================================我是分割线=============================================
error:MAIN.C(8): error C100: unprintable character 0xB4 skipped
error:MAIN.C(8): error C100: unprintable character 0xB4 skipped
error:MAIN.C(144): error C187: not an lvalue
error:MAIN.C(153): error C187: not an lvalue
error:MAIN.C(162): error C187: not an lvalue
显示时分秒的数组不是个long型的值,一旦把那个KeyRead函数声明去掉了就能用了。。求大神指导
[解决办法]
这是什么编译器,
试试把中文去掉看
[解决办法]
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
------解决方案--------------------
最好自己单步看看。。看看里面的值是否正确
[解决办法]
清理,在重新编译。。。