📄 18b20.lst
字号:
C51 COMPILER V8.02 18B20 04/09/2009 23:55:27 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 18B20
OBJECT MODULE PLACED IN 18b20.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 18b20.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <intrins.h>
3 #include"7219.h"
4
5 #define uint unsigned int
6 #define uchar unsigned char
7 uint qian,bai,shi,ge;
8 float temps;//距离的个位、十位、百位
9 uchar k[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b};
10
11
12 sbit temp=P0^6;
13 bit yes;
14
15 void delay1820(uchar w)
16 {
17 1 unsigned char k;
18 1 for(k=w;k>0;k--)
19 1 {}//延时计算方法 w*8+19
20 1 }
21
22 void delay13us1820()
23 {
24 1 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
25 1 }
26 void init1820()
27 {
28 1 temp=0;
29 1 delay1820(90);
30 1 temp=1;
31 1 delay13us1820();
32 1 while(temp);
33 1
34 1 delay1820(4);
35 1 temp=1;
36 1 delay1820(60);
37 1
38 1 }
39
40 void write1820(uchar wdata)
41 {
42 1 char i,t;
43 1 for(i=8;i>0;i--)
44 1 {
45 2
46 2 t=wdata&0x01;
47 2 temp=0;
48 2 _nop_();
49 2 _nop_();
50 2 if(t)
51 2 temp=t;
52 2 delay1820(6);
53 2 temp=1;
54 2 wdata=wdata>>1;
55 2 delay1820(3);
C51 COMPILER V8.02 18B20 04/09/2009 23:55:27 PAGE 2
56 2 }
57 1 }
58
59 uchar read1820()
60 {
61 1 char i;
62 1 uchar dat;
63 1 for(i=8;i>0;i--)
64 1 {
65 2 dat>>=1;
66 2 temp=0;
67 2 _nop_();
68 2 temp=1;
69 2 delay13us1820();
70 2 if(temp)
71 2 dat|=0x80;
72 2 temp=1;
73 2 delay1820(6);
74 2 }
75 1 return(dat);
76 1 }
77 void max7219show()
78 {
79 1 Write(0x04,k[ge]);
80 1 Write(0x03,k[shi]);
81 1 Write(0x02,k[bai]);
82 1 Write(0x01,k[qian]);
83 1 }
84
85 void readtemp()
86 {
87 1 uint templ,temph;
88 1 init1820();
89 1 write1820(0xcc);
90 1 write1820(0x44);
91 1 init1820();
92 1 write1820(0xcc);
93 1 write1820(0xbe);
94 1 templ=read1820();
95 1 temph=read1820();
96 1 //templ=(templ>>4)&0x0f;
97 1 temph=(temph<<8);//&0x07;
98 1 temps=templ|temph;
99 1 temps=temps*0.0625;
100 1 temps=temps*100;
101 1 }
102 void work(void)
103 { uint value;
104 1 value=temps;
105 1 qian=value/1000;
106 1 bai=(value-qian*1000)/100;
107 1 shi=(value-qian*1000-bai*100)/10;
108 1 ge=value-qian*1000-bai*100-shi*10;
109 1
110 1 }
111 void main()
112 {
113 1
114 1 init7219();
115 1 while(1)
116 1 {
117 2 readtemp();
C51 COMPILER V8.02 18B20 04/09/2009 23:55:27 PAGE 3
118 2 work();
119 2 max7219show();
120 2 delay1820(50000);
121 2 delay1820(50000);
122 2 delay1820(50000);
123 2 delay1820(50000);
124 2 delay1820(50000);
125 2 delay1820(50000);
126 2 delay1820(50000);
127 2
128 2 }
129 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 590 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 22 3
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -