sercom.lst
来自「KEILC51程序实例和配套硬件目标板,很详细,程序有注释」· LST 代码 · 共 84 行
LST
84 行
C51 COMPILER V7.03 SERCOM 12/28/2006 11:14:52 PAGE 1
C51 COMPILER V7.03, COMPILATION OF MODULE SERCOM
OBJECT MODULE PLACED IN sercom.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sercom.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <intrins.h>
3 sbit P34 = 0xB4;
4 sbit P35 = 0xB5;
5
6 unsigned char get_char(void); /* 函数说明 */
7 void delay(void);
8
9 main() {
10 1 unsigned char keybuf[16], count; /* 键盘缓冲区和读键计数变量 */
11 1 SCON=0; /* 将串行口设置成工作方式0 */
12 1 ES=0; /* 禁止串口中断 */
13 1 EA=0;
14 1 count=0;
15 1 while(count<16) keybuf[count++]=get_char(); /* 读入16个按键的键值 */
16 1 }
17
18 unsigned char get_char(void) {
19 1 /* 定义表示列号、键序号和待发送数据的变量column、key_code和mask */
20 1 unsigned char key_code, column=0, mask=0x00;
21 1 /* 下列语句从串行口向74LS164移位输出8个0 */
22 1 TI=0;
23 1 SBUF=mask;
24 1 while(TI==0); /* 等待发送完毕 */
25 1 /* 下列语句通过检测P3.4和P3.5是否为0来判断是否有键压下, 检测到有键压下时
26 1 延时10ms以消除桉键抖动, 然后继续检测P3.4和P3.5是否为0, 若不为0则表明
27 1 检测到干扰信号并继续等待按键, 否则表示有一个键被可靠地按下并退出循环
28 1 */
29 1 while(1) {
30 2 while((P34&P35)!=0);
31 2 delay();
32 2 if((P34&P35)!=0) continue;
33 2 else break;
34 2 }
35 1 /* 下列语句分析被按下的键所在的列号 */
36 1 mask=0xfe;
37 1 while(1) {
38 2 TI=0;
39 2 SBUF=mask;
40 2 while(TI==0);
41 2 if((P34&P35)!=0) {
42 3 mask=_crol_(mask,1); /* mask的值循环左移一位 */
43 3 column++;
44 3 if(column>=8) column=0;
45 3 continue;
46 3 }
47 2 else break;
48 2 }
49 1 /* 下列语句分析被按下的键所在的行号并计算键序号 */
50 1 if(P34==0) key_code=column;
51 1 else key_code=8+column;
52 1 return(key_code);
53 1 }
54
55 void delay(void) {
C51 COMPILER V7.03 SERCOM 12/28/2006 11:14:52 PAGE 2
56 1 unsigned int i=10; /* 延时10ms */
57 1 while(i--);
58 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 136 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 20
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?