ct_test/Keil_C/List/sc92f_ssi.lst

476 lines
19 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)