学习(单片机C语言程序设计实训100例)遇到问题 未定义的标识符 请教解决办法!
[复制链接]
单片机C语言程序设计实训100例——基于8051+Proteus仿真(第2版)
04 1602LCD显示仿手机键盘按键字符 用Keil C51编译 出现错误 SHOW_MOBILE_KEY 未定义的标识符
我在书本和网上查找 没有解决 在网上看 程序就是这样的 没有定义 SHOW_MOBILE_KEY
请求给予指导 非常感谢!!!
//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
void main()
{
INT8U Pre_KeyNo = -1;
IE = 0x82; //使能T0中断
TMOD = 0x01; //T0工作于模式1(16位模式)
TH0 = - 50000 >> 8; //定时50ms
TL0 = - 50000 & 0xFF;
Initialize_LCD(); //液晶初始化
//显示固定信息部分(初始显示ENG>表示输入英文字符序列)
LCD_ShowString(0, 0, "Mobile KeyPad ");
LCD_ShowString(1, 0, "ENG> ");
while(1)
{ //有键按下则扫描,否则不进行任何处理
if(KeyMatrix_Down()) Keys_Scan(); else continue;
if(KeyNo == 0xFF) continue;
//功能键处理(9[*]:切换英文/数字,11[#]:清除所有输入)
if(KeyNo == 9 || KeyNo == 11)
{ Function_Key_Process(); Beep(); continue; }
//如果是输入数字则直接显示
if(!ENG_TEL) goto SHOW_MOBILE_KEY;
//如果输入的不是英文字母则继续(英文字符在0~8号键,包括空格)
if(KeyNo < 0 || KeyNo > 8) continue;
//否则输入的是英文字符序列,以下代码将根据是否为同位按键进行相应处理
if(Pre_KeyNo != KeyNo) //按下新按键-----------------------
{ Pre_KeyNo = KeyNo; //保存当前按键
Inner_Idx = 1; //输入英文时内部索引起点为1
}
else //否则按下的是相同位置按键-----------------------
{ //同位按键时间间隔在50msx30=1.5s内则认为是连续按键
if(tSpan < 31)
{ //连续按键时在键内循环递增字符索引
if(++Inner_Idx == strlen(Keypad_Chars[KeyNo]))
Inner_Idx = 1;
//因为是连续短按,故将每次显示后递增的输入缓冲索引后退一格,
//以便替换此前输入的字符
--Buffer_Index;
} else Inner_Idx = 1; //否则按键内英文字符索引回归起点索引1
}
tSpan = 0; TR0 = 1; //时间间隔归零,计时开始
SHOW_MOBILE_KEY; //显示按键字符
if(Buffer_Index >= 12) continue; //输入缓冲限制在12个字符以内
//更新输入缓冲字符串并送LCD显示
Input_Buffer[Buffer_Index++] = Keypad_Chars[KeyNo][Inner_Idx];
Input_Buffer[Buffer_Index] = '\0';
LCD_ShowString(1, 4, Input_Buffer);
Beep(); //输出提示音
while(KeyMatrix_Down()); //等待释放按键
}
}
|