📄 io复用.lst
字号:
C51 COMPILER V7.06 IO__用 04/11/2005 21:04:36 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE IO__用
OBJECT MODULE PLACED IN IO复用.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil20\C51\BIN\C51.EXE IO复用.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //-----------------------函数声明,变量定义--------------------------------------------------------
2 #include <reg51.h>
3 sbit KEY_1 =P1^0; // 将p1.0定义为KEY_1
4 sbit KEY_2 =P1^1; // 将p1.1定义为KEY_2
5 sbit KEY_3 =P1^2; // 将p1.2定义为KEY_3
6 #define KEY P1
7 //-----------------------变量声明---------------------------------------------------------------------
8 unsigned char manage_KEY(); //完成按键消抖得键盘处理程序,供主程序调用
9 unsigned char SScan_key(); //扫描查询子程序
10 void delay(unsigned int N) ;//延时子程序,实现(16*N+24)us的延时
11 //-------------------------------- ------------------------------------------------------------------
12 // 函数名称: SScan_key
13 // 返回值: 有按键按下返回键值,无按键按下返回0xFF
14 // 函数功能:延时子程序,实现(16*N+24)us的延时
15 // 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
16 //--------------------------------------------------------------------------------------------------
17 unsigned char SScan_key()
18 {
19 1 unsigned KEY_value;
20 1 KEY_1=1;
21 1 KEY_2=1;
22 1 KEY_3=1;
23 1 KEY_value=(KEY&0x07); //按键查询
24 1 if(KEY_value==0x07) //S0~S6无键按下
25 1 {
26 2 KEY_1=0;
27 2 KEY_value=(KEY&0x06);
28 2 switch(KEY_value)
29 2 {
30 3 case 0x00: KEY_value=7;break; //KEY_2、KEY_3均为0
31 3 case 0x02: KEY_value=11;break; //KEY_2为1、KEY_3为0
32 3 case 0x04: KEY_value=14;break; //KEY_2为0、KEY_3为1
33 3 default: KEY_value=0xFF;
34 3 }
35 2 KEY_2=0;
36 2 KEY_value=(KEY&0x05);
37 2 switch(KEY_value)
38 2 {
39 3 case 0x00: KEY_value=10;break; //KEY_1、KEY_3均为0
40 3 case 0x01: KEY_value=8;break; //KEY_1为1、KEY_3为0
41 3 case 0x04: KEY_value=15;break; //KEY_1为0、KEY_3为1
42 3 default: KEY_value=0xFF;
43 3 }
44 2 KEY_3=0;
45 2 KEY_value=(KEY&0x03);
46 2 switch(KEY_value)
47 2 {
48 3 case 0x00: KEY_value=13;break; //KEY_1、KEY_2均为0
49 3 case 0x01: KEY_value=9;break; //KEY_1为1、KEY_2为0
50 3 case 0x02: KEY_value=12;break; //KEY_1为0、KEY_2为1
51 3 default: KEY_value=0xFF;
52 3 }
53 2 }
54 1 return(KEY_value);
55 1 }
C51 COMPILER V7.06 IO__用 04/11/2005 21:04:36 PAGE 2
56 //-------------------------------- ------------------------------------------------------------------
57 // 函数名称: manage_KEY()
58 // 函数功能: 供主程序调用键盘处理程序
59 // 如果有键按下,定时消抖,如果是有效按键返回键值,无效按键返回0xFF
60 //--------------------------------------------------------------------------------------------------
61 unsigned char manage_KEY()
62 {
63 1 unsigned char key_value;
64 1 key_value=SScan_key();
65 1 if(key_value<=0x0f)
66 1 delay(1000);
67 1 if(key_value!=SScan_key())
68 1 key_value=0xFF;
69 1 return(key_value);
70 1 }
71 //-------------------------------- ------------------------------------------------------------------
72 // 函数名称: delay
73 // 入口参数: N
74 // 函数功能:延时子程序,实现(16*N+24)us的延时
75 // 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
76 //--------------------------------------------------------------------------------------------------
77 void delay(unsigned int N)
78 {
79 1 int i;
80 1 for(i=0;i<N;i++);
81 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 163 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
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 + -