首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

MAIN.C(八): error C100: unprintable character 0xB4 skipped

2013-03-29 
MAIN.C(8): error C100: unprintable character 0xB4 skipped当不要KeyRead函数声明时可以正常编译,但点亮

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函数声明去掉了就能用了。。求大神指导

















     
[解决办法]
这是什么编译器,
试试把中文去掉看
[解决办法]
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。

------解决方案--------------------


最好自己单步看看。。看看里面的值是否正确
[解决办法]
清理,在重新编译。。。

热点排行