📄 wr_eeprom_at24c02_iic.lst
字号:
C51 COMPILER V8.08 WR_EEPROM_AT24C02_IIC 08/17/2008 17:50:19 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE WR_EEPROM_AT24C02_IIC
OBJECT MODULE PLACED IN WR_EEPROM_AT24C02_IIC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE WR_EEPROM_AT24C02_IIC.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //EEPROM AT24C02的数据读写操作 采用IIC总线读写 C程序
2 /*----------WR_EEPROM_AT24C02_IIC.c----------------*/
3
4 /***************************************************************
5 功能:11:32 2008-6-27
6 作者:SG
7 时间:2004-03-15
8 版本:V1.0
9 ***************************************************************/
10
11 #include "INTRINS.H"
12 #include "reg52.h"
13
14 #define WriteDeviceAddress 0xa0 //写驱动地址指令
15 #define ReadDeviceAddress 0xa1 //读驱动地址指令
16
17 //sbit AT24C02_SCL = 0xa4; //*****相当于sbit AT24C02_SCL = P2^4
18 //sbit AT24C02_SDA = 0xa5; //*****相当于sbit AT24C02_SDA = P2^5
19 sbit AT24C02_SCL = P1^5;
20 sbit AT24C02_SDA = P1^4;
21
22 /*-------------------------------------------------------------
23 功能:发起始信号
24 ------------------------------------------------------------*/
25 void Start_Cond()
26 {
27 1 AT24C02_SCL = 0;
28 1 _nop_();
29 1 AT24C02_SDA = 1;
30 1 _nop_();
31 1 AT24C02_SCL = 1;
32 1 _nop_();
33 1 AT24C02_SDA = 0;
34 1 _nop_();
35 1 }
36
37 /*-------------------------------------------------------------
38 功能:发停止信号
39 ------------------------------------------------------------*/
40 void Stop_Cond()
41 {
42 1 AT24C02_SCL = 0;
43 1 _nop_();
44 1 AT24C02_SDA = 0;
45 1 _nop_();
46 1 AT24C02_SCL = 1;
47 1 _nop_();
48 1 AT24C02_SDA = 1;
49 1 _nop_();
50 1 }
51
52 /*-------------------------------------------------------------
53 功能:发确认信号
54 ------------------------------------------------------------*/
55 void Ack()
C51 COMPILER V8.08 WR_EEPROM_AT24C02_IIC 08/17/2008 17:50:19 PAGE 2
56 {
57 1 AT24C02_SCL = 0;
58 1 _nop_();
59 1 AT24C02_SDA = 0;
60 1 AT24C02_SCL = 1;
61 1 _nop_();
62 1 AT24C02_SCL = 0;
63 1 _nop_();
64 1 AT24C02_SDA = 1;
65 1 }
66
67 /*-------------------------------------------------------------
68 功能:发无确认信号
69 ------------------------------------------------------------*/
70 void NoAck()
71 {
72 1 AT24C02_SCL = 0;
73 1 _nop_();
74 1 AT24C02_SDA = 1;
75 1 _nop_();
76 1 AT24C02_SCL = 1;
77 1 _nop_();
78 1 AT24C02_SCL = 0;
79 1 _nop_();
80 1 }
81
82 /*-------------------------------------------------------------
83 功能:写一个字节数据
84 ------------------------------------------------------------*/
85 bit Write8Bit(unsigned char input)
86 {
87 1 unsigned char i;
88 1 for (i=0;i<8;i++)
89 1 {
90 2 AT24C02_SCL = 0;
91 2 input <<= 1;
92 2 AT24C02_SDA = CY; //*************左移位后,移出的哪一位进入了CY中
93 2 AT24C02_SCL = 1;
94 2
95 2 }
96 1 AT24C02_SCL = 0; //****以下为"接受确认信号"程序
97 1 _nop_();
98 1 AT24C02_SDA = 1; //*****拉高管脚,准备读该管脚电平
99 1 AT24C02_SCL = 1;
100 1 _nop_();
101 1 CY = AT24C02_SDA; //读"确认信息",如果返回1则表明写入失败
102 1 return(CY) ;
103 1 }
104
105 /*-------------------------------------------------------------
106 功能:读一个字节数据
107 ------------------------------------------------------------*/
108 unsigned char Read8Bit()
109 {
110 1 unsigned char temp,rbyte=0;
111 1 for (temp = 8;temp != 0;temp--)
112 1 {
113 2 AT24C02_SCL = 0;
114 2 _nop_();
115 2 rbyte = (rbyte << 1) | AT24C02_SDA; //*****这样也可以按位并吗?AT24C02_SDA是不是代表着某个字节的最
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -