首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

初学者老鸟

2012-07-02 
菜鸟求助老鸟!#include reg51.htypedef unsigned char ucharsbit LEP1^4sbit KEY5P3^7sbit DINP2^

菜鸟求助老鸟!
#include <reg51.h>
typedef unsigned char uchar;
sbit LE=P1^4;
sbit KEY5=P3^7;
sbit DIN=P2^4;//定义P2.5控制MAX7219的串行数据输入端
sbit LOAD=P2^3;//定义P2.4控制MAX7219的载入使能端
sbit CLK=P2^2;//定义P2.3控制MAX7219的时钟信号
sbit BUZ=P0^1;
#define TIMER_HBYTE -50000/256//定时50ms
#define TIMER_LBYTE -50000%256
uchar intr_counter;//设定的时间,用需要产生的中断次数表示
uchar bdata byte;//在bdata区定义一个变量,便于位操作
sbit byte_7=byte^7;
bit foul_flg;//是否有人犯规标志
bit time_over_flg;//是否倒计时超时标志
bit key_flg;//是否有人在规定时间内按键标志
void max7219_reset(void);//初始化MAX7219
void write_reg(uchar,uchar);//向控制寄存器写数据
void write_digit(uchar digit,uchar number);//向字型寄存器写数据
void send_data(uchar);//底层的硬件驱动
uchar set_time(void);//函数功能:设置倒计时时间
bit control_key(void);//函数功能:检测主持人是否按键
uchar get_key_num(void);//函数功能:检测哪个参赛者按键
void display_time(void);//函数功能:显示倒计时剩余时间
void foul_handle(uchar);//函数功能:犯规处理
void key_handle(uchar);//函数功能:按键处理
void time_over_handle(void);//函数功能:超时处理
void init_t0(void);//函数功能:初始化T0定时器
void delay_20ms(void);//函数功能:延时20ms,按键去抖动
void buz_on(void)//函数功能:蜂鸣器响500ms
void main(void);
{
uchar key_number;
max7219_reset();//初始化MAX7219
while(1)
{
foul_flg=0;//设置初始环境
time_over_flg=0;
TR0=0;//禁止T0运行
write_digit(DIGIT0,LED_code[0x0]);//上电后三个数码管全部显示0
write_digit(DIGIT1,LED_code[0x0]);
write_digit(DIGIT2,LED_code[0x0]);
while((control_key()==1)&&(foul_flg==0))
{//如果主持人没有按键
key_number=getkey_num();//检查是否有人犯规
if(key_number==0)//如果没有,进行下一次循环
continue;
else//如果有人犯规
{
foul_handle();//犯规处理
foul_flg=1;//设置犯规标志
}
}
if(foul_flg==1)//如果有人犯规
{
while(control_key()==1);//等待主持人按键以进入下一轮
continue;//主持人按键后进入下一轮
}
else//如果没有人犯规,必定是主持人允许答题
{
intr_counter=set_time();//读取倒计时时间
init_t0();//定时器T0开始计时
buz_on();//蜂鸣器响500ms
while(time_over_flg==0&&key_flg==0)
{
key_number=getkey_num();//在规定时间内检查是否有按键
if(key_number!=0)//如果有
{
key_handle(key_number);//按键处理
key_flg=1;//设置有人按键答题标志
TR0=0;//停止T0运行
}
else//否则循环检测
{
display_time();//并显示剩余时间
continue;
}
}
if(key_flg==1)//如果有人在规定时间内答题
{
while(control_key()==1);//等待主持人按键以进入下一轮
continue;//主持人按键后进入下一轮
}
else//倒计时时间到仍无人按键
{
time_over_handle();//超时处理
while(control_key()==1);//等待主持人按键以进入下一轮
continue;//主持人按键后进入下一轮
}
}
}
}

在上面程序中,出现了
JIK.C(40): error C202: 'DIGIT0': undefined identifier
JIK.C(41): error C202: 'DIGIT1': undefined identifier
JIK.C(42): error C202: 'DIGIT2': undefined identifier
请问该怎么改??

[解决办法]
先把它们分别直接换成0、1、2三个常数,如果结果对了,再在程序开始处添加成宏定义语句。
[解决办法]
DIGIT0、DIGIT1、DIGIT2是未定义的标识符。
建议:
在程序开头处添加
#define DIGIT0 0//0、1、2要根据具体情况修改
#define DIGIT1 1
#define DIGIT2 2

或者将DIGIT0、DIGIT1、DIGIT2分别替换为0、1、2等具体数字。
[解决办法]

探讨

引用:
DIGIT0、DIGIT1、DIGIT2是未定义的标识符。
建议:
在程序开头处添加
#define DIGIT0 0//0、1、2要根据具体情况修改


#define DIGIT1 1
#define DIGIT2 2

或者将DIGIT0、DIGIT1、DIGIT2分别替换为0、1、2等具体数字。

两种方法都试了,前一种还要定义LED_code最……

热点排行