📄 24c01b.lst
字号:
C51 COMPILER V8.02 24C01B 03/10/2007 19:20:33 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 24C01B
OBJECT MODULE PLACED IN 24c01b.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24c01b.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 //24c01-24c16读写驱动程序,
3 #include <reg51.h>
4 #include <intrins.h>
5 #include <stdio.h>
6 #include <absacc.h>
7 sbit a0=ACC^0; //定义ACC的位,利用ACC操作速度最快
8 sbit a1=ACC^1;
9 sbit a2=ACC^2;
10 sbit a3=ACC^3;
11 sbit a4=ACC^4;
12 sbit a5=ACC^5;
13 sbit a6=ACC^6;
14 sbit a7=ACC^7;
15 sbit scl= P2^6;
16 sbit sda= P2^5;
17 void s24(void) {
18 1 _nop_();scl=0;sda=1;scl=1;_nop_();sda=0;_nop_();scl=0;
19 1 }
20 void s240(void) {
21 1 _nop_();scl=0;sda=1;scl=1;_nop_();sda=0;_nop_();scl=0;
22 1 }
23 void p24(void) {
24 1 sda=0;scl=1;_nop_();sda=1;
25 1 }
26 void p240(void) {
27 1 sda=0;scl=1;_nop_();sda=1;
28 1 }
29 unsigned char rd24(void) {
30 1 sda=1;
31 1 scl=1;a7=sda;scl=0;
32 1 scl=1;a6=sda;scl=0;
33 1 scl=1;a5=sda;scl=0;
34 1 scl=1;a4=sda;scl=0;
35 1 scl=1;a3=sda;scl=0;
36 1 scl=1;a2=sda;scl=0;
37 1 scl=1;a1=sda;scl=0;
38 1 scl=1;a0=sda;scl=0;
39 1 sda=1;scl=1;scl=0;
40 1 return(ACC);
41 1 }
42
43 void wd24(unsigned char dd) {
44 1 ACC=dd;
45 1 sda=a7;scl=1;scl=0;
46 1 sda=a6;scl=1;scl=0;
47 1 sda=a5;scl=1;scl=0;
48 1 sda=a4;scl=1;scl=0;
49 1 sda=a3;scl=1;scl=0;
50 1 sda=a2;scl=1;scl=0;
51 1 sda=a1;scl=1;scl=0;
52 1 sda=a0;scl=1;scl=0;
53 1 sda=1;scl=1;
54 1 }
55
C51 COMPILER V8.02 24C01B 03/10/2007 19:20:33 PAGE 2
56 unsigned char read(unsigned int address){
57 1 unsigned char dd;
58 1 dd=((address&0x7ff)/256)<<1;
59 1 s24();wd24(0xa0|dd);scl=0;wd24(address);scl=0;
60 1 s24();wd24(0xa1|dd);scl=0;dd=rd24();p24();return(dd);
61 1 }
62
63 void write(unsigned int address,unsigned char dd){
64 1 unsigned char ddd;
65 1 unsigned char time;
66 1 ddd=((address&0x7ff)/256)<<1;
67 1 s24();wd24(0xa0|ddd);scl=0;wd24(address);scl=0;wd24(dd);scl=0;p24();
68 1 time=0; //time为定时器时间参考,time增加1代表1ms,如果没有用定时器,取消该行
69 1 while (1) {
70 2 s24();
71 2 wd24(0xa0|ddd);
72 2 sda=1;
73 2 if (sda==0) break;
74 2 if (time>10) break; //此行防止由于eeprom器件损坏后的死循环
75 2 scl=0;
76 2 }
77 1 }
78
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 288 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -