📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 11/21/2010 00:20:27 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*********************************************************************/
2 //读取DS18B20温度,通过数码管显示,在温度超过35度时继电器吸合
3 /*********************************************************************/
4 #include<reg51.h>
5 #include"18B20.c"
6 #define uchar unsigned char
7 #define uint unsigned int
8
9 code uchar seven_seg[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
10 code uchar seven_bit[] = {0xfe,0xfd,0xfb,0xf7};
11 uchar cp;
12 uint temp1,temp2;
13 sbit jdq = P2^6;
14 void timer0_init(void) //初始化
15 {
16 1 TMOD = 0x01;
17 1 TH0 = 0xec;
18 1 TL0 = 0x78;
19 1 TR0 = 1;
20 1 EA = 1;
21 1 ET0 = 1;
22 1 }
23 /*****************************************************************************/
24 void timer0_isr(void) interrupt 1 //中断
25 {
26 1 uchar j;
27 1 TR0 = 0;
28 1 EA = 0;
29 1 TH0 = 0xec;
30 1 TL0 = 0x78;
31 1 TR0 = 1;
32 1 EA = 1;
33 1 cp++;
34 1 if(cp >= 200) //刚好1秒
35 1 {
36 2 cp = 0;
37 2 temp1 = Read_Temperature();//得到温度
38 2 if((temp1 & 0x80) == 0x80) //如果温度为负值
39 2 {
40 3
41 3 temp2 =0x7f & ~temp1 + (0x0f & ~c) /15; //整数处理,需要加上小数来的借位
42 3 c = 0x0f & ~c + 0x01; //小数处理
43 3 }
44 2 else temp2 = temp1;//如果温度为正值,不用处理
45 2 }
46 1 P0 = 0xff;
47 1 switch(j)
48 1 {
49 2 case 0:P0 = seven_seg[c * 10/16];break;//显示小数
50 2 case 1:P0 = 0x7f & seven_seg[temp2 % 10];break;//显示个位并加上小数点
51 2 case 2:{
52 3 if((temp2 < 10) && (temp1 < 0x80)){P0 = 0xff;break;}//如果温度小于10度,且为正值,十位0不显示
53 3 if((temp1 > 0x80) && (temp2 < 10)){P0 = 0xbf;break;}//如果温度小于10度,且为负值,十位0不显示,只显示
-“-”
54 3 P0 = seven_seg[temp2 / 10]; break;//如果温度大于10度,10位正常显示
C51 COMPILER V8.02 MAIN 11/21/2010 00:20:27 PAGE 2
55 3
56 3 }
57 2 case 3:{
58 3 if((temp1 > 0x80) && ((temp2 / 10) > 0))//如果温度为负值,且十位不为0,百位显示“-”
59 3 P0 = 0xbf;
60 3 break;
61 3 }
62 2 }
63 1 P2 = seven_bit[j];
64 1 j++;
65 1 if(j >= 4)
66 1 j=0;
67 1 }
68 void main(void)
69 {
70 1 timer0_init();
71 1
72 1 while(1)
73 1 {
74 2 if(temp2 >= 35)
75 2 jdq = 0;
76 2 else
77 2 jdq = 1;
78 2 }
79 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 597 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 2
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 + -