📄 tools.lst
字号:
C51 COMPILER V7.10 TOOLS 02/03/2005 10:45:41 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE TOOLS
OBJECT MODULE PLACED IN tools.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE tools.c OPTIMIZE(7,SIZE) BROWSE INCDIR(E:\WorkHome\932-DDSF\DDSF-932-002\;F
-:\WorkHome\932-DDSF\DDSF-932-003\) DEBUG OBJECTEXTEND
line level source
1 /*========================================*/
2 /*系统名称:DDSF-CECG-JiangSu */
3 /*函数名称:辅助程序 */
4 /*程序编写:步爱军 */
5 /*开始日期:2005-01-01 */
6 /*完成日期: */
7 /*修改记录: */
8 /*软件版本:DDSF-CECG-002 */
9 /*版本说明:用户数据保存在外部 */
10 /*外部器件:LM75、AT24C02、HT1621、LPC932 */
11 /* R8025、ADE7755 */
12 /*========================================*/
13
14 #include <REG932.h>
15 #include <Define.h>
16 #include <Stdio.h>
17 #include <Intrins.h>
18
19 ///-----***-短延时-***-----//
20 void Delay(unsigned int count) reentrant
21 {
22 1 unsigned int data i,j;
23 1 for(i=0; i<count; i++)
24 1 {
25 2 for(j=0; j<5; j++)
26 2 {
27 3 ;
28 3 }
29 2 }
30 1 }
31
32 ///-----***-IIC-***-----///
33 unsigned char FgTimeout;
34 unsigned char IicByteRead(unsigned char device,unsigned char address) //读取指定器件指定地址中的数据
35 {
36 1 unsigned char data bytedata; //定义一个变量bytedata,用来存放数据
37 1 IicStart(); //开始传送起始信号
38 1 IicSentByte(device); //传送一字节(slave)地址
39 1 IicSentByte(address); //传送一字节(address)地址
40 1 IicStart(); //开始传送起始信号
41 1 IicSentByte(device|0x01); //传送读取信号
42 1 bytedata=IicReceiveByte(); //从slave端读取一个数据并存入变量bytedata
43 1 SendAcknowledge(1); //Master端送出确认的信号等于1
44 1 IicStop(); //传送停止信号
45 1 return bytedata; //返回读出值bytedata给原调用程序
46 1 }
47 void IicMuchByteRead(unsigned char Device,unsigned char Address,unsigned char DataLend) //读
-取指定器件指定地址中的数据
48 {
49 1 unsigned char i; //定义一个变量bytedata,用来存放数据
50 1
51 1 IicStart(); //开始传送起始信号
52 1 IicSentByte(Device); //传送一字节(slave)地址
53 1 IicSentByte(Address); //传送一字节(address)地址
C51 COMPILER V7.10 TOOLS 02/03/2005 10:45:41 PAGE 2
54 1 IicStart(); //开始传送起始信号
55 1 IicSentByte(Device|0x01); //传送读取信号
56 1 for(i=0;i<DataLend-1;i++)
57 1 {
58 2 IIcBuf[i]=IicReceiveByte();
59 2 SendAcknowledge(0);
60 2 } //从slave端读取一个数据并存入变量bytedata
- //Master端送出确认的信号等于1
61 1 IIcBuf[i]=IicReceiveByte();
62 1 SendAcknowledge(1);
63 1 IicStop(); //传送停止信号
64 1
65 1 }
66 void IicByteWrite(unsigned char device,unsigned char address,unsigned char bytedata)//写数据到指定地址
67 { //
68 1 unsigned char i; //
69 1 bit ack; //
70 1
71 1 FgTimeout=1;
72 1 IicWP=0; //
73 1 for(i=0;i<10;i++) //
74 1 { //
75 2 IicStart(); //
76 2 ack=IicSentByte(device); //
77 2 if(ack==1) //
78 2 { //
79 3 IicStop(); //
80 3 continue; //
81 3 } //
82 2 ack=IicSentByte(address); //
83 2 if(ack==1) //
84 2 { //
85 3 IicStop(); //
86 3 continue; //
87 3 } //
88 2 ack=IicSentByte(bytedata); //
89 2 if(ack==1) //
90 2 { //
91 3 IicStop(); //
92 3 continue; //
93 3 } //
94 2 IicStop(); //
95 2 FgTimeout=0; //
96 2 if(ack==0) //
97 2 break; //
98 2 } //
99 1 Delay(200); //
100 1 IicWP=1;
101 1
102 1 }
103 //
104 unsigned char IicReceiveByte(void) //从slave端读取一个数据*/
105 {
106 1 unsigned char i; //*定义变量 i 和变量 bytedata */
107 1 unsigned char bytedata=0;
108 1 IicSDA=1;
109 1 for(i=0;i<8;i++) //由于读的时一个字节的数据所以要循环8次*/
110 1 {
111 2 IicSCL=1; //先将SCL设定为1,并等待一定的时间*/
112 2 IicWait();
113 2
114 2 bytedata<<=1; //先将数据变量bytedata左移1位---*/
C51 COMPILER V7.10 TOOLS 02/03/2005 10:45:41 PAGE 3
115 2 if (IicSDA) bytedata |=0x01; //此时如果SDA=“1”则将接受到的数据加(bit0=1)1---*/
116 2 //否则自动清楚为0*/
117 2 IicSCL=0; //SCL恢复为0,并等待一定的时间*/
118 2 IicWait();
119 2 }
120 1 return bytedata; //*返回调用程序*/
121 1 }
122
123 bit IicSentByte(unsigned char bytedata) //传送一个 Byte 数据到 slave */
124 {
125 1 unsigned char i; //定义一个变量 i */
126 1 bit ack; //定义一个变量 ack */
127 1 for(i=0;i<8;i++) //循环8次*/
128 1 {
129 2 if(bytedata & 0x80)
130 2 { //bytedata和0x80作AND逻辑运算等于0x80---*/
131 3 IicSDA=1;
132 3 //即表示位7等于1则条件成立---*/
133 3 }
134 2 else
135 2 {
136 3 IicSDA=0;
137 3 //所以设定SDA=1,否则清除SDA=0*/
138 3 }
139 2 bytedata <<=1; //每传送1位,则须将待传送的数据左移1位,以便继续测试下1位*/
140 2 IicWait(); //延时等候*/
141 2
142 2 IicSCL=1;
143 2 //SCL置位*/
144 2 IicWait(); //延时等候*/
145 2 IicSCL=0;
146 2 //SCL清零*/
147 2 IicWait(); //延时等候---SCL作“1”---“0”的变化*/
148 2 }
149 1 IicSDA=1; //SDA置位*/
150 1 IicWait(); //延时等候*/
151 1 IicSCL=1; //SCL置位*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -