📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 07/01/2008 10:35:02 PAGE 1
C51 COMPILER V7.50, 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
5
6
7 ****************************************************
8 */
9
10
11 #include <reg52.H>
12 #include "Typedef.H"
13 #include "UserDef.H"
14 #include "Keypad.H"
15 #include "Disp.H"
16
17
18 /* 全局变量 */
19 bit bDispRef = FALSE; //信号灯:显示更新时间到
20 bit bKeyScan = FALSE; //信号灯:键盘扫描时间到
21
22 /* 函数 */
23 void KeyboardDeal(void);
24
25
26 /***************************************
27
28
29
30 ****************************************/
31 void main(void)
32 {
33 1
34 1 TMOD = 0x11;
35 1 TH0 = (unsigned char)(KTDLY>>8);
36 1 TL0 = (unsigned char)(KTDLY);
37 1 TR0 = 1;
38 1
39 1 ET0 = 1;
40 1
41 1 EA = 1;
42 1
43 1 DispCls();
44 1 DispIntRight(0); //显示效果示范
45 1
46 1 while(TRUE)
47 1 {
48 2 /* 键盘 */
49 2 if (bKeyScan == TRUE)
50 2 {
51 3 bKeyScan = FALSE;
52 3 KeyboardDeal();
53 3 }
54 2
55 2 /* 显示扫描刷新 */
C51 COMPILER V7.50 MAIN 07/01/2008 10:35:02 PAGE 2
56 2 if (bDispRef == TRUE)
57 2 {
58 3 bDispRef = FALSE;
59 3 DispRef();
60 3 }
61 2 }
62 1 }
63
64
65
66
67 /*************************************
68
69 定时器中断程序
70
71 **************************************/
72 void int_t0(void) interrupt 1 using 1
73 {
74 1 static int cnt = 0;
75 1
76 1 TH0 = (unsigned char)(KTDLY>>8);
77 1 TL0 = (unsigned char)(KTDLY);
78 1
79 1 cnt ++;
80 1
81 1 /* 键盘扫描信号灯 */
82 1 if ((cnt % T_KEYSCAN) == 0)
83 1 {
84 2 bKeyScan = TRUE;
85 2 }
86 1
87 1 /* 显示扫描信号灯 */
88 1 if ((cnt % T_DISPREF) == 0)
89 1 {
90 2 bDispRef = TRUE;
91 2 }
92 1 }
93
94
95 /*************************************
96
97 键盘处理
98
99 **************************************/
100 void KeyboardDeal(void)
101 {
102 1 static INT8U KeyVal = VK_NULL; //按键值
103 1 //数据类型改为浮点数
104 1 // static INT32U dispval = 0;
105 1 static float dispval = 0;
106 1 INT8U n;
107 1
108 1 n = Keypad_GetKey();
109 1
110 1 if (n != KeyVal)
111 1 {
112 2 KeyVal = n;
113 2 if (n != VK_NULL)
114 2 {
115 3 if ((KeyVal>=VK_0)&&(KeyVal<=VK_9))
116 3 {
117 4 dispval *= 10;
C51 COMPILER V7.50 MAIN 07/01/2008 10:35:02 PAGE 3
118 4 dispval += KeyVal - VK_0;
119 4 }
120 3 else if (KeyVal == VK_CLR)
121 3 {
122 4 DispCls();
123 4 dispval = 0;
124 4 }
125 3 //==============================<< 修改2 >>===============================================================
-======
126 3 // 补充对加、减、乘、除按键的处理,分别对现有值加2,减2,乘2、除2
127 3 //========================================================================================================
-======
128 3 else if (KeyVal == VK_ADD)
129 3 {
130 4 dispval += 2;
131 4 }
132 3 else if (KeyVal == VK_SUB)
133 3 {
134 4 dispval -= 2;
135 4 }
136 3 else if (KeyVal == VK_MUL)
137 3 {
138 4 dispval *= 2;
139 4 }
140 3 else if (KeyVal == VK_DIV)
141 3 {
142 4 dispval /= 2;
143 4 }
144 3
145 3
146 3 //==============================<< 修改3 >>===============================================================
-======
147 3 // 改用DispFloat函数进行显示,并同时修改程序中其他相关部分,使其能够支持浮点数显示
148 3 // (共2处修改,1.下面一行,2.本函数开头处dispval的数据类型定义)
149 3 //========================================================================================================
-======
150 3 //DispIntRight(dispval);
151 3 DispFloat(dispval);
152 3 }
153 2 }
154 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 338 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -