最近在学习C51单片机,使用keil5进行编程,目前在学习数码管的静态显示,然后遇到如下问题,请指教
问题遇到的现象和发生背景
我定义的变量jk,放在LSA变量前面不会报错,放在LSA变量后面就报 "jk" undefined identifier, 我实在有点郁闷
问题相关代码,请勿粘贴截图
如下是正常的代码:
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;
u8 code smgduan[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
void delay(u16 i) {
while(i > 0) {
i--;
}
}
void main() {
// ×îÓÒ±ßÊýÂë¹ÜÏÔʾÊý×Ö0
u8 jk = 0;
LSA = 0;
LSB = 0;
LSC = 0;
while(1) {
P0 = smgduan[jk];
delay(50000);
jk++;
if(jk == 15) {
jk = 0;
}
}
}
运行结果及报错内容
这样子不会报错:
将jk变量放到LSA后面就报错: