📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 10/24/2006 10:05:24 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*
2 main.c
3 LM75A数字温度计
4 */
5
6
7 #include "Disp.h"
8 #include "I2C.h"
9 #include <reg51.h>
10 #include <string.h>
11 #include <stdio.h>
12
13
14 /*
15 函数:Delay()
16 功能:延时1ms~65.536s
17 参数:
18 t>0时,延时(t*0.001)s
19 t=0时,延时65.536s
20 */
21 void Delay(unsigned int t)
22 {
23 1 do
24 1 {
25 2 TH0 = 0xFC;
26 2 TL0 = 0x66;
27 2 TR0 = 1;
28 2 while ( !TF0 );
29 2 TR0 = 0;
30 2 TF0 = 0;
31 2 } while ( --t != 0 );
32 1 }
33
34
35 /*
36 函数:SysInit()
37 功能:系统初始化
38 */
39 void SysInit()
40 {
41 1 TMOD &= 0xF0;
42 1 TMOD |= 0x01; //设置T0为16位定时器
43 1 DispInit(); //数码管扫描显示初始化
44 1 I2C_Init(); //初始化I2C总线
45 1 }
46
47
48 /*
49 函数:LM75A_GetTemp
50 功能:读出LM75A的温度值
51 返回:LM75A温度寄存器的数值(乘以0.125可得到摄氏度值)
52 */
53 int LM75A_GetTemp()
54 {
55 1 unsigned char buf[2];
C51 COMPILER V7.06 MAIN 10/24/2006 10:05:24 PAGE 2
56 1 int t;
57 1 I2C_Gets(0x90,0x00,2,buf);
58 1 t = buf[0];
59 1 t <<= 8;
60 1 t += buf[1];
61 1 t >>= 5; //去掉无关位
62 1 return t;
63 1 }
64
65
66 /*
67 函数:DispTemp()
68 功能:在数码管上显示出温度值
69 参数:
70 t:补码,除以8以后才是真正温度值
71 */
72 void DispTemp(int t)
73 {
74 1 bit f = 1;
75 1 unsigned char i;
76 1 unsigned char c;
77 1 float x;
78 1 unsigned char s[10];
79 1 x = (float)t / 8.0;
80 1 sprintf(s,"%g",x);
81 1 for ( i=0; i<4; i++ )
82 1 {
83 2 c = s[i];
84 2 if ( c == '\0' ) break;
85 2 if ( c == '.' )
86 2 {
87 3 DispDotOn(i-1);
88 3 f = 0;
89 3 }
90 2 else
91 2 {
92 3 if ( !f )
93 3 {
94 4 switch(c)
95 4 {
96 5 case '3':
97 5 c = '0';
98 5 break;
99 5 case '8':
100 5 c = '5';
101 5 break;
102 5 default:
103 5 break;
104 5 }
105 4 }
106 3 DispChar(c);
107 3 }
108 2 }
109 1 if ( f )
110 1 {
111 2 DispDotOn(i-1);
112 2 DispChar('0');
113 2 }
114 1 }
115
116
117 void main()
C51 COMPILER V7.06 MAIN 10/24/2006 10:05:24 PAGE 3
118 {
119 1 int t;
120 1 SysInit();
121 1 for (;;)
122 1 {
123 2 t = LM75A_GetTemp();
124 2 DispClear();
125 2 DispTemp(t);
126 2 Delay(1000);
127 2 }
128 1 }
129
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 235 ----
CONSTANT SIZE = 3 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 16
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 + -