📄 tb1820gengxin.lst
字号:
C51 COMPILER V7.50 TB1820GENGXIN 03/14/2008 15:23:02 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TB1820GENGXIN
OBJECT MODULE PLACED IN TB1820gengxin.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TB1820gengxin.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*8M crystal ,temperture detector.The number of controlling
2 device is DS1820*/
3 #include<REGX51.h>
4 #include<absacc.h>
5 #include<stdio.h>
6 #include<math.h>
7 #include<float.h>
8 #define uchar unsigned char
9 #define uint unsigned int
10 #define toj P3_7
11 unsigned char xiaoshu(uchar i);
12 void delay() ;
13 char code codenumber[]={0x03,0x9f,0x25,0x0c,0x99,0x48,0x40,0x1f,0x00,0x09};
14 uchar termp1,termp2,set;
15 static uchar uptemp,downtemp,j;
16 int tmpt=0;
17 void dsreset(void) /*初始化*/
18 { unsigned char i;
19 1 start:
20 1 i=200;
21 1 P3_5=0;
22 1 while(i>0) i--;
23 1 P3_5=1;
24 1 i=20;
25 1 while(i>0) i--;
26 1 while(P3_5==1) goto start;
27 1 i=40;
28 1 while(i>0)
29 1 { if(P3_5==1) break;
30 2 i--;
31 2 }
32 1 if(i==0) goto start;
33 1 else P3_5=1;
34 1 i=160;
35 1 while(i>0) i--;
36 1 }
37 unsigned char tmpread2(void) /*读一字节*/
38 { unsigned char i, k,dat2;
39 1 bit testb;
40 1 dat2=0;
41 1 for(i=0;i<8;i++)
42 1 { P3_5=0;
43 2 k=4;
44 2 P3_5=1;
45 2 while(k>0) k--;
46 2 testb=P3_5;
47 2 k=18;
48 2 while(k>0) k--;
49 2 dat2=dat2>>1;
50 2 dat2=testb?dat2|0x80:dat2|0x00;
51 2 }
52 1 return(dat2);
53 1 }
54 void tmpwrite(unsigned char dat) /*写字节数据*/
55 {
C51 COMPILER V7.50 TB1820GENGXIN 03/14/2008 15:23:02 PAGE 2
56 1 unsigned int i;
57 1 unsigned char j;
58 1 bit testb;
59 1 for(j=0;j<8;j++)
60 1 {
61 2 testb=dat&0x01;
62 2 dat=dat>>1;
63 2 P3_5=0;
64 2 i=1;
65 2 while(i>0) i--;
66 2 P3_5=testb;
67 2 i=4;
68 2 while(i>0) i--;
69 2 P3_5=1;
70 2 }
71 1 }
72 void tmpchange(void) /*温度转换*/
73 {
74 1 dsreset();
75 1 tmpwrite(0xcc);
76 1 tmpwrite(0x44);
77 1 }
78 void showtermp() /*温度显示*/
79 {
80 1 unsigned char ten,xshu;
81 1 if(termp2&0x80)
82 1 { termp1=~termp1+1;
83 2 termp2=~termp2;
84 2 if(termp1==0)
85 2 termp2=termp2+1;
86 2 termp2=termp2*16;
87 2 termp1=termp1&0xf0;
88 2 termp1=termp1>>4;
89 2 tmpt=termp2+termp1;
90 2 ten=tmpt/10;
91 2
92 2 }
93 1 else{ termp2=termp2*16;
94 2 xshu=xiaoshu(termp1&0x0f) ;
95 2 termp1=termp1&0xf0;
96 2 termp1=termp1>>4;
97 2 tmpt=termp2+termp1;
98 2 ten=tmpt/10;
99 2
100 2 }
101 1
102 1 toj=0;
103 1
104 1 SBUF=codenumber[ten];
105 1 ten=tmpt%10; while(!TI) ; TI=0;
106 1 SBUF=codenumber[ten];
107 1 while(!TI) ; TI=0;
108 1 SBUF=codenumber[xshu];
109 1 while(!TI); TI=0;
110 1 toj=1;
111 1 delay();
112 1 }
113 unsigned char xiaoshu(uchar i)
114 { switch(i)
115 1 { case 0 : ;
116 2 case 1 : return( 0); break;
117 2 case 2 :return (1);break;
C51 COMPILER V7.50 TB1820GENGXIN 03/14/2008 15:23:02 PAGE 3
118 2 case 3 : ;
119 2 case 4 :return (2) ; break;
120 2 case 5 :return 3 ;break;
121 2 case 6 : ;
122 2 case 7 : return 4 ;break;
123 2 case 8 : return 5 ; break;
124 2 case 9 : ;
125 2 case 10 : return 6 ;break;
126 2 case 11 : ;
127 2 case 12 :return 7 ; break;
128 2 case 13 : return 8 ;break;
129 2 case 14 : ;
130 2 case 15 :return 9 ; break;
131 2 }
132 1 }
133
134 void delay()
135 { unsigned char i,j;
136 1 for(i=0;i<250;i++)
137 1 for(j=0;j<254;j++);
138 1 }
139 void control(void) /*温度设置*/
140 { uchar i,l;
141 1 if(P3_2==0)
142 1 { i=20;
143 2 while(i--);
144 2 if(P3_2==0)
145 2 { while(P3_2==0);
146 3 set=1; }
147 2
148 2 }
149 1
150 1 while(set==1)
151 1 {
152 2 if(P3_3==0)
153 2 { for(i=0;i<8;i++);
154 3 if(P3_3==0)
155 3 { while(P3_3==0);
156 4 uptemp++;
157 4 if(uptemp==85)
158 4 uptemp=35;
159 4 l=0;
160 4 }
161 3 }
162 2
163 2 if(P3_4==0)
164 2 { for(i=0;i<8;i++);
165 3 if(P3_4==0)
166 3 { while(P3_4==0);
167 4 downtemp--;
168 4 if(downtemp==3)
169 4 downtemp=30;
170 4 l=1; }
171 3 }
172 2
173 2
174 2 if(P3_2==0)
175 2 { i=20;
176 3 while(i--);
177 3 if(P3_2==0)
178 3 { while(P3_2==0);
179 4 set=0; }
C51 COMPILER V7.50 TB1820GENGXIN 03/14/2008 15:23:02 PAGE 4
180 3
181 3 }
182 2 toj=0;
183 2 switch(l)
184 2 { case 0 : { SBUF=codenumber[uptemp/10];
185 4 while(!TI) ; TI=0;
186 4 SBUF=codenumber[uptemp%10];
187 4 while(!TI);TI=0;
188 4 SBUF=0xff;
189 4 while(!TI); TI=0; break; }
190 3 case 1 : { SBUF=codenumber[downtemp/10];
191 4 while(!TI) ; TI=0;
192 4 SBUF=codenumber[downtemp%10];
193 4 while(!TI);TI=0;
194 4 SBUF=0xff;
195 4 while(!TI) ; TI=0; break; }
196 3
197 3 }
198 2 toj=1;
199 2 delay();
200 2 toj=0;
201 2 delay();
202 2 toj=1;
203 2 }
204 1 }
205
206
207 void out(void)
208 { if(downtemp<tmpt&&tmpt<uptemp)
209 1 { P1_1=1; P1_0=P1_2=0; }
210 1 else if(tmpt>uptemp||tmpt==uptemp)
211 1 { P1_0=1;P1_1=P1_2=0;}
212 1 else { P1_2=1;P1_0=P1_1=0; }
213 1 }
214 void main(void)
215 {
216 1 unsigned char i;
217 1 SCON=0x00;
218 1 ES=0;
219 1 set=0;
220 1 uptemp=40;
221 1 downtemp=35;
222 1
223 1 do { control();
224 2 P3_5=1;
225 2 tmpchange();
226 2 dsreset();
227 2 tmpwrite(0xcc);
228 2 tmpwrite(0xbe);
229 2 termp1=tmpread2();
230 2 termp2=tmpread2();
231 2 P3_5=0;
232 2 i=150;
233 2 while(i>0) i--;
234 2 showtermp();
235 2 out();
236 2 }while(1);
237 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 719 ----
C51 COMPILER V7.50 TB1820GENGXIN 03/14/2008 15:23:02 PAGE 5
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 2
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -