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'
该警告提示您使用的是过时的声明方式。在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>[本文内容由国芯人工智能辅助生成,仅供参考] unsigned char code DebugLab 发表于 2025-3-10 09:22
unsigned char code
修改了,正常了。
#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++;//系统时间
} #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]