📄 calculator.lst
字号:
C51 COMPILER V8.08 CALCULATOR 04/11/2009 12:53:53 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE CALCULATOR
OBJECT MODULE PLACED IN .\Out\Calculator.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SourceFile\Calculator.c BROWSE DEFINE(_HW01_) DEBUG OBJECTEXTEND PRINT(.\Ls
-t\Calculator.lst) OBJECT(.\Out\Calculator.obj)
line level source
1
2
3
4
5 #include "Calculator.h"
6
7
8
9 ///////////////////////////////////////////////////////////////////////////
10 // Variable
11 USTCULTDATA data g_ustValData;
12 BYTE bdata g_bfCULTStatus;
13
14
15
16 //USTCULTDATA data ustValData;
17
18 BOOL fnCULT_Add(void)
19 {
20 1 g_ustValData.tadd.bEqL = (g_ustValData.tadd.bSrc + g_ustValData.tadd.bDes);
21 1 return TRUE;
22 1 }
23
24
25 BOOL fnCULT_Sub(void)
26 {
27 1 g_ustValData.tsub.iEq = ((int)(g_ustValData.tsub.cSrc - g_ustValData.tsub.cDes));
28 1 return TRUE;
29 1 }
30
31
32
33 BOOL fnCULT_Mul(void)
34 {
35 1 g_ustValData.tmul.wEq = g_ustValData.tmul.bSrc;
36 1 //g_ustValData.tmul.bSrc = 0;
37 1 //g_ustValData.tmul.wEq *= g_ustValData.tw.wIN;
38 1 g_ustValData.tmul.wEq *= g_ustValData.tmul.bDes;
39 1 return TRUE;
40 1 }
41
42
43 BOOL fnCULT_Div(void)
44 {
45 1 if (g_ustValData.tdiv.bDes == 0)
46 1 return FALSE;
47 1 g_ustValData.tdiv.bEq = (g_ustValData.tdiv.bSrc / g_ustValData.tdiv.bDes);
48 1 g_ustValData.tdiv.bRemd = (g_ustValData.tdiv.bSrc % g_ustValData.tdiv.bDes);
49 1 return TRUE;
50 1 }
51
52
53 void fnCULT_DispSPChr(BYTE bAddr, BYTE bOP)
54 {
C51 COMPILER V8.08 CALCULATOR 04/11/2009 12:53:53 PAGE 2
55 1 switch(bOP)
56 1 {
57 2 case CULT_ADD:
58 2 //bOP = 0x2B;
59 2 fnDISP_Chr(bAddr, DISP_ADD);
60 2 break;
61 2 case CULT_SUB:
62 2 //bOP = 0x2D;
63 2 fnDISP_Chr(bAddr, DISP_SUB);
64 2 break;
65 2 case CULT_MUL:
66 2 //bOP = 0x2A;
67 2 fnDISP_Chr(bAddr, DISP_MUL);
68 2 break;
69 2 case CULT_DIV:
70 2 //bOP = 0x2F;
71 2 fnDISP_Chr(bAddr, DISP_DIV);
72 2 break;
73 2 case EQUAL:
74 2 //bOP = 0x3D;
75 2 fnDISP_Chr(bAddr, DISP_EQU);
76 2 break;
77 2 default:
78 2 break;
79 2 }
80 1 //fnDISP_WrData(bOP);
81 1 }
82
83
84 void fnCULT_KeyIn(void)
85 {
86 1 if(g_bKeyValueOld == 15){
87 2 return;
88 2 } else {
89 2 if(g_bfCULTStatus == CALCULATOR){
90 3 if(g_bKeyValueOld > 9){
91 4 return;
92 4 }
93 3 g_bfCULTStatus = FNUM_HI;
94 3 fnDISP_ClrDisp();
95 3 }
96 2 }
97 1 switch(g_bfCULTStatus)
98 1 {
99 2 case FNUM_HI:
100 2 if(g_bKeyValueOld <= 9){
101 3 g_ustValData.tb.bX = (g_bKeyValueOld * 10);
102 3 g_bfCULTStatus = FNUM_LO;
103 3 fnDISP_Int(LOCAL_02, g_bKeyValueOld);
104 3 }
105 2 break;
106 2 case FNUM_LO:
107 2 if(g_bKeyValueOld <= 9){
108 3 g_ustValData.tb.bX += g_bKeyValueOld;
109 3 g_bfCULTStatus = OPERATION;
110 3 fnDISP_Int(CONTINUE, g_bKeyValueOld);
111 3 } else if((g_bKeyValueOld >= 10) && (g_bKeyValueOld <= 13)){
112 3 g_ustValData.tb.bX /= 10;
113 3 g_ustValData.tb.bOP = g_bKeyValueOld;
114 3 g_bfCULTStatus = SNUM_HI;
115 3 fnCULT_DispSPChr(CONTINUE, g_bKeyValueOld);
116 3 }
C51 COMPILER V8.08 CALCULATOR 04/11/2009 12:53:53 PAGE 3
117 2 break;
118 2 case OPERATION:
119 2 if((g_bKeyValueOld >= 10) && (g_bKeyValueOld <= 13)){
120 3 g_ustValData.tb.bOP = g_bKeyValueOld;
121 3 g_bfCULTStatus = SNUM_HI;
122 3 fnCULT_DispSPChr(CONTINUE, g_bKeyValueOld);
123 3 }
124 2 break;
125 2 case SNUM_HI:
126 2 if(g_bKeyValueOld <= 9){
127 3 g_ustValData.tb.bO = (g_bKeyValueOld * 10);
128 3 g_bfCULTStatus = SNUM_LO;
129 3 fnDISP_Int(CONTINUE, g_bKeyValueOld);
130 3 }
131 2 break;
132 2 case SNUM_LO:
133 2 if(g_bKeyValueOld <= 9){
134 3 g_ustValData.tb.bO += g_bKeyValueOld;
135 3 g_bfCULTStatus = EQUAL;
136 3 //fnDISP_RdCmd(BYTE * bpData)
137 3 //fnDISP_RdAddr(&bBuf);
138 3 fnDISP_Int(CONTINUE, g_bKeyValueOld);
139 3 } else if(g_bKeyValueOld == EQUAL){
140 3 g_ustValData.tb.bO /= 10;
141 3 g_bfCULTStatus = ENTER;
142 3 fnCULT_DispSPChr(CONTINUE, g_bKeyValueOld);
143 3 }
144 2 break;
145 2 case EQUAL:
146 2 if(g_bKeyValueOld == EQUAL){
147 3 g_bfCULTStatus = ENTER;
148 3 fnCULT_DispSPChr(CONTINUE, g_bKeyValueOld);
149 3 }
150 2 break;
151 2 default:
152 2 break;
153 2 }
154 1 }
155
156
157 void fnCULT_Operation(void)
158 {
159 1 if(g_bfCULTStatus != ENTER){
160 2 return;
161 2 } else {
162 2 g_bfCULTStatus = 0;
163 2 }
164 1
165 1 switch(g_ustValData.tb.bOP)
166 1 {
167 2 case CULT_ADD:
168 2 fnCULT_Add();
169 2 fnDISP_Int(CONTINUE, g_ustValData.tadd.bEqL);
170 2 break;
171 2 case CULT_SUB:
172 2 fnCULT_Sub();
173 2 fnDISP_Int(CONTINUE, g_ustValData.tsub.iEq);
174 2 break;
175 2 case CULT_MUL:
176 2 fnCULT_Mul();
177 2 fnDISP_Int(CONTINUE, g_ustValData.tmul.wEq);
178 2 break;
C51 COMPILER V8.08 CALCULATOR 04/11/2009 12:53:53 PAGE 4
179 2 case CULT_DIV:
180 2 if(fnCULT_Div()){
181 3 fnDISP_Int(CONTINUE, g_ustValData.tdiv.bEq);
182 3 fnDISP_Chr(CONTINUE, DISP_SPACE);
183 3 fnDISP_Int(CONTINUE, g_ustValData.tdiv.bRemd);
184 3 } else {
185 3 fnDISP_ClrDisp();
186 3 fnDISP_Str(LOCAL_02, "ERROR:IN Zero");
187 3 }
188 2 break;
189 2 default:
190 2 break;
191 2 }
192 1 }
193
194
195
196
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 477 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 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 + -