📄 l8279.lst
字号:
C51 COMPILER V3.20, SN-0 L8279 05/24/04 10:40:00 PAGE 1
DOS C51 COMPILER V3.20, COMPILATION OF MODULE L8279
OBJECT MODULE PLACED IN L8279.OBJ
COMPILER INVOKED BY: C:\XINGYAN\FSI\BIN\C51.EXE L8279.C DB SB OE ROM(LARGE) SMALL OT(2) RB(0)
stmt level source
1 /*
L8279.c
键盘和显示器 键盘和显示器
王占成
zcwang@mail.ustc.edu.cn
ustcwzc@sina.com.cn
13856067473
*/
12
13
14 /*
键盘部分
*/
19
20 /*********************************************************/
21 /***包含头文件***/
22 #include <absacc.h>
23 #include "watchdog.h"
24 #include "L8279.h"
25 #include "Pid.h"
26 #include "Xdata.h"
27 #include <reg52.h>
28 #include <math.h>
29 #include <string.h>
30
31
32 idata BYTE LEDStatus;
33 idata BYTE KeyCode;
34
35 code BYTE NumInTable[10] = {
36 Num0,
37 Num1,
38 Num2,
39 Num3,
40 Num4,
41 Num5,
42 Num6,
43 Num7,
44 Num8,
45 Num9
46 };
47
48 /*********************************************************/
49 /***函数定义***/
50
51 /*********************************************************/
52 /***键盘扫描程序***/
53 void ScanKey()
54 {
55 1 idata BYTE FIFOStatus;
C51 COMPILER V3.20, SN-0 L8279 05/24/04 10:40:00 PAGE 2
56 1 FIFOStatus = CMD8279;
57 1 if(FIFOStatus&0x0F) { /*FIFO RAM中有键被按下*/
58 2 CMD8279 = 0x40; /*读FIFO RAM*/
59 2 KeyCode = DATA8279;
60 2 NewLEDStatus = TRUE;
61 2 }
62 1 else {
63 2 NewLEDStatus = FALSE;
64 2 }
65 1 KeyFunction();
66 1 return;
67 1 }
68
69 /*********************************************************/
70 /***按健选择键***/
71 void KeyFunction()
72 {
73 1 if(NewLEDStatus == TRUE){
74 2 switch(KeyCode) {
75 3 case K_Sys:
76 3 //DispT();
77 3 OnSysDown();
78 3 break;
79 3 case K_Enter:
80 3 //DispP();
81 3 OnEnterDown();
82 3 break;
83 3 case K_Cancel:
84 3 //DispI();
85 3 OnCancelDown();
86 3 break;
87 3 case K_Led0:
88 3 //DispD();
89 3 OnLed0Down();
90 3 break;
91 3 case K_Led1:
92 3 //DispSetP();
93 3 OnLed1Down();
94 3 break;
95 3 case K_Led2:
96 3 //DispP();
97 3 OnLed2Down();
98 3 break;
99 3 case K_Led3:
100 3 //DispF();
101 3 OnLed3Down();
102 3 break;
103 3 case K_NULL:
104 3 //DispT();
105 3 DispT();
106 3 break;
107 3 }
108 2 NewLEDStatus = FALSE;
109 2 }
110 1 return;
111 1 }
112
113 /*********************************************************/
114 /***功能选择键***/
115 void OnSysDown()
116 {
117 1
C51 COMPILER V3.20, SN-0 L8279 05/24/04 10:40:00 PAGE 3
118 1 switch (LEDStatus) {
119 2 case S_NULL: /*前面正在显示温度*/
120 2 DispP();
121 2 break;
122 2 case S_P: /*前面显示字符P*/
123 2 DispI();
124 2 break;
125 2 case S_I: /*前面显示字符I*/
126 2 DispD();
127 2 break;
128 2 case S_D: /*前面显示字符D*/
129 2 DispSetP();
130 2 break;
131 2 case S_SP: /*前面显示字符SP*/
132 2 DispT();
133 2 break;
134 2 default:
135 2 break;
136 2 }
137 1 return;
138 1 }
139
140 /*********************************************************/
141 /***确定键***/
142 void OnEnterDown() /*确定键处理函数*/
143 {
144 1 switch(LEDStatus){
145 2 case S_NULL: /***==前边显示温度则显示到计时==**/
146 2 DispF();
147 2 break;
148 2
149 2 case S_P: /*要设定P*/
150 2 DispPVal(); /*显示当前的P值*/
151 2 break;
152 2 case S_I: /*要设定I*/
153 2 DispIVal(); /*显示当前的I值*/
154 2 break;
155 2 case S_D: /*要设定D*/
156 2 DispDVal(); /*显示当前的D值*/
157 2 break;
158 2 case S_SP: /*要设定SetPoint*/
159 2 DispSetPVal(); /*显示当前的SetPoint值*/
160 2 break;
161 2 case S_P_Val:
162 2 LEDDataToRAM(); /*将LED显示的值存入内存*/
163 2 DispT();
164 2 break;
165 2 case S_I_Val:
166 2 LEDDataToRAM();
167 2 DispT();
168 2 break;
169 2 case S_D_Val:
170 2 LEDDataToRAM();
171 2 DispT();
172 2 break;
173 2 case S_SP_Val:
174 2 LEDDataToRAM();
175 2 DispF();
176 2 break;
177 2 case S_F:
178 2 DispFVal();
179 2 break;
C51 COMPILER V3.20, SN-0 L8279 05/24/04 10:40:00 PAGE 4
180 2 case S_F_Val:
181 2 LEDDataToRAM();
182 2 DispT();
183 2 break;
184 2 default:
185 2 break; /*其它情况不响应*/
186 2 }
187 1 return;
188 1 }
189
190
191 /*********************************************************/
192 /***取消键***/
193 void OnCancelDown() /*取消键处理函数*/
194 {
195 1 DispT(); /*取消任何改动,重新显示温度*/
196 1 return;
197 1 }
198
199 /*********************************************************/
200 /***0号LED键***/
201 void OnLed3Down() /*循环改动一个LED的显示值*/
202 {
203 1 idata BYTE Num;
204 1 idata BYTE i;
205 1 idata BYTE LEDRamStatus;
206 1 CMD8279 = 0x60;
207 1 LEDRamStatus = DATA8279;
208 1
209 1 if(LEDRamStatus != 0x00){
210 2 if( (LEDStatus == S_P_Val) ||
211 2 (LEDStatus == S_I_Val) ||
212 2 (LEDStatus == S_P_Val) ||
213 2 (LEDStatus == S_SP_Val)||
214 2 (LEDStatus == S_F_Val)) {
215 3 for(i=0;i<10;i++){
216 4 if(LEDRamStatus == NumInTable[i]){
217 5 Num = i;
218 5 break;
219 5 }
220 4 }
221 3
222 3 Num++; /*下一位数字*/
223 3 if((Num>=0)&&(Num<=9))
224 3 WriteLed(0,NumInTable[Num]);
225 3 else
226 3 WriteLed(0,NumInTable[0]);
227 3 } /*将第1个LED的显示内容更新*/
228 2 }
229 1 return;
230 1 }
231
232 /*********************************************************/
233 /***1号LED键***/
234 void OnLed2Down() /*循环改动一个LED的显示值*/
235 {
236 1 idata BYTE Num;
237 1 idata BYTE i;
238 1 idata BYTE LEDRamStatus;
239 1 CMD8279 = 0x61;
240 1 LEDRamStatus = DATA8279;
241 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -