📄 main.lst
字号:
C51 COMPILER V7.09 MAIN 05/28/2005 18:15:36 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE G:\yanshenjing\程序\MAIN\main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\main.lst)
- OBJECT(.\main.obj)
line level source
1 /*********************************************************************
2 *** 头文件区 ***
3 **********************************************************************/
4 #include<reg52.h>
5 #include <intrins.h> /*内部函数调用,如_nop_() 、_crol_()、cror();*/
6
7 #include <absacc.h> /*绝对地址访问,如XBYTE[0x0fff0]*/
8
9 /******************************************************************
10 ******* 全局变量定义 ******
11 *******************************************************************/
12 #define uint unsigned int
13 #define uchar unsigned char
14
15 #define ICM7218 XBYTE [0x00] //7218B的地址
16
17 #define DS_A XBYTE [0xff0a] //时钟芯片的 A 寄存器地址
18 #define DS_B XBYTE [0xf00b] //时钟芯片的 B 寄存器地址
19 #define DS_second XBYTE [0xf000] //时钟芯片的 秒 寄存器地址
20 #define DS_minute XBYTE [0xf002] //时钟芯片的 分钟 寄存器地址
21 #define DS_hour XBYTE [0xf004] //时钟芯片的 小时 寄存器地址
22 #define DS_day XBYTE [0xf007] //时钟芯片的 天数 寄存器地址
23 #define DS_month XBYTE [0xf008] //时钟芯片的 月数 寄存器地址
24 #define DS_year XBYTE [0xf009] //时钟芯片的 年数 寄存器地址
25
26 sbit ICM7218MODE=P1^4;//7218b的控制端
27
28
29 bit flag=0;//功能键和数字键的区别标志,0为功能1为数字键
30 bit f_time=1;//显示时间,时期标致
31 bit choose=0;//时间,日期选择标志(0为时间,1为日期)
32 uchar a_move=3;//时间修改移动次数
33 bit b_change=0;//时间修改标志,1时执行
34 bit c_temp=0;//温度显示标志,1时执行
35 bit d_temp=0;//设置温度显示标志,1时执行
36 bit c_shift=0;//当前温度1和2的选择标志位
37 bit d_shift=0;//设置温度1和2的选择标志位
38
39 bit e_shift=0;//摄氏和华氏的切换标志
40 bit t_half=0;//半秒标志位
41
42 bit t_read0=0;//定时500ms读温度1标志位
43 bit t_read1=0;//定时500ms读温度2标志位
44
45 bit figure=0;//数字键标志位,1为数字键
46
47 bit mark_0=0;//温度1符号标志位,1为负
48 bit mark_1=0;//温度2符号标志位,1为负
49
50 bit mark_2=0;//设置温度1的符号标志位,1为负
51 bit mark_3=0;//设置温度2的符号标志位,1为负
52
53 bit start_0=0;//第一片DS18B20的延时标志位,1开始延时计数
54 bit start_1=0;//第二片DS18B20的延时标志位,1开始延时计数
C51 COMPILER V7.09 MAIN 05/28/2005 18:15:36 PAGE 2
55
56 unsigned char buffer[]={0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84};//7218B输出存储数组
57
58 uchar status;//定义一个键值存储器
59 uchar b_times=0;//按键B按下的次数
60
61 uint temp1=0,temp2=0;//两个温度存储器
62
63 uint t_set1, t_set2;//两个温度的设置值
64
65 uchar t_chan[16];
66
67 unsigned char ROM_0_code[]={0x28,0x25,0xb3,0x84,0x00,0x00,0x00,0x95};//ds18b20的CRC码
68 unsigned char ROM_1_code[]={0x28,0x50,0xe2,0x84,0x00,0x00,0x00,0xbe};//ds18b20的CRC码
69
70
71 /*==========================
72 == 7218字型码表 ==
73 ===========================*/
74 uchar code LedCode[] = { 0xFB,0xB0,0xED,0xF5,0xB6, /* 0,1,2,3,4 */
75 0xD7,0xDF,0xF0,0xFF,0xF7, /* 5,6,7,8,9 */
76 0xFE,0x9F,0xCB,0xBD,0xCF, /* A,b,C,d,E */
77 0xCE,0x7F,0x80,0xEE,0xF6, /* F,.(16),blank(17),P(18),q(19)*/
78 0xBE,0x84,0xBB,0xFA,0xC1, /* H(20), -(21),U(22),n(23),冒号(24)*/
79 0x80,0x80,0x80,0x80,0x80 /* 填空格 */
80 } ;
81
82 unsigned char code top_table[]={0x7b,0x30,0x6D,0x75,0x36,0x57,0x5F,0x70,0x7F,0x77};
83 // 0.,1.,2.,3.,4., 5.,6.,7.,8.,9. 小数点显示
84
85 /*--------------------------------------------------------------------------
86 DS1820.H
87
88 --------------------------------------------------------------------------*/
89 sbit TSOR = P1^6;
90
91 //**********************************************************************//
92 // 延时子函数 //
93 //**********************************************************************//
94 void delay(unsigned int d)
95 {
96 1 while(d--);
97 1 }
98
99 void delay15us(void)
100 {
101 1 unsigned char i;
102 1 for(i=0;i<8;i++);
103 1 }
104
105 void delay60us(void)
106 {
107 1 unsigned char i;
108 1 for(i=0;i<30;i++);
109 1 }
110 /**********************************************
111 //键盘扫描。、识别函数
112 ************************************************/
113 void service_int1()interrupt 2 using 2
114 {
115 1 uchar i;
116 1 i=P1&0x0f;
C51 COMPILER V7.09 MAIN 05/28/2005 18:15:36 PAGE 3
117 1 flag=1;
118 1
119 1 switch(i)
120 1 {
121 2 case 0:status=i;
122 2 flag=1;
123 2 figure=1;
124 2 break;//按下数字键,status等于键值且两个标志位置1
125 2 case 1:status=i;
126 2 flag=1;
127 2 figure=1;
128 2 break;//
129 2 case 2:status=i;
130 2 flag=1;
131 2 figure=1;
132 2 break;//
133 2 case 3:status=i;
134 2 flag=1;
135 2 figure=1;
136 2 break;//
137 2 case 4:status=i;
138 2 flag=1;
139 2 figure=1;
140 2 break;//
141 2 case 5:status=i;
142 2 flag=1;
143 2 figure=1;
144 2 break;//
145 2 case 6:status=i;
146 2 flag=1;
147 2 figure=1;
148 2 break;//
149 2 case 7:status=i;
150 2 flag=1;
151 2 figure=1;
152 2 break;//
153 2 case 8:status=i;
154 2 flag=1;
155 2 figure=1;
156 2 break;//
157 2 case 9:status=i;
158 2 flag=1;
159 2 figure=1;
160 2 break;//
161 2 case 10:a_move++;
162 2 if(a_move==2||a_move==5||a_move==10||a_move==13)a_move++;
163 2 if(a_move>15)a_move=0;
164 2 flag=0;
165 2 break;//
166 2 case 11:b_change=1;
167 2 b_times++;
168 2 c_temp=0;
169 2 d_temp=0;
170 2 f_time=0;
171 2 flag=0;
172 2 break;//
173 2 case 12:c_temp=1;
174 2 c_shift=~c_shift;
175 2 d_temp=0;
176 2 f_time=0;
177 2 flag=0;
178 2 b_change=0;
C51 COMPILER V7.09 MAIN 05/28/2005 18:15:36 PAGE 4
179 2 break;//
180 2 case 13:d_temp=1;
181 2 d_shift=~d_shift;
182 2 c_temp=0;
183 2 f_time=0;
184 2 flag=0;
185 2 b_change=0;
186 2 break;//
187 2 case 14:e_shift=~e_shift;
188 2 flag=0;
189 2 break;//
190 2 case 15:if(!b_change)
191 2 {
192 3 f_time=1;
193 3 c_temp=0;
194 3 d_temp=0;
195 3 choose=~choose;
196 3 }
197 2 flag=0;break;//
198 2
199 2 default:;
200 2 }
201 1 }
202 /***************************************************
203 //定时器0中断程序
204 ****************************************************/
205 time0()interrupt 1 using 3
206 {
207 1 uchar i,j,k;
208 1 TH0=-2000/256;
209 1 TL0=-2000%256;
210 1 i++;
211 1 if(i==250){t_half=~t_half;i=0;}
212 1 if(start_0)
213 1 {
214 2 j++;
215 2 if(j==250)
216 2 {
217 3 start_0=0;
218 3 t_read0=1;
219 3 j=0;
220 3 }
221 2 }
222 1 if(start_1)
223 1 {
224 2 k++;
225 2 if(k==250)
226 2 {
227 3 start_1=0;
228 3 t_read1=1;
229 3 k=0;
230 3 }
231 2 }
232 1 }
233 /***************************************
234 //7218B显示函数
235 ***************************************/
236 void display()
237 {
238 1 uchar i;
239 1 ICM7218MODE=1;
240 1 ICM7218=0xff;
C51 COMPILER V7.09 MAIN 05/28/2005 18:15:36 PAGE 5
241 1 for(i=0;i<10;i++);
242 1
243 1 ICM7218MODE=0;
244 1 for(i=0;i<8;i++)
245 1 {
246 2 ICM7218=buffer[i];
247 2
248 2 }
249 1 }
250
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -