main.lst
来自「stc15单片机测试程序V1.0版」· LST 代码 · 共 113 行
LST
113 行
C51 COMPILER V9.01 MAIN 07/28/2012 10:19:13 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /***********************************************************
2 实验名称:矩阵按键
3 程序说明:本程序测试了矩阵按键
4 实验平台:stc15单片机开发板v1.0版
5 日期:2012-05-27
6 QQ: 259902530
7 www.stcstudy.com 61mcu.taobao.com 版权所有
8 ***********************************************************/
9 //矩阵按键测试程序, 输出结果用串口传输到上位机显示,可采用STC下载软件自带串口调试助手观察
10 #include "STC15F2K.H"
11 #include "UART.H"
12 #include <intrins.h>
13
14 #define uchar unsigned char
15 #define uint unsigned int
16
17 char SMG[]="0123456789";
18
19 void delay_ms(uchar t); //11.0592M晶振下 延时 t ms;
20 uchar ScanKey(void); //返回按键的码值(按下按键12时,返回12,否则返回0)
21 //只有松手后才返回码值
22 void main(void)
23 {
24 1 uchar New,L[3];
25 1 InitUART();
26 1 while(1)
27 1 {
28 2 New= ScanKey(); //获取新按键信息
29 2 if(New)
30 2 {
31 3 SendString("按键编码为 : ");
32 3 L[0] = SMG[New/10];
33 3 L[1] = SMG[New%10];
34 3 L[2] = '\0';
35 3 SendString(L);
36 3 SendData('\r');
37 3 SendData('\n');
38 3 }
39 2
40 2 }
41 1 }
42
43
44 void delay_ms(uchar t)
45 {
46 1 unsigned char a,b;
47 1 while(t--)
48 1 for(b=178;b>0;b--)
49 1 for(a=14;a>0;a--);
50 1 }
51
52 uchar ScanKey(void)
53 {
54 1 uchar Tmp,Tmp2,KeyNum;
55 1 P3=0x0f;
C51 COMPILER V9.01 MAIN 07/28/2012 10:19:13 PAGE 2
56 1 if(P3!=0x0f)
57 1 {
58 2 delay_ms(8);
59 2 if(P3!=0x0f)
60 2 {
61 3 Tmp=P3;
62 3 P3 =0xF0;
63 3 _nop_();_nop_();_nop_();_nop_();
64 3 Tmp2=P3;
65 3 Tmp=Tmp+Tmp2;
66 3 while(P3!=0xF0) ;
67 3 switch(Tmp&0xF0)
68 3 {
69 4 case 0xE0:KeyNum=0;break;
70 4 case 0xD0:KeyNum=4;break;
71 4 case 0xB0:KeyNum=8;break;
72 4 case 0x70:KeyNum=12;break;
73 4 }
74 3 switch(Tmp&0x0F)
75 3 {
76 4 case 0x0E:KeyNum+=1;break;
77 4 case 0x0D:KeyNum+=2;break;
78 4 case 0x0B:KeyNum+=3;break;
79 4 case 0x07:KeyNum+=4;break;
80 4
81 4 }
82 3 P3|=0x03; //此句必须,否则影响 串口输出
83 3 return KeyNum;
84 3 }
85 2 }
86 1 return 0;
87 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 215 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?