📄 cj2.lst
字号:
C51 COMPILER V8.01 CJ2 03/22/2010 21:00:08 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE CJ2
OBJECT MODULE PLACED IN cj2.OBJ
COMPILER INVOKED BY: D:\学习软件\keil\C51\BIN\C51.EXE cj2.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<18B20_1.h> // 包含18b20函数
3 #define uchar unsigned char
4
5 sbit RE=P3^4;
6 uchar code display_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x77,0x7c};
7 uchar ti=0;temperature[4]={12,0,0,0};
8 bit t=0; //数据发送控制位
9
10 void display(); // 显示函数
11 void delay1(uchar a); // 延时函数
12 void judge_button(); // 判断按键
13 void more_send(); //数据发送函数
14
15 void main()
16 {
17 1 int temp;
18 1
19 1 TMOD=0x21; //定时计数器1设置为模式2 ,定时计数器0为模式1
20 1 TL1=0XFD;
21 1 TH1=0XFD;
22 1 TH0=(65536-50000*110592/120000)/256; //设置50ms溢出一次
23 1 TL0=(65536-50000*110592/120000)%256;
24 1 PCON=0X00;
25 1 SCON=0xf0; //工作在方式3,允许通信,SM2=1只有RB8为1时才接受数据,否则不要
26 1 TR0=1;
27 1 TR1=1;
28 1 EA=1;
29 1 ET0=1;
30 1 RE=1; //设置457为发送状态
31 1
32 1
33 1 while(1)
34 1 {
35 2 display();
36 2 judge_button();
37 2
38 2 if(ti==20)
39 2 {
40 3 ti=0;
41 3 temp=b20_temperate(); // 获得整数部分温度
42 3 temperature[1]=temp%1000/100; // 百位温度
43 3 temperature[2]=temp%100/10; // 十位温度
44 3 temperature[3]=temp%10; // 个位温度
45 3
46 3 if(t==1) //控制数据是否不断发送
47 3 {
48 4 more_send();
49 4 }
50 3 }
51 2 }
52 1
53 1 }
54
55
C51 COMPILER V8.01 CJ2 03/22/2010 21:00:08 PAGE 2
56 void delay(uchar a)
57 {
58 1 uchar i;
59 1 for(;a>0;a--)
60 1 for(i=100;i>0;i--);
61 1
62 1 }
63
64
65 void display()
66 {
67 1
68 1 P2=0XFF; // 显示从机的代号
69 1 P0=display_table[temperature[0]];
70 1 P2=0xfe;
71 1 delay(1);
72 1
73 1 P2=0XFF; // 显示温度
74 1 P0=display_table[temperature[1]];
75 1 P2=0xfd;
76 1 delay(1);
77 1
78 1 P2=0XFF;
79 1 P0=display_table[temperature[2]];
80 1 P2=0xfb;
81 1 delay(1);
82 1
83 1 P2=0XFF;
84 1 P0=display_table[temperature[3]]+0x80;
85 1 P2=0xf7;
86 1 delay(1);
87 1
88 1 }
89
90
91 void one_send() // 发送一次数据
92 {
93 1 uchar i;
94 1
95 1 SBUF=0XFD; //将本机的地址发送给主机
96 1 while(TI!=1);
97 1 TI=0;
98 1 delay(10);
99 1
100 1 for(i=0;i<4;i++) //发送要显示的4个数据
101 1 {
102 2 SBUF=temperature[i];
103 2 while(TI!=1);
104 2 TI=0;
105 2 delay(10);
106 2 }
107 1
108 1
109 1 }
110
111
112 void more_send() // 不断发送数据
113 {
114 1 uchar i;
115 1
116 1 SBUF=0XFE; //将本机的地址发送给主机
117 1 while(TI!=1);
C51 COMPILER V8.01 CJ2 03/22/2010 21:00:08 PAGE 3
118 1 TI=0;
119 1 delay(10);
120 1
121 1 SBUF=0XFE; //用来验证数据的传送
122 1 while(TI!=1);
123 1 TI=0;
124 1 delay(10);
125 1
126 1 for(i=0;i<4;i++) //发送要显示的4个数据
127 1 {
128 2 SBUF=temperature[i];
129 2 while(TI!=1);
130 2 TI=0;
131 2 delay(10);
132 2 }
133 1
134 1
135 1 }
136
137
138 void judge_button()
139 {
140 1 if(P1!=0xff) //判断是否有按钮按下
141 1 {
142 2 delay(10);
143 2
144 2 switch(P1)
145 2 {
146 3 case 0xfe: t=0; one_send(); break; // 发送一次数据
147 3 case 0xfd: t=1; break; // 连续发送数据
148 3 }
149 2
150 2 P1=0XFF;
151 2 }
152 1 }
153
154
155 void time() interrupt 1 //定时器
156 {
157 1 TH0=(65536-50000*110592/120000)/256;
158 1 TL0=(65536-50000*110592/120000)%256;
159 1
160 1 ti++;
161 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 527 ----
CONSTANT SIZE = 13 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 1
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 + -