24c04.lst
来自「51写的一个定时时钟」· LST 代码 · 共 125 行
LST
125 行
C51 COMPILER V7.50 24C04 03/04/2001 18:19:09 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 24C04
OBJECT MODULE PLACED IN 24c04.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE 24c04.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<intrins.h>
3 #define ucahr unsigned char
4 #define uint unsigned int
5
6 sbit SDA=P3^7;
7 sbit SCL=P3^6;
8
9 #define SomeNOP(); { _nop_(); }
10
11 delay32()
12 {
13 1 unsigned int i=300;
14 1 while(i--);
15 1 }
16
17 /*--------------------------------------------------------------------------------
18 调用方式:void I2CStart(void) ﹫2001/07/0 4
19 函数说明:私有函数,I2C专用
20 ---------------------------------------------------------------------------------*/
21 void I2CStart(void)
22 {
23 1 EA=0;
24 1 SDA=1; SCL=1; SomeNOP();//INI
25 1 SDA=0; SomeNOP(); //START
26 1 SCL=0;
27 1 }
28
29 /*--------------------------------------------------------------------------------
30 调用方式:void I2CStop(void) ﹫2001/07/0 4
31 函数说明:私有函数,I2C专用
32 ---------------------------------------------------------------------------------*/
33 void I2CStop(void)
34 {
35 1 SCL=0; SDA=0; SomeNOP(); //INI
36 1 SCL=1; SomeNOP(); SDA=1; //STOP
37 1 EA=1;
38 1 }
39
40 /*--------------------------------------------------------------------------------
41 调用方式:I2CAck(void) ﹫2001/07/0 4
42 函数说明:私有函数,I2C专用,等待从器件接收方的应答
43 ---------------------------------------------------------------------------------*/
44 WaitAck(void)
45 {
46 1 bit Errorbit;
47 1 SDA=1;
48 1 SCL=1;
49 1 Errorbit=SDA;
50 1 SCL=0;
51 1 return(Errorbit);
52 1 }
53
54
55 /*--------------------------------------------------------------------------------
C51 COMPILER V7.50 24C04 03/04/2001 18:19:09 PAGE 2
56 调用方式:void SendAck(void) ﹫2001/07/0 4
57 函数说明:私有函数,I2C专用,主器件为接收方,从器件为发送方时,非应答信号。
58 ---------------------------------------------------------------------------------*/
59 void SendNotAck(void)
60 {
61 1 SDA=1; SomeNOP();
62 1 SCL=1; SomeNOP();
63 1 SCL=0;
64 1 }
65
66
67 /*--------------------------------------------------------------------------------
68 调用方式:void I2CSend(unsigned char ch) ﹫2001/07/0 5
69 函数说明:私有函数,I2C专用
70 ---------------------------------------------------------------------------------*/
71 void I2CSendByte(unsigned char ch)
72 {
73 1 unsigned char i=8;
74 1 while(i--)
75 1 {
76 2 SCL=0;_nop_();
77 2 SDA=(bit)(ch&0x80); ch<<=1; SomeNOP();
78 2 SCL=1; SomeNOP();
79 2 }
80 1 SCL=0;
81 1 }
82
83 /*--------------------------------------------------------------------------------
84 调用方式:unsigned char I2CReceive(void) ﹫2001/07/0 5
85 函数说明:私有函数,I2C专用
86 ---------------------------------------------------------------------------------*/
87 unsigned char I2CReceiveByte(void)
88 {
89 1 unsigned char i=8;
90 1 unsigned char dat=0;
91 1 SDA=1;
92 1 while(i--)
93 1 {
94 2 dat<<=1;
95 2 SCL=0;SomeNOP();
96 2 SCL=1;SomeNOP();
97 2 dat|=SDA;
98 2 }
99 1 SCL=0;
100 1 return(dat);
101 1 }
102 //////////////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////
103
104 /*-------------------------------------------------------------------------------------*/
105 /* 向AT24C02的任意地址写入一个字节 */
106 /*=====================================================================================*/
107
108 void Write_24c04( unsigned char add,unsigned char dat)
109 {
110 1 I2CStart();
111 1 I2CSendByte(0xA0);
112 1 WaitAck();
113 1 // I2CSendByte((char)(add>>8));delay32(); //如果使用的芯片是AT24C02、AT24C64、AT24C128、AT24C256的话 那
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?