微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 这个 一分钟计时程序怎么改 哪位大神指教下

这个 一分钟计时程序怎么改 哪位大神指教下

时间:10-02 整理:3721RD 点击:

                                        #include<reg52.h>
unsigned int i=0;
sbit P36=P3^6;
sbit P10=P1^0;         //循迹口
sbit P11=P1^1;
sbit P12=P1^2;
sbit P14=P1^4;         //电机口
sbit P15=P1^5;
sbit P16=P1^6;                          
sbit P17=P1^7;
unsigned char j,time;
unsigned int kop,dr;
unsigned char a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char c[4]={0xff,0xff,0xff,0xff},d[4];
void delay(unsigned char z)          //延时子程序
{
unsigned char j;
while(z--)
for(j=123;j>0;j--);
}
   void main()
  {       
    TMOD=0x15;              // 打开定时器和计数器
        TH0=0x00;
        TL0=0x00;
                   
          TH1=0XFc;               //1ms
        TL1=0X18;
        EA = 1;
    ET0=1;
        ET1=1;
    TR1 = 1;
        TR0 = 1;
   while(1)
      {  
              if(P10==0&&P11==0&&P12==0)
             {
                  TR0=0;                                  //显示时间          停
              P0=d[0];                  
              P2=0XFE;
              delay(1);
              P0=d[3];                  
              P2=0XFB;
              delay(3);
             P0=d[2];                                 //显示测速                   停
             P2=0XFD;
             delay(3);
             P0=d[3];               
             P2=0XF7;
             delay(3);
             P14=1;P15=1;P16=1; P17=1;
        }
      }
  }
   void timer1() interrupt 3    //中断 服务程序
{
   unsigned int qq=0,ww=0;
   TH1=0XFc;
   TL1=0X18;//1ms
   i++;
    switch(i%4)
    {                       
    case 0:P0=c[0],P2=0XFE;d[0]=c[0];break;
    case 1:P0=c[1],P2=0XFD;d[1]=c[1];break;
    case 2:P0=c[2],P2=0XFB;d[2]=c[2]; break;
    case 3:P0=c[3],P2=0XF7;d[3]=c[3]; break;
    default:break;
    }                  
    P14=1;P15=1;P16=1; P17=1;
       
        if(P10==0&&P11==0&&P12==0)                //全测到
        dr=0;
        if(P10==1&&P11==0&&P12==1)                //中间测到
        dr=1;
        if(P10==0&&P11==1&&P12==1)                 //左边测到
        dr=2;
    if(P10==1&&P11==1&&P12==0)                 //右边测到
        dr=3;
        if(P10==0&&P11==0&&P12==1)                 //左两测到
        dr=4;
        if(P10==1&&P11==0&&P12==0)                 //右两测到       
        dr=5;
   
        switch(dr)
         {
     case 0:P14=1,P15=1,P16=1,P17=1,TR1=0;break;              //全测到     停
          
     case 1:P14=0,P15=1,P16=0,P17=1;break;              //直走
         
         case 2:P14=1,P15=1,P16=0,P17=1,ww=1;break;    //左拐
          
         case 3:P14=0,P15=1,P16=1,P17=1,qq=1;break;           //右拐
          
         case 4:P14=1,P15=0,P16=0,P17=1,ww=1;break;           //左两测到   左拐

         case 5:P14=0,P15=1,P16=1,P17=0,qq=1;break;           //右两测到   右拐
         }
         /*跑出跑道外记忆 回到跑道内 */
         if(dra         )
             c[3]=a[kop/10];
             c[2]=a[kop%10];
             time++;
             c[1]=a[time/10];
             c[0]=a[time%10];
             i=0;
             TH0=0;
             TL0=0;
            }
结果提示
C:\KEIL\TEXT1SHI.C(98): error C202: 'P14': undefined identifier
C:\KEIL\TEXT1SHI.C(100): error C202: 'P14': undefined identifier
C:\KEIL\TEXT1SHI.C(102): error C202: 'P14': undefined identifier
C:\KEIL\TEXT1SHI.C(105): error C202: 'dra': undefined identifier
C:\KEIL\TEXT1SHI.C(113): error C202: 'TL0': undefined identifier
Target not created

我们看出来dra是哪来的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top