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)