📄 disp.lst
字号:
C51 COMPILER V7.06 DISP 07/21/2008 12:45:44 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DISP
OBJECT MODULE PLACED IN E:\温度表\DISP.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE E:\温度表\DISP.C DB SB OE
stmt level source
1 #include <reg52.h>
2 #include "disp.h"
3 #define a 0x01
4 #define b 0x02
5 #define c 0x04
6 #define d 0x08
7 #define e 0x10
8 #define f 0x20
9 #define g 0x40
10 #define dot 0x80
11 #define H 10
12 #define L 11
13 #define P 12
14 sbit sd=P2^ 4;
15 unsigned char code disp_code[] = {
16 a+b+c+d+e+f, // 0
17 b+c, // 1
18 a+b+d+e+g, // 2
19 a+b+c+d+g, // 3
20 b+c+f+g, // 4
21 a+c+d+f+g, // 5
22 a+c+d+e+f+g, // 6
23 a+b+c, // 7
24 a+b+c+d+e+f+g, // 8
25 a+b+c+d+f+g, // 9
26 b+c+e+f+g, //H
27 d+e+f, //L
28 a+b+e+f+g, //P
29 a+e+f+g, //F
30 g, //-
31 a+b+c+e+f+g, //A
32 a+d+e+f+g //E
33 };
34
35 void sendbyte(unsigned char byte)
36 { P2=0;
37 1 sd=1;
38 1 P0=disp_code[byte];
39 1 sd=0;
40 1
41 1 }
42
43
44
45 void display(unsigned int i)
46 { unsigned int k;
47 1 unsigned char j,m,q;
48 1 unsigned int s[6];
49 1 s[0] = i/10000;
50 1 k = i%10000;
51 1 s[1] = k/1000;
52 1 k = k%1000;
53 1 s[2] = k/100;
54 1 k = k%100;
55 1 s[3] = k/10;
C51 COMPILER V7.06 DISP 07/21/2008 12:45:44 PAGE 2
56 1 k = k%10;
57 1 s[4] = k;
58 1 j=0x10;
59 1 q=2;
60 1
61 1 for(k = 0; s[k] == 0 && k<3; k++);
62 1 if (k==3) k--; // if all bytes are '0', get back one position
63 1 if(s[4]==0)
64 1 {
65 2 q--;
66 2 if(s[3]==0)q--;
67 2 }
68 1 do
69 1 {
70 2 if(k==2)
71 2 {
72 3 m=j>>4;
73 3 }
74 2 P2=(m|j);
75 2
76 2 P0=(disp_code[s[k++]]);
77 2 j<<=1;
78 2 }
79 1 while (k<3);
80 1 while(q&&(j<0x80))
81 1 {
82 2 P2=(m|j);
83 2 P0=(disp_code[s[k++]]);
84 2 j<<=1;
85 2 q--;
86 2 }
87 1 }
88 /*
89 void display(unsigned int i)
90 { unsigned int k;
91 unsigned char j,m,q;
92 unsigned int s[6];
93 s[0] = i/1000;
94 k = i%1000;
95 s[1] = k/100;
96 k = k%100;
97 s[2] = k/10;
98 k = k%10;
99 s[3] = k;
100 //k = k%10;
101 //s[4] = k;
102 j=0x80;
103 for(k = 0; s[k] == 0 && k<4; k++);
104 if (k==4) k--; // if all bytes are '0', get back one position
105
106 do
107 {
108
109
110 P2=j;
111
112 P0=(disp_code[s[k++]]);
113 j>>=1;
114 }
115 while (k<4);
116
117 } */
C51 COMPILER V7.06 DISP 07/21/2008 12:45:44 PAGE 3
118 void display_humidity(void)
119 {
120 1 P0=0x00;
121 1 P2=0xff;
122 1 switch(set)
123 1 {
124 2
125 2 case 0: //运行状态
126 2 if(AdValue>0)
127 2 {
128 3 sendbyte(13);
129 3 }
130 2 else
131 2 {
132 3
133 3 sendbyte(14);
134 3 }
135 2
136 2 display((int)temperature);
137 2 break;
138 2 case 1: //显示上限值状态
139 2 sendbyte(10);
140 2 display(upper_limit.X);
141 2 break;
142 2 case 2://显示上限值状态
143 2 sendbyte(11);
144 2 display(lower_limit.X);
145 2 break;
146 2 case 3://显示偏差值状态
147 2 sendbyte(12);
148 2 display(difference.X);
149 2 break;
150 2 case 4://显示AD590采集到的值
151 2
152 2 ADC=1;
153 2
154 2 sendbyte(15);
155 2
156 2
157 2 display((int)AdValue);
158 2 break;
159 2 case 5://显示Pt100采集到的值
160 2 ADC=0;
161 2
162 2
163 2
164 2 sendbyte(16);
165 2
166 2
167 2
168 2 display((int)AdValue);
169 2 break;
170 2 default:
171 2
172 2 break;
173 2 }
174 1
175 1
176 1 }
C51 COMPILER V7.06 DISP 07/21/2008 12:45:44 PAGE 4
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
p_temp . . . . . . . . . . . . . . . . * TAG * ----- UNION ----- 2
c. . . . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0000H 2
X. . . . . . . . . . . . . . . . . . MEMBER ----- U_INT 0000H 2
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
difference . . . . . . . . . . . . . . EXTERN DATA UNION ----- 2
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
AdValue. . . . . . . . . . . . . . . . EXTERN DATA FLOAT ----- 4
lower_limit. . . . . . . . . . . . . . EXTERN DATA UNION ----- 2
disp_code. . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 17
upper_limit. . . . . . . . . . . . . . EXTERN DATA UNION ----- 2
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
temperature. . . . . . . . . . . . . . EXTERN DATA FLOAT ----- 4
_sendbyte. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
byte . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
ADC. . . . . . . . . . . . . . . . . . EXTERN DATA BIT ----- 1
set. . . . . . . . . . . . . . . . . . EXTERN DATA U_CHAR ----- 1
display_humidity . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
sd . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A4H 1
_display . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
k. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
m. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
q. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
s. . . . . . . . . . . . . . . . . . AUTO DATA ARRAY 0001H 12
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 431 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 13
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 + -