📄 key.lst
字号:
C51 COMPILER V8.05a KEY 08/01/2007 10:43:24 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE KeyBord\key.c BROWSE DEBUG OBJECTEXTEND PRINT(.\key.lst) OBJE
-CT(key.obj)
line level source
1 /******************************************************************************
2 * File Name: key.c *
3 * Create Time: 2007/07/14 *
4 * Description: *
5 * Copyright : *
6 * History : *
7 * |---Data---|---Author---|--Version--|--------------Description-------------|
8 *****************************************************************************/
9 //#define KEY_ONOFF
10 #ifdef KEY_ONOFF
/******************************
* Head File *
*****************************/
#include"key.h"
/******************************
* Global Variable *
*****************************/
int row=0; //键盘行数
int column=0;//键盘列数
uchar keybuf=0x00;//键盘按钮显示内容中间量*/
uchar keybit = 0;//用以计数键盘扫描行数
/******************************
* Const Segment *
*****************************/
uchar key_row[4] = {0x0e,0x0d,0x0b,0x07};//令键盘1-4行依次有效
/******************************
* Function Implement *
*****************************/
/**********************************************************************************************
Function Name:按键显示函数 *
Target : 将按键相应的数值显示在数码管上 *
Input Parameter : 8位的unsigned char *
Output Parameter : 无 *
Function Description : *
**********************************************************************************************/
uchar keyValue(uchar temp)
{
switch(temp&0xf0) //判断高四位的值
{
case 0x70:column = 0x00;break; //7位
case 0xb0:column = 0x04;break; //6
case 0xd0:column = 0x08;break; //5
case 0xe0:column = 0x0c;break; //4
}
switch(temp&0x0f) //判断第四位的值
{
case 0x0e:row = 0x00;break; //0
case 0x0d:row = 0x01;break; //1
case 0x0b:row = 0x02;break; //2
case 0x07:row = 0x03;break; //3
}
return row+column;
}
C51 COMPILER V8.05a KEY 08/01/2007 10:43:24 PAGE 2
/**********************************************************************************************
Function Name:键盘按下函数 *
Target : 判断键盘是否按下 *
Input Parameter : 无 *
Output Parameter : 1或0 *
Function Description : 用全扫描的方法判断键盘是否有键按下,有键按下返回1,键值保存在中间量 *
temp中,没有返回0. *
**********************************************************************************************/
uchar isKeyDown(void)
{
P2=0xf0; //将低四位置0
if((P2&0xf0)<0xf0)//判断是否有键按下,即高四位不全为1即有键按下
{
keybuf=P2&0xf0;//保存高四位的值
P2=0x0f; //将高四位置0
keybuf|=P2&0x0f;//保存低四位的值
return 0x01;
}
return 0x00; //输出该键值
}
/**********************************************************************************************
Function Name:对按下键的操作函数 *
Target : 按下相应键做相应功能 *
Input Parameter : 无 *
Output Parameter : 无 *
Function Description : 若有键按下,显示键码 *
**********************************************************************************************/
void keyOperate(void)
{
if(isKeyDown()==0x01)
DisPrint(keyValue(keybuf));
}
uchar downKeyValue()
{
return keybuf;
}
/**********************************************************************************************
Function Name:定时器0中断函数 *
Target : 定时器中断并产生相应功能 *
Input Parameter : 无 *
Output Parameter : 无 *
Function Description : 间隔2.5ms产生一次中断 *
**********************************************************************************************/
#endif
100
101 /*******************************************************************************
102 * The end of the entire file *
103 ******************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = ---- ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -