📄 x5045.lst
字号:
C51 COMPILER V4.01, X5045 19/08/04 14:33:25 PAGE 1
DOS C51 COMPILER V4.01, COMPILATION OF MODULE X5045
OBJECT MODULE PLACED IN D:\13505B\105B\X5045.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE D:\13505B\105B\X5045.C DB SB OE
stmt level source
1 /******************************************************************/
2 // 模块原型: FUNC.C
3 // 功 能: X5045(EEPROM+WATCHDOG)操作底层函数。
4 /******************************************************************/
5
6 #include "hardware.h"
7 #include "intrins.h"
8
9 void Data_load(uchar RAM_data);
10 void instruction_load(uchar inst_name);
11 void Write_Status_Register(uchar RAM_data4);
12 void clock(void);
13
14
15
16 /******************************************************************/
17 // 函数原型: void init_X5045(void)
18 // 功 能: X5045初始寄存器设置
19 // 参 数: Status_Register (初始寄存器值)
20 /******************************************************************/
21 void init_X5045(uchar Status_Register)
22 {
23 1
24 1 CSI=0;_nop_();
25 1 SCK=0;
26 1 SI=0;
27 1 SO=1;
28 1 Write_Status_Register(Status_Register);
29 1 }
30 /******************************************************************/
31 // 函数原型: void instruction_load(uchar inst_name)
32 // 功 能: 写入X5045命令字
33 // 参 数: inst_name(命令字)
34 /******************************************************************/
35 void instruction_load(uchar inst_name)
36 {
37 1 register uchar i;
38 1
39 1 CSI=0;_nop_();
40 1 for(i=0;i<8;i++)
41 1 {
42 2 SI=(bit)(inst_name&0x80);
43 2 inst_name=inst_name<<1;
44 2 clock();
45 2 }
46 1
47 1 }
48 /******************************************************************/
49 // 函数原型: void Data_load(uchar RAM_data)
50 // 功 能: X5045写入数据
51 // 参 数: RAM_data(1字节数据)
52 /******************************************************************/
53 void Data_load(uchar RAM_data)
54 {
55 1 register uchar i;
56 1
57 1 for(i=0;i<8;i++)
58 1 {
59 2 SI=(bit)(RAM_data&0x80);
C51 COMPILER V4.01, X5045 19/08/04 14:33:25 PAGE 2
60 2 RAM_data=RAM_data<<1;
61 2 clock();
62 2 }
63 1 }
64 /******************************************************************/
65 // 函数原型: void Write_Status_Register(uchar RAM_data4)
66 // 功 能: X5045写状态寄存器
67 // 参 数: RAM_data4(1字节数据)
68 /******************************************************************/
69 void Write_Status_Register(uchar RAM_data4)
70 {
71 1
72 1 instruction_load(WREN);
73 1 CSI=1;_nop_();
74 1 _nop_();_nop_();
75 1 instruction_load(WRSR);
76 1 Data_load(RAM_data4);
77 1 CSI=1;_nop_();
78 1 }
79
80 /******************************************************************/
81 // 函数原型: uchar Read_Status_Register(void)
82 // 功 能: 读X5045状态寄存器
83 // 参 数: 无
84 /******************************************************************/
85 uchar Read_Status_Register()
86 {
87 1 register uchar i;
88 1 bit bit_temp=0;
89 1 uchar I_data=0;
90 1
91 1 instruction_load(RSDR);
92 1 SCK=1;_nop_();
93 1 bit_temp=SO;
94 1 for(i=0;i<8;i++)
95 1 {
96 2 SCK=0;_nop_();
97 2 I_data*=2;
98 2 if(bit_temp)
99 2 { I_data++; }
100 2 SCK=1;_nop_();
101 2 bit_temp=SO;
102 2 }
103 1 CSI=1;_nop_();
104 1 return(I_data);
105 1 }
106 /******************************************************************/
107 // 函数原型: uchar Write_Ram_byte(uint RAM_address,uchar *RAM_data2,uchar length)
108 // 功 能: X5045写入数据
109 // 参 数:
110 /******************************************************************/
111 uchar Write_Ram_byte(uint RAM_address,uchar *RAM_data2,uchar length)
112 {
113 1 uchar low_addr,WRITE;
114 1 uint i;
115 1 bit SS;
116 1
117 1 CSI=0;_nop_();
118 1 SCK=0;
119 1 SI=0;
120 1 SO=1;
121 1 SS=(bit)(RAM_address&0x100);
122 1 if(SS==1)
123 1 { WRITE=0x0a;}
124 1 else{ WRITE=0x02;}
125 1
C51 COMPILER V4.01, X5045 19/08/04 14:33:25 PAGE 3
126 1 low_addr=(uchar)RAM_address;
127 1 CSI=1;_nop_();
128 1 instruction_load(WREN);
129 1 CSI=1;_nop_();
130 1 instruction_load(WRITE);
131 1 Data_load(low_addr);
132 1 for(i=0;i<length;i++) { Data_load(RAM_data2[i]); }
133 1 CSI=1; _nop_();
134 1
135 1 for(i=0;i<1900;i++)
136 1 {
137 2 _nop_();
138 2 _nop_();
139 2 }
140 1 _nop_();
141 1 do
142 1 {
143 2 i=Read_Status_Register();
144 2 SS=(bit)(i&0x01);
145 2 }
146 1 while(SS);
147 1 return 0;
148 1 }
149 /******************************************************************/
150 // 函数原型: void Read_Ram(uint RAM_address,uchar *RAM_data6,uchar length)
151 // 功 能: 读X5045偏移地址内容
152 // 参 数:
153 /******************************************************************/
154 void Read_Ram(uint RAM_address,uchar *RAM_data6,uchar length)
155 {
156 1 uchar j,I_data=0;
157 1 register uchar i;
158 1 bit bit_temp=0;
159 1
160 1 CSI=0;_nop_();
161 1 SCK=0;
162 1 SI=0;
163 1 SO=1;
164 1
165 1 CSI=1;_nop_();
166 1 SO=1;_nop_();
167 1
168 1 if((bit)(RAM_address&0x100)==1)
169 1 { instruction_load(0x0b); }
170 1 else{ instruction_load(0x03); }
171 1 Data_load((uchar)RAM_address);
172 1
173 1 for(j=0;j<length;j++)
174 1 {
175 2 SCK=1;_nop_();
176 2 bit_temp=SO;
177 2 for(i=0;i<8;i++)
178 2 {
179 3
180 3 SCK=0;_nop_();
181 3 I_data*=2;
182 3 if(bit_temp)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -