📄 s8051.lst
字号:
C51 COMPILER V8.00 S8051 11/17/2008 10:50:41 PAGE 1
C51 COMPILER V8.00, COMPILATION OF MODULE S8051
OBJECT MODULE PLACED IN S8051.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.exe S8051.c DB OE BR
line level source
1 /*
2 ** ============================================================================
3 **
4 ** FILE
5 ** S8051.c
6 **
7 ** DESCRIPTION
8 ** Contains all the low level, 8051 dependent functions
9 **
10 ** CREATED
11 ** Silicon Laboratories Hungary Ltd
12 **
13 ** COPYRIGHT
14 ** Copyright 2008 Silicon Laboratories, Inc.
15 ** http://www.silabs.com
16 **
17 ** ============================================================================
18 */
19 #include "S8051.h"
20 #include "timers.h"
21
22 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 +
24 + FUNCTION NAME: void SetHwMasterSpi(void)
25 +
26 + DESCRIPTION: Initialize the HW SPI port
27 +
28 + INPUT: data
29 +
30 + RETURN: None
31 +
32 + NOTES: It doesn't control the nSEL pin
33 +
34 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
35 void SetHwMasterSpi(void)
36 {
37 1
38 1 SPI1CFG = 0x40; //Master SPI, CKPHA=0, CKPOL=0
39 1 SPI1CN = 0x00; //3-wire Single Master, SPI enabled
40 1 SPI1CKR = (SYSCLK/(2*SPI_CLOCK))-1;
41 1 SPI1EN = 1; // Enable SPI1 module
42 1
43 1 //set nSEL pins to high
44 1 RF_NSEL_PIN = 1;
45 1 EE_NSEL_PIN = 1;
46 1 }
47
48
49 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
50 +
51 + FUNCTION NAME: void SpiWrite(uint8 spi_in)
52 +
53 + DESCRIPTION: sends 8 length data through the SPI port
54 +
55 + INPUT: data
C51 COMPILER V8.00 S8051 11/17/2008 10:50:41 PAGE 2
56 +
57 + RETURN: None
58 +
59 + NOTES: It doesn't control the nSEL pin
60 +
61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
62 void SpiWrite(uint8 spi_in)
63 {
64 1 SPI1DAT = spi_in; //write data into the SPI register
65 1 while( SPIF1 == 0); //wait for sending the data
66 1 SPIF1 = 0; //clear interrupt flag
67 1 }
68
69 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
70 +
71 + FUNCTION NAME: uint8 SpiReadWrite(uint8 data)
72 +
73 + DESCRIPTION: sends and read 8 length data through the SPI port
74 +
75 + INPUT: data
76 +
77 + RETURN: received byte
78 +
79 + NOTES: it doesn't control the nSEL pin
80 +
81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
82 uint8 SpiReadWrite(uint8 spi_in)
83 {
84 1 SPI1DAT = spi_in; //write data into the SPI register
85 1 while( SPIF1 == 0); //wait for sending the data
86 1 SPIF1 = 0; //clear interrupt flag
87 1 return SPI1DAT; //read received bytes
88 1 }
89
90 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
91 +
92 + FUNCTION NAME: void SpiRfWriteWord(uint16 spi_in)
93 +
94 + DESCRIPTION: sends 16 length data through the SPI port
95 +
96 + INPUT: data
97 +
98 + RETURN: None
99 +
100 + NOTES: It controls the nSEL pin
101 +
102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
103 void SpiRfWriteWord(UU16 spi_in)
104 {
105 1 RF_NSEL_PIN = 0;
106 1 SpiWrite( spi_in.U8[MSB] );
107 1 SpiWrite( spi_in.U8[LSB] );
108 1 RF_NSEL_PIN = 1;
109 1 }
110
111 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
112 +
113 + FUNCTION NAME: void SpiRfWriteAddressData(uint8 address, uint8 data1)
114 +
115 + DESCRIPTION: sends 16 length data through the SPI port (address and data)
116 +
117 + INPUT: address - register address
C51 COMPILER V8.00 S8051 11/17/2008 10:50:41 PAGE 3
118 + data - 8bit data
119 +
120 + RETURN: None
121 +
122 + NOTES: It controls the nSEL pin
123 +
124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
125 void SpiRfWriteAddressData(uint8 address, uint8 d)
126 {
127 1 RF_NSEL_PIN = 0;
128 1 SpiWrite(address);
129 1 SpiWrite(d);
130 1 RF_NSEL_PIN = 1;
131 1 }
132
133 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
134 +
135 + FUNCTION NAME: uint16 SpiRfReadWriteWord(uint16 spi_in)
136 +
137 + DESCRIPTION: sends and read 16 length data through the SPI port
138 +
139 + INPUT: data
140 +
141 + RETURN: received word
142 +
143 + NOTES: it controls the nSEL pin
144 +
145 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
146 UU16 SpiRfReadWriteWord(UU16 spi_in)
147 {
148 1 UU16 temp16;
149 1
150 1 RF_NSEL_PIN = 0;
151 1 temp16.U8[MSB] = SpiReadWrite( spi_in.U8[MSB] );
152 1 temp16.U8[LSB] = SpiReadWrite( spi_in.U8[LSB] );
153 1 RF_NSEL_PIN = 1;
154 1
155 1 return temp16;
156 1 }
157
158 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
159 +
160 + FUNCTION NAME: uint8 SpiReadRegister(uint8 address)
161 +
162 + DESCRIPTION: Read a register of the radio
163 +
164 + INPUT: address - register address
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -