📄 time_tester.lst
字号:
C51 COMPILER V7.06 TIME_TESTER 04/04/2007 09:16:12 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TIME_TESTER
OBJECT MODULE PLACED IN time_tester.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE time_tester.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <intrins.h>
3 #define uchar unsigned char
4 #define Display_Data P1
5 #define Bit P0
6 #define Time_Value_10 246
7 #define Time_Value_100 156
8 #define Time_Value_30 226
9 #define Multi 1.49
10 #define Multi_B 3.03
11 #define ASK 0xFF
12 #define ACK 0x00
13 #define Test_Start 0x11
14 #define Times_Input 0x22
15 sbit Start=P2^0;
16 sbit No=P2^1;
17 sbit Nc=P2^2;
18 sbit Coil=P2^3;
19 uchar code Display_Code[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
20 uchar code Display_Code_Point[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
21 uchar Dis_Value[4][3]={0},Temp[3]={0};//TH0_Value=255,TL0_Value=246;
22 unsigned int T_Count=0,Test_Data[4]={0};
23 uchar Test_Times=1;
24 bit Test_Flag=0;
25 bit Commu_OK=0;
26 bit KB_Pro(void);
27 void Dis_Pro(void);
28 bit PDT_Pro(void);
29 bit BT_Pro(void);
30 void Delay(uchar i);
31 void Code_Convert(uchar m,uchar *Value);
32 void Num_Convert(unsigned int i);
33 //void T0_Ini(void);
34 void Code_Convert_1(uchar m,uchar *Value);
35 void Recieve_Pro(void);
36 void Send_Pro(void);
37
38 main()
39 {
40 1 TMOD=0x22;//T0 and T1 both Method 2;
41 1 TH0=Time_Value_10;
42 1 TL0=Time_Value_10;
43 1 SCON=0x50;//UART method 1;recieved enable.
44 1 PCON=0x80;//Boud Double;
45 1 TH1=0xF3;//4800b;
46 1 TL1=0xF3;
47 1 TR1=1;
48 1 //ET0=1;
49 1 //EA=1;
50 1 while(1)
51 1 {
52 2 Recieve_Pro();
53 2 if(KB_Pro())
54 2 {
55 3 uchar i=0;
C51 COMPILER V7.06 TIME_TESTER 04/04/2007 09:16:12 PAGE 2
56 3 for(i=0;i<Test_Times;i++)
57 3 {
58 4 PDT_Pro();
59 4 BT_Pro();
60 4 if(Commu_OK==1) Send_Pro();
61 4 Dis_Pro();
62 4 }
63 3 }
64 2 }
65 1 }
66
67 void Recieve_Pro(void)
68 {
69 1 uchar x=0;
70 1 static bit i=0;
71 1 if(RI)
72 1 {
73 2 RI=0;
74 2 x=SBUF;
75 2 //Dis_Pro();
76 2 if(i==0)
77 2 {
78 3 if(x==ASK)
79 3 {
80 4 SBUF=ACK;
81 4 while(!TI);
82 4 TI=0;
83 4 Commu_OK=1;
84 4 }
85 3 if(x==Test_Start) Test_Flag=1;
86 3 }
87 2 else
88 2 {
89 3 Test_Times=x;
90 3 i=0;
91 3 }
92 2 if(x==Times_Input) i=1;
93 2 }
94 1 }
95
96 void Send_Pro(void)
97 {
98 1 uchar x=0,m=0;
99 1 for(m=0;m<4;m++)
100 1 {
101 2 x=Test_Data[m]/256;//send high 8 bit;
102 2 SBUF=x;
103 2 while(!TI);
104 2 TI=0;
105 2 Delay(10);
106 2 x=Test_Data[m]%256;//send low 8 bit;
107 2 SBUF=x;
108 2 while(!TI);
109 2 TI=0;
110 2 Delay(10);
111 2 }
112 1 }
113
114 bit KB_Pro(void)
115 {
116 1 if(Start==0)
117 1 {
C51 COMPILER V7.06 TIME_TESTER 04/04/2007 09:16:12 PAGE 3
118 2 Delay(50);
119 2 if(Start==0)
120 2 {
121 3 Num_Convert(999);
122 3 Code_Convert(0,Temp);
123 3 Code_Convert(1,Temp);
124 3 Code_Convert(2,Temp);
125 3 Code_Convert(3,Temp);
126 3 Test_Data[0]=999;
127 3 Test_Data[1]=999;
128 3 Test_Data[2]=999;
129 3 Test_Data[3]=999;
130 3 TR0=0;
131 3 T_Count=0;
132 3 Display_Data=0xFF;
133 3 Bit=0xFF;
134 3 Test_Times=1;
135 3 return(1);
136 3 }
137 2 }
138 1 if(Test_Flag)
139 1 {
140 2 Test_Flag=0;
141 2 return(1);
142 2 }
143 1 return(0);
144 1 }
145
146 void Dis_Pro(void)
147 {
148 1 uchar m=0,n=0,y=0xFE;//,i=0;
149 1 TR0=1;
150 1 for(m=0;m<4;m++)
151 1 {
152 2 T_Count=0;
153 2 //TR0=1;
154 2 TF0=0;
155 2 TH0=Time_Value_100;
156 2 TL0=Time_Value_100;
157 2 while(T_Count<=240)
158 2 {
159 3 for(n=0;n<3;n++)
160 3 {
161 4 Display_Data=Dis_Value[m][n];
162 4 Bit=y;
163 4 y=~y;
164 4 y<<=1;
165 4 if(y==8) y=1;
166 4 y=~y;
167 4 Delay(2);
168 4 //if(KB_Pro()) return;
169 4 if(TF0)
170 4 {
171 5 TF0=0;
172 5 T_Count++;
173 5 }
174 4 }
175 3 }
176 2 Bit=0xFF;
177 2 Delay(200);
178 2 Delay(100);
179 2 T_Count=0;
C51 COMPILER V7.06 TIME_TESTER 04/04/2007 09:16:12 PAGE 4
180 2 }
181 1 TR0=0;
182 1 TF0=0;
183 1 TH0=Time_Value_10;
184 1 TL0=Time_Value_10;
185 1 }
186
187 bit PDT_Pro(void)
188 {
189 1 TH0=Time_Value_10;
190 1 TL0=Time_Value_10;
191 1 T_Count=0;
192 1 Coil=0;
193 1 TR0=1;
194 1 while(!No)
195 1 {
196 2 while(!TF0);
197 2 TF0=0;
198 2 T_Count++;
199 2 if(T_Count>=9999)
200 2 {
201 3 Num_Convert(999);
202 3 Code_Convert(0,Temp);
203 3 Coil=1;
204 3 //break;
205 3 return(0);
206 3 }
207 2 }
208 1 TR0=0;
209 1 T_Count=T_Count*Multi;
210 1 Test_Data[0]=T_Count;
211 1 if(T_Count<1000)
212 1 {
213 2 Num_Convert(T_Count);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -