📄 5045.lst
字号:
C51 COMPILER V7.02a 5045 09/29/2005 11:45:22 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE 5045
OBJECT MODULE PLACED IN 5045.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 5045.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 #include "spi.h"
3 #include "serial.h"
4 #include <intrins.h>
5 #define NOP() // _nop_();_nop_()
6
7 //看门狗写使能子程序
8 void wren_dog(void)
9 {
10 1 SPI_SCK=0;
11 1 SPI_CS=0;
12 1 in_byte(WREN);
13 1 SPI_SCK=0;
14 1 SPI_CS=1;
15 1 }
16
17 //看门狗写禁止子程序
18 void wrdi_dog(void)
19 {
20 1 SPI_SCK=0;
21 1 SPI_CS=0;
22 1 in_byte(WRDI);
23 1 SPI_SCK=0;
24 1 SPI_CS=1;
25 1 }
26
27
28
29 //写状态寄存器
30 void wrsr_dog(unsigned char status_reg)
31 {
32 1 SPI_SCK=0;
33 1 SPI_CS=0;
34 1 in_byte(WRSR);
35 1 in_byte(status_reg);
36 1 SPI_SCK=0;
37 1 SPI_CS=1;
38 1 wip_poll();
39 1 }
40
41
42 //读状态寄存器
43 unsigned char rdsr_dog(void)
44 {
45 1 unsigned char reg1;
46 1 SPI_SCK=0;
47 1 SPI_CS=0;
48 1 in_byte(RDSR);
49 1 reg1=out_byte();
50 1 SPI_SCK=0;
51 1 SPI_CS=1;
52 1 return(reg1);
53 1 }
54
55 //字节读
C51 COMPILER V7.02a 5045 09/29/2005 11:45:22 PAGE 2
56 //H,地址高字节;L地址低字节;data_dog读出的数据
57 unsigned char byte_read(unsigned char H,unsigned char L)
58 {
59 1 unsigned char data_dog,add=0;
60 1 SPI_SCK=0;
61 1 SPI_CS=0;
62 1 add=H<<3;
63 1 add|=READ;//READ;
64 1 in_byte(add);
65 1 add=L;
66 1 in_byte(add);
67 1 data_dog=out_byte();
68 1 SPI_SCK=0;
69 1 SPI_CS=1;
70 1 return(data_dog);
71 1 }
72 //字节写
73 //H,地址高字节;L地址低字节;D写入的数据
74 void byte_write(unsigned char H,unsigned char L,unsigned char D)
75 {
76 1 unsigned char data_dog,add=0;
77 1 SPI_SCK=0;
78 1 SPI_CS=0;
79 1 add=H<<3;
80 1 add|=WRTE;//WRTE;
81 1 in_byte(add);
82 1 add=L;
83 1 in_byte(add);
84 1 data_dog=D;
85 1 in_byte(data_dog);
86 1 SPI_SCK=0;
87 1 SPI_CS=1;
88 1 wip_poll();
89 1 }
90
91 //复位看门狗子程序
92 void rest_dog(void)
93 {
94 1 SPI_CS=0;
95 1 SPI_CS=1;
96 1 }
97
98 //检验写操作是否结束。
99 unsigned char wip_poll(void)
100 {
101 1 unsigned char i;
102 1 unsigned char wip;
103 1 for(i=0xff;i>=1;i--)
104 1 {
105 2 wip=rdsr_dog();
106 2 wip&=0x01;
107 2 if(wip==0) break;
108 2 }
109 1 return(wip);
110 1 }
111
112 //单字节指令或数据写入X25045
113 //在SPI_SI线上输入的数据在SPI_SCK的上升沿被锁存。
114 void in_byte(unsigned char byt)
115 {
116 1 unsigned char i;
117 1 for(i=0;i<8;i++)
C51 COMPILER V7.02a 5045 09/29/2005 11:45:22 PAGE 3
118 1 {
119 2 SPI_SCK=0;
120 2 SPI_SI=byt&0x80;
121 2 SPI_SCK=1;
122 2 byt<<=1;
123 2 }
124 1 SPI_SI=0;
125 1 }
126
127 //单字节数据从X25045读到单片机
128 //数据由SPI_SCK的下降沿输出到SPI_SO线上。
129 unsigned char out_byte(void)
130 {
131 1 unsigned char i;
132 1 unsigned char byt=0;
133 1 for(i=0;i<8;i++)
134 1 {
135 2 byt=byt<<1;
136 2 SPI_SCK=1;
137 2 SPI_SCK=0;
138 2 byt|=SPI_SO;
139 2 }
140 1 return (byt);
141 1 }
142
143
144 /**************************************************/
145 void main(void)
146 {
147 1 unsigned char D;
148 1 unsigned char add_H=0x01,add_L=0x00;
149 1 unsigned char ucDATA=0x11;
150 1 init_serial();
151 1 while(1)
152 1 {
153 2 //wren_dog();
154 2 //wrsr_dog(0);
155 2 //wren_dog();
156 2 byte_write(add_H,(add_L++),(ucDATA++));
157 2 D=byte_read(add_H,add_L);
158 2 PutChar(D);
159 2
160 2
161 2 }
162 1 }
163
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 256 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 10
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 + -