初学者求助


用proteus仿真时,用KEIL执行下面的语句         switch(count)
                {
/*            case 1:
                                 //    time[0]=read_1302(0x81);  //读取秒数
             time[0]=time[0]+1;  //秒数加1
             if(time[0]%16==0x0a)
             time[0]=(time[0]&0xf0)+0x10;
   
                              
             if((time[0]&0x7f)>0x59)   //超过59秒,清零
                                     time[0]=0;
                   write_1302(0x8e,0x00); //写入允许
             write_1302(0x80,time[0]|0x80); //stop
                 write_1302(0x8e,0x80); //禁止写入
   
             seh=time[0]/16;
             sel=time[0]%16;
            
             _ShowNumber(2,88,sel);
             _ShowNumber(2,80,seh);         
             break;
*/
                   case 2:
                                   //  time[1]=read_1302(0x83);  //读取分数
             time[1]=time[1]+1;  //分数加1
             if(time[1]%16==0x0a)
             time[1]=(time[1]&0xf0)+0x10;
                                    
             if(time[1]>0x59)          //超过59分,清零
             time[1]=0;
                   write_1302(0x8e,0x00); //写入允许
             write_1302(0x82,time[1]);
                 write_1302(0x8e,0x80); //禁止写入
              mih=time[1]/16;
              mil=time[1]%16;
   
             _ShowNumber(2,56,mil);
             _ShowNumber(2,48,mih);
   
             break;
   
                  case 3:
                                   //  time[2]=read_1302(0x85);  //读取小时数
             time[2]=time[2]+1;  //小时数加1
              if(time[2]%16==0x0a)
             time[2]=(time[2]&0xf0)+0x10;
   
             if(time[2]>0x23)   //超过23小时,清零
             time[2]=0;
                 write_1302(0x8e,0x00); //写入允许
             write_1302(0x84,time[2]);
                 write_1302(0x8e,0x80); //禁止写入
              hoh=time[2]/16;
              hol=time[2]%16;
             _ShowNumber(2,24,hol);
             _ShowNumber(2,16,hoh);
             break;
                    
                  case 4:
                                  //   time[3]=read_1302(0x87);  //读取日数
             time[3]=time[3]+1;  //日数加1
              if(time[3]%16==0x0a)
             time[3]=(time[3]&0xf0)+0x10;                                 
             if(time[3]>0x31)
             time[3]=1;
                  write_1302(0x8e,0x00); //写入允许
             write_1302(0x86,time[3]);
                 write_1302(0x8e,0x80); //禁止写入
   
              dah=time[3]/16;
            dal=time[3]%16;
   
             _ShowNumber(0,88,dah);
             _ShowNumber(0,96,dal);
             break;

                  case 5:
                                   //  time[4]=read_1302(0x89);  //读取月数
             time[4]=time[4]+1;  //月数加1
              if(time[4]%16==0x0a)
             time[4]=(time[4]&0xf0)+0x10;                                 
             if(time[4]>0x12)
             time[4]=1;
              write_1302(0x8e,0x00); //写入允许
             write_1302(0x88,time[4]);
                 write_1302(0x8e,0x80); //禁止写入
              monh=time[4]/16;
              monl=time[4]%16;
            _ShowNumber(0,72,monl);
            _ShowNumber(0,64,monh);
             break;
                      case 6:
                                   //  time[6]=read_1302(0x8d);  //读取年数
             time[6]=time[6]+1;  //年数加1
               if(time[6]%16==0x0a)
             time[6]=(time[6]&0xf0)+0x10;                                 
             if(time[6]>0x85)
             time[6]=0;
                write_1302(0x8e,0x00); //写入允许
             write_1302(0x8c,time[6]);
                 write_1302(0x8e,0x80); //禁止写入
              yearh=time[6]/16;
              yearl=time[6]%16;
            _ShowNumber(0,48,yearl);
            _ShowNumber(0,40,yearh);
                break;   

               default:break;
           }
1-6全部都编译时液晶显示乱码,二当屏蔽掉1时,能正常显示,本想是1错了,但当屏蔽掉3-6,只编译1和2时,也能正常显示。多次试后,发现全编译不行,但屏蔽一部分编译行,请问这是什么原因,本人C不是很好,请达人帮个忙!!!

我也来说两句 查看全部回复

最新回复

  • feishuang (2008-8-27 10:14:58)

    没人顶,绝望了!