📄 93c46.lst
字号:
C51 COMPILER V7.50 93C46 03/06/2007 20:40:53 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 93C46
OBJECT MODULE PLACED IN 93c46.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE 93c46.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "TempCtrl.h"
2
3 //////////////////////////////////////////////////////////////////////////
4 /////////////////////////////////////////////////
5 //两个Write函数后面应该加2ms到5ms的延时方能进行第二次操作
6 void SendCmd(unsigned Cmd)
7 {
8 1 P_CS=0;
9 1 P_CLK=0;
10 1 P_CS=1;
11 1 P_DI=1;
12 1 P_CLK=1;
13 1 P_CLK=0;
14 1 if((Cmd&0x02)==0)
15 1 P_DI=0;
16 1 else
17 1 P_DI=1;
18 1 P_CLK=1;
19 1 P_CLK=0;
20 1 if((Cmd&0x01)==0)
21 1 P_DI=0;
22 1 else
23 1 P_DI=1;
24 1 P_CLK=1;
25 1 }
26 /////////////////////////////////////////////////
27
28 void Sendaddr(unsigned char addr)
29 {
30 1 unsigned char i;
31 1 addr<<=1;
32 1 for(i=0;i<7;i++)
33 1 {
34 2 P_CLK=0;
35 2 if((addr&0x80)==0)
36 2 P_DI=0;
37 2 else
38 2 P_DI=1;
39 2 addr<<=1;
40 2 P_CLK=1;
41 2 }
42 1 }
43 /////////////////////////////////////////////////
44 void Senddat(unsigned char dat)
45 {
46 1 unsigned char i;
47 1 for(i=0;i<8;i++)
48 1 {
49 2 P_CLK=0;
50 2 if((dat&0x80)==0)
51 2 P_DI=0;
52 2 else
53 2 P_DI=1;
54 2 dat<<=1;
55 2 P_CLK=1;
C51 COMPILER V7.50 93C46 03/06/2007 20:40:53 PAGE 2
56 2 }
57 1 }
58 /////////////////////////////////////////////////
59 unsigned char Readdat(void)
60 {
61 1 unsigned char i,temp=0;
62 1 P_DO=1;
63 1 for(i=0;i<8;i++)
64 1 {
65 2 P_CLK=0;
66 2 temp<<=1;
67 2 P_CLK=1;
68 2 _nop_();
69 2 _nop_();
70 2 if(P_DO==1)
71 2 temp|=0x01;
72 2 }
73 1 return temp;
74 1 }
75 /////////////////////////////////////////////////
76 void Ewen(void)
77 {
78 1 SendCmd(0x00);
79 1 Senddat(0xc0);
80 1 P_CS=0;
81 1 _nop_();
82 1 P_CS=1;
83 1 }
84 /////////////////////////////////////////////////
85 //93C46字节读子程序,地址范围0~127
86 void WriteByte(unsigned char addr,unsigned char dat)
87 {
88 1 //kf
89 1 if(PassWordLock==1)
90 1 return;//EEPROM锁定
91 1
92 1 Ewen();
93 1 SendCmd(0x01);
94 1 Sendaddr(addr);
95 1 Senddat(dat);
96 1 P_CS=0;
97 1 _nop_();
98 1 P_CS=1;
99 1 P_DO=1;
100 1 }
101 unsigned char ReadByte(unsigned char addr)
102 {
103 1 unsigned char dat;
104 1 SendCmd(0x02);
105 1 Sendaddr(addr);
106 1 dat=Readdat();
107 1 P_CS=0;
108 1 return(dat);
109 1 }
110 /////////////////////////////////////////////////
111 //93C46的字读写程序,地址范围0~63
112 void Write(unsigned char addr,unsigned int dat)
113 {
114 1 unsigned char temp;
115 1 addr &= 0x3f;
116 1 addr <<=1;
117 1 temp = (unsigned char)(dat>>8);
C51 COMPILER V7.50 93C46 03/06/2007 20:40:53 PAGE 3
118 1 WriteByte(addr,temp); //temp
119 1 Wait(200);//延时2ms-5ms
120 1 temp =dat & 0xff;
121 1 WriteByte(addr+1,temp); //temp
122 1 Wait(200);
123 1 }
124 unsigned int Read(unsigned char addr)
125 {
126 1 unsigned int temp;
127 1 addr&=0x3f;
128 1 addr<<=1;
129 1 temp=ReadByte(addr);
130 1 temp<<=8;
131 1 addr=ReadByte(addr+1);
132 1 temp+=addr;
133 1 return(temp);
134 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 266 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
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 + -