📄 temp.lst
字号:
C51 COMPILER V8.02 TEMP 03/25/2008 11:08:26 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TEMP
OBJECT MODULE PLACED IN temp.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE temp.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <iccard.h>
3 #include<stdio.h>
4 //bit key_flag;
5 //uchar key_value;
6 #define uchar unsigned char
7 #define uint unsigned int
8 #define nop() _nop_();_nop_();
9
10 uint16 temper;
11 uchar fuhao;
12 unsigned char tmp;
13
14 sbit key0=P1^0;
15 //sbit dat_1820=P2^4;
16 sbit CLK=P0^6;
17 sbit DAT=P0^4;
18 sbit DCLK=P0^7;
19 //sbit CS=P2^3;
20 uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//0-9,-,全灭
21 void send_char(unsigned char txd);
22
23 //串口初始化
24 void initcom(void)
25 {
26 1 TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
27 1 TH1 = 0x0F3; // 波特率2400
28 1 TL1 = 0x0F3;
29 1
30 1 SCON = 0x50; // 设定串行口工作方式
31 1 PCON &= 0xef; // 波特率不倍增
32 1
33 1 ES=1; //允许串行口中断
34 1 TR1 = 1; // 启动定时器1
35 1 IE = 0x00; // 禁止任何中断
36 1 }
37
38 void send_char(unsigned char txd)
39 // 传送一个字符
40 {
41 1 SBUF = txd;
42 1 while(!TI); // 等特数据传送
43 1 TI = 0; // 清除数据传送标志
44 1 }
45
46
47 void delay(uchar x)//系统延时
48 {
49 1 while(x--);
50 1 }
51
52
53 void delayns()//延时
54 {
55 1 uchar i;
C51 COMPILER V8.02 TEMP 03/25/2008 11:08:26 PAGE 2
56 1 for(i=0;i<10;i++);
57 1 }
58 void delayms(uint32 x)//长延时
59 {
60 1 uint32 i;
61 1 for(;x>0;x--)
62 1 for(i=5000;i>0;i--);
63 1 }
64 ////--------------------------------------------------
65 //=====================================================
66 void sendbyte(uchar byte)
67 {
68 1 uchar num,i;
69 1 num=tab[byte];
70 1
71 1 for(i=0;i<8;i++)
72 1 {
73 2 CLK=0;
74 2 DAT=num&0x80;
75 2 num=num<<1;
76 2
77 2 CLK=1;
78 2 }
79 1 // RCLK=0;
80 1 // nop();
81 1 // nop();
82 1 // RCLK=1;
83 1
84 1 }
85
86 void out595(void)
87 {
88 1 DCLK=0;
89 1 delay(29);
90 1 // nop();
91 1 DCLK=1;
92 1 }
93
94 void display(uchar number)
95 {
96 1 uchar sw,gw;
97 1 sw=number/10;
98 1 gw=number-10*sw;
99 1 sendbyte(gw);
100 1 sendbyte(sw);
101 1 out595();
102 1 }
103
104
105 /*****************LCD程序END****************/
106 uchar init_1820()//初始化1820
107 {
108 1 dat_1820=1;
109 1 delay(8);
110 1 dat_1820=0;
111 1 delay(80);
112 1 dat_1820=1;
113 1 delay(14);
114 1 if(dat_1820==0)
115 1 {
116 2 delay(20);
117 2 return(1);
C51 COMPILER V8.02 TEMP 03/25/2008 11:08:26 PAGE 3
118 2 }
119 1 else return(2);
120 1 dat_1820=1;
121 1 delay(20);
122 1
123 1 }
124
125 void wr_1820(uchar x)//写入1字节数据
126 {
127 1 uchar i;
128 1 for(i=8;i>0;i--)
129 1 {
130 2 dat_1820=1;
131 2 delay(1);
132 2 dat_1820=0;
133 2 delay(1);
134 2 if(x&0x01)dat_1820=1;
135 2 else dat_1820=0;
136 2 delay(20);
137 2
138 2 dat_1820=1;
139 2 // delay(1);
140 2 x>>=1;
141 2 }
142 1
143 1 }
144
145 void rd_1820()//读1字节数据
146 {
147 1 uint16 i;
148 1 uchar j;
149 1 i=0;
150 1 for(j=16;j>0;j--)
151 1 {
152 2 dat_1820=1;
153 2 delay(1);
154 2 dat_1820=0;
155 2 delay(1);
156 2 dat_1820=1;
157 2 if(dat_1820)
158 2 {
159 3 i>>=1;
160 3 i=i|0x8000;
161 3 }
162 2 else i>>=1;
163 2 delay(20);
164 2 dat_1820=1;
165 2
166 2 }
167 1 temper=i;
168 1 }
169
170
171 void get_temper()//进行温度测量并取温度数据
172 {
173 1 uchar i;
174 1 i=init_1820();//
175 1 if(i==1)//判断1820是否存在
176 1 {
177 2 wr_1820(0xcc);//跳过rom
178 2 wr_1820(0x44);//发送温度转换指令
179 2 delayms(3);
C51 COMPILER V8.02 TEMP 03/25/2008 11:08:26 PAGE 4
180 2 init_1820();
181 2 wr_1820(0xcc);//跳过rom
182 2 wr_1820(0xbe);//去温度数据
183 2 rd_1820();//读出数据
184 2 }
185 1
186 1 }
187
188 void init_sys()//系统初始化设置
189 {
190 1 // P0=0;//P0口清零
191 1 P2=0x86;//屏蔽其它模块
192 1 P1=P1&0X01;;//
193 1 }
194
195
196 void main()
197 { uchar t;
198 1 uchar sw,gw,k;
199 1
200 1 initcom();
201 1 init_sys();
202 1
203 1
204 1 while(1)
205 1 {//display(11);
206 2 get_temper();
207 2 if(!key0)
208 2 {
209 3 delayms(5);
210 3 if(!key0)
211 3 {
212 4 t=temper/16;
213 4 //k=(t&0xf0)*16+(t&0x0f);
214 4 k=(temper)/16;
215 4 /*{
216 4 if(k>=16)
217 4 {k+=16;}
218 4 if(k>=32)
219 4 {k+=32;}
220 4 if(k>=48)
221 4 {k+=48;}
222 4 if(k>=64)
223 4 {k+=64;}
224 4 }*/
225 4 sw=k/10;
226 4 gw=k%10;
227 4 send_char(t);
228 4 display(k);
229 4 }
230 3 }
231 2
232 2 /* if(RI)
233 2 {RI=0;
234 2 tmp=SBUF;
235 2 if(tmp==0x01)
236 2 { get_temper();
237 2 delay(5);
238 2 t=temper/16;
239 2 send_char(t);
240 2 }
241 2
C51 COMPILER V8.02 TEMP 03/25/2008 11:08:26 PAGE 5
242 2 }*/
243 2 else delayms(5);
244 2 }
245 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 449 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 10
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 + -