476 lines
19 KiB
Plaintext
476 lines
19 KiB
Plaintext
C51 COMPILER V9.59.0.0 SC92F_SSI 01/18/2024 10:03:12 PAGE 1
|
||
|
||
|
||
C51 COMPILER V9.59.0.0, COMPILATION OF MODULE SC92F_SSI
|
||
OBJECT MODULE PLACED IN ..\Output\sc92f_ssi.obj
|
||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\FWLib\SC92F_Lib\src\sc92f_ssi.c LARGE OBJECTADVANCED OPTIMIZE(8,SIZE)
|
||
- BROWSE INCDIR(..\FWLib\SC92F_Lib\inc;..\User;..\Apps;..\Apps;..\User) DEFINE(SC92F836xB) DEBUG PRINT(..\List\sc92f_ssi.
|
||
-lst) OBJECT(..\Output\sc92f_ssi.obj)
|
||
|
||
line level source
|
||
|
||
1 //************************************************************
|
||
2 // Copyright (c) 深圳市赛元微电子有限公司
|
||
3 // 文件名称 : sc92f_ssi.c
|
||
4 // 作者 :
|
||
5 // 模块功能 : SSI固件库函数C文件
|
||
6 // 局部函数列表:
|
||
7 // 最后更正日期: 2021/08/20
|
||
8 // 版本 : V1.10001
|
||
9 // 说明 :
|
||
10 //*************************************************************
|
||
11
|
||
12 #include "sc92f_ssi.h"
|
||
13
|
||
14 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (
|
||
-SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||
15 || defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB) || defin
|
||
-ed (SC92F84Ax) || defined (SC92F74Ax)\
|
||
16 || defined (SC92F83Ax) || defined (SC92F73Ax) || defined (SC92F7003) || defined (SC92F8003) || defined (
|
||
-SC92F740x) || defined (SC92F827X)\
|
||
17 || defined (SC92F837X) || defined (SC92FWxx) || defined (SC93F833x) || defined (SC93F843x) || defined (S
|
||
-C93F743x) || defined (SC92F848x) || defined (SC92F748x)\
|
||
18 || defined (SC92F859x) || defined (SC92F759x)
|
||
19 /**************************************************
|
||
20 *函数名称:void SSI_DeInit(void)
|
||
21 *函数功能:SSI相关寄存器复位至缺省值
|
||
22 *入口参数:void
|
||
23 *出口参数:void
|
||
24 **************************************************/
|
||
25 void SSI_DeInit(void)
|
||
26 {
|
||
27 1 OTCON &= 0X3F;
|
||
28 1 SSCON0 = 0X00;
|
||
29 1 SSCON1 = 0X00;
|
||
30 1 SSCON2 = 0X00;
|
||
31 1 SSDAT = 0X00;
|
||
32 1 IE1 &= (~0X01);
|
||
33 1 IP1 &= (~0X01);
|
||
34 1 }
|
||
35
|
||
36 #if defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x)
|
||
/**************************************************
|
||
*函数名称:SSI_PinSelection(SSI_PinSelection_TypeDef PinSeletion)
|
||
*函数功能:SSI引脚选择
|
||
*入口参数:
|
||
SSI_PinSelection_TypeDef:PinSeletion:选择SSI引脚为P10P27P26或P21P22P23
|
||
*出口参数:void
|
||
**************************************************/
|
||
void SSI_PinSelection(SSI_PinSelection_TypeDef
|
||
PinSeletion)
|
||
{
|
||
OTCON = OTCON & 0XDF | PinSeletion;
|
||
}
|
||
#endif
|
||
C51 COMPILER V9.59.0.0 SC92F_SSI 01/18/2024 10:03:12 PAGE 2
|
||
|
||
50
|
||
51 /**************************************************
|
||
52 *函数名称:void SSI_SPI_Init(SPI_FirstBit_TypeDef FirstBit, SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler
|
||
-,SPI_Mode_TypeDef Mode,
|
||
53 SPI_ClockPolarity_TypeDef ClockPolarity, SPI_ClockPhase_TypeDef ClockPhase,SPI_TXE_INT_TypeDef SPI
|
||
-_TXE_INT)
|
||
54 *函数功能:SPI初始化配置函数
|
||
55 *入口参数:
|
||
56 SPI_FirstBit_TypeDef:FirstBit:优先传送位选择(MSB/LSB)
|
||
57 SPI_BaudRatePrescaler_TypeDef:BaudRatePrescaler:SPI时钟频率选择
|
||
58 SPI_Mode_TypeDef:Mode:SPI工作模式选择
|
||
59 SPI_ClockPolarity_TypeDef:ClockPolarity:SPI时钟极性选择
|
||
60 SPI_ClockPhase_TypeDef:ClockPhase:SPI时钟相位选择
|
||
61 SPI_TXE_INT_TypeDef:SPI_TXE_INT:发送缓存器中断允许选择
|
||
62 *出口参数:void
|
||
63 **************************************************/
|
||
64 void SSI_SPI_Init(SPI_FirstBit_TypeDef FirstBit,
|
||
65 SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,
|
||
66 SPI_Mode_TypeDef Mode,
|
||
67 SPI_ClockPolarity_TypeDef ClockPolarity,
|
||
68 SPI_ClockPhase_TypeDef ClockPhase,
|
||
69 SPI_TXE_INT_TypeDef SPI_TXE_INT)
|
||
70 {
|
||
71 1 OTCON = (OTCON & 0X3F) | 0X40;
|
||
72 1 SSCON1 = SSCON1 & (~0X05) | FirstBit |
|
||
73 1 SPI_TXE_INT;
|
||
74 1 SSCON0 = SSCON0 & 0X80 | BaudRatePrescaler | Mode
|
||
75 1 | ClockPolarity | ClockPhase;
|
||
76 1 }
|
||
77
|
||
78 /*****************************************************
|
||
79 *函数名称:void SSI_SPI_Cmd(FunctionalState NewState)
|
||
80 *函数功能:SPI功能开关函数
|
||
81 *入口参数:
|
||
82 FunctionalState:NewState:功能启动/关闭选择
|
||
83 *出口参数:void
|
||
84 *****************************************************/
|
||
85 void SSI_SPI_Cmd(FunctionalState NewState)
|
||
86 {
|
||
87 1 if(NewState != DISABLE)
|
||
88 1 {
|
||
89 2 SSCON0 |= 0X80;
|
||
90 2 }
|
||
91 1 else
|
||
92 1 {
|
||
93 2 SSCON0 &= (~0X80);
|
||
94 2 }
|
||
95 1 }
|
||
96
|
||
97 /*****************************************************
|
||
98 *函数名称:void SSI_SPI_SendData(uint8_t Data)
|
||
99 *函数功能:SPI发送数据
|
||
100 *入口参数:
|
||
101 uint8_t:Data:发送的数据
|
||
102 *出口参数:void
|
||
103 *****************************************************/
|
||
104 void SSI_SPI_SendData(uint8_t Data)
|
||
105 {
|
||
106 1 SSDAT = Data;
|
||
107 1 }
|
||
108
|
||
109 /*****************************************************
|
||
C51 COMPILER V9.59.0.0 SC92F_SSI 01/18/2024 10:03:12 PAGE 3
|
||
|
||
110 *函数名称:uint8_t SSI_SPI_ReceiveData(void)
|
||
111 *函数功能:获得SSDAT中的值
|
||
112 *入口参数:void
|
||
113 *出口参数:
|
||
114 uint8_t:SPI接收到的8位数据
|
||
115 *****************************************************/
|
||
116 uint8_t SSI_SPI_ReceiveData(void)
|
||
117 {
|
||
118 1 return SSDAT;
|
||
119 1 }
|
||
120
|
||
121 /**************************************************
|
||
122 *函数名称:void SSI_TWI_Init(uint8_t TWI_Address)
|
||
123 *函数功能:TWI初始化配置函数
|
||
124 *入口参数:
|
||
125 uint8_t:TWI_Address:TWI作为从机时7位从机地址配置
|
||
126 *出口参数:void
|
||
127 **************************************************/
|
||
128 void SSI_TWI_Init(uint8_t TWI_Address)
|
||
129 {
|
||
130 1 OTCON = OTCON & 0X3F | 0X80;
|
||
131 1 SSCON1 = TWI_Address << 1;
|
||
132 1 }
|
||
133
|
||
134 /**************************************************
|
||
135 *函数名称:void SSI_TWI_AcknowledgeConfig(FunctionalState NewState)
|
||
136 *函数功能:TWI接收应答使能函数
|
||
137 *入口参数:
|
||
138 FunctionalState:NewState:接收应答使能/失能选择
|
||
139 *出口参数:void
|
||
140 **************************************************/
|
||
141 void SSI_TWI_AcknowledgeConfig(FunctionalState
|
||
142 NewState)
|
||
143 {
|
||
144 1 if (NewState != DISABLE)
|
||
145 1 {
|
||
146 2 SSCON0 |= 0X08;
|
||
147 2 }
|
||
148 1 else
|
||
149 1 {
|
||
150 2 SSCON0 &= 0XF7;
|
||
151 2 }
|
||
152 1 }
|
||
153
|
||
154 /**************************************************
|
||
155 *函数名称:void SSI_TWI_GeneralCallCmd(FunctionalState NewState)
|
||
156 *函数功能:TWI通用地址响应使能函数
|
||
157 *入口参数:
|
||
158 FunctionalState:NewState:通用地址响应使能/失能选择
|
||
159 *出口参数:void
|
||
160 **************************************************/
|
||
161 void SSI_TWI_GeneralCallCmd(FunctionalState
|
||
162 NewState)
|
||
163 {
|
||
164 1 if (NewState != DISABLE)
|
||
165 1 {
|
||
166 2 SSCON1 |= 0X01;
|
||
167 2 }
|
||
168 1 else
|
||
169 1 {
|
||
170 2 SSCON1 &= 0XFE;
|
||
171 2 }
|
||
C51 COMPILER V9.59.0.0 SC92F_SSI 01/18/2024 10:03:12 PAGE 4
|
||
|
||
172 1 }
|
||
173
|
||
174 /**************************************************
|
||
175 *函数名称:FlagStatus SSI_GetTWIStatus(SSI_TWIState_TypeDef SSI_TWIState)
|
||
176 *函数功能:获取TWI状态机
|
||
177 *入口参数:
|
||
178 SSI_TWIState_TypeDef:SSI_TWIState:TWI状态机状态
|
||
179 *出口参数:void
|
||
180 **************************************************/
|
||
181 FlagStatus SSI_GetTWIStatus(SSI_TWIState_TypeDef SSI_TWIState)
|
||
182 {
|
||
183 1 if((SSCON0&0x07) == SSI_TWIState)
|
||
184 1 return SET;
|
||
185 1 else
|
||
186 1 return RESET;
|
||
187 1 }
|
||
188
|
||
189 /*****************************************************
|
||
190 *函数名称:void SSI_TWI_Cmd(FunctionalState NewState)
|
||
191 *函数功能:TWI功能开关函数
|
||
192 *入口参数:FunctionalState NewState 功能启动/关闭选择
|
||
193 *出口参数:void
|
||
194 *****************************************************/
|
||
195 void SSI_TWI_Cmd(FunctionalState NewState)
|
||
196 {
|
||
197 1 if(NewState != DISABLE)
|
||
198 1 {
|
||
199 2 SSCON0 |= 0X80;
|
||
200 2 }
|
||
201 1 else
|
||
202 1 {
|
||
203 2 SSCON0 &= (~0X80);
|
||
204 2 }
|
||
205 1 }
|
||
206
|
||
207 /*****************************************************
|
||
208 *函数名称:void SSI_TWI_SendData(uint8_t Data)
|
||
209 *函数功能:TWI发送数据
|
||
210 *入口参数:
|
||
211 uint8_t:Data:发送的数据
|
||
212 *出口参数:void
|
||
213 *****************************************************/
|
||
214 void SSI_TWI_SendData(uint8_t Data)
|
||
215 {
|
||
216 1 SSDAT = Data;
|
||
217 1 }
|
||
218
|
||
219 /*****************************************************
|
||
220 *函数名称:uint8_t SSI_TWI_ReceiveData(void)
|
||
221 *函数功能:获得SSDAT中的值
|
||
222 *入口参数:void
|
||
223 *出口参数:
|
||
224 uint8_t:TWI接收到的8位数据
|
||
225 *****************************************************/
|
||
226 uint8_t SSI_TWI_ReceiveData(void)
|
||
227 {
|
||
228 1 return SSDAT;
|
||
229 1 }
|
||
230
|
||
231 /**************************************************
|
||
232 *函数名称:void SSI_UART1_Init(uint32_t UART1Fsys, uint32_t BaudRate, UART1_Mode_TypeDef Mode, UART1_RX_Typ
|
||
-eDef RxMode)
|
||
C51 COMPILER V9.59.0.0 SC92F_SSI 01/18/2024 10:03:12 PAGE 5
|
||
|
||
233 *函数功能:UART1初始化配置函数
|
||
234 *入口参数:
|
||
235 uint32_t:UART1Fsys:系统时钟频率
|
||
236 uint32_t:BaudRate:波特率
|
||
237 UART1_Mode_TypeDef:Mode:UART1工作模式
|
||
238 UART1_RX_TypeDef:RxMode:接收允许选择
|
||
239 *出口参数:void
|
||
240 **************************************************/
|
||
241 void SSI_UART1_Init(uint32_t UART1Fsys,
|
||
242 uint32_t BaudRate, UART1_Mode_TypeDef Mode,
|
||
243 UART1_RX_TypeDef RxMode)
|
||
244 {
|
||
245 1
|
||
246 1 #if defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
|
||
OTCON |= 0xC0;
|
||
SSCON0 = SSCON0 & 0X0F | Mode | RxMode;
|
||
SSCON2 = UART1Fsys / 16 / BaudRate / 256;
|
||
SSCON1 = UART1Fsys / 16 / BaudRate % 256;
|
||
|
||
#else
|
||
253 1 OTCON |= 0xC0;
|
||
254 1 SSCON0 = SSCON0 & 0X0F | Mode | RxMode;
|
||
255 1 SSCON2 = UART1Fsys / BaudRate / 256;
|
||
256 1 SSCON1 = UART1Fsys / BaudRate % 256;
|
||
257 1
|
||
258 1 #endif
|
||
259 1
|
||
260 1
|
||
261 1 }
|
||
262
|
||
263 bit SSI_FLAG = 0;
|
||
264 /*****************************************************
|
||
265 *函数名称:void SSI_UART1_SendData8(uint8_t Data)
|
||
266 *函数功能:UART1发送8位数据
|
||
267 *入口参数:
|
||
268 uint8_t:Data:发送的数据
|
||
269 *出口参数:void
|
||
270 *****************************************************/
|
||
271 void SSI_UART1_SendData8(uint8_t Data)
|
||
272 {
|
||
273 1 SSI_FLAG = 1;
|
||
274 1 SSDAT = Data;
|
||
275 1 while( SSI_FLAG == 1 );
|
||
276 1 }
|
||
277
|
||
278
|
||
279
|
||
280 /*****************************************************
|
||
281 *函数名称:uint8_t SSI_UART1_ReceiveData8(void)
|
||
282 *函数功能:获得SSDAT中的值
|
||
283 *入口参数:void
|
||
284 *出口参数:
|
||
285 uint8_t:UART接收到的8位数据
|
||
286 *****************************************************/
|
||
287 uint8_t SSI_UART1_ReceiveData8(void)
|
||
288 {
|
||
289 1 return SSDAT;
|
||
290 1 }
|
||
291
|
||
292 /*****************************************************
|
||
293 *函数名称:void SSI_UART1_SendData9(uint16_t Data)
|
||
294 *函数功能:UART1发送9位数据
|
||
C51 COMPILER V9.59.0.0 SC92F_SSI 01/18/2024 10:03:12 PAGE 6
|
||
|
||
295 *入口参数:
|
||
296 uint16_t:Data:发送的数据
|
||
297 *出口参数:void
|
||
298 *****************************************************/
|
||
299 void SSI_UART1_SendData9(uint16_t Data)
|
||
300 {
|
||
301 1 uint8_t Data_9Bit;
|
||
302 1 Data_9Bit = (Data >> 8);
|
||
303 1
|
||
304 1 if(Data_9Bit)
|
||
305 1 {
|
||
306 2 SSCON0 |= 0x08;
|
||
307 2 }
|
||
308 1 else
|
||
309 1 {
|
||
310 2 SSCON0 &= 0xf7;
|
||
311 2 }
|
||
312 1
|
||
313 1 SSDAT = (uint8_t)Data;
|
||
314 1 }
|
||
315
|
||
316 /*****************************************************
|
||
317 *函数名称:uint16_t SSI_UART1_ReceiveData9(void)
|
||
318 *函数功能:获得SSDAT中的值及第九位的值
|
||
319 *入口参数:void
|
||
320 *出口参数:
|
||
321 uint16_t:接收到的数据
|
||
322 *****************************************************/
|
||
323 uint16_t SSI_UART1_ReceiveData9(void)
|
||
324 {
|
||
325 1 uint16_t Data9;
|
||
326 1 Data9 = SSDAT + ((uint16_t)(SSCON0 & 0X04) << 6);
|
||
327 1 SSCON0 &= 0XFB;
|
||
328 1 return Data9;
|
||
329 1 }
|
||
330
|
||
331 /*****************************************************
|
||
332 *函数名称:void SSI_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||
333 *函数功能:SSI中断初始化
|
||
334 *入口参数:
|
||
335 FunctionalState:NewState:中断使能/关闭选择
|
||
336 PriorityStatus:Priority:中断优先级选择
|
||
337 *出口参数:void
|
||
338 *****************************************************/
|
||
339 void SSI_ITConfig(FunctionalState NewState,
|
||
340 PriorityStatus Priority)
|
||
341 {
|
||
342 1 if(NewState != DISABLE)
|
||
343 1 {
|
||
344 2 IE1 |= 0x01;
|
||
345 2 }
|
||
346 1 else
|
||
347 1 {
|
||
348 2 IE1 &= 0xFE;
|
||
349 2 }
|
||
350 1
|
||
351 1 /************************************************************/
|
||
352 1 if(Priority != LOW)
|
||
353 1 {
|
||
354 2 IP1 |= 0x01;
|
||
355 2 }
|
||
356 1 else
|
||
C51 COMPILER V9.59.0.0 SC92F_SSI 01/18/2024 10:03:12 PAGE 7
|
||
|
||
357 1 {
|
||
358 2 IP1 &= 0xFE;
|
||
359 2 }
|
||
360 1 }
|
||
361
|
||
362 /*****************************************************
|
||
363 *函数名称:FlagStatus SSI_GetFlagStatus(SSI_Flag_TypeDef SSI_FLAG)
|
||
364 *函数功能:获得SSI标志状态
|
||
365 *入口参数:
|
||
366 SSI_Flag_TypeDef:SSI_FLAG:所需获取的标志位
|
||
367 *出口参数:
|
||
368 FlagStatus:SSI标志位置起状态
|
||
369 *****************************************************/
|
||
370 FlagStatus SSI_GetFlagStatus(SSI_Flag_TypeDef
|
||
371 SSI_FLAG)
|
||
372 {
|
||
373 1 FlagStatus bitstatus = RESET;
|
||
374 1
|
||
375 1 if((SSI_FLAG == SPI_FLAG_SPIF) ||
|
||
376 1 (SSI_FLAG == SPI_FLAG_WCOL) ||
|
||
377 1 (SSI_FLAG == SPI_FLAG_TXE))
|
||
378 1 {
|
||
379 2 if((SSI_FLAG & SSCON1) != (uint8_t)RESET)
|
||
380 2 {
|
||
381 3 bitstatus = SET;
|
||
382 3 }
|
||
383 2 else
|
||
384 2 {
|
||
385 3 bitstatus = RESET;
|
||
386 3 }
|
||
387 2 }
|
||
388 1 else
|
||
389 1 {
|
||
390 2 if((SSI_FLAG & SSCON0) != (uint8_t)RESET)
|
||
391 2 {
|
||
392 3 bitstatus = SET;
|
||
393 3 }
|
||
394 2 else
|
||
395 2 {
|
||
396 3 bitstatus = RESET;
|
||
397 3 }
|
||
398 2 }
|
||
399 1
|
||
400 1 return bitstatus;
|
||
401 1 }
|
||
402
|
||
403 /*****************************************************
|
||
404 *函数名称:void SSI_ClearFlag(SSI_Flag_TypeDef SSI_FLAG)
|
||
405 *函数功能:清除SSI标志状态
|
||
406 *入口参数:
|
||
407 SSI_Flag_TypeDef:SSI_FLAG:所需清除的标志位
|
||
408 *出口参数:void
|
||
409 *****************************************************/
|
||
410 void SSI_ClearFlag(SSI_Flag_TypeDef SSI_FLAG)
|
||
411 {
|
||
412 1 if((SSI_FLAG == SPI_FLAG_SPIF) ||
|
||
413 1 (SSI_FLAG == SPI_FLAG_WCOL) ||
|
||
414 1 (SSI_FLAG == SPI_FLAG_TXE))
|
||
415 1 {
|
||
416 2 SSCON1 &= (~SSI_FLAG);
|
||
417 2 }
|
||
418 1 else
|
||
C51 COMPILER V9.59.0.0 SC92F_SSI 01/18/2024 10:03:12 PAGE 8
|
||
|
||
419 1 {
|
||
420 2 SSCON0 &= (~SSI_FLAG);
|
||
421 2 }
|
||
422 1 }
|
||
423 #endif
|
||
424
|
||
425 /******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||
|
||
|
||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||
CODE SIZE = 413 ----
|
||
CONSTANT SIZE = ---- ----
|
||
XDATA SIZE = ---- 16
|
||
PDATA SIZE = ---- ----
|
||
DATA SIZE = ---- ----
|
||
IDATA SIZE = ---- ----
|
||
BIT SIZE = 1 ----
|
||
EDATA SIZE = ---- ----
|
||
HDATA SIZE = ---- ----
|
||
XDATA CONST SIZE = ---- ----
|
||
FAR CONST SIZE = ---- ----
|
||
END OF MODULE INFORMATION.
|
||
|
||
|
||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|