📄 24c04.lst
字号:
C51 COMPILER V7.06 24C04 01/02/2008 09:19:08 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 24C04
OBJECT MODULE PLACED IN 24c04.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24c04.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 ////////////////////////////////////////////////////////////////////////
2 ///////////////////////////////////////////////////////////////////////
3 //读写2404子程序
4 /*发送起始条件*/
5 #include "c8051.h"
6 void Start(void) /*起始条件*/
7 {
8 1 Sda=1;
9 1 Scl=1;
10 1 _nop_ ();
11 1 _nop_ ();
12 1 _nop_ ();
13 1 _nop_ ();
14 1 Sda=0;
15 1 _nop_ ();
16 1 _nop_ ();
17 1 _nop_ ();
18 1 _nop_ ();
19 1 }
20 void Stop(void) /*停止条件*/
21 {
22 1 Sda=0;
23 1 Scl=1;
24 1 _nop_ ();
25 1 _nop_ ();
26 1 _nop_ ();
27 1 _nop_ ();
28 1 Sda=1;
29 1 _nop_ ();
30 1 _nop_ ();
31 1 _nop_ ();
32 1 _nop_ ();
33 1 }
34 void Ack(void) /*应答位*/
35 {
36 1 Sda=0;
37 1 _nop_ ();
38 1 _nop_ ();
39 1 _nop_ ();
40 1 _nop_ ();
41 1 Scl=1;
42 1 _nop_ ();
43 1 _nop_ ();
44 1 _nop_ ();
45 1 _nop_ ();
46 1 Scl=0;
47 1 }
48 void NoAck(void) /*反向应答位*/
49 {
50 1 Sda=1;
51 1 _nop_ ();
52 1 _nop_ ();
53 1 _nop_ ();
54 1 _nop_ ();
55 1 Scl=1;
C51 COMPILER V7.06 24C04 01/02/2008 09:19:08 PAGE 2
56 1 _nop_ ();
57 1 _nop_ ();
58 1 _nop_ ();
59 1 _nop_ ();
60 1 Scl=0;
61 1 }
62
63 void Send(uchar Data) /*发送数据子程序,Data为要求发送的数据*/
64 {
65 1 uchar BitCounter=8; /*位数控制*/
66 1 uchar temp; /*中间变量控制*/
67 1 do
68 1 {
69 2 temp=Data;
70 2 Scl=0;
71 2 _nop_ ();
72 2 _nop_ ();
73 2 _nop_ ();
74 2 _nop_ ();
75 2 if((temp&0x80)==0x80)/* 如果最高位是1*/
76 2 Sda=1;
77 2 else
78 2 Sda=0;
79 2 Scl=1;
80 2 temp=Data<<1; /*RLC*/
81 2 Data=temp;
82 2 BitCounter--;
83 2 }while(BitCounter);
84 1 Scl=0;
85 1 }
86
87 uchar Read(void) /*读一个字节的数据,并返回该字节值*/
88 {
89 1 uchar temp=0;
90 1 uchar temp1=0;
91 1 uchar BitCounter=8;
92 1 Sda=1;
93 1 do{
94 2 Scl=0;
95 2 _nop_ ();
96 2 _nop_ ();
97 2 _nop_ ();
98 2 _nop_ ();
99 2 Scl=1;
100 2 _nop_ ();
101 2 _nop_ ();
102 2 _nop_ ();
103 2 _nop_ ();
104 2 if(Sda) /*如果Sda=1;*/
105 2 temp=temp|0x01; /*temp的最低位置1*/
106 2 else
107 2 temp=temp&0xfe; /*否则temp的最低位清0*/
108 2 if(BitCounter-1)
109 2 { temp1=temp<<1;
110 3 temp=temp1;
111 3 }
112 2 BitCounter--;
113 2 }while(BitCounter);
114 1 return(temp);
115 1 }
116
117 void WrToROM(uchar Data[],uchar Address,uchar Num)
C51 COMPILER V7.06 24C04 01/02/2008 09:19:08 PAGE 3
118 {
119 1 uchar i;
120 1 uchar *PData;
121 1 PData=Data;
122 1 for(i=0;i<Num;i++)
123 1 {
124 2 Start(); /*发送启动信号*/
125 2 Send(0xa0); /*发送SLA+W*/
126 2 Ack();
127 2 Send(Address+i); /*发送地址*/
128 2 Ack();
129 2 Send(*(PData+i));
130 2 Ack();
131 2 Stop();
132 2 mDelay(20);
133 2 }
134 1 }
135
136 void RdFromROM(uchar Data[],uchar Address,uchar Num)
137 {
138 1 uchar i;
139 1 uchar *PData;
140 1 PData=Data;
141 1 for(i=0;i<Num;i++)
142 1 {
143 2 Start();
144 2 Send(0xa0);
145 2 Ack();
146 2 Send(Address+i);
147 2 Ack();
148 2 Start();
149 2 Send(0xa1);
150 2 Ack();
151 2 *(PData+i)=Read();
152 2 Scl=0;
153 2 NoAck();
154 2 Stop();
155 2 }
156 1
157 1 }
158 ////////////////////////////////////////////////////////////////////////////
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 281 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 17
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -