📄 x5045.lst
字号:
C51 COMPILER V7.09 X5045 07/06/2006 14:15:55 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE X5045
OBJECT MODULE PLACED IN X5045.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE X5045.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /**********************************************************
2 * 文件名称: X5045.C
3 * 功能描述: 通过单片机的SPI接口读写X5045;
4 **********************************************************/
5
6 #include "sst89x5x4.h"
7
8 sbit CS = P1^4;
9
10 void Delay(unsigned int j)
11 {
12 1 unsigned int i;
13 1 unsigned char k;
14 1 for(i=0; i<j; i++)
15 1 for(k=0; k<10; k++);
16 1 }
17 // 处理主从控制器间的字节传输
18 unsigned char SST_MasterIO(unsigned char HW_SPI_out)
19 {
20 1 unsigned char temp;
21 1 SPDR = HW_SPI_out;
22 1 do
23 1 {
24 2 temp = SPSR & 0x80;
25 2 } while (temp != 0x80); // 判断 SPIF 标志位
26 1 SPSR = SPSR & 0x7F; // 清除 SPIF
27 1 return SPDR;
28 1 }
29 // 读取状态寄存器
30 unsigned char Read_Status_Register()
31 {
32 1 unsigned char byte = 0;
33 1 CS = 0; // 使能设备
34 1 SST_MasterIO(0x05); // 发送 RDSR 命令
35 1 byte = SST_MasterIO(0x00); // 接收字节
36 1 CS = 1; // 禁止设备
37 1 return byte;
38 1 }
39 // 写状态寄存器(看门狗设置)
40 void WRSR(unsigned char byte)
41 {
42 1 CS = 0; // 使能设备
43 1 SST_MasterIO(0x01); // 发送 WRSR 命令
44 1 SST_MasterIO(byte); // 写入的状态字
45 1 CS = 1; // 禁止设备
46 1 }
47 // 使能写操作
48 void WREN()
49 {
50 1 CS = 0; // 使能设备
51 1 SST_MasterIO(0x06); // 发送 WREN 命令
52 1 CS = 1; // 禁止设备
53 1 }
54 // 禁止写操作
55 void WRDI()
C51 COMPILER V7.09 X5045 07/06/2006 14:15:55 PAGE 2
56 {
57 1 CS = 0; // 使能设备
58 1 SST_MasterIO(0x04); // 发送 WRDI 命令
59 1 CS = 1; // 禁止设备
60 1 }
61 // 读操作
62 unsigned char Read(unsigned char Addr)
63 {
64 1 unsigned char byte = 0;
65 1 CS = 0; // 使能设备
66 1 SST_MasterIO(0x03); // 发送 READ 命令
67 1 SST_MasterIO(Addr); // 发送读取数据的地址
68 1 byte = SST_MasterIO(0x00); // 接收字节
69 1 CS = 1; // 禁止设备
70 1 return byte;
71 1 }
72 // 读多个数据(1--16)
73 void Read_Cont(unsigned char Addr, unsigned char no_bytes, unsigned char DataArray[])
74 {
75 1 unsigned char j = 0;
76 1 CS = 0;
77 1 SST_MasterIO(0x03); // 读命令
78 1 SST_MasterIO(Addr); // 地址
79 1 for (j = 0; j < no_bytes; j++) // 读取no_bytes个数据
80 1 {
81 2 DataArray[j] = SST_MasterIO(0x00); // 接收数据并存储
82 2 }
83 1 CS = 1;
84 1 }
85 // 写一个字节
86 unsigned char Byte_Write(unsigned char Addr, unsigned char byte)
87 {
88 1 WREN();
89 1 Delay(1);
90 1 CS = 0; // 使能设备
91 1 SST_MasterIO(0x02); // 发送 Write 命令
92 1 SST_MasterIO(Addr); // 发送读取数据的地址地址
93 1 SST_MasterIO(byte); // 写一个字节
94 1 CS = 1; // 禁止设备
95 1 }
*** WARNING C173 IN LINE 95 OF X5045.C: missing return-expression
96
97
98 void main(void)
99 {
100 1 unsigned char R_Byte[16], i;
101 1 SPCR = 0x51; // 设置 SPI 的控制寄存器
102 1 //SPCR: bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
103 1 // SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0
104 1 for(i=0; i<16; i++)
105 1 {
106 2 Byte_Write(i, i); // 写0--16到地址00开始的连续16个单元中
107 2 Delay(80);
108 2 }
109 1 Read_Cont(0x00, 16, R_Byte); // 读取地址00开始的连续16个单元中的数
110 1 while(1);
111 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 230 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V7.09 X5045 07/06/2006 14:15:55 PAGE 3
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 20
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -