📄 stc5410_ad.lst
字号:
C51 COMPILER V8.05a STC5410_AD 03/17/2009 20:35:48 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE STC5410_AD
OBJECT MODULE PLACED IN STC5410_AD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE STC5410_AD.C BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #pragma NOAREGS
3 #include <reg52.h>
4 #include <string.h>
5 #include<intrins.h>
6 #include <stdlib.h> //for exit() function
7 #include <ctype.h> //for toupper() function
8 #include <math.h>
9 #define uchar unsigned char
10 #define uint unsigned int
11 //*******************************************************
12 double Temperature;
13 uchar temp_buff[9]; //存储读取的字节,read scratchpad为9字节,read rom ID为8字节
14 uchar *p;
15 sbit tem_A = P1^7;
16 bit flag;
17 uchar tem10,tem1,tem_1,tem_11;
18
19 bit flag;
20 uchar polarity;
21 //*****************************************************************
22 uchar LED_code_09[11]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B,0x00};
23 //****************************************************************************************************
24 /* 延时1uS子程序,主要用于2线接口,与单片机速度有关 */
25 #define DELAY_1US {_nop_();}
26 /* 2线接口的连接,与实际电路有关 */
27 sbit CH452_SCL=P2^0;
28 sbit CH452_SDA=P2^1; // 如果使用真正的2线接口,那么SDA接中断引脚P3^3/INT1,用SDA直接做中断输出
29 /* 2线接口的位操作,与单片机有关 */
30 #define CH452_SCL_SET {CH452_SCL=1;}
31 #define CH452_SCL_CLR {CH452_SCL=0;}
32 #define CH452_SDA_SET {CH452_SDA=1;}
33 #define CH452_SDA_CLR {CH452_SDA=0;}
34 uchar data_H,data_L;
35 uchar display[13]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0x40,0x3E};//显示:0--9
-,"""-""V" 共阴
36
37 //****************************************************************************************
38 //*函 数 名: delay **********
39 //*功能描述: 毫秒延时 **********
40 //****************************************************************************************
41 dealayms(int xxxx)
42 {
43 1 uint dlay ;
44 1 //**************************************************************
45 1 for(dlay=xxxx;dlay>0;dlay--);
46 1 }
47 //********************************************************************************************************
-****
48 void CH452_WrByte(uchar data_4B,uchar data_8B) //写一个字节数据 data_4B的低四位为数据(有效)
49 {
50 1
51 1 uchar i;
52 1 data_4B*=16;
53 1 //****************************************************
C51 COMPILER V8.05a STC5410_AD 03/17/2009 20:35:48 PAGE 2
54 1 CH452_SDA_SET; /*发送起始条件的数据信号*/
55 1 CH452_SCL_SET;
56 1 dealayms(100);
57 1 CH452_SDA_CLR; /*发送起始信号*/
58 1 dealayms(100);
59 1 CH452_SCL_CLR; /*钳住I2C总线,准备发送或接收数据 */
60 1 dealayms(100);
61 1 //*****************************************************
62 1 CH452_SDA_CLR; //DA0=0
63 1 CH452_SCL_SET;
64 1 dealayms(100);
65 1 CH452_SCL_CLR;
66 1 //*****************************************************
67 1 CH452_SDA_SET; //DA1=1
68 1 CH452_SCL_SET;
69 1 dealayms(100);
70 1 CH452_SCL_CLR;
71 1 //*****************************************************
72 1 CH452_SDA_SET; //ADDR=1
73 1 CH452_SCL_SET;
74 1 dealayms(100);
75 1 CH452_SCL_CLR;
76 1 //*****************************************************
77 1 for(i=0;i!=4;i++) // 输出4位数据 D11-D8
78 1 {
79 2 if(data_4B&0x80) {CH452_SDA_SET;}
80 2 else {CH452_SDA_CLR;}
81 2 CH452_SCL_SET;
82 2 data_4B<<=1;
83 2 dealayms(100);
84 2 dealayms(100);
85 2 CH452_SCL_CLR;
86 2 dealayms(100);
87 2 }
88 1 //*****************************************************
89 1 CH452_SDA_CLR; //R/W=0 表示继续写数据
90 1 CH452_SCL_SET;
91 1 dealayms(100);
92 1 CH452_SCL_CLR;
93 1 //*****************************************************
94 1 CH452_SDA_SET; //接受应答
95 1 CH452_SCL_SET;
96 1 dealayms(100);
97 1 CH452_SCL_CLR;
98 1 //*****************************************************
99 1 for(i=0;i!=8;i++) // 输出8位数据 D7-D0
100 1 {
101 2 if(data_8B&0x80) {CH452_SDA_SET;}
102 2 else {CH452_SDA_CLR;}
103 2 CH452_SCL_SET;
104 2 data_8B<<=1;
105 2 dealayms(100);
106 2 dealayms(100);
107 2 CH452_SCL_CLR;
108 2 dealayms(100);
109 2 }
110 1 //**************************************************
111 1 CH452_SCL_SET;
112 1 CH452_SDA_SET;
113 1 dealayms(100);
114 1 dealayms(100);
115 1 }
C51 COMPILER V8.05a STC5410_AD 03/17/2009 20:35:48 PAGE 3
116 //****************************************************************************************************88
117 //*******************************************************************************************************
118 //显示函数
119 void Temp_display()
120 {
121 1
122 1 //*******************************************************************************************************/
123 1 //**********************设置显示参数 四位显示
124 1 data_H=0x03; //0x03表示显示4位
125 1 data_L=0x40;
126 1 CH452_WrByte(data_H,data_L);
127 1 //**************************************************
128 1 data_H=0x0B; //第1位显示
129 1 data_L=display[polarity];
130 1 CH452_WrByte(data_H,data_L);
131 1 //**************************************************
132 1 //**************************************************
133 1 data_H=0x0A; //第2位显示
134 1 data_L=display[tem10];
135 1 CH452_WrByte(data_H,data_L);
136 1 //**************************************************
137 1 //**************************************************
138 1 data_H=0x09; //第3位显示
139 1 data_L=display[tem1]|0x80; //显示小数点
140 1 CH452_WrByte(data_H,data_L);
141 1 //**************************************************
142 1 data_H=0x08; //第4位显示
143 1 data_L=display[tem_1];
144 1 CH452_WrByte(data_H,data_L);
145 1 //**************************************************
146 1 //*******************************************************************************************************
- data_H=0x04;
147 1 data_H=0x04;
148 1 data_L=0x11;
149 1 CH452_WrByte(data_H,data_L);
150 1 dealayms(5);
151 1 }
152 //*****************************************************************************************
153 void delay(uint number) //毫秒延时
154 {
155 1 for(;number!=0;number--);
156 1 }
157 //*****************************************************************************************
158 void serialset (void) //串口设置
159 {
160 1 TMOD=0x21; //定义串行口 (T1波特率发生器)
161 1 TL1=0xFA; //波特率为9600
162 1 TH1=0xFA;
163 1 EA = 1;
164 1 PCON=0x80;
165 1 ET1=0;
166 1 TR1=1;
167 1 TI=0;
168 1 ES=1;
169 1 SCON=0x50;
170 1 PS=1; //串口中断优先级设置最高
171 1 }
172 //****************************************************************************************
173 void sendchar(unsigned int sendsign)// //单字节发送子程序
174 {
175 1 ES=0;
176 1 SBUF=sendsign;
C51 COMPILER V8.05a STC5410_AD 03/17/2009 20:35:48 PAGE 4
177 1 while(TI==0);
178 1 TI=0;
179 1 ES=1;
180 1 }
181 //****************************************************************************************************88
182 /************************************************************
183 *Function:延时处理
184 *parameter:
185 *Return:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -