📄 lcd1602.lst
字号:
C51 COMPILER V8.02 LCD1602 05/03/2007 09:16:11 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN LCD1602.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD1602.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "lcd1602.h"
2 #include "ds18b20.h"
3 #include <stdio.h>
4
5 void interrupt_init(void);
6 void serial_init(void);
7 void time0_init(void);
8 //unsigned char temp[5];
9 extern char xiaoshu_temp[5],zhen_temp[4];
10 extern bit flag;
11 extern bit dot_dis;
12 uchar data serial1=0;
13 uchar data serial2=0;
14 bit intval1=0;
15 bit intval2=0;
16 bit int_pro1=0;
17 bit int_pro2=0;
18 bit clr_screen=0;
19 uchar adc_val=0;
20 sbit P1_7 = P1^7;
21
22
23 void main(void)
24 {
25 1 uchar *str="temperature is ";
26 1 uchar *str1="serial1 !";
27 1 uchar *str2="serial2 !";
28 1 serial_set();
29 1 Lcd_Init();
30 1 interrupt_init();
31 1 time0_init();
32 1 ClrScreen();
33 1 GotoXY(0,0);
34 1 Print(str);
35 1 dot_dis=1;
36 1 P1_7=0;
37 1 while(1)
38 1 {
39 2 if(intval1&&int_pro1) //如果触发中断0,即采集从机1的值
40 2 { clr_screen=1;
41 3
42 3 serial_init(); //初始化串口
43 3 SBUF=0x7f; //发送从机1地址0x7f
44 3 while(!TI); //等待发送完成
45 3 TI=0;
46 3 intval1=0;//0
47 3
48 3 while(int_pro1) //如果没触发第二次中断0,循环
49 3 {
50 4 if(serial1) //从机1响应是否正确
51 4 {
52 5 if(serial1==1) //如果从机正确接收到地址
53 5 { SCON=0xd0; //TB8=0
54 6
55 6 serial1=0;
C51 COMPILER V8.02 LCD1602 05/03/2007 09:16:11 PAGE 2
56 6 SBUF=0xaa; //发送A/D转换命令0xaa
57 6 while(!TI);
58 6 TI=0;
59 6 }
60 5 if(serial1==2) //如果从机正确接受到转化命令0xaa
61 5 {
62 6 serial1=0; //
63 6 SBUF=0xbb; //发送把从机转化结果送主机的命令0xbb
64 6 while(!TI);
65 6 TI=0;
66 6 }
67 5 if(serial1==3) //如果从机发送结果完成
68 5 {
69 6 ClrScreen();
70 6 serial1=0;
71 6
72 6 Print("adc_success1!");//显示结果
73 6 }
74 5 }
75 4 }
76 3 }
77 2 if(intval2&&int_pro2)
78 2 { clr_screen=1;
79 3 serial_init(); //初始化串口
80 3 SBUF=0x8f; //发送从机2地址0x8f
81 3 while(!TI); //等待发送完成
82 3 TI=0;
83 3 intval2=0;//0
84 3 while(int_pro2) //如果没触发第二次中断1,循环
85 3 {
86 4 if(serial2) //从机2响应是否正确
87 4 {
88 5 if(serial2==1) //如果从机正确接收到地址
89 5 {
90 6 SCON=0xd0;
91 6 serial2=0;
92 6 SBUF=0xaa; //发送A/D转换命令0xaa
93 6 //while(!TI);
94 6 //TI=0;
95 6 }
96 5 if(serial2==2) //如果从机正确接受到转化命令0xaa
97 5 {
98 6 serial2=0; //
99 6 SBUF=0xbb; //发送把从机转化结果送主机的命令0xbb
100 6 //while(!TI);
101 6 //TI=0;
102 6 }
103 5 if(serial2==3) //如果从机发送结果完成
104 5 {
105 6 serial2=0;
106 6 ClrScreen();
107 6 Print("adc_success2!");//显示结果
108 6 //P1_7=~P1_7;
109 6 }
110 5 }
111 4 }
112 3 }
113 2 if(clr_screen)
114 2 {
115 3 clr_screen=0;
116 3 ClrScreen();
117 3 Print(str);
C51 COMPILER V8.02 LCD1602 05/03/2007 09:16:11 PAGE 3
118 3 }
119 2 ds18b20_process(); //温度处理函数
120 2 }
121 1 }
122 void interrupt_init(void)
123 {
124 1 EA=1;
125 1 EX0=1;
126 1 EX1=1;
127 1 IT0=1;
128 1 IT1=1;
129 1
130 1 }
131 void serial_init(void)
132 {
133 1 SCON=0xd8;
134 1 TMOD=0x20;
135 1 TH1=0xfd;
136 1 TL0=0xfd;
137 1 TR1=1;
138 1 ES=1;
139 1 }
140 void interrupt0(void) interrupt 0 using 1
141 {
142 1 intval1=1;
143 1 int_pro1=~int_pro1;
144 1 }
145 void interrupt4(void) interrupt 4 using 2
146 {
147 1 ES=0;
148 1 if(TI)
149 1 {
150 2 TI=0;
151 2 }
152 1 if(RI)
153 1 {
154 2 RI=0;
155 2 if(SBUF==0x11) //如果接收到从机1发送的地址响应码0x11
156 2 {
157 3 serial1=1; //置serial1=1
158 3
159 3 }
160 2 if(SBUF==0x22) //如果接收到从机1发送的A/D转换命令的响应码0x22
161 2 {
162 3 serial1=2; //置serial1=2
163 3
164 3 }
165 2 if(SBUF==0x33) //如果接收到从机1发送把从机转化结果送主机的命令响应码0x33
166 2 {
167 3 serial1=3; //置serial1=3
168 3
169 3 SBUF=0xcc;
170 3 while(!TI);
171 3 TI=0;
172 3 while(!RI) //等待接收
173 3 ;
174 3
175 3 RI=0;
176 3 adc_val=SBUF; //接收转换值
177 3
178 3 }
179 2 if(SBUF==0x44) //如果接收到从机1发送的地址响应码0x44
C51 COMPILER V8.02 LCD1602 05/03/2007 09:16:11 PAGE 4
180 2 {
181 3 serial2=1; //置serial2=1
182 3 }
183 2 if(SBUF==0x55) //如果接收到从机1发送的A/D转换命令的响应码0x55
184 2 { //P1_7=1;
185 3 serial2=2; //置serial2=2
186 3 }
187 2 if(SBUF==0x66) //如果接收到从机1发送把从机转化结果送主机的命令响应码0x66
188 2 {
189 3 serial2=3; //置serial2=3
190 3 SBUF=0xcc;
191 3 while(!TI);
192 3 TI=0;P1_7=~P1_7;
193 3 while(!RI)
194 3 ;
195 3 RI=0;
196 3
197 3 adc_val=SBUF; //接收转换值
198 3 //ClrScreen();
199 3 //Print("adc_success2 !");
200 3
201 3 //int_pro2=0;
202 3 }
203 2 }
204 1 ES=1;
205 1 }
206 void interrupt2(void) interrupt 2 using 3
207 {
208 1 intval2=1; //1
209 1 int_pro2=~int_pro2;
210 1 }
211 void time0_init(void)
212 {
213 1 TMOD=TMOD&0xf0;
214 1 TMOD=TMOD|0x01;
215 1 TH0=0x0;
216 1 TL0=0x0;
217 1 ET0=1;
218 1 EA=1;
219 1
220 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 397 ----
CONSTANT SIZE = 64 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 9
IDATA SIZE = ---- ----
BIT SIZE = 5 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -