📄 test.lst
字号:
C51 COMPILER V7.00 TEST 06/23/2004 18:23:19 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN Test.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Test.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <AT89X52.H>
2 #define USE_WATCHDOG
3 #include "User.H"
4 #include "24CXX.H"
5
6 #define SA 0x08
7 #define SB 0x04
8 #define SC 0x02
9 #define SD 0x40
10
11 #define SE 0x01
12 #define SF 0x80
13 #define SG 0x10
14 #define SH 0x20
15
16 struct {
17 byte x[8];
18 byte Min[8];
19 byte Max[8];
20 }Gate;
21
22 void InitMaxMin()
23 {
24 1 byte i;
25 1
26 1 for(i=0; i<8; i++)
27 1 {
28 2 Gate.Min[i]=255;
29 2 Gate.Max[i]=0;
30 2 }
31 1 }
32
33 void GetCurrentToX()
34 {
35 1 byte i,k;
36 1
37 1 for(i=0; i<8; i++)
38 1 {
39 2 Gate.x[i]=255;
40 2 for(k=0; k<255; k++)
41 2 {
42 3 P2=k; Delay10us();
43 3 if(P1&(0x01<<i))
44 3 {
45 4 Gate.x[i]=k;
46 4 break;
47 4 }
48 3 }
49 2 }
50 1 }
51
52 void UpdateMaxMin()
53 {
54 1 byte i;
55 1 for(i=0; i<8; i++)
C51 COMPILER V7.00 TEST 06/23/2004 18:23:19 PAGE 2
56 1 {
57 2 if(Gate.x[i]>Gate.Max[i])
58 2 Gate.Max[i]=Gate.x[i];
59 2 if(Gate.x[i]<Gate.Min[i])
60 2 Gate.Min[i]=Gate.x[i];
61 2 }
62 1 }
63
64 void SetGate()
65 {
66 1 byte i;
67 1 for(i=0; i<8; i++)
68 1 Gate.x[i] = Gate.Min[i]/2 + Gate.Max[i]/2;
69 1 }
70
71 void LoadGate(byte *buffer)
72 {
73 1 Read24CXX(0,buffer,4);
74 1 Sleep(10);
75 1 Read24CXX(4,buffer+4,4);
76 1 Sleep(10);
77 1 }
78
79 void SaveGate(byte *buffer)
80 {
81 1 Write24CXX(0,buffer,4);
82 1 Sleep(10);
83 1 Write24CXX(4,buffer+4,4);
84 1 Sleep(10);
85 1 }
86
87 byte ReadIOPort()
88 {
89 1 byte i, IO_Port=0x00;
90 1 for(i=0; i<8; i++)
91 1 {
92 2 P2=Gate.x[i];
93 2 Delay10us();
94 2 IO_Port|=P1&(0x01<<i);
95 2 }
96 1 return IO_Port;
97 1 }
98
99 byte Convert(byte x)
100 {
101 1 byte temp=0;
102 1
103 1 if(x&SA) temp|=0x01;
104 1 if(x&SB) temp|=0x02;
105 1 if(x&SC) temp|=0x04;
106 1 if(x&SD) temp|=0x08;
107 1 if(x&SE) temp|=0x10;
108 1 if(x&SF) temp|=0x20;
109 1 if(x&SG) temp|=0x40;
110 1 if(x&SH) temp|=0x80;
111 1
112 1 return ~temp;
113 1 }
114
115 void InitTimer(void)
116 {
117 1 TMOD=0x1;
C51 COMPILER V7.00 TEST 06/23/2004 18:23:19 PAGE 3
118 1 TH0=0xd8;
119 1 TL0=0xf0;
120 1 TR0=1;
121 1 ET0=1;
122 1 EA=1;
123 1 }
124
125 void Timer0(void) interrupt 1
126 {
127 1 TH0=0xd8;
128 1 TL0=0xf0;
129 1
130 1 FeedDog();
131 1 }
132
133
134 void main()
135 {
136 1 static byte Port,History=0xFF;
137 1 InitTimer();
138 1 LoadGate(Gate.x);
139 1
140 1 while(1)
141 1 {
142 2 if(P3_2==0)
143 2 {
144 3 P0=0xAA;
145 3 InitMaxMin();
146 3 while(P3_2==0)
147 3 {
148 4 GetCurrentToX();
149 4 UpdateMaxMin();
150 4 }
151 3 SetGate();
152 3 SaveGate(Gate.x);
153 3 }
154 2 Port=Convert(ReadIOPort());
155 2 if(Port!=History);
156 2 P0=Port;
157 2 }
158 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 862 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 26 32
IDATA SIZE = ---- ----
BIT SIZE = 1 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -