📄 max232.lst
字号:
C51 COMPILER V7.06 MAX232 01/11/2009 16:09:35 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAX232
OBJECT MODULE PLACED IN MAX232.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAX232.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg51.h>
2 #include<stdio.h>
3 #include<intrins.h>
4 #include "LCD1602.h"
5
6
7
8 #define uchar unsigned char
9 #define uint unsigned int
10
11 unsigned char TBuffer[15];
12 sbit menu=P2^3; //按键菜单
13 sbit key_up=P2^4; //按键UP
14 sbit key_down=P2^5; //按键DOWN
15 sbit enter=P2^6;//按键确定
16 sbit DQ=P1^3; //温度输入口
17 sbit alarm=P1^0;//蜂鸣器报警接口
18 sbit led1=P1^1;//状态灯1接口
19 sbit led2=P1^2;//状态灯2接口
20
21 unsigned char aaa,flag1,bbb,ccc,ddd;
22 unsigned int tvalue; //16进制温度值
23 bit tflag; //温度正负标志
24 bit Keyset; //进入温度设定键标志位
25 bit limit_max; //温度上限标志
26 bit limit_min; //温度下限标志
27 unsigned int limit_up=0x1A; //10进制上限温度值
28 unsigned int limit_down=0x0f; //10进制下限温度值
29 unsigned char Keyenter; //键值
30 unsigned char temperature; //10进制温度值
31
32 unsigned char buffer[3];
33 unsigned char flag=1;
34 unsigned char DataFromPC[3];
35
36 unsigned char flag_URT=0;
37 unsigned char test=0;
38 unsigned char count=0;
39
40 /*------------------------------------------------
41 Speaker Registers
42 ------------------------------------------------*/
43 sbit SPEACKER = P3^7;
44 sbit Send_en = P3^2;
45 bit show_flag;
46
47
48
49
50 //uchar open_flag=0;
51
52
53 void IntToStr(unsigned int t, unsigned char *str, unsigned char n)
54 {
55 1 unsigned char a[5]; char i, j;
C51 COMPILER V7.06 MAX232 01/11/2009 16:09:35 PAGE 2
56 1 a[0]=(t/10000)%10; //取得整数值到数组
57 1 a[1]=(t/1000)%10;
58 1 a[2]=(t/100)%10;
59 1 a[3]=(t/10)%10;
60 1 a[4]=(t/1)%10;
61 1
62 1 for(i=0; i<5; i++) //转成ASCII码
63 1 a[i]=a[i]+'0';
64 1 for(i=0; a[i]=='0' && i<=3; i++);
65 1 for(j=5-n; j<i; j++) //填充空格
66 1 { *str=' '; str++; }
67 1 for(; i<5; i++)
68 1 { *str=a[i]; str++; } //加入有效的数字
69 1 *str='\0';
70 1 }
71
72
73
74 void Delay1ms(unsigned int count)
75 {
76 1 unsigned int i,j;
77 1 for(i=0;i<count;i++)
78 1 for(j=0;j<120;j++);
79 1 }
80 /******************************ds1820程序***************************************/
81 void delay_18B20(unsigned int i)//延时1微秒
82 {
83 1 while(i--);
84 1 }
85
86 void ds1820rst()/*ds1820复位*/
87 { unsigned char x=0;
88 1 DQ = 1; //DQ复位
89 1 delay_18B20(4); //延时
90 1 DQ = 0; //DQ拉低
91 1 delay_18B20(100); //精确延时大于480us
92 1 DQ = 1; //拉高
93 1 delay_18B20(40);
94 1 }
95
96 unsigned char ds1820rd()/*读数据*/
97 { unsigned char i=0;
98 1 unsigned char dat = 0;
99 1 for (i=8;i>0;i--)
100 1 { DQ = 0; //给脉冲信号
101 2 dat>>=1;
102 2 DQ = 1; //给脉冲信号
103 2 if(DQ)
104 2 dat|=0x80;
105 2 delay_18B20(10);
106 2 }
107 1 return(dat);
108 1 }
109
110 void ds1820wr(uchar wdata)/*写数据*/
111 {unsigned char i=0;
112 1 for (i=8; i>0; i--)
113 1 { DQ = 0;
114 2 DQ = wdata&0x01;
115 2 delay_18B20(10);
116 2 DQ = 1;
117 2 wdata>>=1;
C51 COMPILER V7.06 MAX232 01/11/2009 16:09:35 PAGE 3
118 2 }
119 1 }
120
121
122
123 read_temp()/*读取温度值并转换*/
124 {unsigned char a,b;
125 1 ds1820rst();
126 1 ds1820wr(0xcc);//*跳过读序列号*/
127 1 ds1820wr(0x44);//*启动温度转换*/
128 1 ds1820rst();
129 1 ds1820wr(0xcc);//*跳过读序列号*/
130 1 ds1820wr(0xbe);//*读取温度*/
131 1 a=ds1820rd();
132 1 b=ds1820rd();
133 1 tvalue=b;
134 1 tvalue<<=8;
135 1 tvalue=tvalue|a;
136 1 if(tvalue<0x0fff)
137 1 tflag=0;
138 1 else
139 1 {tvalue=~tvalue+1;
140 2 tflag=1;
141 2 }
142 1 tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数
143 1 return(tvalue);
144 1 }
145
146 /***********************温度数据处理与显示*********************************/
147 void ds1820disp(unsigned int t, unsigned char *str, unsigned char n)
148 {
149 1 unsigned char tp[14]; char i, j;
150 1 if(tflag==1&&Keyset==0){
151 2 tp[0]=0x2d; //加一个"-"
152 2 tp[1]=t/1000+0x30;//百位数
153 2 tp[2]=t%1000/100+0x30;//十位数
154 2 tp[3]=t%100/10+0x30;//个位数
155 2 tp[4]=0x2e;
156 2 tp[5]=t%10+0x30;//小数位
157 2 tp[6]=0xdf;//显示"。"
158 2 tp[7]=0x43;//"C"
159 2 tp[8]=0xa0;tp[9]=0xa0;tp[10]=0xa0;tp[11]=0xa0;tp[12]=0xa0;
160 2 temperature=(tp[0]-0x30)*100+(tp[1]-0x30)*10+(tp[2]-0x30)+(tp[4]-0x30)*0.1;
161 2 for(i=0; tp[i]=='0' && i<=3; i++);
162 2 for(j=14-n; j<i; j++){ *str=' '; str++; } //填充空格
163 2 for(; i<14; i++){ *str=tp[i]; str++; } //加入有效的数字
164 2 *str='\0';
165 2 }
166 1 if(tflag==0&&Keyset==0){
167 2 tp[0]=t/1000+0x30;//百位数
168 2 tp[1]=t%1000/100+0x30;//十位数
169 2 tp[2]=t%100/10+0x30;//个位数
170 2 tp[3]=0x2e;//显示小数点
171 2 tp[4]=t%10+0x30;//小数位
172 2 tp[5]=0xdf;//显示"。"
173 2 tp[6]=0x43;//"C"
174 2 tp[7]=0xa0;tp[8]=0xa0;tp[9]=0xa0;tp[10]=0xa0;tp[11]=0xa0;tp[12]=0xa0;
175 2 temperature=(tp[0]-0x30)*100+(tp[1]-0x30)*10+(tp[2]-0x30)+(tp[4]-0x30)*0.1;
176 2 for(i=0; tp[i]=='0' && i<=3; i++);
177 2 for(j=13-n; j<i; j++){ *str=' '; str++; } //填充空格
178 2 for(; i<13; i++){ *str=tp[i]; str++; } //加入有效的数字
179 2 *str='\0';
C51 COMPILER V7.06 MAX232 01/11/2009 16:09:35 PAGE 4
180 2 }
181 1 if(tflag==0&&Keyset==1){
182 2 tp[0]=t/100+0x30;//百位数
183 2 tp[1]=t%100/10+0x30;//十位数
184 2 tp[2]=t%100%10+0x30;//个位数
185 2 tp[3]=0x2e;//显示小数点
186 2 tp[4]=0+0x30;//小数位
187 2 tp[5]=0xdf;//显示"。"
188 2 tp[6]=0x43;//"C"
189 2 tp[7]=0xa0;tp[8]=0xa0;tp[9]=0xa0;tp[10]=0xa0;tp[11]=0xa0;tp[12]=0xa0;
190 2 for(i=0; tp[i]=='0' && i<=3; i++);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -