📄 disp.lst
字号:
C51 COMPILER V6.12 DISP 05/25/2005 14:58:14 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE DISP
OBJECT MODULE PLACED IN .\disp.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE .\disp.c DEBUG OBJECTEXTEND
stmt level source
1 #include "public.h"
2
3 void display(void)
4 {
5 1
6 1 //做成楼层数字符
7 1 make16_16text();
8 1
9 1 m_cLineIdx=0;
10 1 while(1){
11 2 //做成16x5的行缓冲
12 2 make16_5line(m_RecData.cDirect);
13 2 //做成16x16的行缓冲
14 2 make16_16line(m_RecData.cDirect);
15 2 //显示
16 2 showtext();
17 2
18 2 m_cLineIdx++;
19 2 if(m_cLineIdx>=16)
20 2 break;
21 2 }
22 1
23 1 //移动步数
24 1 calmovecnt();
25 1
26 1 }
27
28 void calmovecnt(void)
29 {
30 1 if((data5045.cF2==0)||(m_cOverloadFlg==1)){ //固定显示
31 2 m_cWholeMoveOKFlg=0;
32 2 m_cMoveCnt=0;
33 2 m_cMoveTimer=TIMER_ONELINE_NUM;
34 2 m_cNewLineFlg=0;
35 2 }else if(data5045.cF2==1){ //箭头滚动
36 2 if(m_cNewLineFlg==1){
37 3 m_cMoveCnt++;
38 3 m_cNewLineFlg=0;
39 3 //整组移动完成
40 3 if(m_cMoveCnt>15){
41 4 m_cWholeMoveOKFlg=1;
42 4 }
43 3 }
44 2 }else if(data5045.cF2==2){ //数字滚动
45 2 if(m_cNewLineFlg==1){
46 3 m_cMoveCnt++;
47 3 m_cNewLineFlg=0;
48 3 //整组移动完成
49 3 if(m_cMoveCnt>15){
50 4 m_cWholeMoveOKFlg=1;
51 4 }
52 3 }
53 2 }else if(data5045.cF2==3){ //数字箭头滚动
54 2 if(m_cNewLineFlg==1){
55 3 m_cMoveCnt++;
C51 COMPILER V6.12 DISP 05/25/2005 14:58:14 PAGE 2
56 3 m_cNewLineFlg=0;
57 3 //整组移动完成
58 3 if(m_cMoveCnt>15){
59 4 m_cWholeMoveOKFlg=1;
60 4 }
61 3 }
62 2 }
63 1 }
64
65 // cFlg: 0--下箭头 1--上箭头 2--空白
66 void make16_5line(uchar cFlg)
67 {
68 1
69 1 m_cSrcDirect=0xFF;
70 1
71 1 if(P1_7==1){ //跳线未接通
72 2 if(m_cOverloadFlg==1){ //超载时仅作固定显示
73 3 m_cSrcDirect = PR_OVERLOAD[m_cLineIdx][0];
74 3 return;
75 3 }
76 2 if(data5045.cF2==0){ //固定显示
77 3 if(cFlg==0){
78 4 m_cSrcDirect = PRDDown[m_cLineIdx];
79 4 }else if(cFlg==1){
80 4 m_cSrcDirect = PRDUp[m_cLineIdx];
81 4 }else if(cFlg==2){
82 4 m_cSrcDirect = 0xFF;
83 4 }
84 3 }else if(data5045.cF2==1){ //箭头滚动
85 3 if(cFlg==0){
86 4 if(m_cLineIdx<m_cMoveCnt){
87 5 m_cSrcDirect=PRDDown[m_cLineIdx+16-m_cMoveCnt];
88 5 }else{
89 5 m_cSrcDirect = 0xFF;
90 5 }
91 4 }else if(cFlg==1){
92 4 if(m_cLineIdx>(16-m_cMoveCnt)){
93 5 m_cSrcDirect=PRDUp[m_cLineIdx-16+m_cMoveCnt];
94 5 }else{
95 5 m_cSrcDirect = 0xFF;
96 5 }
97 4 }else if(cFlg==0xFF){
98 4 m_cSrcDirect = 0xFF;
99 4 }
100 3 }else if(data5045.cF2==2){ //数字滚动
101 3 if(cFlg==0){
102 4 m_cSrcDirect = PRDDown[m_cLineIdx];
103 4 }else if(cFlg==1){
104 4 m_cSrcDirect = PRDUp[m_cLineIdx];
105 4 }else if(cFlg==0xFF){
106 4 m_cSrcDirect = 0xFF;
107 4 }
108 3 }else if(data5045.cF2==3){ //数字箭头滚动
109 3 if(cFlg==0){
110 4 if(m_cLineIdx<m_cMoveCnt){
111 5 m_cSrcDirect=PRDDown[m_cLineIdx+16-m_cMoveCnt];
112 5 }else{
113 5 m_cSrcDirect=0xFF;
114 5 }
115 4 }else if(cFlg==1){
116 4 if(m_cLineIdx>(16-m_cMoveCnt)){
117 5 m_cSrcDirect=PRDUp[m_cLineIdx-16+m_cMoveCnt];
C51 COMPILER V6.12 DISP 05/25/2005 14:58:14 PAGE 3
118 5 }else{
119 5 m_cSrcDirect=0xFF;
120 5 }
121 4 }else if(cFlg==0xFF){
122 4 m_cSrcDirect = 0xFF;
123 4 }
124 3 }
125 2 }else{ //跳线接通
126 2 m_cSrcDirect=0xFF;
127 2 }
128 1
129 1 }
130
131 //buffer做成(7x11)
132 void make16_16text(void)
133 {
134 1 uchar cDispVal=0; //显示值
135 1 uchar cDataHigh=0;
136 1 uchar cDataLow=0;
137 1 uchar cAsciiHigh=0;
138 1 uchar cAsciiLow=0;
139 1
140 1 if(P1_7==0){ // "F0 F1 F2 F3 F4"
141 2
142 2 if(m_cFuncCnt==0){
143 3 if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
144 4 cAsciiHigh = 'F';
145 4 cAsciiLow = '0';
146 4 }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
147 4 cDispVal = data5045.cF0+1;
148 4 cDataHigh = cDispVal/10;
149 4 cDataLow = cDispVal%10;
150 4 cAsciiHigh = __toascii(cDataHigh);
151 4 cAsciiLow = __toascii(cDataLow);
152 4 }
153 3 }else if(m_cFuncCnt==1){
154 3 if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
155 4 cAsciiHigh = 'F';
156 4 cAsciiLow = '1';
157 4 }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
158 4 cDispVal = data5045.cF1+1;
159 4 cDataHigh = cDispVal/10;
160 4 cDataLow = cDispVal%10;
161 4 cAsciiHigh = __toascii(cDataHigh);
162 4 cAsciiLow = __toascii(cDataLow);
163 4 }
164 3 }else if(m_cFuncCnt==2){
165 3 if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
166 4 cAsciiHigh = 'F';
167 4 cAsciiLow = '2';
168 4 }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
169 4 cDispVal = data5045.cF2+1;
170 4 cDataHigh = cDispVal/10;
171 4 cDataLow = cDispVal%10;
172 4 cAsciiHigh = __toascii(cDataHigh);
173 4 cAsciiLow = __toascii(cDataLow);
174 4 }
175 3 }else if(m_cFuncCnt==3){
176 3 if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
177 4 cAsciiHigh = 'F';
178 4 cAsciiLow = '3';
179 4 }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
C51 COMPILER V6.12 DISP 05/25/2005 14:58:14 PAGE 4
180 4 cDispVal = data5045.cF3;
181 4 cDataHigh = cDispVal/10;
182 4 cDataLow = cDispVal%10;
183 4 cAsciiHigh = __toascii(cDataHigh);
184 4 cAsciiLow = __toascii(cDataLow);
185 4 }
186 3 }else if(m_cFuncCnt==4){
187 3 if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
188 4 cAsciiHigh = 'F';
189 4 cAsciiLow = '4';
190 4 }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
191 4 cDispVal = data5045.cF4;
192 4 cDataHigh = cDispVal/10;
193 4 cDataLow = cDispVal%10;
194 4 cAsciiHigh = __toascii(cDataHigh);
195 4 cAsciiLow = __toascii(cDataLow);
196 4 }
197 3 }else if(m_cFuncCnt==5){ //此处暂时被封 2004 11.03, 对应功能改为直接接受报站楼层
198 3 if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
199 4 cAsciiHigh = 'F';
200 4 cAsciiLow = '5';
201 4 }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
202 4 //距地楼层数(0~55), 显示(-8-47)
203 4 if(data5045.cF5<8){
204 5 cDataLow = 8-data5045.cF5;
205 5 cAsciiHigh = '-';
206 5 cAsciiLow = __toascii(cDataLow);
207 5 }else{
208 5 cDataHigh = (data5045.cF5-8)/10;
209 5 cDataLow = (data5045.cF5-8)%10;
210 5 cAsciiHigh = __toascii(cDataHigh);
211 5 cAsciiLow = __toascii(cDataLow);
212 5 }
213 4 }
214 3 }else if(m_cFuncCnt==6){
215 3 if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
216 4 cAsciiHigh = 'F';
217 4 cAsciiLow = '6';
218 4 }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
219 4 cDispVal = data5045.cF6;
220 4 cDataHigh = cDispVal/10;
221 4 cDataLow = cDispVal%10;
222 4 cAsciiHigh = __toascii(cDataHigh);
223 4 cAsciiLow = __toascii(cDataLow);
224 4 }
225 3 }else if(m_cFuncCnt==7){
226 3 if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
227 4 cAsciiHigh = 'F';
228 4 cAsciiLow = '7';
229 4 }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
230 4 cDispVal = data5045.cF7;
231 4 cDataHigh = cDispVal/10;
232 4 cDataLow = cDispVal%10;
233 4 cAsciiHigh = __toascii(cDataHigh);
234 4 cAsciiLow = __toascii(cDataLow);
235 4 }
236 3 }
237 2 }else{ // 显示楼层(-1~-9,1-48,B1~B9)
238 2
239 2 if(m_cOverloadFlg==1){ //超载时仅作固定显示
240 3 return;
241 3 }
C51 COMPILER V6.12 DISP 05/25/2005 14:58:14 PAGE 5
242 2
243 2 if((m_RecData.cCurFloor>=0) && (m_RecData.cCurFloor<=8)){ //-1~-9
244 3 cDataHigh = (9-m_RecData.cCurFloor)/10;
245 3 cDataLow = (9-m_RecData.cCurFloor)%10;
246 3 cAsciiHigh = '-';
247 3 cAsciiLow = __toascii(cDataLow);
248 3 }else if((m_RecData.cCurFloor>=9) && (m_RecData.cCurFloor<=56)){ //1-48
249 3 cDataHigh = (m_RecData.cCurFloor-8)/10;
250 3 cDataLow = (m_RecData.cCurFloor-8)%10;
251 3 cAsciiHigh = __toascii(cDataHigh);
252 3 cAsciiLow = __toascii(cDataLow);
253 3 }else if((m_RecData.cCurFloor>=69) && (m_RecData.cCurFloor<=77)){ //B1~B9
254 3 cDataHigh = (m_RecData.cCurFloor-68)/10;
255 3 cDataLow = (m_RecData.cCurFloor-68)%10;
256 3 cAsciiHigh = 'B';
257 3 cAsciiLow = __toascii(cDataLow);
258 3 }else{
259 3 cAsciiHigh = '-';
260 3 cAsciiLow = '-';
261 3 }
262 2 }
263 1
264 1 m_cAsciiHigh=cAsciiHigh;
265 1 m_cAsciiLow=cAsciiLow;
266 1
267 1 }
268
269 void make16_16line(uchar cFlg)
270 {
271 1 uchar cIndexHigh=getindex(m_cAsciiHigh);
272 1 uchar cIndexLow =getindex(m_cAsciiLow);
273 1
274 1 m_cSrcFloorHigh=0xFF; //楼层高字符缓冲区
275 1 m_cSrcFloorLow=0xFF; //楼层低字符缓冲区
276 1
277 1
278 1 if(m_cOverloadFlg==1){ //超载时仅作固定显示
279 2 m_cSrcFloorHigh = PR_OVERLOAD[m_cLineIdx][1];
280 2 m_cSrcFloorLow = PR_OVERLOAD[m_cLineIdx][2];
281 2 return;
282 2 }
283 1
284 1 if(cIndexHigh != 0){ // 双字符
285 2 m_c15_16singledoubleFlg=1;
286 2 if((data5045.cF2==0)||(P1_7==0)){ //固定显示
287 3 m_cSrcFloorHigh = PR[cIndexHigh][m_cLineIdx];
288 3 m_cSrcFloorLow = PR[cIndexLow][m_cLineIdx];
289 3 }else if(data5045.cF2==1){ //箭头滚动
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -