jovewang 发表于 2025-3-9 21:35:41

t_motor1.h(8): warning C194: obsolete declaration: use '<type> code zrun'

这个错误怎么解决?

code unsigned char zrun={ 0x03,0x0b,0x09,0x0d,0x0c,0x0e,0x06,0x07};

编译错误:
t_motor1.h(8): warning C194: obsolete declaration: use '<type> codezrun'

国芯人工智能 发表于 2025-3-9 21:38:00

该警告提示您使用的是过时的声明方式。在Keil C51编译器中,`code`关键字用于将变量存储在程序存储器(ROM)中,而非数据存储器(RAM)。建议您使用`code`关键字时,将其放在类型声明之前,以符合现代C51编译器的语法规范。<br><br>解决方案如下:<br>将代码修改为:<br>`unsigned char code zrun[] = { 0x03, 0x0b, 0x09, 0x0d, 0x0c, 0x0e, 0x06, 0x07 };`<br><br>修改后,`code`关键字正确放置在类型声明之前,并确保`zrun`是一个数组(使用`[]`)。这样可以消除警告并符合C51编译器的语法要求。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]

DebugLab 发表于 2025-3-10 09:22:14

unsigned char code

jovewang 发表于 2025-3-12 19:53:29

DebugLab 发表于 2025-3-10 09:22
unsigned char code

修改了,正常了。

jovewang 发表于 2025-3-12 20:26:37


#include "key.h"

sbit LED7 = P1^7;
sbit LED6 = P1^6;
sbit LED5 = P1^5;
sbit LED4 = P1^4;
sbit LED3 = P1^3;
sbit LED2 = P1^2;
sbit LED1 = P1^1;
sbit LED0 = P1^0;

sbit KEY= P3^7;
sbit KEY1 = P3^6;
sbit KEY2 = P3^5;
sbit KEY3 = P3^4;
sbit KEY4 = P3^3;



void main()
{
        P0M1 = 0;        P0M0 = 0;        //设置为准双向口
        P1M1 = 0;        P1M0 = 0;        //设置为准双向口
        P2M1 = 0;        P2M0 = 0;        //设置为准双向口
        P3M1 = 0;        P3M0 = 0;        //设置为准双向口
        P4M1 = 0;        P4M0 = 0;        //设置为准双向口
        P5M1 = 0;        P5M0 = 0;        //设置为准双向口
        P6M1 = 0;        P6M0 = 0;        //设置为准双向口
        P7M1 = 0;        P7M0 = 0;        //设置为准双向口


Timer0Init();//中断初始化

    while(1)
    {
    key_Proc();   //按键处理
    led_Proc();//灯处理
                       
                key_Proc1();   //按键处理
    led_Proc1();//灯处理
                       
    key_Proc2();   //按键处理
    led_Proc2();//灯处理

    key_Proc3();   //按键处理
    led_Proc3();//灯处理
                       
    key_Proc4();   //按键处理
    led_Proc4();//灯处理                       
    }
}

void key_Proc()    //按键处理
{
          if(flag1ms)//1ms时间标志
    {
      flag1ms = 0;
      if(KEY)
      {
      if((keyTim>10)&&(keyTim<2000))//按键时间大于10ms小于50ms,是短按键
         {
         keyshort = 1;   //短按键标志
         }
         keyTim = 0;      //按键时间清零
      }
      else
      {
         if(keyTim<2001)    //按键时间小于10S
         keyTim++;         //按键时间加
         if(keyTim==2000)    //按键时间为1S
          {
          keylong = 1;    //长按键标志
          }
      }      
    }
}

void led_Proc()   //灯处理
{
    if((LEDON==0)&&(keyshort==1))//关灯状态同时长按键按下就开灯
    {   
      keyshort = 0;//长按键松开
      LEDON = 1;    //关灯时就开灯
      LED0 = 0;   //RGB灯亮白光
      LED1 = 0;   //RGB灯亮白光                       
    }      
    if((LEDON==1)&&(keylong==1)) //开灯状态同时长按键按下就关灯
    {   
      keylong = 0;//长按键松开
      LEDON = 0;    //开灯时就关灯
      LED0 = 1;   //RGB灯灭
                          LED1 = 1;LED2 = 1;LED3 = 1;
                                LED4 = 1;LED5 = 1;LED6 = 1; LED7 = 1;
    }
}

void key_Proc1()    //按键处理
{
          if(flag1ms1)//1ms时间标志
    {
      flag1ms1 = 0;
      if(KEY1)
      {
      if((keyTim1>10)&&(keyTim1<1000))//按键时间大于10ms小于50ms,是短按键
         {
         keyshort1 = 1;   //短按键标志
         }
         keyTim1 = 0;      //按键时间清零
      }
      else
      {
         if(keyTim1<10001)    //按键时间小于10S
         keyTim1++;         //按键时间加
         if(keyTim1==1000)    //按键时间为1S
          {
          keylong1 = 1;    //长按键标志
          }
      }      
    }
}

void led_Proc1()   //灯处理
{
    if((LEDON==1)&&(keyshort1==1))//关灯状态同时长按键按下就开灯
    {   
      keyshort1 = 0;//长按键松开
//      LEDON = 1;    //关灯时就开灯
      LED4 = 1;   //RGB灯亮白光
    }      
    if((LEDON==1)&&(keylong1==1)) //开灯状态同时长按键按下就关灯
    {   
      keylong1 = 0;//长按键松开
//      LEDON = 0;    //开灯时就关灯
      LED4 = 0;   //RGB灯灭
    }
    }

void key_Proc2()    //按键处理
{
          if(flag1ms2)//1ms时间标志
    {
      flag1ms2 = 0;
      if(KEY2)
      {
      if((keyTim2>10)&&(keyTim2<1000))//按键时间大于10ms小于50ms,是短按键
         {
         keyshort2 = 1;   //短按键标志
         }
         keyTim2 = 0;      //按键时间清零
      }
      else
      {
         if(keyTim2<1001)    //按键时间小于10S
         keyTim2++;         //按键时间加
         if(keyTim2==1000)    //按键时间为1S
          {
          keylong2 = 1;    //长按键标志
          }
      }      
    }
}

void led_Proc2()   //灯处理
{
    if((LEDON==1)&&(keyshort2==1))//关灯状态同时长按键按下就开灯
    {   
      keyshort2 = 0;//长按键松开
//      LEDON = 1;    //关灯时就开灯
      LED5 = 1;   //RGB灯亮白光
    }      
    if((LEDON==1)&&(keylong2==1)) //开灯状态同时长按键按下就关灯
    {   
      keylong2 = 0;//长按键松开
//      LEDON = 1;    //开灯时就关灯
      LED5 = 0;   //RGB灯灭
    }
    }

void key_Proc3()    //按键处理
{
          if(flag1ms3)//1ms时间标志
    {
      flag1ms3 = 0;
      if(KEY3)
      {
      if((keyTim3>10)&&(keyTim3<1000))//按键时间大于10ms小于50ms,是短按键
         {
         keyshort3 = 1;   //短按键标志
         }
         keyTim3 = 0;      //按键时间清零
      }
      else
      {
         if(keyTim3<1001)    //按键时间小于10S
         keyTim3++;         //按键时间加
         if(keyTim3==1000)    //按键时间为1S
          {
          keylong3 = 1;    //长按键标志
          }
      }      
    }
}

void led_Proc3()   //灯处理
{
    if((LEDON==1)&&(keyshort3==1))//关灯状态同时长按键按下就开灯
    {   
      keyshort3 = 0;//长按键松开
//      LEDON = 1;    //关灯时就开灯
      LED6 = 1;   //RGB灯亮白光
//                          if(KEY3==0){LED6 = 0; }
    }   
               
    if((LEDON==1)&&(keylong3==1)) //开灯状态同时长按键按下就关灯
    {   
      keylong3 = 0;//长按键松开
//      LEDON = 1;    //开灯时就关灯
      LED6 = 0;   //RGB灯灭
    }
    }

void key_Proc4()    //按键处理
{
          if(flag1ms4)//1ms时间标志
    {
      flag1ms4 = 0;
      if(KEY4)
      {
      if((keyTim4>10)&&(keyTim4<1000))//按键时间大于10ms小于50ms,是短按键
         {
         keyshort4 = 1;   //短按键标志
         }
         keyTim4 = 0;      //按键时间清零
      }
      else
      {
         if(keyTim4<5000)    //按键时间小于10S
         keyTim4++;         //按键时间加
         if(keyTim4==1000)    //按键时间为1S
          {
          keylong4 = 1;    //长按键标志
          }
      }      
    }
}

void led_Proc4()   //灯处理
{
    if((LEDON==1)&&(keyshort4==1))//关灯状态同时长按键按下就开灯
    {   
      keyshort4 = 0;//长按键松开
//      LEDON = 1;    //关灯时就开灯
      LED7 = 1;   //RGB灯亮白光
    }      
    if((LEDON==1)&&(keylong4==1)) //开灯状态同时长按键按下就关灯
    {   
      keylong4 = 0;//长按键松开
//      LEDON = 1;    //开灯时就关灯
      LED7 = 0;   //RGB灯灭
    }
    }       

void Timer0Init()   //中断初始化
{
    AUXR &= 0x7F;   //定时器时钟12T(12分频)模式
    EA = 1;       //开中断
    TMOD &= 0XF0; //中断0模式1
    TMOD |= 0X01;
    TH0 = 0XFC;   //初值1ms
    TL0 = 0X66;
    ET0 = 1;   //允许T0中断
    TR0 = 1;    //定时器0开始计时
}

void interruptTimer0() interrupt 1
{
    TH0 = 0XFC;
    TL0 = 0X66;
    flag1ms = 1; //1ms标志
          flag1ms1 = 1; //1ms标志
          flag1ms2 = 1; //1ms标志
          flag1ms3 = 1; //1ms标志
          flag1ms4 = 1; //1ms标志
    sysTim++;//系统时间
}

jovewang 发表于 2025-3-12 22:48:17

#ifndef _KEY_H_
#define _KEY_H_


#include "stc8h.h"

unsigned int sysTim; //系统时间
unsigned char LEDON;    //开灯状态

unsigned char keyshort; //短按键标志
unsigned char keylong;//长按键标志
unsigned intkeyTim; //按键时间
unsigned char flag1ms;//1ms标志

unsigned char keyshort1; //短按键标志
unsigned char keylong1;//长按键标志
unsigned intkeyTim1; //按键时间
unsigned char flag1ms1; //1ms标志

unsigned char keyshort2; //短按键标志
unsigned char keylong2;//长按键标志
unsigned intkeyTim2; //按键时间
unsigned char flag1ms2; //1ms标志

unsigned char keyshort3; //短按键标志
unsigned char keylong3;//长按键标志
unsigned intkeyTim3; //按键时间
unsigned char flag1ms3; //1ms标志

unsigned char keyshort4; //短按键标志
unsigned char keylong4;//长按键标志
unsigned intkeyTim4; //按键时间
unsigned char flag1ms4; //1ms标志


void key_Proc(); //按键处理
void led_Proc();//灯处理

void key_Proc1(); //按键处理
void led_Proc1();//灯处理

void key_Proc2(); //按键处理
void led_Proc2();//灯处理

void key_Proc3(); //按键处理
void led_Proc3();//灯处理

void key_Proc4(); //按键处理
void led_Proc4();//灯处理

void Timer0Init(); //中断初始化

#endif
页: [1]
查看完整版本: t_motor1.h(8): warning C194: obsolete declaration: use '<type> code zrun'