init
This commit is contained in:
parent
29ba9e893f
commit
b36ac27555
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef _SCDriver_List_H_
|
||||
#define _SCDriver_List_H_
|
||||
|
||||
/*write H Files here*/
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,206 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F7003_C.H
|
||||
|
||||
C Header file for SC92F7003 microcontroller.
|
||||
Copyright (c) 2019 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2019.06.24
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F7003_H_
|
||||
#define _SC92F7003_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG1 = 0xAA; //ADC功能配置寄存器0
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器1
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON0 = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0xD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2设置寄存器
|
||||
sfr PWMCON1 = 0xDA; //PWM控制寄存器
|
||||
sfr PWMDTYB = 0xDB; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0xDC; //PWM3设置寄存器
|
||||
sfr PWMDTY4 = 0xDD; //PWM4设置寄存器
|
||||
sfr PWMDTY5 = 0xDE; //PWM5设置寄存器
|
||||
sfr PWMDTY6 = 0xDF; //PWM6设置寄存器
|
||||
|
||||
|
||||
//
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart0*/
|
||||
sfr SCON = 0X98; //uart控制寄存器
|
||||
sfr SBUF = 0X99; //uart0数据寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //SSI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SSI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SSI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SSI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定 UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定 INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定 INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/* P0 */
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/* P1 */
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/* P2 */
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,209 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F725x_C.H
|
||||
|
||||
C Header file for SC92F725x microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.04.25
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F725x_H_
|
||||
#define _SC92F725x_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器0
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器1
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器0
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器1
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器1
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器1
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON= 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCFG1 = 0xAC; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG0 = 0xD1; //PWM设置寄存器
|
||||
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMCFG1 = 0xD4; //PWM设置寄存器
|
||||
sfr PWMDTY0 = 0xD5; //PWM占空比设置寄存器
|
||||
sfr PWMDTY1 = 0XD6; //PWM占空比设置寄存器
|
||||
sfr PWMDTY2 = 0XD7; //PWM占空比设置寄存器
|
||||
sfr PWMDTY3 = 0xDD; //PWM占空比设置寄存器
|
||||
sfr PWMDTY4 = 0XDE; //PWM占空比设置寄存器
|
||||
sfr PWMDTY5 = 0XDF; //PWM占空比设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*option*/
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高” 1:设定INT0的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F7252封装未引出的管脚:无
|
||||
*SC92F7251封装未引出的管脚:P04/P05
|
||||
*SC92F7250封装未引出的管脚:P0
|
||||
******************************************/
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F7252封装未引出的管脚:无
|
||||
*SC92F7251封装未引出的管脚:无
|
||||
*SC92F7250封装未引出的管脚:P10/P11/P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F7252封装未引出的管脚:无
|
||||
*SC92F7251封装未引出的管脚:P26/P27
|
||||
*SC92F7250封装未引出的管脚:P24/P25
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F7252,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F7251_NIO_Init() {P0CON|=0xF0;P1CON|=0x30;P2CON|=0xCC;} //SC92F7251的未引出来的IO口配置
|
||||
#define SC92F7250_NIO_Init() {P0CON|=0xFF;P1CON|=0xF3;P2CON|=0x3C;} //SC92F7250的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,199 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F730x_C.H
|
||||
|
||||
C Header file for SC92F730x microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.11.23
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F730x_H_
|
||||
#define _SC92F730x_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器0
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器1
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器0
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器1
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器1
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器1
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON= 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCFG1 = 0xAC; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG0 = 0xD1; //PWM设置寄存器
|
||||
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMCFG1 = 0xD4; //PWM设置寄存器
|
||||
sfr PWMDTY0 = 0xD5; //PWM占空比设置寄存器
|
||||
sfr PWMDTY1 = 0XD6; //PWM占空比设置寄存器
|
||||
sfr PWMDTY2 = 0XD7; //PWM占空比设置寄存器
|
||||
sfr PWMDTY3 = 0xDD; //PWM占空比设置寄存器
|
||||
sfr PWMDTY4 = 0XDE; //PWM占空比设置寄存器
|
||||
sfr PWMDTY5 = 0XDF; //PWM占空比设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*option*/
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高” 1:设定INT0的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F7309封装未引出的管脚:无
|
||||
*SC92F7308封装未引出的管脚:P00/P01
|
||||
******************************************/
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F7309封装未引出的管脚:无
|
||||
*SC92F7308封装未引出的管脚:P10/P11
|
||||
******************************************/
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F7309封装未引出的管脚:无
|
||||
*SC92F7308封装未引出的管脚:无
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*****************************************************************************/
|
||||
#define SC92F7309_NIO_Init() {P0CON|=0xF0;P1CON|=0xF0;P2CON|=0x3C;} //SC92F7309的未引出来的IO口配置
|
||||
#define SC92F7308_NIO_Init() {P0CON|=0xF3;P1CON|=0xF3;P2CON|=0x3C;} //SC92F7308的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,232 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F732x_C.H
|
||||
|
||||
C Header file for SC92F732x microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.04.25
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F732x_H_
|
||||
#define _SC92F732x_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器0
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器1
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器0
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器1
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器0
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器1
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器1
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器1
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON= 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L= 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H= 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCFG1 = 0xAC; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM高电平设置寄存器
|
||||
sfr PWMDTY0 = 0xD5; //PWM高电平设置寄存器
|
||||
sfr PWMDTY1 = 0XD6; //PWM高电平设置寄存器
|
||||
sfr PWMDTY2 = 0XD7; //PWM高电平设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*option*/
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F7323封装未引出的管脚:无
|
||||
*SC92F7322封装未引出的管脚:P06/P07
|
||||
*SC92F7321封装未引出的管脚:P04/P05/P06/P07
|
||||
*SC92F7320封装未引出的管脚:P0
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/************************ P1 *********************
|
||||
*SC92F7323封装未引出的管脚:无
|
||||
*SC92F7322封装未引出的管脚:P14/P15
|
||||
*SC92F7321封装未引出的管脚:P14/P15
|
||||
*SC92F7320封装未引出的管脚:P10/P11/P14/P15/P16/P17
|
||||
**************************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************** P2 *******%**********
|
||||
*SC92F7323封装未引出的管脚:无
|
||||
*SC92F7322封装未引出的管脚:P22/P23
|
||||
*SC92F7321封装未引出的管脚:P24/P25/P26/P27
|
||||
*SC92F7320封装未引出的管脚:P22/P23/P24/P25
|
||||
*********************************%*********/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/**************** P5 **************
|
||||
*SC92F7323封装未引出的管脚:无
|
||||
*SC92F7322封装未引出的管脚:P50/P51
|
||||
*SC92F7321封装未引出的管脚:P50/P51
|
||||
*SC92F7320封装未引出的管脚:P50/P51
|
||||
***********************************/
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F7323,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F7322_NIO_Init() {P0CON|=0xC0;P1CON|=0x30;P2CON|=0x0C;P5CON|=0x03;} //SC92F7322的未引出来的IO口配置
|
||||
#define SC92F7321_NIO_Init() {P0CON|=0xF0;P1CON|=0x30;P2CON|=0xF0;P5CON|=0x03;} //SC92F7321的未引出来的IO口配置
|
||||
#define SC92F7320_NIO_Init() {P0CON|=0xFF;P1CON|=0xF3;P2CON|=0x3C;P5CON|=0x03;} //SC92F7320的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,209 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F735x_C.H
|
||||
|
||||
C Header file for SC92F735x microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.04.25
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F735x_H_
|
||||
#define _SC92F735x_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器0
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器1
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器0
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器1
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器1
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器1
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON= 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCFG1 = 0xAC; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG0 = 0xD1; //PWM设置寄存器
|
||||
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMCFG1 = 0xD4; //PWM设置寄存器
|
||||
sfr PWMDTY0 = 0xD5; //PWM占空比设置寄存器
|
||||
sfr PWMDTY1 = 0XD6; //PWM占空比设置寄存器
|
||||
sfr PWMDTY2 = 0XD7; //PWM占空比设置寄存器
|
||||
sfr PWMDTY3 = 0xDD; //PWM占空比设置寄存器
|
||||
sfr PWMDTY4 = 0XDE; //PWM占空比设置寄存器
|
||||
sfr PWMDTY5 = 0XDF; //PWM占空比设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*option*/
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高” 1:设定INT0的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F7352封装未引出的管脚:无
|
||||
*SC92F7351封装未引出的管脚:P04/P05
|
||||
*SC92F7350封装未引出的管脚:P0
|
||||
******************************************/
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F7352封装未引出的管脚:无
|
||||
*SC92F7351封装未引出的管脚:无
|
||||
*SC92F7350封装未引出的管脚:P10/P11/P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F7352封装未引出的管脚:无
|
||||
*SC92F7351封装未引出的管脚:P26/P27
|
||||
*SC92F7350封装未引出的管脚:P24/P25
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F7352,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F7351_NIO_Init() {P0CON|=0xF0;P1CON|=0x30;P2CON|=0xCC;} //SC92F7351的未引出来的IO口配置
|
||||
#define SC92F7350_NIO_Init() {P0CON|=0xFF;P1CON|=0xF3;P2CON|=0x3C;} //SC92F7350的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,252 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F746xB_C.H
|
||||
|
||||
C Header file for SC92F736xB microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.06.15
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F736xB_H_
|
||||
#define _SC92F736xB_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr16 RCAP2 = 0xCA;
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0xD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2设置寄存器
|
||||
sfr PWMDTYB = 0xDC; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0xDD; //PWM3设置寄存器
|
||||
sfr PWMDTY4 = 0xDE; //PWM4设置寄存器
|
||||
sfr PWMDTY5 = 0xDF; //PWM5设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart*/
|
||||
sfr SCON = 0x98; //串口控制寄存器
|
||||
sfr SBUF = 0x99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*乘除法*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
/* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高” 1:设定INT0的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F7363B封装未引出的管脚:无
|
||||
*SC92F736B封装未引出的管脚:P06/P07
|
||||
*SC92F7361B封装未引出的管脚:P02/P03/P04/P06/P07
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F7363B封装未引出的管脚:无
|
||||
*SC92F7362B封装未引出的管脚:P16/P17
|
||||
*SC92F7361B封装未引出的管脚:P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F7363B封装未引出的管脚:无
|
||||
*SC92F7362B封装未引出的管脚:P22/P23
|
||||
*SC92F7361B封装未引出的管脚:P22/P23/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F7363B封装未引出的管脚:无
|
||||
*SC92F7362B封装未引出的管脚:P50/P51
|
||||
*SC92F7361B封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F7363B,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F7362B_NIO_Init() {P0CON|=0xC0,P1CON|=0xC0,P2CON|=0x0C,P5CON|=0x03;} //SC92F7362B的未引出来的IO口配置
|
||||
#define SC92F7361B_NIO_Init() {P0CON|=0xEC,P1CON|=0xC0,P2CON|=0x8C,P5CON|=0x03;} //SC92F7361B的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,222 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F740x_C.H
|
||||
|
||||
C Header file for SC92F740x microcontroller.
|
||||
Copyright (c) 2019 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2019.10.31
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F740x_H_
|
||||
#define _SC92F740x_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG1 = 0xAA; //ADC功能配置寄存器0
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器1
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON0 = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0xD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2设置寄存器
|
||||
sfr PWMCON1 = 0xDA; //PWM控制寄存器
|
||||
sfr PWMDTYB = 0xDB; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0xDC; //PWM3设置寄存器
|
||||
sfr PWMDTY4 = 0xDD; //PWM4设置寄存器
|
||||
sfr PWMDTY5 = 0xDE; //PWM5设置寄存器
|
||||
sfr PWMDTY6 = 0xDF; //PWM6设置寄存器
|
||||
|
||||
|
||||
//
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart0*/
|
||||
sfr SCON = 0X98; //uart控制寄存器
|
||||
sfr SBUF = 0X99; //uart0数据寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //SSI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SSI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SSI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SSI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定 UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定 INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定 INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F7402封装未引出的管脚:无
|
||||
*SC92F7401封装未引出的管脚:无
|
||||
******************************************/
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F7402封装未引出的管脚:无
|
||||
*SC92F7401封装未引出的管脚:P12/P13
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F7402封装未引出的管脚:无
|
||||
*SC92F7401封装未引出的管脚:P24/P25
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F7402,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F7401_NIO_Init() {P1CON|=0x0C,P2CON|=0x30;} //SC92F7401的未引出来的IO口配置
|
||||
#endif
|
||||
|
|
@ -0,0 +1,237 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F742x_C.H
|
||||
|
||||
C Header file for SC92F742x microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.05.15
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F742x_H_
|
||||
#define _SC92F742x_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器0
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器1
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器0
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器1
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器0
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器1
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器1
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器1
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC设置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC设置寄存器1
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG0 = 0xD1; //PWM设置寄存器0
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMCFG1 = 0xD4; //PWM设置寄存器1
|
||||
sfr PWMDTY0 = 0xD5; //PWM0占空比设置寄存器
|
||||
sfr PWMDTY1 = 0XD6; //PWM1占空比设置寄存器
|
||||
sfr PWMDTY2 = 0XD7; //PWM2占空比设置寄存器
|
||||
sfr PWMDTY3 = 0xDD; //PWM3占空比设置寄存器
|
||||
sfr PWMDTY4 = 0XDE; //PWM4占空比设置寄存器
|
||||
sfr PWMDTY5 = 0XDF; //PWM5占空比设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*SSI*/
|
||||
sfr SS0CON0 = 0XA5; //SSI0控制寄存器2
|
||||
sfr SS0CON1 = 0XA6; //SSI0控制寄存器1
|
||||
sfr SS0CON2 = 0XA4; //SSI0控制寄存器0
|
||||
sfr SS0DAT = 0XA7; //SSI0数据寄存器
|
||||
|
||||
sfr SS1CON2 = 0X95; //SSI1控制寄存器2
|
||||
sfr SS1CON0 = 0X9D; //SSI1控制寄存器0
|
||||
sfr SS1CON1 = 0X9E; //SSI1控制寄存器1
|
||||
sfr SS1DAT = 0X9F; //SSI1数据寄存器
|
||||
|
||||
/*CHKSUM*/
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
sfr CHKSUML = 0xFC; //CHKSUM结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //CHKSUM结果寄存器高位
|
||||
|
||||
/*option*/
|
||||
sfr OPINX = 0XFE; //Option指针
|
||||
sfr OPREG = 0XFF; //Option寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPSSI0 = IP^4; //SSI0中断优先控制位 0:设定SSI0的中断优先权是 “低” 1:设定SSI0的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit ESSI0 = IE^4; //SSI0中断使能控制 0:关闭SSI0中断 1:打开SSI0中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F7423封装未引出的管脚:无
|
||||
*SC92F7422封装未引出的管脚:P06/P07
|
||||
*SC92F7421封装未引出的管脚:P04/P05/P06/P07
|
||||
*SC92F7420封装未引出的管脚:P0
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/************************ P1 *********************
|
||||
*SC92F7423封装未引出的管脚:无
|
||||
*SC92F7422封装未引出的管脚:P14/P15
|
||||
*SC92F7421封装未引出的管脚:P14/P15
|
||||
*SC92F7420封装未引出的管脚:P10/P11/P14/P15/P16/P17
|
||||
**************************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************** P2 *******%**********
|
||||
*SC92F7423封装未引出的管脚:无
|
||||
*SC92F7422封装未引出的管脚:P22/P23
|
||||
*SC92F7421封装未引出的管脚:P24/P25/P26/P27
|
||||
*SC92F7420封装未引出的管脚:P22/P23/P24/P25
|
||||
*********************************%*********/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/**************** P5 **************
|
||||
*SC92F7423封装未引出的管脚:无
|
||||
*SC92F7422封装未引出的管脚:P50/P51
|
||||
*SC92F7421封装未引出的管脚:P50/P51
|
||||
*SC92F7420封装未引出的管脚:P50/P51
|
||||
***********************************/
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F7423,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F7422_NIO_Init() {P0CON|=0xC0;P1CON|=0x30;P2CON|=0x0C;P5CON|=0x03;} //SC92F7422的未引出来的IO口配置
|
||||
#define SC92F7421_NIO_Init() {P0CON|=0xF0;P1CON|=0x30;P2CON|=0xF0;P5CON|=0x03;} //SC92F7421的未引出来的IO口配置
|
||||
#define SC92F7420_NIO_Init() {P0CON|=0xFF;P1CON|=0xF3;P2CON|=0x3C;P5CON|=0x03;} //SC92F7420的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,294 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F744xB_C.H
|
||||
|
||||
C Header file for SC92F744xB microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.10.30
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F744xB_H_
|
||||
#define _SC92F744xB_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P4PH = 0xC2; //P4口模式控制寄存器
|
||||
sfr P4CON = 0xC1; //P4口模式控制寄存器
|
||||
sfr P4 = 0xC0; //P4口数据寄存器
|
||||
sfr P3PH = 0xB2; //P3口模式控制寄存器
|
||||
sfr P3CON = 0xB1; //P3口模式控制寄存器
|
||||
sfr P3 = 0xB0; //P3口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON0 = 0x96; //IOH0设置寄存器
|
||||
sfr IOHCON1 = 0x97; //IOH1设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD4; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD3; //PWM控制寄存器
|
||||
|
||||
|
||||
//
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
sfr P1VO = 0X94; //P1 LCD Bais 输出寄存器
|
||||
sfr P2VO = 0XA3; //P2 LCD Bais 输出寄存器
|
||||
sfr P3VO = 0XB3; //P3 LCD Bais 输出寄存器
|
||||
|
||||
sfr DDRCON = 0X93; //显示驱动设置寄存器
|
||||
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*SPI*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*模拟比较器*/
|
||||
sfr CMPCFG = 0XB6; //模拟比较器设置寄存器
|
||||
sfr CMPCON = 0XB7; //模拟比较器控制寄存器
|
||||
|
||||
/*乘除法器*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit CLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F7447B封装未引出的管脚:无
|
||||
*SC92F7446B封装未引出的管脚:无
|
||||
*SC92F7445B封装未引出的管脚:P00
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F7447B封装未引出的管脚:无
|
||||
*SC92F7446B封装未引出的管脚:无
|
||||
*SC92F7445B封装未引出的管脚:无
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F7447B封装未引出的管脚:无
|
||||
*SC92F7446B封装未引出的管脚:无
|
||||
*SC92F7445B封装未引出的管脚:无
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P3 ******************
|
||||
*SC92F7447B封装未引出的管脚:无
|
||||
*SC92F7446B封装未引出的管脚:无
|
||||
*SC92F7445B封装未引出的管脚:P3
|
||||
******************************************/
|
||||
sbit P37 = P3^7;
|
||||
sbit P36 = P3^6;
|
||||
sbit P35 = P3^5;
|
||||
sbit P34 = P3^4;
|
||||
sbit P33 = P3^3;
|
||||
sbit P32 = P3^2;
|
||||
sbit P31 = P3^1;
|
||||
sbit P30 = P3^0;
|
||||
|
||||
/******************* P4 ******************
|
||||
*SC92F7447B封装未引出的管脚:无
|
||||
*SC92F7446B封装未引出的管脚:P46/P47
|
||||
*SC92F7445B封装未引出的管脚:P40
|
||||
******************************************/
|
||||
sbit P47 = P4^7;
|
||||
sbit P46 = P4^6;
|
||||
sbit P45 = P4^5;
|
||||
sbit P44 = P4^4;
|
||||
sbit P43 = P4^3;
|
||||
sbit P42 = P4^2;
|
||||
sbit P41 = P4^1;
|
||||
sbit P40 = P4^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F7447B封装未引出的管脚:无
|
||||
*SC92F7446B封装未引出的管脚:P54/P55
|
||||
*SC92F7445B封装未引出的管脚:P5
|
||||
******************************************/
|
||||
sbit P55 = P5^5;
|
||||
sbit P54 = P5^4;
|
||||
sbit P53 = P5^3;
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选SC92F7447B,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F7446B_NIO_Init() {P4CON|=0xC0,P5CON|=0x30;} //SC92F7546B的未引出来的IO口配置
|
||||
#define SC92F7445B_NIO_Init() {P0CON|=0x01,P3CON|=0xFF,P4CON|=0x01,P5CON|=0xFF;} //SC92F7545B的未引出来的IO口配置
|
||||
#endif
|
||||
|
|
@ -0,0 +1,251 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F746XB_C.H
|
||||
|
||||
C Header file for SC92F746XB microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V2.0
|
||||
日期: 2018.08.24
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F746XB_H_
|
||||
#define _SC92F746XB_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0xD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2设置寄存器
|
||||
sfr PWMDTYB = 0xDC; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0xDD; //PWM3设置寄存器
|
||||
sfr PWMDTY4 = 0xDE; //PWM4设置寄存器
|
||||
sfr PWMDTY5 = 0xDF; //PWM5设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart*/
|
||||
sfr SCON = 0x98; //串口控制寄存器
|
||||
sfr SBUF = 0x99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*乘除法*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
/* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F7463B封装未引出的管脚:无
|
||||
*SC92F7462B封装未引出的管脚:P06/P07
|
||||
*SC92F7461B封装未引出的管脚:P02/P03/P04/P06/P07
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F7463B封装未引出的管脚:无
|
||||
*SC92F7462B封装未引出的管脚:P16/P17
|
||||
*SC92F7461B封装未引出的管脚:P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F7463B封装未引出的管脚:无
|
||||
*SC92F7462B封装未引出的管脚:P22/P23
|
||||
*SC92F7461B封装未引出的管脚:P22/P23/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F7463B封装未引出的管脚:无
|
||||
*SC92F7462B封装未引出的管脚:P50/P51
|
||||
*SC92F7461B封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F7463B,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F7462B_IO_Init() {P0CON|=0xC0,P1CON|=0xC0,P2CON|=0x0C,P5CON|=0x03;} //SC92F7462B的未引出来的IO口配置
|
||||
#define SC92F7461B_IO_Init() {P0CON|=0xEC,P1CON|=0xC0,P2CON|=0x8C,P5CON|=0x03;} //SC92F7461B的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,254 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F748x_C.H
|
||||
|
||||
C Header file for SC92F748x microcontroller.
|
||||
Copyright (c) 2021 Shenzhen SinOne Microelectronics Co., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.2
|
||||
日期: 2021.07.14
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F748x_H_
|
||||
#define _SC92F748x_H_
|
||||
|
||||
///* ------------------- 字节寄存器-------------------- */
|
||||
/*CPU*/
|
||||
sfr ACC = 0XE0; //累加器A
|
||||
sfr B = 0XF0; //B寄存器
|
||||
sfr PSW = 0XD0; //程序状态字寄存器
|
||||
sfr DPH = 0X83; //DPTR数据指针高位
|
||||
sfr DPL = 0X82; //DPTR数据指针低位
|
||||
sfr SP = 0X81; //堆栈指针
|
||||
sfr EXA0 = 0XE9; //扩展累加器0
|
||||
sfr EXA1 = 0XEA; //扩展累加器1
|
||||
sfr EXA2 = 0XEB; //扩展累加器2
|
||||
sfr EXA3 = 0XEC; //扩展累加器3
|
||||
sfr EXBL = 0XED; //扩展B寄存器0
|
||||
sfr EXBH = 0XEE; //扩展B寄存器1
|
||||
|
||||
/*SRAM*/
|
||||
sfr EXADH = 0XF7; //外部SRAM操作地址高位
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0X87; //电源管理控制寄存器
|
||||
|
||||
/*Interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0XB8; //中断优先权控制寄存器
|
||||
sfr IE = 0XA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr IOHCON = 0X97; //IOH设置寄存器
|
||||
sfr P5PH = 0XDA; //P5口上拉电阻控制寄存器
|
||||
sfr P5CON = 0XD9; //P5口输入/输出控制寄存器
|
||||
sfr P5 = 0XD8; //P5口数据寄存器
|
||||
sfr P2PH = 0XA2; //P2口上拉电阻控制寄存器
|
||||
sfr P2CON = 0XA1; //P2口输入/输出控制寄存器
|
||||
sfr P2 = 0XA0; //P2口数据寄存器
|
||||
sfr P1PH = 0X92; //P1口上拉电阻控制寄存器
|
||||
sfr P1CON = 0X91; //P1口输入/输出控制寄存器
|
||||
sfr P1 = 0X90; //P1口数据寄存器
|
||||
sfr P0PH = 0X9B; //P0口上拉电阻控制寄存器
|
||||
sfr P0VO = 0X9C; //P0口LCD电压输出寄存器
|
||||
sfr P0CON = 0X9A; //P0口输入/输出控制寄存器
|
||||
sfr P0 = 0X80; //P0口数据寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0X8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0X8D; //定时器1高8位
|
||||
sfr TH0 = 0X8C; //定时器0高8位
|
||||
sfr TL1 = 0X8B; //定时器1低8位
|
||||
sfr TL0 = 0X8A; //定时器0低8位
|
||||
sfr TMOD = 0X89; //定时器工作模式寄存器
|
||||
sfr TCON = 0X88; //定时器控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG2 = 0XAA; //ADC设置寄存器2
|
||||
sfr ADCCFG1 = 0XAC; //ADC设置寄存器1
|
||||
sfr ADCCFG0 = 0XAB; //ADC设置寄存器0
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0XAE; //ADC结果寄存器
|
||||
sfr ADCVH = 0XAF; //ADC结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0XD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0XD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0XD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0XD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0XD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0XD6; //PWM1占空比设置寄存器
|
||||
sfr PWMDTY2 = 0XD7; //PWM2占空比设置寄存器
|
||||
sfr PWMDTYB = 0XDC; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0XDD; //PWM3占空比设置寄存器/PWM死区时间配置寄存器
|
||||
sfr PWMDTY4 = 0XDE; //PWM4占空比设置寄存器
|
||||
sfr PWMDTY5 = 0XDF; //PWM5占空比设置寄存器
|
||||
|
||||
/*WatchDog*/
|
||||
sfr WDTCON = 0XCF; //WDT控制寄存器
|
||||
|
||||
/*BTM*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0XF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0XF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0XF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0XF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0XF2; //IAP写入地址低位寄存器
|
||||
sfr IAPKEY = 0XF1; //IAP保护寄存器
|
||||
|
||||
/*uart0*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //USCI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //USCI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //USCI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //USCI数据寄存器3
|
||||
|
||||
/*OPTION*/
|
||||
sfr OPINX = 0XFE; //Customer Option指针
|
||||
sfr OPREG = 0XFF; //Customer Option寄存器
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
sfr OPERCON = 0XEF; //运算控制寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7; //定时器2溢出标志位
|
||||
sbit EXF2 = T2CON^6; //T2EX引脚外部事件输入(下降沿)被检测到的标志位
|
||||
sbit RCLK = T2CON^5; //UART0接收时钟控制位 0: 定时器1产生接收波特率 1: 定时器2产生接收波特率
|
||||
sbit TCLK = T2CON^4; //UART0发送时钟控制位 0: 定时器1产生发送波特率 1: 定时器2产生发送波特率
|
||||
sbit EXEN2 = T2CON^3; //T2EX引脚上的外部事件输入(下降沿)用作重载/捕获触发器允许/禁止控制
|
||||
sbit TR2 = T2CON^2; //定时器2开始/停止控制位 0: 停止定时器2 1: 开始定时器2
|
||||
sbit T2 = T2CON^1; //定时器2定时器/计数器方式选定位2
|
||||
sbit CP = T2CON^0; //捕获/重载方式选定位
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先权选择 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先权选择 0:设定 Timer 2的中断优先权是 “低” 1:设定 Timer 2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先权选择 0:设定 UART的中断优先权是 “低” 1:设定 UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先权选择 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1计数器中断优先权选择 0:设定 INT1的中断优先权是 “低” 1:设定 INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先权选择 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0计数器中断优先权选择 0:设定 INT0的中断优先权为 “低” 1: INT0中断优先权为高
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭TIMER2中断 1:打开TIMER2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭SIF中断 1:打开SIF中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //外部中断1中断使能控制 0:关闭外部中断1中断 1:打开外部中断1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //外部中断0中断使能控制 0:关闭外部中断0中断 1:打开外部中断0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7; //串行通信模式控制位:与SM1配合使用 00: 模式0,8位半双工同步通信模式 01: 模式1,10位全双工异步通信 11: 模式3,11位全双工异步通信
|
||||
sbit SM1 = SCON^6; //串行通信模式控制位
|
||||
sbit SM2 = SCON^5; //串行通信模式控制位2,此控制位只对模式3有效 0:每收到一个完整数据帧就置位RI产生中断请求 1:收到一个完整的数据帧时,只有当RB8=1时才会置位RI产生中断请求
|
||||
sbit REN = SCON^4; //接收允许控制位 0:不允许接受数据 1:允许接受数据
|
||||
sbit TB8 = SCON^3; //只对模式3有效,为发送数据的第9位
|
||||
sbit RB8 = SCON^2; //只对模式3有效,为接收数据的第9位
|
||||
sbit TI = SCON^1; //发送中断标志位
|
||||
sbit RI = SCON^0; //接收中断标志位
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F7483封装未引出的管脚:无
|
||||
*SC92F7482封装未引出的管脚:P06/P07
|
||||
*SC92F7481封装未引出的管脚:P02/P03/P04/P05/P06/P07
|
||||
*SC92F7480封装未引出的管脚:P0
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F7483封装未引出的管脚:无
|
||||
*SC92F7482封装未引出的管脚:P16/P17
|
||||
*SC92F7481封装未引出的管脚:P16/P17
|
||||
*SC92F7480封装未引出的管脚:P14/P15/P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F7483封装未引出的管脚:无
|
||||
*SC92F7482封装未引出的管脚:P22/P23
|
||||
*SC92F7481封装未引出的管脚:P22/P23/P27
|
||||
*SC92F7480封装未引出的管脚:P22/P23/P25/P26/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F7483封装未引出的管脚:无
|
||||
*SC92F7482封装未引出的管脚:P50/P51
|
||||
*SC92F7481封装未引出的管脚:P50/P51
|
||||
*SC92F7480封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选SC92F7483,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F7482_NIO_Init() {P0CON|=0xC0,P1CON|=0xC0,P2CON|=0x0C,P5CON|=0x03;}//SC92F7482的未引出来的IO口配置
|
||||
#define SC92F7481_NIO_Init() {P0CON|=0xFC,P1CON|=0xC0,P2CON|=0x8C,P5CON|=0x03;}//SC92F7481的未引出来的IO口配置
|
||||
#define SC92F7480_NIO_Init() {P0CON|=0xFF,P1CON|=0xF0,P2CON|=0xEC,P5CON|=0x03;}//SC92F7480的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F7490_C.H
|
||||
|
||||
C Header file for SC92F7490 microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.07.25
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F7490_H_
|
||||
#define _SC92F7490_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器0
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器1
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器0
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器1
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器1
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器1
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC设置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC设置寄存器1
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器<E5AD98>
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*SSI*/
|
||||
sfr SS0CON0 = 0XA5; //SSI0控制寄存器2
|
||||
sfr SS0CON1 = 0XA6; //SSI0控制寄存器1
|
||||
sfr SS0CON2 = 0XA4; //SSI0控制寄存器0
|
||||
sfr SS0DAT = 0XA7; //SSI0数据寄存器
|
||||
|
||||
sfr SS1CON2 = 0X95; //SSI1控制寄存器2
|
||||
sfr SS1CON0 = 0X9D; //SSI1控制寄存器0
|
||||
sfr SS1CON1 = 0X9E; //SSI1控制寄存器1
|
||||
sfr SS1DAT = 0X9F; //SSI1数据寄存器
|
||||
|
||||
/*CHKSUM*/
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
sfr CHKSUML = 0xFC; //CHKSUM结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //CHKSUM结果寄存器高位
|
||||
|
||||
/*option*/
|
||||
sfr OPINX = 0XFE; //Option指针
|
||||
sfr OPREG = 0XFF; //Option寄存器
|
||||
|
||||
sfr P5PH = 0xDA;
|
||||
sfr P5CON = 0xD9;
|
||||
sfr P5 = 0xD8;
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPSSI0 = IP^4; //SSI0中断优先控制位 0:设定SSI0的中断优先权是 “低” 1:设定SSI0的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit ESSI0 = IE^4; //SSI0中断使能控制 0:关闭SSI0中断 1:打开SSI0中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/******************* P0 ******************/
|
||||
sbit P05 = P0^5;
|
||||
|
||||
/******************* P1 ******************/
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
|
||||
/******************* P2 ******************/
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:初始化IO口后,需调用以下宏。
|
||||
*****************************************************************************/
|
||||
#define SC92F7490_NIO_Init() {P0CON|=0xDF;P1CON|=0xF1;P2CON|=0xFC;P5CON|=0x03;}
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,294 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F74Ax_ASM.H
|
||||
|
||||
ASM Header file for SC92F74Ax microcontroller.
|
||||
Copyright (c) 2020 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2020.07.01
|
||||
|
||||
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F74Ax_ASM_H_
|
||||
#define _SC92F74Ax_ASM_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
/*CPU*/
|
||||
ACC EQU 0xE0; //累加器A
|
||||
B EQU 0xF0; //通用寄存器B
|
||||
PSW EQU 0xD0; //程序状态字
|
||||
DPH EQU 0x83; //数据指针高8位
|
||||
DPL EQU 0x82; //数据指针低8位
|
||||
SP EQU 0x81; //堆栈指针
|
||||
|
||||
/*system*/
|
||||
PCON EQU 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
IP EQU 0xB8; //中断优先权控制寄存器
|
||||
IE EQU 0xA8; //中断控制寄存器
|
||||
IP1 EQU 0XB9; //中断优先级控制寄存器1
|
||||
IE1 EQU 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
P5PH EQU 0xDA; //P5口模式控制寄存器
|
||||
P5CON EQU 0xD9; //P5口模式控制寄存器
|
||||
P5 EQU 0xD8; //P5口数据寄存器
|
||||
P4PH EQU 0xC2; //P4口模式控制寄存器
|
||||
P4CON EQU 0xC1; //P4口模式控制寄存器
|
||||
P4 EQU 0xC0; //P4口数据寄存器
|
||||
P3PH EQU 0xB2; //P3口模式控制寄存器
|
||||
P3CON EQU 0xB1; //P3口模式控制寄存器
|
||||
P3 EQU 0xB0; //P3口数据寄存器
|
||||
P2PH EQU 0xA2; //P2口模式控制寄存器
|
||||
P2CON EQU 0xA1; //P2口模式控制寄存器
|
||||
P2 EQU 0xA0; //P2口数据寄存器
|
||||
P1PH EQU 0x92; //P1口模式控制寄存器
|
||||
P1CON EQU 0x91; //P1口模式控制寄存器
|
||||
P1 EQU 0x90; //P1口数据寄存器
|
||||
P0PH EQU 0x9B; //P0口模式控制寄存器
|
||||
P0CON EQU 0x9A; //P0口模式控制寄存器
|
||||
P0 EQU 0x80; //P0口数据寄存器
|
||||
IOHCON0 EQU 0x96; //IOH0设置寄存器
|
||||
IOHCON1 EQU 0x97; //IOH1设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
TMCON EQU 0x8E; //定时器频率控制寄存器
|
||||
TH1 EQU 0x8D; //定时器1高8位
|
||||
TH0 EQU 0x8C; //定时器0高8位
|
||||
TL1 EQU 0x8B; //定时器1低8位
|
||||
TL0 EQU 0x8A; //定时器0低8位
|
||||
TMOD EQU 0x89; //定时器工作模式寄存器
|
||||
TCON EQU 0x88; //定时器控制寄存器
|
||||
T2CON EQU 0XC8; //定时器2控制寄存器
|
||||
T2MOD EQU 0XC9; //定时器2工作模式寄存器
|
||||
RCAP2L EQU 0XCA; //定时器2重载/捕捉低8位
|
||||
RCAP2H EQU 0XCB; //定时器2重载/捕捉高8位
|
||||
TL2 EQU 0XCC; //定时器2低8位
|
||||
TH2 EQU 0XCD; //定时器2高8位
|
||||
|
||||
/*ADC*/
|
||||
ADCCFG0 EQU 0xAB; //ADC功能配置寄存器0
|
||||
ADCCFG1 EQU 0xAC; //ADC功能配置寄存器1
|
||||
ADCCFG2 EQU 0xAA; //ADC功能配置寄存器2
|
||||
ADCCON EQU 0XAD; //ADC控制寄存器
|
||||
ADCVL EQU 0xAE; //ADC 结果寄存器
|
||||
ADCVH EQU 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
PWMCFG EQU 0xD4; //PWM设置寄存器
|
||||
PWMCON EQU 0xD3; //PWM控制寄存器
|
||||
|
||||
/*WatchDog*/
|
||||
BTMCON EQU 0XCE; //低频定时器控制寄存器
|
||||
WDTCON EQU 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
OTCON EQU 0X8F; //LCD电压输出控制寄存器
|
||||
P0VO EQU 0X9C; //P0 LCD Bais 输出寄存器
|
||||
P1VO EQU 0X94; //P1 LCD Bais 输出寄存器
|
||||
P2VO EQU 0XA3; //P2 LCD Bais 输出寄存器
|
||||
P3VO EQU 0XB3; //P3 LCD Bais 输出寄存器
|
||||
|
||||
DDRCON EQU 0X93; //显示驱动设置寄存器
|
||||
|
||||
/*INT*/
|
||||
INT0F EQU 0XBA; //INT0 下降沿中断控制寄存器
|
||||
INT0R EQU 0XBB; //INT0 上降沿中断控制寄存器
|
||||
INT1F EQU 0XBC; //INT1 下降沿中断控制寄存器
|
||||
INT1R EQU 0XBD; //INT1 上降沿中断控制寄存器
|
||||
INT2F EQU 0XC6; //INT2 下降沿中断控制寄存器
|
||||
INT2R EQU 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
IAPCTL EQU 0xF6; //IAP控制寄存器
|
||||
IAPDAT EQU 0xF5; //IAP数据寄存器
|
||||
IAPADE EQU 0xF4; //IAP扩展地址寄存器
|
||||
IAPADH EQU 0xF3; //IAP写入地址高位寄存器
|
||||
IAPADL EQU 0xF2; //IAP写入地址低8位寄存器
|
||||
IAPKEY EQU 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart*/
|
||||
SCON EQU 0x98; //串口控制寄存器
|
||||
SBUF EQU 0x99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
SSCON0 EQU 0X9D; //SSI控制寄存器0
|
||||
SSCON1 EQU 0X9E; //SSI控制寄存器1
|
||||
SSCON2 EQU 0X95; //SSI控制寄存器2
|
||||
SSDAT EQU 0X9F; //SPI数据寄存器
|
||||
|
||||
OPINX EQU 0XFE;
|
||||
OPREG EQU 0XFF;
|
||||
EXADH EQU 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
CHKSUML EQU 0XFC; //Check Sum结果寄存器低位
|
||||
CHKSUMH EQU 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*乘除法*/
|
||||
EXA0 EQU 0xE9; //扩展累加器0
|
||||
EXA1 EQU 0xEA; //扩展累加器1
|
||||
EXA2 EQU 0xEB; //扩展累加器2
|
||||
EXA3 EQU 0xEC; //扩展累加器3
|
||||
EXBL EQU 0xED; //扩展B寄存器0
|
||||
EXBH EQU 0xEE; //扩展B寄存器1
|
||||
OPERCON EQU 0xEF; //运算控制寄存器
|
||||
|
||||
/* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
CY EQU PSW .7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
AC EQU PSW .6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
F0 EQU PSW .5; //用户标志位
|
||||
RS1 EQU PSW .4; //工作寄存器组选择位
|
||||
RS0 EQU PSW .3; //工作寄存器组选择位
|
||||
OV EQU PSW .2; //溢出标志位
|
||||
F1 EQU PSW .1; //F1标志
|
||||
P EQU PSW .0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
TF2 EQU T2CON .7;
|
||||
EXF2 EQU T2CON .6;
|
||||
RCLK EQU T2CON .5;
|
||||
TCLK EQU T2CON .4;
|
||||
EXEN2 EQU T2CON .3;
|
||||
TR2 EQU T2CON .2;
|
||||
T2 EQU T2CON .1;
|
||||
CP EQU T2CON .0;
|
||||
|
||||
/*IP*/
|
||||
IPADC EQU IP .6; //ADC中断优先控制位 0:设定ADC的中断优先权是 “低” 1:设定ADC的中断优先权是 “高”
|
||||
IPT2 EQU IP .5; //PWM中断优先控制位 0:设定PWM的中断优先权是 “低” 1:设定PWM 的中断优先权是 “高”
|
||||
IPUART EQU IP .4; //Uart中断优先控制位 0:设定Uart的中断优先权是 “低” 1:设定Uart的中断优先权是 “高”
|
||||
IPT1 EQU IP .3; //Timer1中断优先控制位 0:设定Timer1的中断优先权是 “低” 1:设定Timer1的中断优先权是 “高”
|
||||
IPINT1 EQU IP .2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1中断优先权是 “高”
|
||||
IPT0 EQU IP .1; //Timer0中断优先控制位 0:设定Timer0的中断优先权是 “低” 1:设定Timer0的中断优先权是 “高”
|
||||
IPINT0 EQU IP .0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
EA EQU IE .7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
EADC EQU IE .6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
ET2 EQU IE .5; //PWM中断使能控制 0:关闭PWM中断 1:打开PWM中断
|
||||
EUART EQU IE .4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
ET1 EQU IE .3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
EINT1 EQU IE .2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
ET0 EQU IE .1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
EINT0 EQU IE .0; //INT0的中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
TF1 EQU TCON .7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
TR1 EQU TCON .6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
TF0 EQU TCON .5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
TR0 EQU TCON .4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
BITIE1 EQU TCON .3; //INT1溢出中断请求标志
|
||||
BITIE0 EQU TCON .1; //INT0溢出中断请求标志
|
||||
|
||||
/*SCON*/
|
||||
SM0 EQU SCON .7;
|
||||
SM1 EQU SCON .6;
|
||||
SM2 EQU SCON .5;
|
||||
REN EQU SCON .4;
|
||||
TB8 EQU SCON .3;
|
||||
RB8 EQU SCON .2;
|
||||
TI EQU SCON .1;
|
||||
RI EQU SCON .0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F74A7封装未引出的管脚:无
|
||||
*SC92F74A6封装未引出的管脚:无
|
||||
*SC92F74A5封装未引出的管脚:P00
|
||||
******************************************/
|
||||
P07 EQU P0 .7;
|
||||
P06 EQU P0 .6;
|
||||
P05 EQU P0 .5;
|
||||
P04 EQU P0 .4;
|
||||
P03 EQU P0 .3;
|
||||
P02 EQU P0 .2;
|
||||
P01 EQU P0 .1;
|
||||
P00 EQU P0 .0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F74A7封装未引出的管脚:无
|
||||
*SC92F74A6封装未引出的管脚:无
|
||||
*SC92F74A5封装未引出的管脚:无
|
||||
******************************************/
|
||||
P17 EQU P1 .7;
|
||||
P16 EQU P1 .6;
|
||||
P15 EQU P1 .5;
|
||||
P14 EQU P1 .4;
|
||||
P13 EQU P1 .3;
|
||||
P12 EQU P1 .2;
|
||||
P11 EQU P1 .1;
|
||||
P10 EQU P1 .0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F74A7封装未引出的管脚:无
|
||||
*SC92F74A6封装未引出的管脚:无
|
||||
*SC92F74A5封装未引出的管脚:无
|
||||
******************************************/
|
||||
P27 EQU P2 .7;
|
||||
P26 EQU P2 .6;
|
||||
P25 EQU P2 .5;
|
||||
P24 EQU P2 .4;
|
||||
P23 EQU P2 .3;
|
||||
P22 EQU P2 .2;
|
||||
P21 EQU P2 .1;
|
||||
P20 EQU P2 .0;
|
||||
|
||||
/******************* P3 ******************
|
||||
*SC92F74A7封装未引出的管脚:无
|
||||
*SC92F74A6封装未引出的管脚:无
|
||||
*SC92F74A5封装未引出的管脚:P3
|
||||
******************************************/
|
||||
P37 EQU P3 .7;
|
||||
P36 EQU P3 .6;
|
||||
P35 EQU P3 .5;
|
||||
P34 EQU P3 .4;
|
||||
P33 EQU P3 .3;
|
||||
P32 EQU P3 .2;
|
||||
P31 EQU P3 .1;
|
||||
P30 EQU P3 .0;
|
||||
|
||||
/******************* P4 ******************
|
||||
*SC92F74A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:P46/P47
|
||||
*SC92F84A5封装未引出的管脚:P40
|
||||
******************************************/
|
||||
P47 EQU P4 .7;
|
||||
P46 EQU P4 .6;
|
||||
P45 EQU P4 .5;
|
||||
P44 EQU P4 .4;
|
||||
P43 EQU P4 .3;
|
||||
P42 EQU P4 .2;
|
||||
P41 EQU P4 .1;
|
||||
P40 EQU P4 .0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:P54/P55
|
||||
*SC92F84A5封装未引出的管脚:P5
|
||||
******************************************/
|
||||
P55 EQU P5 .5;
|
||||
P54 EQU P5 .4;
|
||||
P53 EQU P5 .3;
|
||||
P52 EQU P5 .2;
|
||||
P51 EQU P5 .1;
|
||||
P50 EQU P5 .0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F74A7,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
SC92F74A6_NIO_Init MACRO IO //SC92F74A6未引出管脚的IO口配置
|
||||
ORL P4CON,#0XC0
|
||||
ORL P5CON,#0X30
|
||||
ENDM
|
||||
SC92F74A5_NIO_Init MACRO IO //SC92F74A5未引出管脚的IO口配置
|
||||
ORL P0CON,#0X01
|
||||
ORL P3CON,#0XFF
|
||||
ORL P4CON,#0X01
|
||||
ORL P5CON,#0X3F
|
||||
ENDM
|
||||
#endif
|
||||
|
|
@ -0,0 +1,296 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F74Ax_C.H
|
||||
|
||||
C Header file for SC92F74Ax microcontroller.
|
||||
Copyright (c) 2020 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2020.07.01
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F74Ax_H_
|
||||
#define _SC92F74Ax_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
/*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P4PH = 0xC2; //P4口模式控制寄存器
|
||||
sfr P4CON = 0xC1; //P4口模式控制寄存器
|
||||
sfr P4 = 0xC0; //P4口数据寄存器
|
||||
sfr P3PH = 0xB2; //P3口模式控制寄存器
|
||||
sfr P3CON = 0xB1; //P3口模式控制寄存器
|
||||
sfr P3 = 0xB0; //P3口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON0 = 0x96; //IOH0设置寄存器
|
||||
sfr IOHCON1 = 0x97; //IOH1设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD4; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD3; //PWM控制寄存器
|
||||
|
||||
|
||||
//
|
||||
//*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
sfr P1VO = 0X94; //P1 LCD Bais 输出寄存器
|
||||
sfr P2VO = 0XA3; //P2 LCD Bais 输出寄存器
|
||||
sfr P3VO = 0XB3; //P3 LCD Bais 输出寄存器
|
||||
|
||||
sfr DDRCON = 0X93; //显示驱动设置寄存器
|
||||
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*SPI*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*模拟比较器*/
|
||||
sfr CMPCFG = 0XB6; //模拟比较器设置寄存器
|
||||
sfr CMPCON = 0XB7; //模拟比较器控制寄存器
|
||||
|
||||
/*乘除法器*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
/* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit CLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
sbit BITIE1 = TCON^3; //INT1溢出中断请求标志
|
||||
sbit BITIE0 = TCON^1; //INT0溢出中断请求标志
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F74A7封装未引出的管脚:无
|
||||
*SC92F74A6封装未引出的管脚:无
|
||||
*SC92F74A5封装未引出的管脚:P00
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F74A7封装未引出的管脚:无
|
||||
*SC92F74A6封装未引出的管脚:无
|
||||
*SC92F74A5封装未引出的管脚:无
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F74A7封装未引出的管脚:无
|
||||
*SC92F74A6封装未引出的管脚:无
|
||||
*SC92F74A5封装未引出的管脚:无
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P3 ******************
|
||||
*SC92F74A7封装未引出的管脚:无
|
||||
*SC92F74A6封装未引出的管脚:无
|
||||
*SC92F74A5封装未引出的管脚:P3
|
||||
******************************************/
|
||||
sbit P37 = P3^7;
|
||||
sbit P36 = P3^6;
|
||||
sbit P35 = P3^5;
|
||||
sbit P34 = P3^4;
|
||||
sbit P33 = P3^3;
|
||||
sbit P32 = P3^2;
|
||||
sbit P31 = P3^1;
|
||||
sbit P30 = P3^0;
|
||||
|
||||
/******************* P4 ******************
|
||||
*SC92F74A7封装未引出的管脚:无
|
||||
*SC92F74A6封装未引出的管脚:P46/P47
|
||||
*SC92F74A5封装未引出的管脚:P40
|
||||
******************************************/
|
||||
sbit P47 = P4^7;
|
||||
sbit P46 = P4^6;
|
||||
sbit P45 = P4^5;
|
||||
sbit P44 = P4^4;
|
||||
sbit P43 = P4^3;
|
||||
sbit P42 = P4^2;
|
||||
sbit P41 = P4^1;
|
||||
sbit P40 = P4^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F74A7封装未引出的管脚:无
|
||||
*SC92F74A6封装未引出的管脚:P54/P55
|
||||
*SC92F74A5封装未引出的管脚:P5
|
||||
******************************************/
|
||||
sbit P55 = P5^5;
|
||||
sbit P54 = P5^4;
|
||||
sbit P53 = P5^3;
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选SC92F74A7,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F74A6_NIO_Init() {P4CON|=0xC0,P5CON|=0x30;} //SC92F74A6的未引出来的IO口配置
|
||||
#define SC92F74A5_NIO_Init() {P0CON|=0x01,P3CON|=0xFF,P4CON|=0x01,P5CON|=0x3F;} //SC92F74A5的未引出来的IO口配置
|
||||
#endif
|
||||
|
|
@ -0,0 +1,313 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F754X_C.H
|
||||
|
||||
C Header file for SC92F754X microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V2.0
|
||||
日期: 2019.03.18
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F754X_H_
|
||||
#define _SC92F754X_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P4PH = 0xC2; //P4口模式控制寄存器
|
||||
sfr P4CON = 0xC1; //P4口模式控制寄存器
|
||||
sfr P4 = 0xC0; //P4口数据寄存器
|
||||
sfr P3PH = 0xB2; //P3口模式控制寄存器
|
||||
sfr P3CON = 0xB1; //P3口模式控制寄存器
|
||||
sfr P3 = 0xB0; //P3口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON0 = 0x96; //IOH0设置寄存器
|
||||
sfr IOHCON1 = 0x97; //IOH1设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD4; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD3; //PWM设置寄存器
|
||||
|
||||
|
||||
//
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
sfr P1VO = 0X94; //P1 LCD Bais 输出寄存器
|
||||
sfr P2VO = 0XA3; //P2 LCD Bais 输出寄存器
|
||||
sfr P3VO = 0XB3; //P3 LCD Bais 输出寄存器
|
||||
|
||||
sfr DDRCON = 0X93; //显示驱动设置寄存器
|
||||
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*PGA*/
|
||||
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*SPI*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*模拟比较器*/
|
||||
sfr CMPCFG = 0XB6; //模拟比较器设置寄存器
|
||||
sfr CMPCON = 0XB7; //模拟比较器控制寄存器
|
||||
|
||||
/*乘除法器*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*B*/
|
||||
/*TKCON*/
|
||||
/*ACC*/
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit CLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F7547封装未引出的管脚:无
|
||||
*SC92F7546封装未引出的管脚:无
|
||||
*SC92F7545封装未引出的管脚:P00
|
||||
*SC92F7543封装未引出的管脚:P00/P01
|
||||
*SC92F7541封装未引出的管脚:P00/P01/P04/P05/P06
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F7547封装未引出的管脚:无
|
||||
*SC92F7546封装未引出的管脚:无
|
||||
*SC92F7545封装未引出的管脚:无
|
||||
*SC92F7543封装未引出的管脚:P10/P14/P15/P16/P17
|
||||
*SC92F7541封装未引出的管脚:P10/P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F7547封装未引出的管脚:无
|
||||
*SC92F7546封装未引出的管脚:无
|
||||
*SC92F7545封装未引出的管脚:无
|
||||
*SC92F7543封装未引出的管脚:P26/P27
|
||||
*SC92F7541封装未引出的管脚:P24/P25/P26/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P3 ******************
|
||||
*SC92F7547封装未引出的管脚:无
|
||||
*SC92F7546封装未引出的管脚:无
|
||||
*SC92F7545封装未引出的管脚:P3
|
||||
*SC92F7543封装未引出的管脚:无
|
||||
*SC92F7541封装未引出的管脚:P30/P31/P32/P33/P34/P35
|
||||
******************************************/
|
||||
sbit P37 = P3^7;
|
||||
sbit P36 = P3^6;
|
||||
sbit P35 = P3^5;
|
||||
sbit P34 = P3^4;
|
||||
sbit P33 = P3^3;
|
||||
sbit P32 = P3^2;
|
||||
sbit P31 = P3^1;
|
||||
sbit P30 = P3^0;
|
||||
|
||||
/******************* P4 ******************
|
||||
*SC92F7547封装未引出的管脚:无
|
||||
*SC92F7546封装未引出的管脚:P46/P47
|
||||
*SC92F7545封装未引出的管脚:P40
|
||||
*SC92F7543封装未引出的管脚:P40/P44/P45/P46/P47
|
||||
*SC92F7541封装未引出的管脚:P4
|
||||
******************************************/
|
||||
sbit P47 = P4^7;
|
||||
sbit P46 = P4^6;
|
||||
sbit P45 = P4^5;
|
||||
sbit P44 = P4^4;
|
||||
sbit P43 = P4^3;
|
||||
sbit P42 = P4^2;
|
||||
sbit P41 = P4^1;
|
||||
sbit P40 = P4^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F7547封装未引出的管脚:无
|
||||
*SC92F7546封装未引出的管脚:P54/P55
|
||||
*SC92F7545封装未引出的管脚:P5
|
||||
*SC92F7543封装未引出的管脚:P5
|
||||
*SC92F7541封装未引出的管脚:P5
|
||||
******************************************/
|
||||
sbit P55 = P5^5;
|
||||
sbit P54 = P5^4;
|
||||
sbit P53 = P5^3;
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F7547,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F7546_NIO_Init() {P4CON|=0xC0,P5CON|=0x30;} //SC92F7546的未引出来的IO口配置
|
||||
#define SC92F7545_NIO_Init() {P0CON|=0x01,P3CON|=0xFF,P4CON|=0x01,P5CON|=0xFF;} //SC92F7545的未引出来的IO口配置
|
||||
#define SC92F7543_NIO_Init() {P0CON|=0x03,P1CON|=0xF1,P2CON|=0xC0,P4CON|=0xF1,P5CON|=0xFF;} //SC92F7543的未引出来的IO口配置
|
||||
#define SC92F7541_NIO_Init() {P0CON|=0x73,P1CON|=0xC1,P2CON|=0xF0,P3CON|=0x3F,P4CON|=0xFF,P5CON|=0xFF;} //SC92F7541的未引出来的IO口配置
|
||||
#endif
|
||||
|
|
@ -0,0 +1,297 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F859x_C.H
|
||||
|
||||
C Header file for SC92F859x microcontroller.
|
||||
Copyright (c) 2021 Shenzhen SinOne Microelectronics Co., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.1
|
||||
日期: 2021.10.22
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F859x_H_
|
||||
#define _SC92F859x_H_
|
||||
|
||||
///* ------------------- 字节寄存器-------------------- */
|
||||
/*CPU*/
|
||||
sfr SP = 0X81; //堆栈指针
|
||||
sfr DPL = 0X82; //DPTR数据指针低位
|
||||
sfr DPH = 0X83; //DPTR数据指针高位
|
||||
sfr PSW = 0XD0; //程序状态字寄存器
|
||||
sfr ACC = 0XE0; //累加器A
|
||||
sfr EXA0 = 0XE9; //扩展累加器0
|
||||
sfr EXA1 = 0XEA; //扩展累加器1
|
||||
sfr EXA2 = 0XEB; //扩展累加器2
|
||||
sfr EXA3 = 0XEC; //扩展累加器3
|
||||
sfr EXBL = 0XED; //扩展B寄存器0
|
||||
sfr EXBH = 0XEE; //扩展B寄存器1
|
||||
sfr B = 0XF0; //B寄存器
|
||||
|
||||
/*SRAM*/
|
||||
sfr EXADH = 0XF7; //外部SRAM操作地址高位
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0X87; //电源管理控制寄存器
|
||||
|
||||
/*Interrupt*/
|
||||
sfr IE = 0XA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
sfr IP = 0XB8; //中断优先权控制寄存器
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P0 = 0X80; //P0口数据寄存器
|
||||
sfr P1 = 0X90; //P1口数据寄存器
|
||||
sfr P1CON = 0X91; //P1口输入/输出控制寄存器
|
||||
sfr P1PH = 0X92; //P1口上拉电阻控制寄存器
|
||||
sfr DDRCON = 0X93; //显示驱动控制寄存器
|
||||
sfr P1VO = 0X94; //P1口显示驱动输出寄存器
|
||||
sfr IOHCON0 = 0X96; //IOH设置寄存器0
|
||||
sfr IOHCON1 = 0X97; //IOH设置寄存器1
|
||||
sfr P0CON = 0X9A; //P0口输入/输出控制寄存器
|
||||
sfr P0PH = 0X9B; //P0口上拉电阻控制寄存器
|
||||
sfr P0VO = 0X9C; //P0口LCD电压输出寄存器
|
||||
sfr P2 = 0XA0; //P2口数据寄存器
|
||||
sfr P2CON = 0XA1; //P2口输入/输出控制寄存器
|
||||
sfr P2PH = 0XA2; //P2口上拉电阻控制寄存器
|
||||
sfr P2VO = 0XA3; //P2口显示驱动输出寄存器
|
||||
sfr P3 = 0XB0; //P3口数据寄存器
|
||||
sfr P3CON = 0XB1; //P3口输入/输出控制寄存器
|
||||
sfr P3PH = 0XB2; //P3口上拉电阻控制寄存器
|
||||
sfr P3VO = 0XB3; //P3口显示驱动输出寄存器
|
||||
sfr P4 = 0XC0; //P4口数据寄存器
|
||||
sfr P4CON = 0XC1; //P4口输入/输出控制寄存器
|
||||
sfr P4PH = 0XC2; //P4口上拉电阻控制寄存器
|
||||
sfr P5 = 0XD8; //P5口数据寄存器
|
||||
sfr P5CON = 0XD9; //P5口输入/输出控制寄存器
|
||||
sfr P5PH = 0XDA; //P5口上拉电阻控制寄存器
|
||||
|
||||
/*模拟比较器*/
|
||||
sfr CMPCFG = 0XB6; //模拟比较器设置寄存器
|
||||
sfr CMPCON = 0XB7; //模拟比较器控制寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TCON = 0X88; //定时器控制寄存器
|
||||
sfr TMOD = 0X89; //定时器工作模式寄存器
|
||||
sfr TL0 = 0X8A; //定时器0低8位
|
||||
sfr TL1 = 0X8B; //定时器1低8位
|
||||
sfr TH0 = 0X8C; //定时器0高8位
|
||||
sfr TH1 = 0X8D; //定时器1高8位
|
||||
sfr TMCON = 0X8E; //定时器频率控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG2 = 0XAA; //ADC设置寄存器2
|
||||
sfr ADCCFG0 = 0XAB; //ADC设置寄存器0
|
||||
sfr ADCCFG1 = 0XAC; //ADC设置寄存器1
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0XAE; //ADC结果寄存器
|
||||
sfr ADCVH = 0XAF; //ADC结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCON = 0XD3; //PWM0控制寄存器0
|
||||
sfr PWMCFG = 0XD4; //PWM设置寄存器
|
||||
|
||||
/*WatchDog*/
|
||||
sfr WDTCON = 0XCF; //WDT控制寄存器
|
||||
|
||||
/*BTM*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPKEY = 0XF1; //IAP保护寄存器
|
||||
sfr IAPADL = 0XF2; //IAP写入地址低位寄存器
|
||||
sfr IAPADH = 0XF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADE = 0XF4; //IAP扩展地址寄存器
|
||||
sfr IAPDAT = 0XF5; //IAP数据寄存器
|
||||
sfr IAPCTL = 0XF6; //IAP控制寄存器
|
||||
|
||||
/*uart0*/
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON2 = 0X95;//SSI控制寄存器2
|
||||
sfr SSCON0 = 0X9D; //SSI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SSI控制寄存器1
|
||||
sfr SSDAT = 0X9F; //SSI数据寄存器
|
||||
|
||||
/*OPTION*/
|
||||
sfr OPINX = 0XFE; //Customer Option指针
|
||||
sfr OPREG = 0XFF; //Customer Option寄存器
|
||||
|
||||
/*CRC*/
|
||||
sfr OPERCON = 0XEF; //运算控制寄存器
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7; //定时器2溢出标志位
|
||||
sbit EXF2 = T2CON^6; //T2EX引脚外部事件输入(下降沿)被检测到的标志位
|
||||
sbit RCLK = T2CON^5; //UART0接收时钟控制位 0: 定时器1产生接收波特率 1: 定时器2产生接收波特率
|
||||
sbit TCLK = T2CON^4; //UART0发送时钟控制位 0: 定时器1产生发送波特率 1: 定时器2产生发送波特率
|
||||
sbit EXEN2 = T2CON^3; //T2EX引脚上的外部事件输入(下降沿)用作重载/捕获触发器允许/禁止控制
|
||||
sbit TR2 = T2CON^2; //定时器2开始/停止控制位 0: 停止定时器2 1: 开始定时器2
|
||||
sbit T2 = T2CON^1; //定时器2定时器/计数器方式选定位2
|
||||
sbit CP = T2CON^0; //捕获/重载方式选定位
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先权选择 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先权选择 0:设定 Timer 2的中断优先权是 “低” 1:设定 Timer 2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先权选择 0:设定 UART的中断优先权是 “低” 1:设定 UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先权选择 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1计数器中断优先权选择 0:设定 INT1的中断优先权是 “低” 1:设定 INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先权选择 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0计数器中断优先权选择 0:设定 INT0的中断优先权为 “低” 1: INT0中断优先权为高
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭TIMER2中断 1:打开TIMER2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭SIF中断 1:打开SIF中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //外部中断1中断使能控制 0:关闭外部中断1中断 1:打开外部中断1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //外部中断0中断使能控制 0:关闭外部中断0中断 1:打开外部中断0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7; //串行通信模式控制位:与SM1配合使用 00: 模式0,8位半双工同步通信模式 01: 模式1,10位全双工异步通信 11: 模式3,11位全双工异步通信
|
||||
sbit SM1 = SCON^6; //串行通信模式控制位
|
||||
sbit SM2 = SCON^5; //串行通信模式控制位2,此控制位只对模式3有效 0:每收到一个完整数据帧就置位RI产生中断请求 1:收到一个完整的数据帧时,只有当RB8=1时才会置位RI产生中断请求
|
||||
sbit REN = SCON^4; //接收允许控制位 0:不允许接受数据 1:允许接受数据
|
||||
sbit TB8 = SCON^3; //只对模式3有效,为发送数据的第9位
|
||||
sbit RB8 = SCON^2; //只对模式3有效,为接收数据的第9位
|
||||
sbit TI = SCON^1; //发送中断标志位
|
||||
sbit RI = SCON^0; //接收中断标志位
|
||||
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F8597封装未引出的管脚:无
|
||||
*SC92F8596封装未引出的管脚:无
|
||||
*SC92F8595封装未引出的管脚:P00
|
||||
*SC92F8593封装未引出的管脚:P00/P01
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F8597封装未引出的管脚:无
|
||||
*SC92F8596封装未引出的管脚:无
|
||||
*SC92F8595封装未引出的管脚:无
|
||||
*SC92F8593封装未引出的管脚:P10/P14/P15/P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F8597封装未引出的管脚:无
|
||||
*SC92F8596封装未引出的管脚:无
|
||||
*SC92F8595封装未引出的管脚:无
|
||||
*SC92F8593封装未引出的管脚:P26/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P3 ******************
|
||||
*SC92F8597封装未引出的管脚:无
|
||||
*SC92F8596封装未引出的管脚:无
|
||||
*SC92F8595封装未引出的管脚:P3
|
||||
*SC92F8593封装未引出的管脚:无
|
||||
******************************************/
|
||||
sbit P37 = P3^7;
|
||||
sbit P36 = P3^6;
|
||||
sbit P35 = P3^5;
|
||||
sbit P34 = P3^4;
|
||||
sbit P33 = P3^3;
|
||||
sbit P32 = P3^2;
|
||||
sbit P31 = P3^1;
|
||||
sbit P30 = P3^0;
|
||||
|
||||
/******************* P4 ******************
|
||||
*SC92F8597封装未引出的管脚:无
|
||||
*SC92F8596封装未引出的管脚:P46/P47
|
||||
*SC92F8595封装未引出的管脚:P40
|
||||
*SC92F8593封装未引出的管脚:P40/P44/P45/P46/P47
|
||||
******************************************/
|
||||
sbit P47 = P4^7;
|
||||
sbit P46 = P4^6;
|
||||
sbit P45 = P4^5;
|
||||
sbit P44 = P4^4;
|
||||
sbit P43 = P4^3;
|
||||
sbit P42 = P4^2;
|
||||
sbit P41 = P4^1;
|
||||
sbit P40 = P4^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F8597封装未引出的管脚:无
|
||||
*SC92F8596封装未引出的管脚:P54/P55
|
||||
*SC92F8595封装未引出的管脚:P5
|
||||
*SC92F8593封装未引出的管脚:P5
|
||||
******************************************/
|
||||
sbit P55 = P5^5;
|
||||
sbit P54 = P5^4;
|
||||
sbit P53 = P5^3;
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选SC92F8597,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F8596_NIO_Init() {P4CON|=0xC0,P5CON|=0x30;} //SC92F8596的未引出来的IO口配置
|
||||
#define SC92F8595_NIO_Init() {P0CON|=0x01,P3CON|=0xFF,P4CON|=0x01,P5CON|=0xFF;} //SC92F8595的未引出来的IO口配置
|
||||
#define SC92F8593_NIO_Init() {P0CON|=0x03,P1CON|=0xF1,P2CON|=0xC0,P4CON|=0xF1,P5CON|=0xFF;}//SC92F8593的未引出来的IO口配置
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,207 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F8003_C.H
|
||||
|
||||
C Header file for SC92F8003 microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.05.02
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F8003_H_
|
||||
#define _SC92F8003_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG1 = 0xAA; //ADC功能配置寄存器0
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器1
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON0 = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0xD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2设置寄存器
|
||||
sfr PWMCON1 = 0xDA; //PWM控制寄存器
|
||||
sfr PWMDTYB = 0xDB; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0xDC; //PWM3设置寄存器
|
||||
sfr PWMDTY4 = 0xDD; //PWM4设置寄存器
|
||||
sfr PWMDTY5 = 0xDE; //PWM5设置寄存器
|
||||
sfr PWMDTY6 = 0xDF; //PWM6设置寄存器
|
||||
|
||||
|
||||
//
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart0*/
|
||||
sfr SCON = 0X98; //uart控制寄存器
|
||||
sfr SBUF = 0X99; //uart0数据寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //SSI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SSI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SSI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SSI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //PWM中断优先控制位 0:设定 PWM的中断优先权是 “低” 1:设定 PWM 的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //SIF中断优先控制位 0:设定 SIF的中断优先权是 “低” 1:设定 SIF的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //32K Base Timer中断优先控制位 0:设定 32K的中断优先权是 “低” 1:设定 32K的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0;
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //PWM中断使能控制 0:关闭PWM中断 1:打开PWM中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭SIF中断 1:打开SIF中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //32K Base Timer中断使能控制 0:关闭32K中断 1:打开32K中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //TouchKey的中断使能控制 0:关闭TouchKey中断 1:打开TouchKey中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/* P0 */
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/* P1 */
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/* P2 */
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F827x_C.H
|
||||
|
||||
C Header file for SC92F827x microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.04.25
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F827x_H_
|
||||
#define _SC92F827x_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH1设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTY3 = 0xD4; //PWM3占空比设置寄存器
|
||||
sfr PWMDTY0 = 0xD5; //PWM0占空比设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1占空比设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2占空比设置寄存器
|
||||
|
||||
//
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*SPI*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*B*/
|
||||
/*TKCON*/
|
||||
/*ACC*/
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F8272封装未引出的管脚:无
|
||||
*SC92F8271封装未引出的管脚:P02/P03/P04
|
||||
*SC92F8270封装未引出的管脚:P00/P02/P03/P04/P05
|
||||
******************************************/
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F8272封装未引出的管脚:无
|
||||
*SC92F8271封装未引出的管脚:无
|
||||
*SC92F8270封装未引出的管脚:P11/P14/P15
|
||||
******************************************/
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F8272封装未引出的管脚:无
|
||||
*SC92F8271封装未引出的管脚:P27
|
||||
*SC92F8270封装未引出的管脚:P24/P25/P26/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F8272,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F8271_NIO_Init() {P0CON|=0x1C,P2CON|=0x80;} //SC92F8271的未引出来的IO口配置
|
||||
#define SC92F8270_NIO_Init() {P0CON|=0x3D,P1CON|=0x32,P2CON|=0xF0;} //SC92F8270的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,251 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F836XB_C.H
|
||||
|
||||
C Header file for SC92F836XB microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V2.0
|
||||
日期: 2018.08.24
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F836XB_H_
|
||||
#define _SC92F836XB_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0xD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2设置寄存器
|
||||
sfr PWMDTYB = 0xDC; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0xDD; //PWM3设置寄存器
|
||||
sfr PWMDTY4 = 0xDE; //PWM4设置寄存器
|
||||
sfr PWMDTY5 = 0xDF; //PWM5设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart*/
|
||||
sfr SCON = 0x98; //串口控制寄存器
|
||||
sfr SBUF = 0x99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*乘除法*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
/* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F8363B封装未引出的管脚:无
|
||||
*SC92F8362B封装未引出的管脚:P06/P07
|
||||
*SC92F8361B封装未引出的管脚:P02/P03/P04/P06/P07
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F8363B封装未引出的管脚:无
|
||||
*SC92F8362B封装未引出的管脚:P16/P17
|
||||
*SC92F8361B封装未引出的管脚:P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F8363B封装未引出的管脚:无
|
||||
*SC92F8362B封装未引出的管脚:P22/P23
|
||||
*SC92F8361B封装未引出的管脚:P22/P23/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F8363B封装未引出的管脚:无
|
||||
*SC92F8362B封装未引出的管脚:P50/P51
|
||||
*SC92F8361B封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F8363B,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F8362B_NIO_Init() {P0CON|=0xC0,P1CON|=0xC0,P2CON|=0x0C,P5CON|=0x03;} //SC92F8362B的未引出来的IO口配置
|
||||
#define SC92F8361B_NIO_Init() {P0CON|=0xEC,P1CON|=0xC0,P2CON|=0x8C,P5CON|=0x03;} //SC92F8361B的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,199 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F837x_C.H
|
||||
|
||||
C Header file for SC92F837x microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2019.03.06
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F837x_H_
|
||||
#define _SC92F837x_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH1设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTY3 = 0xD4; //PWM3占空比设置寄存器
|
||||
sfr PWMDTY0 = 0xD5; //PWM0占空比设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1占空比设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2占空比设置寄存器
|
||||
|
||||
//
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*SPI*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*B*/
|
||||
/*TKCON*/
|
||||
/*ACC*/
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F8378封装未引出的管脚:P02/P03/P04/P05
|
||||
*SC92F8372封装未引出的管脚:无
|
||||
*SC92F8371封装未引出的管脚:P02/P03/P04
|
||||
*SC92F8370封装未引出的管脚:P00/P02/P03/P04/P05
|
||||
******************************************/
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F8378封装未引出的管脚:P11/P15
|
||||
*SC92F8372封装未引出的管脚:无
|
||||
*SC92F8371封装未引出的管脚:无
|
||||
*SC92F8370封装未引出的管脚:P11/P14/P15
|
||||
******************************************/
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F8378封装未引出的管脚:P24/P25/P26/P27
|
||||
*SC92F8372封装未引出的管脚:无
|
||||
*SC92F8371封装未引出的管脚:P27
|
||||
*SC92F8370封装未引出的管脚:P24/P25/P26/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F8372,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F8378_NIO_Init() {P0CON|=0x3C,P1CON|=0x22,P2CON|=0xF0;} //SC92F8378的未引出来的IO口配置
|
||||
#define SC92F8371_NIO_Init() {P0CON|=0x1C,P2CON|=0x80;} //SC92F8371的未引出来的IO口配置
|
||||
#define SC92F8370_NIO_Init() {P0CON|=0x3D,P1CON|=0x32,P2CON|=0xF0;} //SC92F8370的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,294 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F844xB_C.H
|
||||
|
||||
C Header file for SC92F844xB microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.09.04
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F844xB_H_
|
||||
#define _SC92F844xB_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P4PH = 0xC2; //P4口模式控制寄存器
|
||||
sfr P4CON = 0xC1; //P4口模式控制寄存器
|
||||
sfr P4 = 0xC0; //P4口数据寄存器
|
||||
sfr P3PH = 0xB2; //P3口模式控制寄存器
|
||||
sfr P3CON = 0xB1; //P3口模式控制寄存器
|
||||
sfr P3 = 0xB0; //P3口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON0 = 0x96; //IOH0设置寄存器
|
||||
sfr IOHCON1 = 0x97; //IOH1设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD4; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD3; //PWM控制寄存器
|
||||
|
||||
|
||||
//
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
sfr P1VO = 0X94; //P1 LCD Bais 输出寄存器
|
||||
sfr P2VO = 0XA3; //P2 LCD Bais 输出寄存器
|
||||
sfr P3VO = 0XB3; //P3 LCD Bais 输出寄存器
|
||||
|
||||
sfr DDRCON = 0X93; //显示驱动设置寄存器
|
||||
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*SPI*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*模拟比较器*/
|
||||
sfr CMPCFG = 0XB6; //模拟比较器设置寄存器
|
||||
sfr CMPCON = 0XB7; //模拟比较器控制寄存器
|
||||
|
||||
/*乘除法器*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit CLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F8447B封装未引出的管脚:无
|
||||
*SC92F8446B封装未引出的管脚:无
|
||||
*SC92F8445B封装未引出的管脚:P00
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F8447B封装未引出的管脚:无
|
||||
*SC92F8446B封装未引出的管脚:无
|
||||
*SC92F8445B封装未引出的管脚:无
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F8447B封装未引出的管脚:无
|
||||
*SC92F8446B封装未引出的管脚:无
|
||||
*SC92F8445B封装未引出的管脚:无
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P3 ******************
|
||||
*SC92F8447B封装未引出的管脚:无
|
||||
*SC92F8446B封装未引出的管脚:无
|
||||
*SC92F8445B封装未引出的管脚:P3
|
||||
******************************************/
|
||||
sbit P37 = P3^7;
|
||||
sbit P36 = P3^6;
|
||||
sbit P35 = P3^5;
|
||||
sbit P34 = P3^4;
|
||||
sbit P33 = P3^3;
|
||||
sbit P32 = P3^2;
|
||||
sbit P31 = P3^1;
|
||||
sbit P30 = P3^0;
|
||||
|
||||
/******************* P4 ******************
|
||||
*SC92F8447B封装未引出的管脚:无
|
||||
*SC92F8446B封装未引出的管脚:P46/P47
|
||||
*SC92F8445B封装未引出的管脚:P40
|
||||
******************************************/
|
||||
sbit P47 = P4^7;
|
||||
sbit P46 = P4^6;
|
||||
sbit P45 = P4^5;
|
||||
sbit P44 = P4^4;
|
||||
sbit P43 = P4^3;
|
||||
sbit P42 = P4^2;
|
||||
sbit P41 = P4^1;
|
||||
sbit P40 = P4^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F8447B封装未引出的管脚:无
|
||||
*SC92F8446B封装未引出的管脚:P54/P55
|
||||
*SC92F8445B封装未引出的管脚:P5
|
||||
******************************************/
|
||||
sbit P55 = P5^5;
|
||||
sbit P54 = P5^4;
|
||||
sbit P53 = P5^3;
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选SC92F8447B,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F8446B_NIO_Init() {P4CON|=0xC0,P5CON|=0x30;} //SC92F8546B的未引出来的IO口配置
|
||||
#define SC92F8445B_NIO_Init() {P0CON|=0x01,P3CON|=0xFF,P4CON|=0x01,P5CON|=0xFF;} //SC92F8545B的未引出来的IO口配置
|
||||
#endif
|
||||
|
|
@ -0,0 +1,251 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F846XB_C.H
|
||||
|
||||
C Header file for SC92F846XB microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V2.0
|
||||
日期: 2018.08.24
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F846XB_H_
|
||||
#define _SC92F846XB_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0xD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2设置寄存器
|
||||
sfr PWMDTYB = 0xDC; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0xDD; //PWM3设置寄存器
|
||||
sfr PWMDTY4 = 0xDE; //PWM4设置寄存器
|
||||
sfr PWMDTY5 = 0xDF; //PWM5设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart*/
|
||||
sfr SCON = 0x98; //串口控制寄存器
|
||||
sfr SBUF = 0x99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*乘除法*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
/* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F8463B封装未引出的管脚:无
|
||||
*SC92F8462B封装未引出的管脚:P06/P07
|
||||
*SC92F8461B封装未引出的管脚:P02/P03/P04/P06/P07
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F8463B封装未引出的管脚:无
|
||||
*SC92F8462B封装未引出的管脚:P16/P17
|
||||
*SC92F8461B封装未引出的管脚:P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F8463B封装未引出的管脚:无
|
||||
*SC92F8462B封装未引出的管脚:P22/P23
|
||||
*SC92F8461B封装未引出的管脚:P22/P23/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F8463B封装未引出的管脚:无
|
||||
*SC92F8462B封装未引出的管脚:P50/P51
|
||||
*SC92F8461B封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F8463B,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F8462B_NIO_Init() {P0CON|=0xC0,P1CON|=0xC0,P2CON|=0x0C,P5CON|=0x03;} //SC92F8462B的未引出来的IO口配置
|
||||
#define SC92F8461B_NIO_Init() {P0CON|=0xEC,P1CON|=0xC0,P2CON|=0x8C,P5CON|=0x03;} //SC92F8461B的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,254 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F848x_C.H
|
||||
|
||||
C Header file for SC92F848x microcontroller.
|
||||
Copyright (c) 2021 Shenzhen SinOne Microelectronics Co., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.2
|
||||
日期: 2021.07.14
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F848x_H_
|
||||
#define _SC92F848x_H_
|
||||
|
||||
///* ------------------- 字节寄存器-------------------- */
|
||||
/*CPU*/
|
||||
sfr ACC = 0XE0; //累加器A
|
||||
sfr B = 0XF0; //B寄存器
|
||||
sfr PSW = 0XD0; //程序状态字寄存器
|
||||
sfr DPH = 0X83; //DPTR数据指针高位
|
||||
sfr DPL = 0X82; //DPTR数据指针低位
|
||||
sfr SP = 0X81; //堆栈指针
|
||||
sfr EXA0 = 0XE9; //扩展累加器0
|
||||
sfr EXA1 = 0XEA; //扩展累加器1
|
||||
sfr EXA2 = 0XEB; //扩展累加器2
|
||||
sfr EXA3 = 0XEC; //扩展累加器3
|
||||
sfr EXBL = 0XED; //扩展B寄存器0
|
||||
sfr EXBH = 0XEE; //扩展B寄存器1
|
||||
|
||||
/*SRAM*/
|
||||
sfr EXADH = 0XF7; //外部SRAM操作地址高位
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0X87; //电源管理控制寄存器
|
||||
|
||||
/*Interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0XB8; //中断优先权控制寄存器
|
||||
sfr IE = 0XA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr IOHCON = 0X97; //IOH设置寄存器
|
||||
sfr P5PH = 0XDA; //P5口上拉电阻控制寄存器
|
||||
sfr P5CON = 0XD9; //P5口输入/输出控制寄存器
|
||||
sfr P5 = 0XD8; //P5口数据寄存器
|
||||
sfr P2PH = 0XA2; //P2口上拉电阻控制寄存器
|
||||
sfr P2CON = 0XA1; //P2口输入/输出控制寄存器
|
||||
sfr P2 = 0XA0; //P2口数据寄存器
|
||||
sfr P1PH = 0X92; //P1口上拉电阻控制寄存器
|
||||
sfr P1CON = 0X91; //P1口输入/输出控制寄存器
|
||||
sfr P1 = 0X90; //P1口数据寄存器
|
||||
sfr P0PH = 0X9B; //P0口上拉电阻控制寄存器
|
||||
sfr P0VO = 0X9C; //P0口LCD电压输出寄存器
|
||||
sfr P0CON = 0X9A; //P0口输入/输出控制寄存器
|
||||
sfr P0 = 0X80; //P0口数据寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0X8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0X8D; //定时器1高8位
|
||||
sfr TH0 = 0X8C; //定时器0高8位
|
||||
sfr TL1 = 0X8B; //定时器1低8位
|
||||
sfr TL0 = 0X8A; //定时器0低8位
|
||||
sfr TMOD = 0X89; //定时器工作模式寄存器
|
||||
sfr TCON = 0X88; //定时器控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG2 = 0XAA; //ADC设置寄存器2
|
||||
sfr ADCCFG1 = 0XAC; //ADC设置寄存器1
|
||||
sfr ADCCFG0 = 0XAB; //ADC设置寄存器0
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0XAE; //ADC结果寄存器
|
||||
sfr ADCVH = 0XAF; //ADC结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0XD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0XD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0XD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0XD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0XD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0XD6; //PWM1占空比设置寄存器
|
||||
sfr PWMDTY2 = 0XD7; //PWM2占空比设置寄存器
|
||||
sfr PWMDTYB = 0XDC; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0XDD; //PWM3占空比设置寄存器/PWM死区时间配置寄存器
|
||||
sfr PWMDTY4 = 0XDE; //PWM4占空比设置寄存器
|
||||
sfr PWMDTY5 = 0XDF; //PWM5占空比设置寄存器
|
||||
|
||||
/*WatchDog*/
|
||||
sfr WDTCON = 0XCF; //WDT控制寄存器
|
||||
|
||||
/*BTM*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0XF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0XF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0XF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0XF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0XF2; //IAP写入地址低位寄存器
|
||||
sfr IAPKEY = 0XF1; //IAP保护寄存器
|
||||
|
||||
/*uart0*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //USCI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //USCI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //USCI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //USCI数据寄存器3
|
||||
|
||||
/*OPTION*/
|
||||
sfr OPINX = 0XFE; //Customer Option指针
|
||||
sfr OPREG = 0XFF; //Customer Option寄存器
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
sfr OPERCON = 0XEF; //运算控制寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7; //定时器2溢出标志位
|
||||
sbit EXF2 = T2CON^6; //T2EX引脚外部事件输入(下降沿)被检测到的标志位
|
||||
sbit RCLK = T2CON^5; //UART0接收时钟控制位 0: 定时器1产生接收波特率 1: 定时器2产生接收波特率
|
||||
sbit TCLK = T2CON^4; //UART0发送时钟控制位 0: 定时器1产生发送波特率 1: 定时器2产生发送波特率
|
||||
sbit EXEN2 = T2CON^3; //T2EX引脚上的外部事件输入(下降沿)用作重载/捕获触发器允许/禁止控制
|
||||
sbit TR2 = T2CON^2; //定时器2开始/停止控制位 0: 停止定时器2 1: 开始定时器2
|
||||
sbit T2 = T2CON^1; //定时器2定时器/计数器方式选定位2
|
||||
sbit CP = T2CON^0; //捕获/重载方式选定位
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先权选择 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先权选择 0:设定 Timer 2的中断优先权是 “低” 1:设定 Timer 2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先权选择 0:设定 UART的中断优先权是 “低” 1:设定 UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先权选择 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1计数器中断优先权选择 0:设定 INT1的中断优先权是 “低” 1:设定 INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先权选择 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0计数器中断优先权选择 0:设定 INT0的中断优先权为 “低” 1: INT0中断优先权为高
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭TIMER2中断 1:打开TIMER2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭SIF中断 1:打开SIF中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //外部中断1中断使能控制 0:关闭外部中断1中断 1:打开外部中断1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //外部中断0中断使能控制 0:关闭外部中断0中断 1:打开外部中断0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7; //串行通信模式控制位:与SM1配合使用 00: 模式0,8位半双工同步通信模式 01: 模式1,10位全双工异步通信 11: 模式3,11位全双工异步通信
|
||||
sbit SM1 = SCON^6; //串行通信模式控制位
|
||||
sbit SM2 = SCON^5; //串行通信模式控制位2,此控制位只对模式3有效 0:每收到一个完整数据帧就置位RI产生中断请求 1:收到一个完整的数据帧时,只有当RB8=1时才会置位RI产生中断请求
|
||||
sbit REN = SCON^4; //接收允许控制位 0:不允许接受数据 1:允许接受数据
|
||||
sbit TB8 = SCON^3; //只对模式3有效,为发送数据的第9位
|
||||
sbit RB8 = SCON^2; //只对模式3有效,为接收数据的第9位
|
||||
sbit TI = SCON^1; //发送中断标志位
|
||||
sbit RI = SCON^0; //接收中断标志位
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F8483封装未引出的管脚:无
|
||||
*SC92F8482封装未引出的管脚:P06/P07
|
||||
*SC92F8481封装未引出的管脚:P02/P03/P04/P05/P06/P07
|
||||
*SC92F8480封装未引出的管脚:P0
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F8483封装未引出的管脚:无
|
||||
*SC92F8482封装未引出的管脚:P16/P17
|
||||
*SC92F8481封装未引出的管脚:P16/P17
|
||||
*SC92F8480封装未引出的管脚:P14/P15/P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F8483封装未引出的管脚:无
|
||||
*SC92F8482封装未引出的管脚:P22/P23
|
||||
*SC92F8481封装未引出的管脚:P22/P23/P27
|
||||
*SC92F8480封装未引出的管脚:P22/P23/P25/P26/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F8483封装未引出的管脚:无
|
||||
*SC92F8482封装未引出的管脚:P50/P51
|
||||
*SC92F8481封装未引出的管脚:P50/P51
|
||||
*SC92F8480封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选SC92F8483,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F8482_NIO_Init() {P0CON|=0xC0,P1CON|=0xC0,P2CON|=0x0C,P5CON|=0x03;}//SC92F8482的未引出来的IO口配置
|
||||
#define SC92F8481_NIO_Init() {P0CON|=0xFC,P1CON|=0xC0,P2CON|=0x8C,P5CON|=0x03;}//SC92F8481的未引出来的IO口配置
|
||||
#define SC92F8480_NIO_Init() {P0CON|=0xFF,P1CON|=0xF0,P2CON|=0xEC,P5CON|=0x03;}//SC92F8480的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,294 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F84Ax_ASM.H
|
||||
|
||||
ASM Header file for SC92F84Ax microcontroller.
|
||||
Copyright (c) 2020 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2020.07.01
|
||||
|
||||
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F84Ax_ASM_H_
|
||||
#define _SC92F84Ax_ASM_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
/*CPU*/
|
||||
ACC EQU 0xE0; //累加器A
|
||||
B EQU 0xF0; //通用寄存器B
|
||||
PSW EQU 0xD0; //程序状态字
|
||||
DPH EQU 0x83; //数据指针高8位
|
||||
DPL EQU 0x82; //数据指针低8位
|
||||
SP EQU 0x81; //堆栈指针
|
||||
|
||||
/*system*/
|
||||
PCON EQU 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
IP EQU 0xB8; //中断优先权控制寄存器
|
||||
IE EQU 0xA8; //中断控制寄存器
|
||||
IP1 EQU 0XB9; //中断优先级控制寄存器1
|
||||
IE1 EQU 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
P5PH EQU 0xDA; //P5口模式控制寄存器
|
||||
P5CON EQU 0xD9; //P5口模式控制寄存器
|
||||
P5 EQU 0xD8; //P5口数据寄存器
|
||||
P4PH EQU 0xC2; //P4口模式控制寄存器
|
||||
P4CON EQU 0xC1; //P4口模式控制寄存器
|
||||
P4 EQU 0xC0; //P4口数据寄存器
|
||||
P3PH EQU 0xB2; //P3口模式控制寄存器
|
||||
P3CON EQU 0xB1; //P3口模式控制寄存器
|
||||
P3 EQU 0xB0; //P3口数据寄存器
|
||||
P2PH EQU 0xA2; //P2口模式控制寄存器
|
||||
P2CON EQU 0xA1; //P2口模式控制寄存器
|
||||
P2 EQU 0xA0; //P2口数据寄存器
|
||||
P1PH EQU 0x92; //P1口模式控制寄存器
|
||||
P1CON EQU 0x91; //P1口模式控制寄存器
|
||||
P1 EQU 0x90; //P1口数据寄存器
|
||||
P0PH EQU 0x9B; //P0口模式控制寄存器
|
||||
P0CON EQU 0x9A; //P0口模式控制寄存器
|
||||
P0 EQU 0x80; //P0口数据寄存器
|
||||
IOHCON0 EQU 0x96; //IOH0设置寄存器
|
||||
IOHCON1 EQU 0x97; //IOH1设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
TMCON EQU 0x8E; //定时器频率控制寄存器
|
||||
TH1 EQU 0x8D; //定时器1高8位
|
||||
TH0 EQU 0x8C; //定时器0高8位
|
||||
TL1 EQU 0x8B; //定时器1低8位
|
||||
TL0 EQU 0x8A; //定时器0低8位
|
||||
TMOD EQU 0x89; //定时器工作模式寄存器
|
||||
TCON EQU 0x88; //定时器控制寄存器
|
||||
T2CON EQU 0XC8; //定时器2控制寄存器
|
||||
T2MOD EQU 0XC9; //定时器2工作模式寄存器
|
||||
RCAP2L EQU 0XCA; //定时器2重载/捕捉低8位
|
||||
RCAP2H EQU 0XCB; //定时器2重载/捕捉高8位
|
||||
TL2 EQU 0XCC; //定时器2低8位
|
||||
TH2 EQU 0XCD; //定时器2高8位
|
||||
|
||||
/*ADC*/
|
||||
ADCCFG0 EQU 0xAB; //ADC功能配置寄存器0
|
||||
ADCCFG1 EQU 0xAC; //ADC功能配置寄存器1
|
||||
ADCCFG2 EQU 0xAA; //ADC功能配置寄存器2
|
||||
ADCCON EQU 0XAD; //ADC控制寄存器
|
||||
ADCVL EQU 0xAE; //ADC 结果寄存器
|
||||
ADCVH EQU 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
PWMCFG EQU 0xD4; //PWM设置寄存器
|
||||
PWMCON EQU 0xD3; //PWM控制寄存器
|
||||
|
||||
/*WatchDog*/
|
||||
BTMCON EQU 0XCE; //低频定时器控制寄存器
|
||||
WDTCON EQU 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
OTCON EQU 0X8F; //LCD电压输出控制寄存器
|
||||
P0VO EQU 0X9C; //P0 LCD Bais 输出寄存器
|
||||
P1VO EQU 0X94; //P1 LCD Bais 输出寄存器
|
||||
P2VO EQU 0XA3; //P2 LCD Bais 输出寄存器
|
||||
P3VO EQU 0XB3; //P3 LCD Bais 输出寄存器
|
||||
|
||||
DDRCON EQU 0X93; //显示驱动设置寄存器
|
||||
|
||||
/*INT*/
|
||||
INT0F EQU 0XBA; //INT0 下降沿中断控制寄存器
|
||||
INT0R EQU 0XBB; //INT0 上降沿中断控制寄存器
|
||||
INT1F EQU 0XBC; //INT1 下降沿中断控制寄存器
|
||||
INT1R EQU 0XBD; //INT1 上降沿中断控制寄存器
|
||||
INT2F EQU 0XC6; //INT2 下降沿中断控制寄存器
|
||||
INT2R EQU 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
IAPCTL EQU 0xF6; //IAP控制寄存器
|
||||
IAPDAT EQU 0xF5; //IAP数据寄存器
|
||||
IAPADE EQU 0xF4; //IAP扩展地址寄存器
|
||||
IAPADH EQU 0xF3; //IAP写入地址高位寄存器
|
||||
IAPADL EQU 0xF2; //IAP写入地址低8位寄存器
|
||||
IAPKEY EQU 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart*/
|
||||
SCON EQU 0x98; //串口控制寄存器
|
||||
SBUF EQU 0x99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
SSCON0 EQU 0X9D; //SSI控制寄存器0
|
||||
SSCON1 EQU 0X9E; //SSI控制寄存器1
|
||||
SSCON2 EQU 0X95; //SSI控制寄存器2
|
||||
SSDAT EQU 0X9F; //SPI数据寄存器
|
||||
|
||||
OPINX EQU 0XFE;
|
||||
OPREG EQU 0XFF;
|
||||
EXADH EQU 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
CHKSUML EQU 0XFC; //Check Sum结果寄存器低位
|
||||
CHKSUMH EQU 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*乘除法*/
|
||||
EXA0 EQU 0xE9; //扩展累加器0
|
||||
EXA1 EQU 0xEA; //扩展累加器1
|
||||
EXA2 EQU 0xEB; //扩展累加器2
|
||||
EXA3 EQU 0xEC; //扩展累加器3
|
||||
EXBL EQU 0xED; //扩展B寄存器0
|
||||
EXBH EQU 0xEE; //扩展B寄存器1
|
||||
OPERCON EQU 0xEF; //运算控制寄存器
|
||||
|
||||
/* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
CY EQU PSW .7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
AC EQU PSW .6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
F0 EQU PSW .5; //用户标志位
|
||||
RS1 EQU PSW .4; //工作寄存器组选择位
|
||||
RS0 EQU PSW .3; //工作寄存器组选择位
|
||||
OV EQU PSW .2; //溢出标志位
|
||||
F1 EQU PSW .1; //F1标志
|
||||
P EQU PSW .0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
TF2 EQU T2CON .7;
|
||||
EXF2 EQU T2CON .6;
|
||||
RCLK EQU T2CON .5;
|
||||
TCLK EQU T2CON .4;
|
||||
EXEN2 EQU T2CON .3;
|
||||
TR2 EQU T2CON .2;
|
||||
T2 EQU T2CON .1;
|
||||
CP EQU T2CON .0;
|
||||
|
||||
/*IP*/
|
||||
IPADC EQU IP .6; //ADC中断优先控制位 0:设定ADC的中断优先权是 “低” 1:设定ADC的中断优先权是 “高”
|
||||
IPT2 EQU IP .5; //PWM中断优先控制位 0:设定PWM的中断优先权是 “低” 1:设定PWM 的中断优先权是 “高”
|
||||
IPUART EQU IP .4; //Uart中断优先控制位 0:设定Uart的中断优先权是 “低” 1:设定Uart的中断优先权是 “高”
|
||||
IPT1 EQU IP .3; //Timer1中断优先控制位 0:设定Timer1的中断优先权是 “低” 1:设定Timer1的中断优先权是 “高”
|
||||
IPINT1 EQU IP .2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1中断优先权是 “高”
|
||||
IPT0 EQU IP .1; //Timer0中断优先控制位 0:设定Timer0的中断优先权是 “低” 1:设定Timer0的中断优先权是 “高”
|
||||
IPINT0 EQU IP .0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
EA EQU IE .7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
EADC EQU IE .6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
ET2 EQU IE .5; //PWM中断使能控制 0:关闭PWM中断 1:打开PWM中断
|
||||
EUART EQU IE .4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
ET1 EQU IE .3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
EINT1 EQU IE .2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
ET0 EQU IE .1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
EINT0 EQU IE .0; //INT0的中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
TF1 EQU TCON .7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
TR1 EQU TCON .6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
TF0 EQU TCON .5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
TR0 EQU TCON .4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
BITIE1 EQU TCON .3; //INT1溢出中断请求标志
|
||||
BITIE0 EQU TCON .1; //INT0溢出中断请求标志
|
||||
|
||||
/*SCON*/
|
||||
SM0 EQU SCON .7;
|
||||
SM1 EQU SCON .6;
|
||||
SM2 EQU SCON .5;
|
||||
REN EQU SCON .4;
|
||||
TB8 EQU SCON .3;
|
||||
RB8 EQU SCON .2;
|
||||
TI EQU SCON .1;
|
||||
RI EQU SCON .0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:无
|
||||
*SC92F84A5封装未引出的管脚:P00
|
||||
******************************************/
|
||||
P07 EQU P0 .7;
|
||||
P06 EQU P0 .6;
|
||||
P05 EQU P0 .5;
|
||||
P04 EQU P0 .4;
|
||||
P03 EQU P0 .3;
|
||||
P02 EQU P0 .2;
|
||||
P01 EQU P0 .1;
|
||||
P00 EQU P0 .0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:无
|
||||
*SC92F84A5封装未引出的管脚:无
|
||||
******************************************/
|
||||
P17 EQU P1 .7;
|
||||
P16 EQU P1 .6;
|
||||
P15 EQU P1 .5;
|
||||
P14 EQU P1 .4;
|
||||
P13 EQU P1 .3;
|
||||
P12 EQU P1 .2;
|
||||
P11 EQU P1 .1;
|
||||
P10 EQU P1 .0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:无
|
||||
*SC92F84A5封装未引出的管脚:无
|
||||
******************************************/
|
||||
P27 EQU P2 .7;
|
||||
P26 EQU P2 .6;
|
||||
P25 EQU P2 .5;
|
||||
P24 EQU P2 .4;
|
||||
P23 EQU P2 .3;
|
||||
P22 EQU P2 .2;
|
||||
P21 EQU P2 .1;
|
||||
P20 EQU P2 .0;
|
||||
|
||||
/******************* P3 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:无
|
||||
*SC92F84A5封装未引出的管脚:P3
|
||||
******************************************/
|
||||
P37 EQU P3 .7;
|
||||
P36 EQU P3 .6;
|
||||
P35 EQU P3 .5;
|
||||
P34 EQU P3 .4;
|
||||
P33 EQU P3 .3;
|
||||
P32 EQU P3 .2;
|
||||
P31 EQU P3 .1;
|
||||
P30 EQU P3 .0;
|
||||
|
||||
/******************* P4 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:P46/P47
|
||||
*SC92F84A5封装未引出的管脚:P40
|
||||
******************************************/
|
||||
P47 EQU P4 .7;
|
||||
P46 EQU P4 .6;
|
||||
P45 EQU P4 .5;
|
||||
P44 EQU P4 .4;
|
||||
P43 EQU P4 .3;
|
||||
P42 EQU P4 .2;
|
||||
P41 EQU P4 .1;
|
||||
P40 EQU P4 .0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:P54/P55
|
||||
*SC92F84A5封装未引出的管脚:P5
|
||||
******************************************/
|
||||
P55 EQU P5 .5;
|
||||
P54 EQU P5 .4;
|
||||
P53 EQU P5 .3;
|
||||
P52 EQU P5 .2;
|
||||
P51 EQU P5 .1;
|
||||
P50 EQU P5 .0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F84A7,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
SC92F84A6_NIO_Init MACRO IO //SC92F84A6未引出管脚的IO口配置
|
||||
ORL P4CON,#0XC0
|
||||
ORL P5CON,#0X30
|
||||
ENDM
|
||||
SC92F84A5_NIO_Init MACRO IO //SC92F84A5未引出管脚的IO口配置
|
||||
ORL P0CON,#0X01
|
||||
ORL P3CON,#0XFF
|
||||
ORL P4CON,#0X01
|
||||
ORL P5CON,#0X3F
|
||||
ENDM
|
||||
#endif
|
||||
|
|
@ -0,0 +1,296 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F84Ax_C.H
|
||||
|
||||
C Header file for SC92F84Ax microcontroller.
|
||||
Copyright (c) 2020 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2020.07.01
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F84Ax_H_
|
||||
#define _SC92F84Ax_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P4PH = 0xC2; //P4口模式控制寄存器
|
||||
sfr P4CON = 0xC1; //P4口模式控制寄存器
|
||||
sfr P4 = 0xC0; //P4口数据寄存器
|
||||
sfr P3PH = 0xB2; //P3口模式控制寄存器
|
||||
sfr P3CON = 0xB1; //P3口模式控制寄存器
|
||||
sfr P3 = 0xB0; //P3口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON0 = 0x96; //IOH0设置寄存器
|
||||
sfr IOHCON1 = 0x97; //IOH1设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD4; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD3; //PWM控制寄存器
|
||||
|
||||
|
||||
//
|
||||
//*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
sfr P1VO = 0X94; //P1 LCD Bais 输出寄存器
|
||||
sfr P2VO = 0XA3; //P2 LCD Bais 输出寄存器
|
||||
sfr P3VO = 0XB3; //P3 LCD Bais 输出寄存器
|
||||
|
||||
sfr DDRCON = 0X93; //显示驱动设置寄存器
|
||||
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*SPI*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*模拟比较器*/
|
||||
sfr CMPCFG = 0XB6; //模拟比较器设置寄存器
|
||||
sfr CMPCON = 0XB7; //模拟比较器控制寄存器
|
||||
|
||||
/*乘除法器*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
/* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit CLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
sbit BITIE1 = TCON^3; //INT1溢出中断请求标志
|
||||
sbit BITIE0 = TCON^1; //INT0溢出中断请求标志
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:无
|
||||
*SC92F84A5封装未引出的管脚:P00
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:无
|
||||
*SC92F84A5封装未引出的管脚:无
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:无
|
||||
*SC92F84A5封装未引出的管脚:无
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P3 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:无
|
||||
*SC92F84A5封装未引出的管脚:P3
|
||||
******************************************/
|
||||
sbit P37 = P3^7;
|
||||
sbit P36 = P3^6;
|
||||
sbit P35 = P3^5;
|
||||
sbit P34 = P3^4;
|
||||
sbit P33 = P3^3;
|
||||
sbit P32 = P3^2;
|
||||
sbit P31 = P3^1;
|
||||
sbit P30 = P3^0;
|
||||
|
||||
/******************* P4 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:P46/P47
|
||||
*SC92F84A5封装未引出的管脚:P40
|
||||
******************************************/
|
||||
sbit P47 = P4^7;
|
||||
sbit P46 = P4^6;
|
||||
sbit P45 = P4^5;
|
||||
sbit P44 = P4^4;
|
||||
sbit P43 = P4^3;
|
||||
sbit P42 = P4^2;
|
||||
sbit P41 = P4^1;
|
||||
sbit P40 = P4^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F84A7封装未引出的管脚:无
|
||||
*SC92F84A6封装未引出的管脚:P54/P55
|
||||
*SC92F84A5封装未引出的管脚:P5
|
||||
******************************************/
|
||||
sbit P55 = P5^5;
|
||||
sbit P54 = P5^4;
|
||||
sbit P53 = P5^3;
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选SC92F84A7,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F84A6_NIO_Init() {P4CON|=0xC0,P5CON|=0x30;} //SC92F84A6的未引出来的IO口配置
|
||||
#define SC92F84A5_NIO_Init() {P0CON|=0x01,P3CON|=0xFF,P4CON|=0x01,P5CON|=0x3F;} //SC92F84A5的未引出来的IO口配置
|
||||
#endif
|
||||
|
|
@ -0,0 +1,320 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F854X_C.H
|
||||
|
||||
C Header file for SC92F854X microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.10.09
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F854X_H_
|
||||
#define _SC92F854X_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P4PH = 0xC2; //P4口模式控制寄存器
|
||||
sfr P4CON = 0xC1; //P4口模式控制寄存器
|
||||
sfr P4 = 0xC0; //P4口数据寄存器
|
||||
sfr P3PH = 0xB2; //P3口模式控制寄存器
|
||||
sfr P3CON = 0xB1; //P3口模式控制寄存器
|
||||
sfr P3 = 0xB0; //P3口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON0 = 0x96; //IOH0设置寄存器
|
||||
sfr IOHCON1 = 0x97; //IOH1设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD4; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD3; //PWM设置寄存器
|
||||
|
||||
|
||||
//
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
sfr P1VO = 0X94; //P1 LCD Bais 输出寄存器
|
||||
sfr P2VO = 0XA3; //P2 LCD Bais 输出寄存器
|
||||
sfr P3VO = 0XB3; //P3 LCD Bais 输出寄存器
|
||||
|
||||
sfr DDRCON = 0X93; //显示驱动设置寄存器
|
||||
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*PGA*/
|
||||
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*SPI*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*模拟比较器*/
|
||||
sfr CMPCFG = 0XB6; //模拟比较器设置寄存器
|
||||
sfr CMPCON = 0XB7; //模拟比较器控制寄存器
|
||||
|
||||
/*乘除法器*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*B*/
|
||||
/*TKCON*/
|
||||
/*ACC*/
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit CLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F8547封装未引出的管脚:无
|
||||
*SC92F8546封装未引出的管脚:无
|
||||
*SC92F8545封装未引出的管脚:P00
|
||||
*SC92F8543封装未引出的管脚:P00/P01
|
||||
*SC92F8542封装未引出的管脚:P00/P01/P04/P05
|
||||
*SC92F8541封装未引出的管脚:P00/P01/P04/P05/P06
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F8547封装未引出的管脚:无
|
||||
*SC92F8546封装未引出的管脚:无
|
||||
*SC92F8545封装未引出的管脚:无
|
||||
*SC92F8543封装未引出的管脚:P10/P14/P15/P16/P17
|
||||
*SC92F8542封装未引出的管脚:P14/P15/P16/P17
|
||||
*SC92F8541封装未引出的管脚:P10/P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F8547封装未引出的管脚:无
|
||||
*SC92F8546封装未引出的管脚:无
|
||||
*SC92F8545封装未引出的管脚:无
|
||||
*SC92F8543封装未引出的管脚:P26/P27
|
||||
*SC92F8542封装未引出的管脚:P26/P27
|
||||
*SC92F8541封装未引出的管脚:P24/P25/P26/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P3 ******************
|
||||
*SC92F8547封装未引出的管脚:无
|
||||
*SC92F8546封装未引出的管脚:无
|
||||
*SC92F8545封装未引出的管脚:P3
|
||||
*SC92F8543封装未引出的管脚:无
|
||||
*SC92F8542封装未引出的管脚:P3
|
||||
*SC92F8541封装未引出的管脚:P30/P31/P32/P33/P34/P35
|
||||
******************************************/
|
||||
sbit P37 = P3^7;
|
||||
sbit P36 = P3^6;
|
||||
sbit P35 = P3^5;
|
||||
sbit P34 = P3^4;
|
||||
sbit P33 = P3^3;
|
||||
sbit P32 = P3^2;
|
||||
sbit P31 = P3^1;
|
||||
sbit P30 = P3^0;
|
||||
|
||||
/******************* P4 ******************
|
||||
*SC92F8547封装未引出的管脚:无
|
||||
*SC92F8546封装未引出的管脚:P46/P47
|
||||
*SC92F8545封装未引出的管脚:P40
|
||||
*SC92F8543封装未引出的管脚:P40/P44/P45/P46/P47
|
||||
*SC92F8542封装未引出的管脚:P44/P45/P46/P47
|
||||
*SC92F8541封装未引出的管脚:P4
|
||||
******************************************/
|
||||
sbit P47 = P4^7;
|
||||
sbit P46 = P4^6;
|
||||
sbit P45 = P4^5;
|
||||
sbit P44 = P4^4;
|
||||
sbit P43 = P4^3;
|
||||
sbit P42 = P4^2;
|
||||
sbit P41 = P4^1;
|
||||
sbit P40 = P4^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F8547封装未引出的管脚:无
|
||||
*SC92F8546封装未引出的管脚:P54/P55
|
||||
*SC92F8545封装未引出的管脚:P5
|
||||
*SC92F8543封装未引出的管脚:P5
|
||||
*SC92F8542封装未引出的管脚:P5
|
||||
*SC92F8541封装未引出的管脚:P5
|
||||
******************************************/
|
||||
sbit P55 = P5^5;
|
||||
sbit P54 = P5^4;
|
||||
sbit P53 = P5^3;
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F8547,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F8546_NIO_Init() {P4CON|=0xC0,P5CON|=0x30;} //SC92F8546的未引出来的IO口配置
|
||||
#define SC92F8545_NIO_Init() {P0CON|=0x01,P3CON|=0xFF,P4CON|=0x01,P5CON|=0xFF;} //SC92F8545的未引出来的IO口配置
|
||||
#define SC92F8543_NIO_Init() {P0CON|=0x03,P1CON|=0xF1,P2CON|=0xC0,P4CON|=0xF1,P5CON|=0xFF;} //SC92F8543的未引出来的IO口配置
|
||||
#define SC92F8542_NIO_Init() {P0CON|=0x33,P1CON|=0xF0,P2CON|=0xC0,P3CON|=0xFF,P4CON|=0xF0,P5CON|=0xFF;} //SC92F8542的未引出来的IO口配置
|
||||
#define SC92F8541_NIO_Init() {P0CON|=0x73,P1CON|=0xC1,P2CON|=0xF0,P3CON|=0x3F,P4CON|=0xFF,P5CON|=0xFF;} //SC92F8541的未引出来的IO口配置
|
||||
#endif
|
||||
|
|
@ -0,0 +1,297 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F859x_C.H
|
||||
|
||||
C Header file for SC92F859x microcontroller.
|
||||
Copyright (c) 2021 Shenzhen SinOne Microelectronics Co., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.1
|
||||
日期: 2021.10.22
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F859x_H_
|
||||
#define _SC92F859x_H_
|
||||
|
||||
///* ------------------- 字节寄存器-------------------- */
|
||||
/*CPU*/
|
||||
sfr SP = 0X81; //堆栈指针
|
||||
sfr DPL = 0X82; //DPTR数据指针低位
|
||||
sfr DPH = 0X83; //DPTR数据指针高位
|
||||
sfr PSW = 0XD0; //程序状态字寄存器
|
||||
sfr ACC = 0XE0; //累加器A
|
||||
sfr EXA0 = 0XE9; //扩展累加器0
|
||||
sfr EXA1 = 0XEA; //扩展累加器1
|
||||
sfr EXA2 = 0XEB; //扩展累加器2
|
||||
sfr EXA3 = 0XEC; //扩展累加器3
|
||||
sfr EXBL = 0XED; //扩展B寄存器0
|
||||
sfr EXBH = 0XEE; //扩展B寄存器1
|
||||
sfr B = 0XF0; //B寄存器
|
||||
|
||||
/*SRAM*/
|
||||
sfr EXADH = 0XF7; //外部SRAM操作地址高位
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0X87; //电源管理控制寄存器
|
||||
|
||||
/*Interrupt*/
|
||||
sfr IE = 0XA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
sfr IP = 0XB8; //中断优先权控制寄存器
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P0 = 0X80; //P0口数据寄存器
|
||||
sfr P1 = 0X90; //P1口数据寄存器
|
||||
sfr P1CON = 0X91; //P1口输入/输出控制寄存器
|
||||
sfr P1PH = 0X92; //P1口上拉电阻控制寄存器
|
||||
sfr DDRCON = 0X93; //显示驱动控制寄存器
|
||||
sfr P1VO = 0X94; //P1口显示驱动输出寄存器
|
||||
sfr IOHCON0 = 0X96; //IOH设置寄存器0
|
||||
sfr IOHCON1 = 0X97; //IOH设置寄存器1
|
||||
sfr P0CON = 0X9A; //P0口输入/输出控制寄存器
|
||||
sfr P0PH = 0X9B; //P0口上拉电阻控制寄存器
|
||||
sfr P0VO = 0X9C; //P0口LCD电压输出寄存器
|
||||
sfr P2 = 0XA0; //P2口数据寄存器
|
||||
sfr P2CON = 0XA1; //P2口输入/输出控制寄存器
|
||||
sfr P2PH = 0XA2; //P2口上拉电阻控制寄存器
|
||||
sfr P2VO = 0XA3; //P2口显示驱动输出寄存器
|
||||
sfr P3 = 0XB0; //P3口数据寄存器
|
||||
sfr P3CON = 0XB1; //P3口输入/输出控制寄存器
|
||||
sfr P3PH = 0XB2; //P3口上拉电阻控制寄存器
|
||||
sfr P3VO = 0XB3; //P3口显示驱动输出寄存器
|
||||
sfr P4 = 0XC0; //P4口数据寄存器
|
||||
sfr P4CON = 0XC1; //P4口输入/输出控制寄存器
|
||||
sfr P4PH = 0XC2; //P4口上拉电阻控制寄存器
|
||||
sfr P5 = 0XD8; //P5口数据寄存器
|
||||
sfr P5CON = 0XD9; //P5口输入/输出控制寄存器
|
||||
sfr P5PH = 0XDA; //P5口上拉电阻控制寄存器
|
||||
|
||||
/*模拟比较器*/
|
||||
sfr CMPCFG = 0XB6; //模拟比较器设置寄存器
|
||||
sfr CMPCON = 0XB7; //模拟比较器控制寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TCON = 0X88; //定时器控制寄存器
|
||||
sfr TMOD = 0X89; //定时器工作模式寄存器
|
||||
sfr TL0 = 0X8A; //定时器0低8位
|
||||
sfr TL1 = 0X8B; //定时器1低8位
|
||||
sfr TH0 = 0X8C; //定时器0高8位
|
||||
sfr TH1 = 0X8D; //定时器1高8位
|
||||
sfr TMCON = 0X8E; //定时器频率控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG2 = 0XAA; //ADC设置寄存器2
|
||||
sfr ADCCFG0 = 0XAB; //ADC设置寄存器0
|
||||
sfr ADCCFG1 = 0XAC; //ADC设置寄存器1
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0XAE; //ADC结果寄存器
|
||||
sfr ADCVH = 0XAF; //ADC结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCON = 0XD3; //PWM0控制寄存器0
|
||||
sfr PWMCFG = 0XD4; //PWM设置寄存器
|
||||
|
||||
/*WatchDog*/
|
||||
sfr WDTCON = 0XCF; //WDT控制寄存器
|
||||
|
||||
/*BTM*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPKEY = 0XF1; //IAP保护寄存器
|
||||
sfr IAPADL = 0XF2; //IAP写入地址低位寄存器
|
||||
sfr IAPADH = 0XF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADE = 0XF4; //IAP扩展地址寄存器
|
||||
sfr IAPDAT = 0XF5; //IAP数据寄存器
|
||||
sfr IAPCTL = 0XF6; //IAP控制寄存器
|
||||
|
||||
/*uart0*/
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON2 = 0X95;//SSI控制寄存器2
|
||||
sfr SSCON0 = 0X9D; //SSI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SSI控制寄存器1
|
||||
sfr SSDAT = 0X9F; //SSI数据寄存器
|
||||
|
||||
/*OPTION*/
|
||||
sfr OPINX = 0XFE; //Customer Option指针
|
||||
sfr OPREG = 0XFF; //Customer Option寄存器
|
||||
|
||||
/*CRC*/
|
||||
sfr OPERCON = 0XEF; //运算控制寄存器
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7; //定时器2溢出标志位
|
||||
sbit EXF2 = T2CON^6; //T2EX引脚外部事件输入(下降沿)被检测到的标志位
|
||||
sbit RCLK = T2CON^5; //UART0接收时钟控制位 0: 定时器1产生接收波特率 1: 定时器2产生接收波特率
|
||||
sbit TCLK = T2CON^4; //UART0发送时钟控制位 0: 定时器1产生发送波特率 1: 定时器2产生发送波特率
|
||||
sbit EXEN2 = T2CON^3; //T2EX引脚上的外部事件输入(下降沿)用作重载/捕获触发器允许/禁止控制
|
||||
sbit TR2 = T2CON^2; //定时器2开始/停止控制位 0: 停止定时器2 1: 开始定时器2
|
||||
sbit T2 = T2CON^1; //定时器2定时器/计数器方式选定位2
|
||||
sbit CP = T2CON^0; //捕获/重载方式选定位
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先权选择 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先权选择 0:设定 Timer 2的中断优先权是 “低” 1:设定 Timer 2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先权选择 0:设定 UART的中断优先权是 “低” 1:设定 UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先权选择 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1计数器中断优先权选择 0:设定 INT1的中断优先权是 “低” 1:设定 INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先权选择 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0计数器中断优先权选择 0:设定 INT0的中断优先权为 “低” 1: INT0中断优先权为高
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭TIMER2中断 1:打开TIMER2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭SIF中断 1:打开SIF中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //外部中断1中断使能控制 0:关闭外部中断1中断 1:打开外部中断1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //外部中断0中断使能控制 0:关闭外部中断0中断 1:打开外部中断0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7; //串行通信模式控制位:与SM1配合使用 00: 模式0,8位半双工同步通信模式 01: 模式1,10位全双工异步通信 11: 模式3,11位全双工异步通信
|
||||
sbit SM1 = SCON^6; //串行通信模式控制位
|
||||
sbit SM2 = SCON^5; //串行通信模式控制位2,此控制位只对模式3有效 0:每收到一个完整数据帧就置位RI产生中断请求 1:收到一个完整的数据帧时,只有当RB8=1时才会置位RI产生中断请求
|
||||
sbit REN = SCON^4; //接收允许控制位 0:不允许接受数据 1:允许接受数据
|
||||
sbit TB8 = SCON^3; //只对模式3有效,为发送数据的第9位
|
||||
sbit RB8 = SCON^2; //只对模式3有效,为接收数据的第9位
|
||||
sbit TI = SCON^1; //发送中断标志位
|
||||
sbit RI = SCON^0; //接收中断标志位
|
||||
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F8597封装未引出的管脚:无
|
||||
*SC92F8596封装未引出的管脚:无
|
||||
*SC92F8595封装未引出的管脚:P00
|
||||
*SC92F8593封装未引出的管脚:P00/P01
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F8597封装未引出的管脚:无
|
||||
*SC92F8596封装未引出的管脚:无
|
||||
*SC92F8595封装未引出的管脚:无
|
||||
*SC92F8593封装未引出的管脚:P10/P14/P15/P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F8597封装未引出的管脚:无
|
||||
*SC92F8596封装未引出的管脚:无
|
||||
*SC92F8595封装未引出的管脚:无
|
||||
*SC92F8593封装未引出的管脚:P26/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P3 ******************
|
||||
*SC92F8597封装未引出的管脚:无
|
||||
*SC92F8596封装未引出的管脚:无
|
||||
*SC92F8595封装未引出的管脚:P3
|
||||
*SC92F8593封装未引出的管脚:无
|
||||
******************************************/
|
||||
sbit P37 = P3^7;
|
||||
sbit P36 = P3^6;
|
||||
sbit P35 = P3^5;
|
||||
sbit P34 = P3^4;
|
||||
sbit P33 = P3^3;
|
||||
sbit P32 = P3^2;
|
||||
sbit P31 = P3^1;
|
||||
sbit P30 = P3^0;
|
||||
|
||||
/******************* P4 ******************
|
||||
*SC92F8597封装未引出的管脚:无
|
||||
*SC92F8596封装未引出的管脚:P46/P47
|
||||
*SC92F8595封装未引出的管脚:P40
|
||||
*SC92F8593封装未引出的管脚:P40/P44/P45/P46/P47
|
||||
******************************************/
|
||||
sbit P47 = P4^7;
|
||||
sbit P46 = P4^6;
|
||||
sbit P45 = P4^5;
|
||||
sbit P44 = P4^4;
|
||||
sbit P43 = P4^3;
|
||||
sbit P42 = P4^2;
|
||||
sbit P41 = P4^1;
|
||||
sbit P40 = P4^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F8597封装未引出的管脚:无
|
||||
*SC92F8596封装未引出的管脚:P54/P55
|
||||
*SC92F8595封装未引出的管脚:P5
|
||||
*SC92F8593封装未引出的管脚:P5
|
||||
******************************************/
|
||||
sbit P55 = P5^5;
|
||||
sbit P54 = P5^4;
|
||||
sbit P53 = P5^3;
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选SC92F8597,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F8596_NIO_Init() {P4CON|=0xC0,P5CON|=0x30;} //SC92F8596的未引出来的IO口配置
|
||||
#define SC92F8595_NIO_Init() {P0CON|=0x01,P3CON|=0xFF,P4CON|=0x01,P5CON|=0xFF;} //SC92F8595的未引出来的IO口配置
|
||||
#define SC92F8593_NIO_Init() {P0CON|=0x03,P1CON|=0xF1,P2CON|=0xC0,P4CON|=0xF1,P5CON|=0xFF;}//SC92F8593的未引出来的IO口配置
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,286 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92FWxx_C.H
|
||||
|
||||
C Header file for SC92FWxx microcontroller.
|
||||
Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2018.10.09
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92FWxx_H_
|
||||
#define _SC92FWxx_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P4PH = 0xC2; //P4口模式控制寄存器
|
||||
sfr P4CON = 0xC1; //P4口模式控制寄存器
|
||||
sfr P4 = 0xC0; //P4口数据寄存器
|
||||
sfr P3PH = 0xB2; //P3口模式控制寄存器
|
||||
sfr P3CON = 0xB1; //P3口模式控制寄存器
|
||||
sfr P3 = 0xB0; //P3口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON0 = 0x96; //IOH0设置寄存器
|
||||
sfr IOHCON1 = 0x97; //IOH1设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG0 = 0xD2; //PWM0设置寄存器
|
||||
sfr PWMCON0 = 0xD1; //PWM0控制寄存器
|
||||
sfr PWMCFG1 = 0xD4; //PWM1设置寄存器
|
||||
sfr PWMCON1 = 0xD3; //PWM1设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*SPI*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*模拟比较器*/
|
||||
sfr CMPCFG = 0XB6; //模拟比较器设置寄存器
|
||||
sfr CMPCON = 0XB7; //模拟比较器控制寄存器
|
||||
|
||||
/*乘除法器*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*B*/
|
||||
/*ACC*/
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit CLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92FW40封装未引出的管脚:无
|
||||
*SC92FW24封装未引出的管脚:P04/P05/P06/P07
|
||||
*SC92FW16封装未引出的管脚:P00/P01/P04/P05
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92FW40封装未引出的管脚:无
|
||||
*SC92FW24封装未引出的管脚:P10/P12/P14/P15/P16/P17
|
||||
*SC92FW16封装未引出的管脚:P14/P15/P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92FW40封装未引出的管脚:无
|
||||
*SC92FW24封装未引出的管脚:P26/P27
|
||||
*SC92FW16封装未引出的管脚:P26/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P3 ******************
|
||||
*SC92FW40封装未引出的管脚:无
|
||||
*SC92FW24封装未引出的管脚:P34/P35/P36/P37
|
||||
*SC92FW16封装未引出的管脚:P3
|
||||
******************************************/
|
||||
sbit P37 = P3^7;
|
||||
sbit P36 = P3^6;
|
||||
sbit P35 = P3^5;
|
||||
sbit P34 = P3^4;
|
||||
sbit P33 = P3^3;
|
||||
sbit P32 = P3^2;
|
||||
sbit P31 = P3^1;
|
||||
sbit P30 = P3^0;
|
||||
|
||||
/******************* P4 ******************
|
||||
*SC92FW40封装未引出的管脚:无
|
||||
*SC92FW24封装未引出的管脚:P46/P47
|
||||
*SC92FW16封装未引出的管脚:P44/P45/P46/P47
|
||||
******************************************/
|
||||
sbit P47 = P4^7;
|
||||
sbit P46 = P4^6;
|
||||
sbit P45 = P4^5;
|
||||
sbit P44 = P4^4;
|
||||
sbit P43 = P4^3;
|
||||
sbit P42 = P4^2;
|
||||
sbit P41 = P4^1;
|
||||
sbit P40 = P4^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92FW40封装未引出的管脚:无
|
||||
*SC92FW24封装未引出的管脚:P54/P55
|
||||
*SC92FW16封装未引出的管脚:P5
|
||||
******************************************/
|
||||
sbit P55 = P5^5;
|
||||
sbit P54 = P5^4;
|
||||
sbit P53 = P5^3;
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92FW40,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92FW24_NIO_Init() {P0CON|=0xF0,P1CON|=0xF5,P2CON|=0xC0,P3CON|=0xF0,P4CON|=0xC0,P5CON|=0xF0;} //SC92FW24的未引出来的IO口配置
|
||||
#define SC92FW16_NIO_Init() {P0CON|=0x33,P1CON|=0xF0,P2CON|=0xC0,P3CON|=0xFF,P4CON|=0xF0,P5CON|=0xFF;} //SC92FW16的未引出来的IO口配置
|
||||
#endif
|
||||
|
|
@ -0,0 +1,277 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92L753x_C.H
|
||||
|
||||
C Header file for SC92L853x microcontroller.
|
||||
Copyright (c) 2022 Shenzhen SinOne Microelectronics Co., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V0.1
|
||||
日期: 2022.01.18
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92L753x_C_H_
|
||||
#define _SC92L753x_C_H_
|
||||
|
||||
///* ------------------- 字节寄存器-------------------- */
|
||||
/*CPU*/
|
||||
sfr SP = 0X81; //堆栈指针
|
||||
sfr DPL = 0X82; //DPTR数据指针低位
|
||||
sfr DPH = 0X83; //DPTR数据指针高位
|
||||
sfr PSW = 0XD0; //程序状态字寄存器
|
||||
sfr ACC = 0XE0; //累加器A
|
||||
sfr EXA0 = 0XE9; //扩展累加器0
|
||||
sfr EXA1 = 0XEA; //扩展累加器1
|
||||
sfr EXA2 = 0XEB; //扩展累加器2
|
||||
sfr EXA3 = 0XEC; //扩展累加器3
|
||||
sfr EXBL = 0XED; //扩展B寄存器0
|
||||
sfr EXBH = 0XEE; //扩展B寄存器1
|
||||
sfr B = 0XF0; //B寄存器
|
||||
|
||||
/*SRAM*/
|
||||
sfr EXADH = 0XF7; //外部SRAM操作地址高位
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0X87; //电源管理控制寄存器
|
||||
|
||||
/*Interrupt*/
|
||||
sfr IE = 0XA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
sfr IE2 = 0XAA; //中断使能寄存器2
|
||||
sfr IP = 0XB8; //中断优先权控制寄存器
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP2 = 0XBA; //中断优先级控制寄存器2
|
||||
|
||||
/*PORT*/
|
||||
sfr P0 = 0X80; //P0口数据寄存器
|
||||
sfr P1 = 0X90; //P1口数据寄存器
|
||||
sfr P1CON = 0X91; //P1口输入/输出控制寄存器
|
||||
sfr P1PH = 0X92; //P1口上拉电阻控制寄存器
|
||||
sfr P1VO = 0X93; //P1口显示驱动输出寄存器
|
||||
sfr P0VO = 0X94; //P0口LCD电压输出寄存器
|
||||
sfr DDRCON = 0X95; //显示驱动控制寄存器
|
||||
sfr IOHCON0 = 0X96; //IOH设置寄存器0
|
||||
sfr IOHCON1 = 0X97; //IOH设置寄存器1
|
||||
sfr P0CON = 0X9A; //P0口输入/输出控制寄存器
|
||||
sfr P0PH = 0X9B; //P0口上拉电阻控制寄存器
|
||||
sfr P2 = 0XA0; //P2口数据寄存器
|
||||
sfr P2CON = 0XA1; //P2口输入/输出控制寄存器
|
||||
sfr P2PH = 0XA2; //P2口上拉电阻控制寄存器
|
||||
sfr P2VO = 0XA3; //P2口显示驱动输出寄存器
|
||||
sfr P5 = 0XD8; //P5口数据寄存器
|
||||
sfr P5CON = 0XD9; //P5口输入/输出控制寄存器
|
||||
sfr P5PH = 0XDA; //P5口上拉电阻控制寄存器
|
||||
sfr P5VO = 0XDB; //P5口显示驱动输出寄存器
|
||||
|
||||
|
||||
/*TIMER*/
|
||||
sfr TCON = 0X88; //定时器控制寄存器
|
||||
sfr TMOD = 0X89; //定时器工作模式寄存器
|
||||
sfr TL0 = 0X8A; //定时器0低8位
|
||||
sfr TL1 = 0X8B; //定时器1低8位
|
||||
sfr TH0 = 0X8C; //定时器0高8位
|
||||
sfr TH1 = 0X8D; //定时器1高8位
|
||||
sfr TMCON = 0X8E; //定时器频率控制寄存器
|
||||
sfr TXCON = 0XC8; //定时器2/3/4控制寄存器
|
||||
sfr TXMOD = 0XC9; //定时器2/3/4工作模式寄存器
|
||||
sfr RCAPXL = 0XCA; //定时器2/3/4重载/捕捉低8位
|
||||
sfr RCAPXH = 0XCB; //定时器2/3/4重载/捕捉高8位
|
||||
sfr TLX = 0XCC; //定时器2/3/4低8位
|
||||
sfr THX = 0XCD; //定时器2/3/4高8位
|
||||
sfr TXINX = 0XCE; //定时器控制寄存器指针
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0XAB; //ADC设置寄存器0
|
||||
sfr ADCCFG1 = 0XAC; //ADC设置寄存器1
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0XAE; //ADC结果寄存器
|
||||
sfr ADCVH = 0XAF; //ADC结果寄存器
|
||||
sfr ADCCFG2 = 0XB5; //ADC设置寄存器2
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0XD1; //PWM设置寄存器
|
||||
sfr PWMCON0 = 0XD2; //PWM控制寄存器0
|
||||
sfr PWMCON1 = 0XD3; //PWM控制寄存器1
|
||||
sfr PWMPDL = 0XD4; //PWM周期寄存器低8位
|
||||
sfr PWMPDH = 0XD5; //PWM周期寄存器高8位
|
||||
sfr PWMDFR = 0XD6; //PWM死区设置寄存器
|
||||
sfr PWMFLT = 0XD7; //PWM故障检测设置寄存器
|
||||
|
||||
/*LPD*/
|
||||
sfr LPDCFG = 0XB7; //LPD控制器
|
||||
|
||||
/*WatchDog*/
|
||||
sfr WDTCON = 0XCF; //WDT控制寄存器
|
||||
|
||||
/*BTM*/
|
||||
sfr BTMCON = 0XFB; //低频定时器控制寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XB4; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XBE; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XBF; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPKEY = 0XF1; //IAP保护寄存器
|
||||
sfr IAPADL = 0XF2; //IAP写入地址低位寄存器
|
||||
sfr IAPADH = 0XF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADE = 0XF4; //IAP写入扩展地址寄存器
|
||||
sfr IAPDAT = 0XF5; //IAP数据寄存器
|
||||
sfr IAPCTL = 0XF6; //IAP控制寄存器
|
||||
|
||||
/*uart0*/
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr US0CON0 = 0X9C; //USCI0控制寄存器0
|
||||
sfr US0CON1 = 0X9D; //USCI0控制寄存器1
|
||||
sfr US0CON2 = 0X9E; //USCI0控制寄存器2
|
||||
sfr US0CON3 = 0X9F; //USCI0控制寄存器3
|
||||
sfr US1CON0 = 0XA4; //USCI1控制寄存器0
|
||||
sfr US1CON1 = 0XA5; //USCI1控制寄存器1
|
||||
sfr US1CON2 = 0XA6; //USCI1控制寄存器2
|
||||
sfr US1CON3 = 0XA7; //USCI1控制寄存器3
|
||||
sfr US2CON0 = 0XC4; //USCI2控制寄存器0
|
||||
sfr US2CON1 = 0XC5; //USCI2控制寄存器1
|
||||
sfr US2CON2 = 0XC6; //USCI2控制寄存器2
|
||||
sfr US2CON3 = 0XC7; //USCI2控制寄存器3
|
||||
|
||||
/*OPTION*/
|
||||
sfr OPINX = 0XFE; //Option指针
|
||||
sfr OPREG = 0XFF; //Option寄存器
|
||||
|
||||
/*CRC*/
|
||||
sfr OPERCON = 0XEF; //运算控制寄存器
|
||||
sfr CRCINX = 0XFC; //CRC指针
|
||||
sfr CRCREG = 0XFD; //CRC寄存器
|
||||
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*TXCON*/
|
||||
sbit TFX = TXCON^7; //定时器2/3/4溢出标志位
|
||||
sbit EXFX = TXCON^6; //TnEX(n=2/3/4)引脚外部事件输入(下降沿)被检测到的标志位
|
||||
sbit RCLKX = TXCON^5; //UART0接收时钟控制位 0: 定时器1产生接收波特率 1: 定时器2产生接收波特率
|
||||
sbit TCLKX = TXCON^4; //UART0发送时钟控制位 0: 定时器1产生发送波特率 1: 定时器2产生发送波特率
|
||||
sbit EXENX = TXCON^3; //T2EX引脚上的外部事件输入(下降沿)用作重载/捕获触发器允许/禁止控制
|
||||
sbit TRX = TXCON^2; //定时器2开始/停止控制位 0: 停止定时器2 1: 开始定时器2
|
||||
sbit TX = TXCON^1; //定时器2定时器/计数器方式选定位2
|
||||
sbit CP = TXCON^0; //捕获/重载方式选定位
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先权选择 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先权选择 0:设定 Timer 2的中断优先权是 “低” 1:设定 Timer 2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先权选择 0:设定 UART的中断优先权是 “低” 1:设定 UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先权选择 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1计数器中断优先权选择 0:设定 INT1的中断优先权是 “低” 1:设定 INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先权选择 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0计数器中断优先权选择 0:设定 INT0的中断优先权为 “低” 1: INT0中断优先权为高
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭TIMER2中断 1:打开TIMER2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭SIF中断 1:打开SIF中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //外部中断1中断使能控制 0:关闭外部中断1中断 1:打开外部中断1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //外部中断0中断使能控制 0:关闭外部中断0中断 1:打开外部中断0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7; //串行通信模式控制位:与SM1配合使用 00: 模式0,8位半双工同步通信模式 01: 模式1,10位全双工异步通信 11: 模式3,11位全双工异步通信
|
||||
sbit SM1 = SCON^6; //串行通信模式控制位
|
||||
sbit SM2 = SCON^5; //串行通信模式控制位2,此控制位只对模式3有效 0:每收到一个完整数据帧就置位RI产生中断请求 1:收到一个完整的数据帧时,只有当RB8=1时才会置位RI产生中断请求
|
||||
sbit REN = SCON^4; //接收允许控制位 0:不允许接受数据 1:允许接受数据
|
||||
sbit TB8 = SCON^3; //只对模式3有效,为发送数据的第9位
|
||||
sbit RB8 = SCON^2; //只对模式3有效,为接收数据的第9位
|
||||
sbit TI = SCON^1; //发送中断标志位
|
||||
sbit RI = SCON^0; //接收中断标志位
|
||||
|
||||
|
||||
/******************* P0 ***********************
|
||||
*SC92L8535封装未引出的管脚:无
|
||||
*SC92L8533封装未引出的管脚:无
|
||||
*SC92L8532封装未引出的管脚:P06/P07
|
||||
*SC92L8531封装未引出的管脚:P02/P03/P04/P06/P07
|
||||
***********************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ***********************
|
||||
*SC92L8535封装未引出的管脚:无
|
||||
*SC92L8533封装未引出的管脚:无
|
||||
*SC92L8532封装未引出的管脚:无
|
||||
*SC92L8531封装未引出的管脚:无
|
||||
***********************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ***********************
|
||||
*SC92L8535封装未引出的管脚:无
|
||||
*SC92L8533封装未引出的管脚:无
|
||||
*SC92L8532封装未引出的管脚:无
|
||||
*SC92L8531封装未引出的管脚:P22/P23/P27
|
||||
***********************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
|
||||
/******************* P5 ***********************
|
||||
*SC92L8535封装未引出的管脚:无
|
||||
*SC92L8533封装未引出的管脚:P52/P53/P54/P55
|
||||
*SC92L8532封装未引出的管脚:P5
|
||||
*SC92L8531封装未引出的管脚:P5
|
||||
***********************************************/
|
||||
sbit P55 = P5^5;
|
||||
sbit P54 = P5^4;
|
||||
sbit P53 = P5^3;
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选SC92L7535,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92L7533_NIO_Init() {P5CON|=0x3C;} //SC92L8533的未引出来的IO口配置
|
||||
#define SC92L7532_NIO_Init() {P0CON|=0xC0,P5CON|=0x3F;} //SC92L8532的未引出来的IO口配置
|
||||
#define SC92L7531_NIO_Init() {P0CON|=0xDC,P2CON|=0X8C,P5CON|=0x3F;} //SC92L8531的未引出来的IO口配置
|
||||
#endif
|
||||
|
|
@ -0,0 +1,277 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92L853x_C.H
|
||||
|
||||
C Header file for SC92L853x microcontroller.
|
||||
Copyright (c) 2022 Shenzhen SinOne Microelectronics Co., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V0.1
|
||||
日期: 2022.01.18
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92L853x_C_H_
|
||||
#define _SC92L853x_C_H_
|
||||
|
||||
///* ------------------- 字节寄存器-------------------- */
|
||||
/*CPU*/
|
||||
sfr SP = 0X81; //堆栈指针
|
||||
sfr DPL = 0X82; //DPTR数据指针低位
|
||||
sfr DPH = 0X83; //DPTR数据指针高位
|
||||
sfr PSW = 0XD0; //程序状态字寄存器
|
||||
sfr ACC = 0XE0; //累加器A
|
||||
sfr EXA0 = 0XE9; //扩展累加器0
|
||||
sfr EXA1 = 0XEA; //扩展累加器1
|
||||
sfr EXA2 = 0XEB; //扩展累加器2
|
||||
sfr EXA3 = 0XEC; //扩展累加器3
|
||||
sfr EXBL = 0XED; //扩展B寄存器0
|
||||
sfr EXBH = 0XEE; //扩展B寄存器1
|
||||
sfr B = 0XF0; //B寄存器
|
||||
|
||||
/*SRAM*/
|
||||
sfr EXADH = 0XF7; //外部SRAM操作地址高位
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0X87; //电源管理控制寄存器
|
||||
|
||||
/*Interrupt*/
|
||||
sfr IE = 0XA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
sfr IE2 = 0XAA; //中断使能寄存器2
|
||||
sfr IP = 0XB8; //中断优先权控制寄存器
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP2 = 0XBA; //中断优先级控制寄存器2
|
||||
|
||||
/*PORT*/
|
||||
sfr P0 = 0X80; //P0口数据寄存器
|
||||
sfr P1 = 0X90; //P1口数据寄存器
|
||||
sfr P1CON = 0X91; //P1口输入/输出控制寄存器
|
||||
sfr P1PH = 0X92; //P1口上拉电阻控制寄存器
|
||||
sfr P1VO = 0X93; //P1口显示驱动输出寄存器
|
||||
sfr P0VO = 0X94; //P0口LCD电压输出寄存器
|
||||
sfr DDRCON = 0X95; //显示驱动控制寄存器
|
||||
sfr IOHCON0 = 0X96; //IOH设置寄存器0
|
||||
sfr IOHCON1 = 0X97; //IOH设置寄存器1
|
||||
sfr P0CON = 0X9A; //P0口输入/输出控制寄存器
|
||||
sfr P0PH = 0X9B; //P0口上拉电阻控制寄存器
|
||||
sfr P2 = 0XA0; //P2口数据寄存器
|
||||
sfr P2CON = 0XA1; //P2口输入/输出控制寄存器
|
||||
sfr P2PH = 0XA2; //P2口上拉电阻控制寄存器
|
||||
sfr P2VO = 0XA3; //P2口显示驱动输出寄存器
|
||||
sfr P5 = 0XD8; //P5口数据寄存器
|
||||
sfr P5CON = 0XD9; //P5口输入/输出控制寄存器
|
||||
sfr P5PH = 0XDA; //P5口上拉电阻控制寄存器
|
||||
sfr P5VO = 0XDB; //P5口显示驱动输出寄存器
|
||||
|
||||
|
||||
/*TIMER*/
|
||||
sfr TCON = 0X88; //定时器控制寄存器
|
||||
sfr TMOD = 0X89; //定时器工作模式寄存器
|
||||
sfr TL0 = 0X8A; //定时器0低8位
|
||||
sfr TL1 = 0X8B; //定时器1低8位
|
||||
sfr TH0 = 0X8C; //定时器0高8位
|
||||
sfr TH1 = 0X8D; //定时器1高8位
|
||||
sfr TMCON = 0X8E; //定时器频率控制寄存器
|
||||
sfr TXCON = 0XC8; //定时器2/3/4控制寄存器
|
||||
sfr TXMOD = 0XC9; //定时器2/3/4工作模式寄存器
|
||||
sfr RCAPXL = 0XCA; //定时器2/3/4重载/捕捉低8位
|
||||
sfr RCAPXH = 0XCB; //定时器2/3/4重载/捕捉高8位
|
||||
sfr TLX = 0XCC; //定时器2/3/4低8位
|
||||
sfr THX = 0XCD; //定时器2/3/4高8位
|
||||
sfr TXINX = 0XCE; //定时器控制寄存器指针
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0XAB; //ADC设置寄存器0
|
||||
sfr ADCCFG1 = 0XAC; //ADC设置寄存器1
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0XAE; //ADC结果寄存器
|
||||
sfr ADCVH = 0XAF; //ADC结果寄存器
|
||||
sfr ADCCFG2 = 0XB5; //ADC设置寄存器2
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0XD1; //PWM设置寄存器
|
||||
sfr PWMCON0 = 0XD2; //PWM控制寄存器0
|
||||
sfr PWMCON1 = 0XD3; //PWM控制寄存器1
|
||||
sfr PWMPDL = 0XD4; //PWM周期寄存器低8位
|
||||
sfr PWMPDH = 0XD5; //PWM周期寄存器高8位
|
||||
sfr PWMDFR = 0XD6; //PWM死区设置寄存器
|
||||
sfr PWMFLT = 0XD7; //PWM故障检测设置寄存器
|
||||
|
||||
/*LPD*/
|
||||
sfr LPDCFG = 0XB7; //LPD控制器
|
||||
|
||||
/*WatchDog*/
|
||||
sfr WDTCON = 0XCF; //WDT控制寄存器
|
||||
|
||||
/*BTM*/
|
||||
sfr BTMCON = 0XFB; //低频定时器控制寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XB4; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XBE; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XBF; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPKEY = 0XF1; //IAP保护寄存器
|
||||
sfr IAPADL = 0XF2; //IAP写入地址低位寄存器
|
||||
sfr IAPADH = 0XF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADE = 0XF4; //IAP写入扩展地址寄存器
|
||||
sfr IAPDAT = 0XF5; //IAP数据寄存器
|
||||
sfr IAPCTL = 0XF6; //IAP控制寄存器
|
||||
|
||||
/*uart0*/
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr US0CON0 = 0X9C; //USCI0控制寄存器0
|
||||
sfr US0CON1 = 0X9D; //USCI0控制寄存器1
|
||||
sfr US0CON2 = 0X9E; //USCI0控制寄存器2
|
||||
sfr US0CON3 = 0X9F; //USCI0控制寄存器3
|
||||
sfr US1CON0 = 0XA4; //USCI1控制寄存器0
|
||||
sfr US1CON1 = 0XA5; //USCI1控制寄存器1
|
||||
sfr US1CON2 = 0XA6; //USCI1控制寄存器2
|
||||
sfr US1CON3 = 0XA7; //USCI1控制寄存器3
|
||||
sfr US2CON0 = 0XC4; //USCI2控制寄存器0
|
||||
sfr US2CON1 = 0XC5; //USCI2控制寄存器1
|
||||
sfr US2CON2 = 0XC6; //USCI2控制寄存器2
|
||||
sfr US2CON3 = 0XC7; //USCI2控制寄存器3
|
||||
|
||||
/*OPTION*/
|
||||
sfr OPINX = 0XFE; //Option指针
|
||||
sfr OPREG = 0XFF; //Option寄存器
|
||||
|
||||
/*CRC*/
|
||||
sfr OPERCON = 0XEF; //运算控制寄存器
|
||||
sfr CRCINX = 0XFC; //CRC指针
|
||||
sfr CRCREG = 0XFD; //CRC寄存器
|
||||
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*TXCON*/
|
||||
sbit TFX = TXCON^7; //定时器2/3/4溢出标志位
|
||||
sbit EXFX = TXCON^6; //TnEX(n=2/3/4)引脚外部事件输入(下降沿)被检测到的标志位
|
||||
sbit RCLKX = TXCON^5; //UART0接收时钟控制位 0: 定时器1产生接收波特率 1: 定时器2产生接收波特率
|
||||
sbit TCLKX = TXCON^4; //UART0发送时钟控制位 0: 定时器1产生发送波特率 1: 定时器2产生发送波特率
|
||||
sbit EXENX = TXCON^3; //T2EX引脚上的外部事件输入(下降沿)用作重载/捕获触发器允许/禁止控制
|
||||
sbit TRX = TXCON^2; //定时器2开始/停止控制位 0: 停止定时器2 1: 开始定时器2
|
||||
sbit TX = TXCON^1; //定时器2定时器/计数器方式选定位2
|
||||
sbit CP = TXCON^0; //捕获/重载方式选定位
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先权选择 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先权选择 0:设定 Timer 2的中断优先权是 “低” 1:设定 Timer 2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先权选择 0:设定 UART的中断优先权是 “低” 1:设定 UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先权选择 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1计数器中断优先权选择 0:设定 INT1的中断优先权是 “低” 1:设定 INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先权选择 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0计数器中断优先权选择 0:设定 INT0的中断优先权为 “低” 1: INT0中断优先权为高
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭TIMER2中断 1:打开TIMER2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭SIF中断 1:打开SIF中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //外部中断1中断使能控制 0:关闭外部中断1中断 1:打开外部中断1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //外部中断0中断使能控制 0:关闭外部中断0中断 1:打开外部中断0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7; //串行通信模式控制位:与SM1配合使用 00: 模式0,8位半双工同步通信模式 01: 模式1,10位全双工异步通信 11: 模式3,11位全双工异步通信
|
||||
sbit SM1 = SCON^6; //串行通信模式控制位
|
||||
sbit SM2 = SCON^5; //串行通信模式控制位2,此控制位只对模式3有效 0:每收到一个完整数据帧就置位RI产生中断请求 1:收到一个完整的数据帧时,只有当RB8=1时才会置位RI产生中断请求
|
||||
sbit REN = SCON^4; //接收允许控制位 0:不允许接受数据 1:允许接受数据
|
||||
sbit TB8 = SCON^3; //只对模式3有效,为发送数据的第9位
|
||||
sbit RB8 = SCON^2; //只对模式3有效,为接收数据的第9位
|
||||
sbit TI = SCON^1; //发送中断标志位
|
||||
sbit RI = SCON^0; //接收中断标志位
|
||||
|
||||
|
||||
/******************* P0 ***********************
|
||||
*SC92L8535封装未引出的管脚:无
|
||||
*SC92L8533封装未引出的管脚:无
|
||||
*SC92L8532封装未引出的管脚:P06/P07
|
||||
*SC92L8531封装未引出的管脚:P02/P03/P04/P06/P07
|
||||
***********************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ***********************
|
||||
*SC92L8535封装未引出的管脚:无
|
||||
*SC92L8533封装未引出的管脚:无
|
||||
*SC92L8532封装未引出的管脚:无
|
||||
*SC92L8531封装未引出的管脚:无
|
||||
***********************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ***********************
|
||||
*SC92L8535封装未引出的管脚:无
|
||||
*SC92L8533封装未引出的管脚:无
|
||||
*SC92L8532封装未引出的管脚:无
|
||||
*SC92L8531封装未引出的管脚:P22/P23/P27
|
||||
***********************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
|
||||
/******************* P5 ***********************
|
||||
*SC92L8535封装未引出的管脚:无
|
||||
*SC92L8533封装未引出的管脚:P52/P53/P54/P55
|
||||
*SC92L8532封装未引出的管脚:P5
|
||||
*SC92L8531封装未引出的管脚:P5
|
||||
***********************************************/
|
||||
sbit P55 = P5^5;
|
||||
sbit P54 = P5^4;
|
||||
sbit P53 = P5^3;
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选SC92L8535,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92L8533_NIO_Init() {P5CON|=0x3C;} //SC92L8533的未引出来的IO口配置
|
||||
#define SC92L8532_NIO_Init() {P0CON|=0xC0,P5CON|=0x3F;} //SC92L8532的未引出来的IO口配置
|
||||
#define SC92L8531_NIO_Init() {P0CON|=0xDC,P2CON|=0X8C,P5CON|=0x3F;} //SC92L8531的未引出来的IO口配置
|
||||
#endif
|
||||
|
|
@ -0,0 +1,252 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F73Ax_C.H
|
||||
|
||||
C Header file for SC92F73Ax microcontroller.
|
||||
Copyright (c) 2019 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2019.06.17
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F73Ax_H_
|
||||
#define _SC92F73Ax_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0xD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2设置寄存器
|
||||
sfr PWMDTYB = 0xDC; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0xDD; //PWM3设置寄存器
|
||||
sfr PWMDTY4 = 0xDE; //PWM4设置寄存器
|
||||
sfr PWMDTY5 = 0xDF; //PWM5设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart*/
|
||||
sfr SCON = 0x98; //串口控制寄存器
|
||||
sfr SBUF = 0x99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE; //Option 指针
|
||||
sfr OPREG = 0XFF; //Option寄存器
|
||||
sfr EXADH = 0XF7; //外部SRAM操作地址高位
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*乘除法*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
/* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
sbit BITIE1 = TCON^3; //INT1溢出中断请求标志 0:CPU响应后,硬件清零 1:中断产生
|
||||
sbit BITIE0 = TCON^1; //INT0溢出中断请求标志 0:CPU响应后,硬件清零 1:中断产生
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F73A3封装未引出的管脚:无
|
||||
*SC92F73A2封装未引出的管脚:P06/P07
|
||||
*SC92F73A1封装未引出的管脚:P02/P03/P04/P06/P07
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F73A3封装未引出的管脚:无
|
||||
*SC92F73A2封装未引出的管脚:P16/P17
|
||||
*SC92F73A1封装未引出的管脚:P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F73A3封装未引出的管脚:无
|
||||
*SC92F73A2封装未引出的管脚:P22/P23
|
||||
*SC92F73A1封装未引出的管脚:P22/P23/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F73A3封装未引出的管脚:无
|
||||
*SC92F73A2封装未引出的管脚:P50/P51
|
||||
*SC92F73A1封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F73A3,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F73A2_NIO_Init() {P0CON|=0xC0,P1CON|=0xC0,P2CON|=0x0C,P5CON|=0x03;} //SC92F73A2的未引出来的IO口配置
|
||||
#define SC92F73A1_NIO_Init() {P0CON|=0xDC,P1CON|=0xC0,P2CON|=0x8C,P5CON|=0x03;} //SC92F73A1的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,253 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F74Ax_C.H
|
||||
|
||||
C Header file for SC92F74Ax microcontroller.
|
||||
Copyright (c) 2019 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2019.06.17
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F74Ax_H_
|
||||
#define _SC92F74Ax_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0xD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2设置寄存器
|
||||
sfr PWMDTYB = 0xDC; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0xDD; //PWM3设置寄存器
|
||||
sfr PWMDTY4 = 0xDE; //PWM4设置寄存器
|
||||
sfr PWMDTY5 = 0xDF; //PWM5设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart*/
|
||||
sfr SCON = 0x98; //串口控制寄存器
|
||||
sfr SBUF = 0x99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE; //Option 指针
|
||||
sfr OPREG = 0XFF; //Option寄存器
|
||||
sfr EXADH = 0XF7; //外部SRAM操作地址高位
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*乘除法*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
/* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
sbit BITIE1 = TCON^3; //INT1溢出中断请求标志 0:CPU响应后,硬件清零 1:中断产生
|
||||
sbit BITIE0 = TCON^1; //INT0溢出中断请求标志 0:CPU响应后,硬件清零 1:中断产生
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F74A3封装未引出的管脚:无
|
||||
*SC92F74A2封装未引出的管脚:P06/P07
|
||||
*SC92F74A1封装未引出的管脚:P02/P03/P04/P06/P07
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F74A3封装未引出的管脚:无
|
||||
*SC92F74A2封装未引出的管脚:P16/P17
|
||||
*SC92F74A1封装未引出的管脚:P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F74A3封装未引出的管脚:无
|
||||
*SC92F74A2封装未引出的管脚:P22/P23
|
||||
*SC92F74A1封装未引出的管脚:P22/P23/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F74A3封装未引出的管脚:无
|
||||
*SC92F74A2封装未引出的管脚:P50/P51
|
||||
*SC92F74A1封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F74A3,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F74A2_NIO_Init() {P0CON|=0xC0,P1CON|=0xC0,P2CON|=0x0C,P5CON|=0x03;} //SC92F74A2的未引出来的IO口配置
|
||||
#define SC92F74A1_NIO_Init() {P0CON|=0xDC,P1CON|=0xC0,P2CON|=0x8C,P5CON|=0x03;} //SC92F74A1的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,253 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F83Ax_C.H
|
||||
|
||||
C Header file for SC92F83Ax microcontroller.
|
||||
Copyright (c) 2019 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2019.06.17
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F83Ax_H_
|
||||
#define _SC92F83Ax_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0xD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2设置寄存器
|
||||
sfr PWMDTYB = 0xDC; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0xDD; //PWM3设置寄存器
|
||||
sfr PWMDTY4 = 0xDE; //PWM4设置寄存器
|
||||
sfr PWMDTY5 = 0xDF; //PWM5设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart*/
|
||||
sfr SCON = 0x98; //串口控制寄存器
|
||||
sfr SBUF = 0x99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE; //Option 指针
|
||||
sfr OPREG = 0XFF; //Option寄存器
|
||||
sfr EXADH = 0XF7; //外部SRAM操作地址高位
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*乘除法*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
/* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
sbit BITIE1 = TCON^3; //INT1溢出中断请求标志 0:CPU响应后,硬件清零 1:中断产生
|
||||
sbit BITIE0 = TCON^1; //INT0溢出中断请求标志 0:CPU响应后,硬件清零 1:中断产生
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F83A3封装未引出的管脚:无
|
||||
*SC92F83A2封装未引出的管脚:P06/P07
|
||||
*SC92F83A1封装未引出的管脚:P02/P03/P04/P06/P07
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F83A3封装未引出的管脚:无
|
||||
*SC92F83A2封装未引出的管脚:P16/P17
|
||||
*SC92F83A1封装未引出的管脚:P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F83A3封装未引出的管脚:无
|
||||
*SC92F83A2封装未引出的管脚:P22/P23
|
||||
*SC92F83A1封装未引出的管脚:P22/P23/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F83A3封装未引出的管脚:无
|
||||
*SC92F83A2封装未引出的管脚:P50/P51
|
||||
*SC92F83A1封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F83A3,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F83A2_NIO_Init() {P0CON|=0xC0,P1CON|=0xC0,P2CON|=0x0C,P5CON|=0x03;} //SC92F83A2的未引出来的IO口配置
|
||||
#define SC92F83A1_NIO_Init() {P0CON|=0xDC,P1CON|=0xC0,P2CON|=0x8C,P5CON|=0x03;} //SC92F83A1的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,253 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC92F84Ax_C.H
|
||||
|
||||
C Header file for SC92F84Ax microcontroller.
|
||||
Copyright (c) 2019 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V1.0
|
||||
日期: 2019.06.17
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC92F84Ax_H_
|
||||
#define _SC92F84Ax_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0xC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0xC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0xCC; //定时器2低8位
|
||||
sfr TH2 = 0xCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器0
|
||||
sfr ADCCFG1 = 0xAC; //ADC功能配置寄存器1
|
||||
sfr ADCCFG2 = 0XAA; //ADC功能配置寄存器2
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A
|
||||
sfr PWMDTY0 = 0xD5; //PWM0设置寄存器
|
||||
sfr PWMDTY1 = 0xD6; //PWM1设置寄存器
|
||||
sfr PWMDTY2 = 0xD7; //PWM2设置寄存器
|
||||
sfr PWMDTYB = 0xDC; //PWM占空比设置寄存器B
|
||||
sfr PWMDTY3 = 0xDD; //PWM3设置寄存器
|
||||
sfr PWMDTY4 = 0xDE; //PWM4设置寄存器
|
||||
sfr PWMDTY5 = 0xDF; //PWM5设置寄存器
|
||||
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*uart*/
|
||||
sfr SCON = 0x98; //串口控制寄存器
|
||||
sfr SBUF = 0x99; //串口数据缓存寄存器
|
||||
|
||||
/*三合一*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器0
|
||||
sfr SSCON1 = 0X9E; //SPI控制寄存器1
|
||||
sfr SSCON2 = 0X95; //SPI控制寄存器2
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr OPINX = 0XFE; //Option 指针
|
||||
sfr OPREG = 0XFF; //Option寄存器
|
||||
sfr EXADH = 0XF7; //外部SRAM操作地址高位
|
||||
|
||||
/*Check Sum*/
|
||||
sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位
|
||||
sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位
|
||||
|
||||
/*乘除法*/
|
||||
sfr EXA0 = 0xE9; //扩展累加器0
|
||||
sfr EXA1 = 0xEA; //扩展累加器1
|
||||
sfr EXA2 = 0xEB; //扩展累加器2
|
||||
sfr EXA3 = 0xEC; //扩展累加器3
|
||||
sfr EXBL = 0xED; //扩展B寄存器0
|
||||
sfr EXBH = 0xEE; //扩展B寄存器1
|
||||
sfr OPERCON = 0xEF; //运算控制寄存器
|
||||
|
||||
/* ------------------- 位寄存器-------------------- */
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit F1 = PSW^1; //F1标志
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
sbit BITIE1 = TCON^3; //INT1溢出中断请求标志 0:CPU响应后,硬件清零 1:中断产生
|
||||
sbit BITIE0 = TCON^1; //INT0溢出中断请求标志 0:CPU响应后,硬件清零 1:中断产生
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC92F84A3封装未引出的管脚:无
|
||||
*SC92F84A2封装未引出的管脚:P06/P07
|
||||
*SC92F84A1封装未引出的管脚:P02/P03/P04/P06/P07
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC92F84A3封装未引出的管脚:无
|
||||
*SC92F84A2封装未引出的管脚:P16/P17
|
||||
*SC92F84A1封装未引出的管脚:P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
sbit P10 = P1^0;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC92F84A3封装未引出的管脚:无
|
||||
*SC92F84A2封装未引出的管脚:P22/P23
|
||||
*SC92F84A1封装未引出的管脚:P22/P23/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC92F84A3封装未引出的管脚:无
|
||||
*SC92F84A2封装未引出的管脚:P50/P51
|
||||
*SC92F84A1封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*如若选择SC92F84A3,则不用调用宏定义。
|
||||
*****************************************************************************/
|
||||
#define SC92F84A2_NIO_Init() {P0CON|=0xC0,P1CON|=0xC0,P2CON|=0x0C,P5CON|=0x03;} //SC92F84A2的未引出来的IO口配置
|
||||
#define SC92F84A1_NIO_Init() {P0CON|=0xDC,P1CON|=0xC0,P2CON|=0x8C,P5CON|=0x03;} //SC92F84A1的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,242 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC93F743x_C.H
|
||||
|
||||
C Header file for SC93F743x microcontroller.
|
||||
Copyright (c) 2019 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V2.0
|
||||
日期: 2019.06.24
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC93F743x_H_
|
||||
#define _SC93F743x_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
sfr DPL1 = 0x84; //DPTR1数据指针1低位
|
||||
sfr DPH1 = 0x85; //DPTR1数据指针1高位
|
||||
sfr DPS = 0x86; //DPTR选择寄存器
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器0
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器1
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器0
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器1
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器0
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器1
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器1
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器1
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCFG1 = 0xAC; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM高电平设置寄存器
|
||||
sfr PWMDTY0 = 0xD5; //PWM高电平设置寄存器
|
||||
sfr PWMDTY1 = 0XD6; //PWM高电平设置寄存器
|
||||
sfr PWMDTY2 = 0XD7; //PWM高电平设置寄存器
|
||||
|
||||
//
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*PGA*/
|
||||
sfr PGACFG = 0XBE; //PGA设置寄存器
|
||||
sfr PGACON = 0XBF; //PGA控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*SPI*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器
|
||||
sfr SSCON1 = 0X9E; //SPI状态寄存器
|
||||
sfr SSCON2 = 0X95; //SPI状态寄存器
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr MXAX = 0XEA;
|
||||
sfr TA = 0XEB;
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*temperature sensor*/
|
||||
sfr TSCFG = 0XAA;
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC93F7433封装未引出的管脚:无
|
||||
*SC93F7432封装未引出的管脚:P06/P07
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC93F7433封装未引出的管脚:P10
|
||||
*SC93F7432封装未引出的管脚:P10/P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC93F7433封装未引出的管脚:无
|
||||
*SC93F7432封装未引出的管脚:P22/P23
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC93F7433封装未引出的管脚:无
|
||||
*SC93F7432封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*
|
||||
*****************************************************************************/
|
||||
#define SC93F7433_NIO_Init() {P1CON|=0x01;} //SC93F7433的未引出来的IO口配置
|
||||
#define SC93F7432_NIO_Init() {P0CON|=0xC0,P1CON|=0xC1,P2CON|=0x0C,P5CON|=0x03;} //SC93F7432的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,247 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC93F833x_C.H
|
||||
|
||||
C Header file for SC93F833x microcontroller.
|
||||
Copyright (c) 2019 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V2.0
|
||||
日期: 2019.06.24
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC93F833x_H_
|
||||
#define _SC93F833x_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
sfr DPL1 = 0x84; //DPTR1数据指针1低位
|
||||
sfr DPH1 = 0x85; //DPTR1数据指针1高位
|
||||
sfr DPS = 0x86; //DPTR选择寄存器
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器0
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器1
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器0
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器1
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器0
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器1
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器1
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器1
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCFG1 = 0xAC; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM高电平设置寄存器
|
||||
sfr PWMDTY0 = 0xD5; //PWM高电平设置寄存器
|
||||
sfr PWMDTY1 = 0XD6; //PWM高电平设置寄存器
|
||||
sfr PWMDTY2 = 0XD7; //PWM高电平设置寄存器
|
||||
|
||||
//
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*PGA*/
|
||||
sfr PGACFG = 0XBE; //PGA设置寄存器
|
||||
sfr PGACON = 0XBF; //PGA控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*SPI*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器
|
||||
sfr SSCON1 = 0X9E; //SPI状态寄存器
|
||||
sfr SSCON2 = 0X95; //SPI状态寄存器
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr MXAX = 0XEA;
|
||||
sfr TA = 0XEB;
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*temperature sensor*/
|
||||
sfr TSCFG = 0XAA;
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC93F8333封装未引出的管脚:无
|
||||
*SC93F8332封装未引出的管脚:P06/P07
|
||||
*SC93F8331封装未引出的管脚:P02/P03/P05/P06/P07
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC93F8333封装未引出的管脚:P10
|
||||
*SC93F8332封装未引出的管脚:P10/P16/P17
|
||||
*SC93F8331封装未引出的管脚:P10/P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC93F8333封装未引出的管脚:无
|
||||
*SC93F8332封装未引出的管脚:P22/P23
|
||||
*SC93F8331封装未引出的管脚:P22/P23/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC93F8333封装未引出的管脚:无
|
||||
*SC93F8332封装未引出的管脚:P50/P51
|
||||
*SC93F8331封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*
|
||||
*****************************************************************************/
|
||||
#define SC93F8333_NIO_Init() {P1CON|=0x01;} //SC93F8333的未引出来的IO口配置
|
||||
#define SC93F8332_NIO_Init() {P0CON|=0xC0,P1CON|=0xC1,P2CON|=0x0C,P5CON|=0x03;} //SC93F8332的未引出来的IO口配置
|
||||
#define SC93F8331_NIO_Init() {P0CON|=0xEC,P1CON|=0xC1,P2CON|=0x8C,P5CON|=0x03;} //SC93F8331的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,247 @@
|
|||
/*--------------------------------------------------------------------------
|
||||
SC93F843x_C.H
|
||||
|
||||
C Header file for SC93F843x microcontroller.
|
||||
Copyright (c) 2019 Shenzhen SinOne Chip Electronic CO., Ltd.
|
||||
All rights reserved.
|
||||
深圳市赛元微电子有限公司
|
||||
版本号: V2.0
|
||||
日期: 2019.06.24
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef _SC93F843x_H_
|
||||
#define _SC93F843x_H_
|
||||
|
||||
/* ------------------- 字节寄存器-------------------- */
|
||||
///*CPU*/
|
||||
sfr ACC = 0xE0; //累加器A
|
||||
sfr B = 0xF0; //通用寄存器B
|
||||
sfr PSW = 0xD0; //程序状态字
|
||||
sfr DPH = 0x83; //数据指针高8位
|
||||
sfr DPL = 0x82; //数据指针低8位
|
||||
sfr SP = 0x81; //堆栈指针
|
||||
sfr DPL1 = 0x84; //DPTR1数据指针1低位
|
||||
sfr DPH1 = 0x85; //DPTR1数据指针1高位
|
||||
sfr DPS = 0x86; //DPTR选择寄存器
|
||||
|
||||
/*system*/
|
||||
sfr PCON = 0x87; //电源管理控制寄存器
|
||||
|
||||
/*interrupt*/
|
||||
sfr IP1 = 0XB9; //中断优先级控制寄存器1
|
||||
sfr IP = 0xB8; //中断优先权控制寄存器
|
||||
sfr IE = 0xA8; //中断控制寄存器
|
||||
sfr IE1 = 0XA9; //中断控制寄存器1
|
||||
|
||||
/*PORT*/
|
||||
sfr P5PH = 0xDA; //P5口模式控制寄存器0
|
||||
sfr P5CON = 0xD9; //P5口模式控制寄存器1
|
||||
sfr P5 = 0xD8; //P5口数据寄存器
|
||||
sfr P2PH = 0xA2; //P2口模式控制寄存器0
|
||||
sfr P2CON = 0xA1; //P2口模式控制寄存器1
|
||||
sfr P2 = 0xA0; //P2口数据寄存器
|
||||
sfr P1PH = 0x92; //P1口模式控制寄存器0
|
||||
sfr P1CON = 0x91; //P1口模式控制寄存器1
|
||||
sfr P1 = 0x90; //P1口数据寄存器
|
||||
sfr P0PH = 0x9B; //P0口模式控制寄存器1
|
||||
sfr P0CON = 0x9A; //P0口模式控制寄存器1
|
||||
sfr P0 = 0x80; //P0口数据寄存器
|
||||
sfr IOHCON = 0x97; //IOH设置寄存器
|
||||
|
||||
/*TIMER*/
|
||||
sfr TMCON = 0x8E; //定时器频率控制寄存器
|
||||
sfr TH1 = 0x8D; //定时器1高8位
|
||||
sfr TH0 = 0x8C; //定时器0高8位
|
||||
sfr TL1 = 0x8B; //定时器1低8位
|
||||
sfr TL0 = 0x8A; //定时器0低8位
|
||||
sfr TMOD = 0x89; //定时器工作模式寄存器
|
||||
sfr TCON = 0x88; //定时器控制寄存器
|
||||
sfr T2CON = 0XC8; //定时器2控制寄存器
|
||||
sfr T2MOD = 0XC9; //定时器2工作模式寄存器
|
||||
sfr RCAP2L = 0XCA; //定时器2重载/捕捉低8位
|
||||
sfr RCAP2H = 0XCB; //定时器2重载/捕捉高8位
|
||||
sfr TL2 = 0XCC; //定时器2低8位
|
||||
sfr TH2 = 0XCD; //定时器2高8位
|
||||
|
||||
|
||||
/*ADC*/
|
||||
sfr ADCCFG0 = 0xAB; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCFG1 = 0xAC; //P1口ADC功能配置寄存器/参考电压
|
||||
sfr ADCCON = 0XAD; //ADC控制寄存器
|
||||
sfr ADCVL = 0xAE; //ADC 结果寄存器
|
||||
sfr ADCVH = 0xAF; //ADC 结果寄存器
|
||||
|
||||
/*PWM*/
|
||||
sfr PWMCFG = 0xD1; //PWM设置寄存器
|
||||
sfr PWMCON = 0xD2; //PWM控制寄存器
|
||||
sfr PWMPRD = 0xD3; //PWM周期设置寄存器
|
||||
sfr PWMDTYA = 0xD4; //PWM高电平设置寄存器
|
||||
sfr PWMDTY0 = 0xD5; //PWM高电平设置寄存器
|
||||
sfr PWMDTY1 = 0XD6; //PWM高电平设置寄存器
|
||||
sfr PWMDTY2 = 0XD7; //PWM高电平设置寄存器
|
||||
|
||||
//
|
||||
///*WatchDog*/
|
||||
sfr BTMCON = 0XCE; //低频定时器控制寄存器
|
||||
sfr WDTCON = 0xCF; //WDT控制寄存器
|
||||
|
||||
|
||||
/*LCD*/
|
||||
sfr OTCON = 0X8F; //LCD电压输出控制寄存器
|
||||
sfr P0VO = 0X9C; //P0 LCD Bais 输出寄存器
|
||||
|
||||
/*INT*/
|
||||
sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器
|
||||
sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器
|
||||
sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器
|
||||
sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器
|
||||
sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器
|
||||
sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器
|
||||
|
||||
/*PGA*/
|
||||
sfr PGACFG = 0XBE; //PGA设置寄存器
|
||||
sfr PGACON = 0XBF; //PGA控制寄存器
|
||||
|
||||
/*IAP */
|
||||
sfr IAPCTL = 0xF6; //IAP控制寄存器
|
||||
sfr IAPDAT = 0xF5; //IAP数据寄存器
|
||||
sfr IAPADE = 0xF4; //IAP扩展地址寄存器
|
||||
sfr IAPADH = 0xF3; //IAP写入地址高位寄存器
|
||||
sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器
|
||||
sfr IAPKEY = 0xF1; //IAP保护寄存器
|
||||
|
||||
/*UART*/
|
||||
sfr SCON = 0X98; //串口控制寄存器
|
||||
sfr SBUF = 0X99; //串口数据缓存寄存器
|
||||
|
||||
/*SPI*/
|
||||
sfr SSCON0 = 0X9D; //SPI控制寄存器
|
||||
sfr SSCON1 = 0X9E; //SPI状态寄存器
|
||||
sfr SSCON2 = 0X95; //SPI状态寄存器
|
||||
sfr SSDAT = 0X9F; //SPI数据寄存器
|
||||
|
||||
sfr MXAX = 0XEA;
|
||||
sfr TA = 0XEB;
|
||||
sfr OPINX = 0XFE;
|
||||
sfr OPREG = 0XFF;
|
||||
sfr EXADH = 0XF7;
|
||||
|
||||
/*temperature sensor*/
|
||||
sfr TSCFG = 0XAA;
|
||||
|
||||
///* ------------------- 位寄存器-------------------- */
|
||||
|
||||
/*PSW*/
|
||||
sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进位,或者减法运算最高位有借位时
|
||||
sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有借位时
|
||||
sbit F0 = PSW^5; //用户标志位
|
||||
sbit RS1 = PSW^4; //工作寄存器组选择位
|
||||
sbit RS0 = PSW^3; //工作寄存器组选择位
|
||||
sbit OV = PSW^2; //溢出标志位
|
||||
sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数
|
||||
|
||||
/*T2CON*/
|
||||
sbit TF2 = T2CON^7;
|
||||
sbit EXF2 = T2CON^6;
|
||||
sbit RCLK = T2CON^5;
|
||||
sbit TCLK = T2CON^4;
|
||||
sbit EXEN2 = T2CON^3;
|
||||
sbit TR2 = T2CON^2;
|
||||
sbit T2 = T2CON^1;
|
||||
sbit CP = T2CON^0;
|
||||
|
||||
|
||||
/*IP*/
|
||||
sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高”
|
||||
sbit IPT2 = IP^5; //Timer2中断优先控制位 0:设定 Timer2的中断优先权是 “低” 1:设定Timer2的中断优先权是 “高”
|
||||
sbit IPUART = IP^4; //UART中断优先控制位 0:设定UART的中断优先权是 “低” 1:设定UART的中断优先权是 “高”
|
||||
sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先权是 “高”
|
||||
sbit IPINT1 = IP^2; //INT1中断优先控制位 0:设定INT1中断优先权是 “低” 1:设定INT1的中断优先权是 “高”
|
||||
sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先权是 “高”
|
||||
sbit IPINT0 = IP^0; //INT0中断优先控制位 0:设定INT0中断优先权是 “低” 1:设定INT0的中断优先权是 “高”
|
||||
|
||||
/*IE*/
|
||||
sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断
|
||||
sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断
|
||||
sbit ET2 = IE^5; //Timer2中断使能控制 0:关闭Timer2中断 1:打开Timer2中断
|
||||
sbit EUART = IE^4; //UART中断使能控制 0:关闭UART中断 1:打开UART中断
|
||||
sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断
|
||||
sbit EINT1 = IE^2; //INT1中断使能控制 0:关闭INT1中断 1:打开INT1中断
|
||||
sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断
|
||||
sbit EINT0 = IE^0; //INT0中断使能控制 0:关闭INT0中断 1:打开INT0中断
|
||||
|
||||
/*TCON*/
|
||||
sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数
|
||||
sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU响应时,硬件清“0”。
|
||||
sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数
|
||||
|
||||
/*SCON*/
|
||||
sbit SM0 = SCON^7;
|
||||
sbit SM1 = SCON^6;
|
||||
sbit SM2 = SCON^5;
|
||||
sbit REN = SCON^4;
|
||||
sbit TB8 = SCON^3;
|
||||
sbit RB8 = SCON^2;
|
||||
sbit TI = SCON^1;
|
||||
sbit RI = SCON^0;
|
||||
|
||||
/******************* P0 ******************
|
||||
*SC93F8433封装未引出的管脚:无
|
||||
*SC93F8432封装未引出的管脚:P06/P07
|
||||
*SC93F8431封装未引出的管脚:P02/P03/P05/P06/P07
|
||||
******************************************/
|
||||
sbit P07 = P0^7;
|
||||
sbit P06 = P0^6;
|
||||
sbit P05 = P0^5;
|
||||
sbit P04 = P0^4;
|
||||
sbit P03 = P0^3;
|
||||
sbit P02 = P0^2;
|
||||
sbit P01 = P0^1;
|
||||
sbit P00 = P0^0;
|
||||
|
||||
/******************* P1 ******************
|
||||
*SC93F8433封装未引出的管脚:P10
|
||||
*SC93F8432封装未引出的管脚:P10/P16/P17
|
||||
*SC93F8431封装未引出的管脚:P10/P16/P17
|
||||
******************************************/
|
||||
sbit P17 = P1^7;
|
||||
sbit P16 = P1^6;
|
||||
sbit P15 = P1^5;
|
||||
sbit P14 = P1^4;
|
||||
sbit P13 = P1^3;
|
||||
sbit P12 = P1^2;
|
||||
sbit P11 = P1^1;
|
||||
|
||||
/******************* P2 ******************
|
||||
*SC93F8433封装未引出的管脚:无
|
||||
*SC93F8432封装未引出的管脚:P22/P23
|
||||
*SC93F8431封装未引出的管脚:P22/P23/P27
|
||||
******************************************/
|
||||
sbit P27 = P2^7;
|
||||
sbit P26 = P2^6;
|
||||
sbit P25 = P2^5;
|
||||
sbit P24 = P2^4;
|
||||
sbit P23 = P2^3;
|
||||
sbit P22 = P2^2;
|
||||
sbit P21 = P2^1;
|
||||
sbit P20 = P2^0;
|
||||
|
||||
/******************* P5 ******************
|
||||
*SC93F8433封装未引出的管脚:无
|
||||
*SC93F8432封装未引出的管脚:P50/P51
|
||||
*SC93F8431封装未引出的管脚:P50/P51
|
||||
******************************************/
|
||||
sbit P52 = P5^2;
|
||||
sbit P51 = P5^1;
|
||||
sbit P50 = P5^0;
|
||||
|
||||
/****************************************************************************
|
||||
*注意:封装未引出的管脚,需设置为强推挽输出模式
|
||||
*IC选型:请根据所使用的IC型号,在初始化完IO口后,调用相对应的未引出管脚的IO口配置;
|
||||
*
|
||||
*****************************************************************************/
|
||||
#define SC93F8433_NIO_Init() {P1CON|=0x01;} //SC93F8433的未引出来的IO口配置
|
||||
#define SC93F8432_NIO_Init() {P0CON|=0xC0;P1CON|=0xC1;P2CON|=0x0C;P5CON|=0x03;} //SC93F8432的未引出来的IO口配置
|
||||
#define SC93F8431_NIO_Init() {P0CON|=0xEC;P1CON|=0xC1;P2CON|=0x8C;P5CON|=0x03;} //SC93F8431的未引出来的IO口配置
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,201 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f.h
|
||||
// 作者 :
|
||||
// 模块功能 : 赛元SC92系列系统头文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022年7月6日
|
||||
// 版本 : V1.10030
|
||||
// 说明 :本文件仅适用于赛元92F系列单片机
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_H
|
||||
#define _sc92f_H
|
||||
|
||||
#ifdef SC92F854x
|
||||
#include "SC92F854x_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F754x
|
||||
#include "SC92F754x_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F844xB
|
||||
#include "SC92F844xB_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F744xB
|
||||
#include "SC92F744xB_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F846xB
|
||||
#include "SC92F846xB_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F746xB
|
||||
#include "SC92F746xB_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F836xB
|
||||
#include "SC92F836xB_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F736xB
|
||||
#include "SC92F736xB_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F742x
|
||||
#include "SC92F742x_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F7003
|
||||
#include "SC92F7003_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F8003
|
||||
#include "SC92F8003_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F740x
|
||||
#include "SC92F740x_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F74Ax
|
||||
#include "SC92F74Ax_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F84Ax
|
||||
#include "SC92F84Ax_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F73Ax
|
||||
#include "SC92F73Ax_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F83Ax
|
||||
#include "SC92F83Ax_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F74Ax_2
|
||||
#include "SC92F74Ax_2_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F84Ax_2
|
||||
#include "SC92F84Ax_2_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F730x
|
||||
#include "SC92F730x_C.h"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F827X
|
||||
#include "SC92F827X_C.h"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F837X
|
||||
#include "SC92F837X_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F7490
|
||||
#include "SC92F7490_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F725X
|
||||
#include "SC92F725X_C.h"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F735X
|
||||
#include "SC92F735X_C.h"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F732X
|
||||
#include "SC92F732X_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92FWxx
|
||||
#include "SC92FWxx_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC93F833x
|
||||
#include "SC93F833x_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC93F843x
|
||||
#include "SC93F843x_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC93F743x
|
||||
#include "SC93F743x_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F848x
|
||||
#include "SC92F848x_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F748x
|
||||
#include "SC92F748x_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F859x
|
||||
#include "SC92F859x_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92F759x
|
||||
#include "SC92F759x_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92L853x
|
||||
#include "SC92L853x_C.H"
|
||||
#endif
|
||||
|
||||
#ifdef SC92L753x
|
||||
#include "SC92L753x_C.H"
|
||||
#endif
|
||||
|
||||
#define enableInterrupts() EA=1 /** 开启总中断 **/
|
||||
#define disableInterrupts() EA=0 /** 关闭总中断 **/
|
||||
|
||||
#define __I volatile const /*!< defines 'read only' permissions */
|
||||
#define __O volatile /*!< defines 'write only' permissions */
|
||||
#define __IO volatile /*!< defines 'read / write' permissions */
|
||||
|
||||
/*!< Signed integer types */
|
||||
typedef signed char int8_t;
|
||||
typedef signed short int16_t;
|
||||
typedef signed long int32_t;
|
||||
|
||||
/*!< Unsigned integer types */
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef unsigned long uint32_t;
|
||||
|
||||
typedef int32_t s32;
|
||||
typedef int16_t s16;
|
||||
typedef int8_t s8;
|
||||
|
||||
typedef uint32_t u32;
|
||||
typedef uint16_t u16;
|
||||
typedef uint8_t u8;
|
||||
|
||||
typedef enum {FALSE = 0, TRUE = !FALSE} bool;
|
||||
|
||||
typedef enum {RESET = 0, SET = !RESET} FlagStatus,
|
||||
ITStatus, BitStatus;
|
||||
|
||||
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
|
||||
|
||||
typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
|
||||
|
||||
typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus;
|
||||
|
||||
#define SET_BIT(SFR,BIT) ((SFR) |= (BIT))
|
||||
|
||||
#define CLEAR_BIT(SFR,BIT) ((SFR) &= ~(BIT))
|
||||
|
||||
#define READ_BIT(SFR, BIT) ((SFR) & (BIT))
|
||||
|
||||
#define CLEAR_REG(SFR) ((SFR) = (0x0))
|
||||
|
||||
#define WRITE_REG(SFR, VAL) ((SFR) = (VAL))
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_acmp.h
|
||||
// 作者 :
|
||||
// 模块功能 : ACMP固件库函数头文件
|
||||
// 最后更正日期: 2020/8/20
|
||||
// 版本 : V1.0001
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_ACMP_H_
|
||||
#define _sc92f_ACMP_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx) || defined(SC92F859x) || defined(SC92F759x)
|
||||
typedef enum
|
||||
{
|
||||
ACMP_VREF_EXTERNAL = (uint8_t)0X00, //选用CMPR为ACMP的比较电压
|
||||
ACMP_VREF_1D16VDD = (uint8_t)0X01, //选用1/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_2D16VDD = (uint8_t)0X02, //选用2/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_3D16VDD = (uint8_t)0X03, //选用3/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_4D16VDD = (uint8_t)0X04, //选用4/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_5D16VDD = (uint8_t)0X05, //选用5/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_6D16VDD = (uint8_t)0X06, //选用6/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_7D16VDD = (uint8_t)0X07, //选用7/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_8D16VDD = (uint8_t)0X08, //选用8/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_9D16VDD = (uint8_t)0X09, //选用9/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_10D16VDD = (uint8_t)0X0A, //选用10/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_11D16VDD = (uint8_t)0X0B, //选用11/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_12D16VDD = (uint8_t)0X0C, //选用12/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_13D16VDD = (uint8_t)0X0D, //选用13/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_14D16VDD = (uint8_t)0X0E, //选用14/16VDD为ACMP的比较电压
|
||||
ACMP_VREF_15D16VDD = (uint8_t)0X0F //选用15/16VDD为ACMP的比较电压
|
||||
} ACMP_Vref_Typedef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ACMP_CHANNEL_0 = (uint8_t)0x00, //选择CMP0做ACMP输入口
|
||||
ACMP_CHANNEL_1 = (uint8_t)0x01, //选择CMP1做ACMP输入口
|
||||
ACMP_CHANNEL_2 = (uint8_t)0x02, //选择CMP2做ACMP输入口
|
||||
ACMP_CHANNEL_3 = (uint8_t)0x03, //选择CMP3做ACMP输入口
|
||||
#if defined(SC92F859x) || defined (SC92F759x)
|
||||
ACMP_CHANNEL_P = (uint8_t)0x10, //选择CMPP做ACMP输入口,CMPP为基准电压1.5V
|
||||
#endif
|
||||
} ACMP_Channel_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ACMP_TRIGGER_NO = (uint8_t)0x00, //不产生中断
|
||||
ACMP_TRIGGER_RISE_ONLY = (uint8_t)0x04, //模拟比较器触发方式为上升沿
|
||||
ACMP_TRIGGER_FALL_ONLY = (uint8_t)0x08, //模拟比较器触发方式为下降沿
|
||||
ACMP_TRIGGER_RISE_FALL = (uint8_t)0x0C //模拟比较器触发方式为上升沿与下降沿
|
||||
} ACMP_TriggerMode_Typedef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ACMP_FLAG_CMPIF = (uint8_t)0x40, //ACMP中断标志位
|
||||
ACMP_FLAG_CMPSTA = (uint8_t)0x20 //ACMP输出状态
|
||||
} ACMP_Flag_TypeDef;
|
||||
|
||||
void ACMP_DeInit(void);
|
||||
void ACMP_Init(ACMP_Vref_Typedef ACMP_Vref,
|
||||
ACMP_Channel_TypeDef ACMP_Channel);
|
||||
void ACMP_SetTriggerMode(ACMP_TriggerMode_Typedef
|
||||
ACMP_TriggerMode);
|
||||
void ACMP_Cmd(FunctionalState NewState);
|
||||
void ACMP_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority);
|
||||
FlagStatus ACMP_GetFlagStatus(ACMP_Flag_TypeDef
|
||||
ACMP_Flag);
|
||||
void ACMP_ClearFlag(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,326 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92f_adc.h
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: ADC固件库函数头文件
|
||||
// 最后更正日期: 2022年3月23日
|
||||
// 版本: V1.100014
|
||||
// 说明: 本文件仅适用于赛元92F/93F/92L系列单片机
|
||||
//*************************************************************
|
||||
#ifndef _sc92f_ADC_H_
|
||||
#define _sc92f_ADC_H_
|
||||
|
||||
/* 头文件引用 */
|
||||
#include "sc92f.h"
|
||||
/* 说明:ADC参考电源枚举定义在sc92f_option.h,使用ADC请注意将该文件导入 */
|
||||
#include "sc92f_option.h"
|
||||
|
||||
#if !defined(SC92F827X) && !defined(SC92F837X)
|
||||
/* ADC采样时钟分频转换 */
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2) || defined(SC92FWxx)
|
||||
typedef enum
|
||||
{
|
||||
ADC_PRESSEL_FOSC_D6 = (uint8_t)0x02, //预分频 fADC = fHRC/6
|
||||
ADC_PRESSEL_FOSC_D12 = (uint8_t)0x01 //预分频 fADC = fHRC/12
|
||||
} ADC_PresSel_TypeDef;
|
||||
#elif defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined (SC92F83Ax) || defined (SC92F73Ax)\
|
||||
|| defined (SC92F84Ax) || defined (SC92F74Ax) || defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_PRESSEL_FHRC_D32 = (uint8_t)0x00, //预分频 fADC = fHRC/32
|
||||
ADC_PRESSEL_FHRC_D24 = (uint8_t)0x01, //预分频 fADC = fHRC/24
|
||||
ADC_PRESSEL_FHRC_D16 = (uint8_t)0x02, //预分频 fADC = fHRC/16
|
||||
ADC_PRESSEL_FHRC_D12 = (uint8_t)0x03, //预分频 fADC = fHRC/12
|
||||
ADC_PRESSEL_FHRC_D8 = (uint8_t)0x04, //预分频 fADC = fHRC/8
|
||||
ADC_PRESSEL_FHRC_D6 = (uint8_t)0x05, //预分频 fADC = fHRC/6
|
||||
ADC_PRESSEL_FHRC_D4 = (uint8_t)0x06, //预分频 fADC = fHRC/4
|
||||
ADC_PRESSEL_FHRC_D3 = (uint8_t)0x07 //预分频 fADC = fHRC/3
|
||||
} ADC_PresSel_TypeDef;
|
||||
#elif defined (SC92F742x) || defined (SC92F730x) || defined (SC92F725X) || defined (SC92F735X) || defined (SC92F732X) || defined (SC92F7490)\
|
||||
|| defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_PRESSEL_2_MHz = (uint8_t)0x00, //预分频 fADC = 2MHz
|
||||
ADC_PRESSEL_333_kHz = (uint8_t)0x20 //预分频 fADC = 333kHz
|
||||
} ADC_PresSel_TypeDef;
|
||||
#elif defined(SC92F848x) || defined(SC92F748x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_PRESSEL_FSYS_D16 = (uint8_t)0x00, //预分频 fADC = fSYS/16
|
||||
ADC_PRESSEL_FSYS_D12 = (uint8_t)0x01, //预分频 fADC = fSYS/12
|
||||
ADC_PRESSEL_FSYS_D8 = (uint8_t)0x02, //预分频 fADC = fSYS/8
|
||||
ADC_PRESSEL_FSYS_D6 = (uint8_t)0x03, //预分频 fADC = fSYS/6
|
||||
ADC_PRESSEL_FSYS_D4 = (uint8_t)0x04, //预分频 fADC = fSYS/4
|
||||
ADC_PRESSEL_FSYS_D3 = (uint8_t)0x05, //预分频 fADC = fSYS/3
|
||||
ADC_PRESSEL_FSYS_D2 = (uint8_t)0x06, //预分频 fADC = fSYS/2
|
||||
ADC_PRESSEL_FSYS_D1 = (uint8_t)0x07 //预分频 fADC = fSYS/1
|
||||
} ADC_PresSel_TypeDef;
|
||||
#elif defined(SC92F859x) || defined(SC92F759x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_PRESSEL_FSYS_D16 = (uint8_t)0x00, //预分频 fADC = fSYS/16
|
||||
ADC_PRESSEL_FSYS_D12 = (uint8_t)0x01, //预分频 fADC = fSYS/12
|
||||
ADC_PRESSEL_FSYS_D6 = (uint8_t)0x02, //预分频 fADC = fSYS/6
|
||||
ADC_PRESSEL_FSYS_D4 = (uint8_t)0x03, //预分频 fADC = fSYS/4
|
||||
} ADC_PresSel_TypeDef;
|
||||
#elif defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_PRESSEL_3CLOCK = (uint8_t)0x10, //采样时间为3个系统时钟
|
||||
ADC_PRESSEL_6CLOCK = (uint8_t)0x14, //采样时间为6个系统时钟
|
||||
ADC_PRESSEL_16CLOCK = (uint8_t)0x18, //采样时间为16个系统时钟
|
||||
ADC_PRESSEL_32CLOCK = (uint8_t)0x1c //采样时间为32个系统时钟
|
||||
} ADC_PresSel_TypeDef;
|
||||
#endif
|
||||
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx) || defined(SC92F859x) || defined (SC92F759x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_Cycle_6Cycle = (uint8_t)0x00, //ADC采样时间为6个ADC采样时钟周期
|
||||
ADC_Cycle_36Cycle = (uint8_t)0x04 //ADC采样时间为36个ADC采样时钟周期
|
||||
} ADC_Cycle_TypeDef;
|
||||
#elif defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB) || defined (SC92F83Ax) || defined (SC92F73Ax)\
|
||||
|| defined (SC92F84Ax) || defined (SC92F74Ax) || defined (SC92F7003) || defined(SC92F8003) || defined (SC92F740x) || defined (SC92F848x) || defined (SC92F748x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_Cycle_6Cycle = (uint8_t)0x00, //ADC采样时间为6个ADC采样时钟周期
|
||||
ADC_Cycle_36Cycle = (uint8_t)0x08 //ADC采样时间为36个ADC采样时钟周期
|
||||
} ADC_Cycle_TypeDef;
|
||||
#elif defined (SC92F742x) || defined (SC92F730x) || defined (SC92F725X) || defined (SC92F735X) || defined (SC92F732X)\
|
||||
|| defined (SC92F7490) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_Cycle_Null = (uint8_t)0x00,
|
||||
} ADC_Cycle_TypeDef;
|
||||
#endif
|
||||
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx) || defined(SC92F859x) || defined(SC92F759x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_CHANNEL_0 = (uint8_t)0x00, //选择AIN0做AD输入口
|
||||
ADC_CHANNEL_1 = (uint8_t)0x01, //选择AIN1做AD输入口
|
||||
ADC_CHANNEL_2 = (uint8_t)0x02, //选择AIN2做AD输入口
|
||||
ADC_CHANNEL_3 = (uint8_t)0x03, //选择AIN3做AD输入口
|
||||
ADC_CHANNEL_4 = (uint8_t)0x04, //选择AIN4做AD输入口
|
||||
ADC_CHANNEL_5 = (uint8_t)0x05, //选择AIN5做AD输入口
|
||||
ADC_CHANNEL_6 = (uint8_t)0x06, //选择AIN6做AD输入口
|
||||
ADC_CHANNEL_7 = (uint8_t)0x07, //选择AIN7做AD输入口
|
||||
ADC_CHANNEL_8 = (uint8_t)0x08, //选择AIN8做AD输入口
|
||||
ADC_CHANNEL_9 = (uint8_t)0x09, //选择AIN9做AD输入口
|
||||
ADC_CHANNEL_10 = (uint8_t)0x0A, //选择AIN10做AD输入口
|
||||
ADC_CHANNEL_11 = (uint8_t)0x0B, //选择AIN11做AD输入口
|
||||
ADC_CHANNEL_12 = (uint8_t)0x0C, //选择AIN12做AD输入口
|
||||
ADC_CHANNEL_13 = (uint8_t)0x0D, //选择AIN13做AD输入口
|
||||
ADC_CHANNEL_14 = (uint8_t)0x0E, //选择AIN14做AD输入口
|
||||
ADC_CHANNEL_15 = (uint8_t)0x0F, //选择AIN15做AD输入口
|
||||
ADC_CHANNEL_VDD_D4 = (uint8_t)0x1f //选择内部1/4VDD做AD输入口
|
||||
} ADC_Channel_TypeDef;
|
||||
#elif defined(SC92F7003) || defined(SC92F8003) || defined(SC92F740x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_CHANNEL_0 = (uint8_t)0x00, //选择AIN0做AD输入口
|
||||
ADC_CHANNEL_1 = (uint8_t)0x01, //选择AIN1做AD输入口
|
||||
ADC_CHANNEL_2 = (uint8_t)0x02, //选择AIN2做AD输入口
|
||||
ADC_CHANNEL_3 = (uint8_t)0x03, //选择AIN3做AD输入口
|
||||
ADC_CHANNEL_4 = (uint8_t)0x04, //选择AIN4做AD输入口
|
||||
ADC_CHANNEL_5 = (uint8_t)0x05, //选择AIN5做AD输入口
|
||||
ADC_CHANNEL_6 = (uint8_t)0x06, //选择AIN6做AD输入口
|
||||
ADC_CHANNEL_VDD_D4 = (uint8_t)0x1f //选择内部1/4VDD做AD输入口
|
||||
} ADC_Channel_TypeDef;
|
||||
#elif defined(SC92F846xB) || defined(SC92F746xB) || defined(SC92F836xB) || defined(SC92F736xB) || defined(SC92F83Ax)\
|
||||
|| defined(SC92F73Ax) || defined(SC92F84Ax) || defined(SC92F74Ax) || defined(SC92F742x) || defined(SC92F725X)\
|
||||
|| defined(SC92F735X) || defined(SC92F732X) || defined(SC92F848x) || defined(SC92F748x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_CHANNEL_0 = (uint8_t)0x00, //选择AIN0做AD输入口
|
||||
ADC_CHANNEL_1 = (uint8_t)0x01, //选择AIN1做AD输入口
|
||||
ADC_CHANNEL_2 = (uint8_t)0x02, //选择AIN2做AD输入口
|
||||
ADC_CHANNEL_3 = (uint8_t)0x03, //选择AIN3做AD输入口
|
||||
ADC_CHANNEL_4 = (uint8_t)0x04, //选择AIN4做AD输入口
|
||||
ADC_CHANNEL_5 = (uint8_t)0x05, //选择AIN5做AD输入口
|
||||
ADC_CHANNEL_6 = (uint8_t)0x06, //选择AIN6做AD输入口
|
||||
ADC_CHANNEL_7 = (uint8_t)0x07, //选择AIN7做AD输入口
|
||||
ADC_CHANNEL_8 = (uint8_t)0x08, //选择AIN8做AD输入口
|
||||
ADC_CHANNEL_9 = (uint8_t)0x09, //选择AIN9做AD输入口
|
||||
ADC_CHANNEL_VDD_D4 = (uint8_t)0x1f //选择内部1/4VDD做AD输入口
|
||||
} ADC_Channel_TypeDef;
|
||||
#elif defined(SC92F730x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_CHANNEL_0 = (uint8_t)0x00, //选择AIN0做AD输入口
|
||||
ADC_CHANNEL_1 = (uint8_t)0x01, //选择AIN1做AD输入口
|
||||
ADC_CHANNEL_6 = (uint8_t)0x06, //选择AIN6做AD输入口
|
||||
ADC_CHANNEL_7 = (uint8_t)0x07, //选择AIN7做AD输入口
|
||||
ADC_CHANNEL_VDD_D4 = (uint8_t)0x1f //选择内部1/4VDD做AD输入口
|
||||
} ADC_Channel_TypeDef;
|
||||
#elif defined(SC92F7490)
|
||||
typedef enum
|
||||
{
|
||||
ADC_CHANNEL_0 = (uint8_t)0x00, //选择AIN0做AD输入口
|
||||
ADC_CHANNEL_1 = (uint8_t)0x01, //选择AIN1做AD输入口
|
||||
ADC_CHANNEL_VDD_D4 = (uint8_t)0x1f //选择内部1/4VDD做AD输入口
|
||||
} ADC_Channel_TypeDef;
|
||||
#elif defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_CHANNEL_0 = (uint8_t)0x00, //选择AIN0做AD输入口
|
||||
ADC_CHANNEL_1 = (uint8_t)0x01, //选择AIN1做AD输入口
|
||||
ADC_CHANNEL_2 = (uint8_t)0x02, //选择AIN2做AD输入口
|
||||
ADC_CHANNEL_3 = (uint8_t)0x03, //选择AIN3做AD输入口
|
||||
ADC_CHANNEL_4 = (uint8_t)0x04, //选择AIN4做AD输入口
|
||||
ADC_CHANNEL_5 = (uint8_t)0x05, //选择AIN5做AD输入口
|
||||
ADC_CHANNEL_6 = (uint8_t)0x06, //选择AIN6做AD输入口
|
||||
ADC_CHANNEL_7 = (uint8_t)0x07, //选择AIN7做AD输入口
|
||||
ADC_CHANNEL_8 = (uint8_t)0x08, //选择AIN8做AD输入口
|
||||
ADC_CHANNEL_9 = (uint8_t)0x09, //选择AIN9做AD输入口
|
||||
ADC_CHANNEL_9_PGA = (uint8_t)0x19, //选择AIN9做PGA输入口
|
||||
ADC_CHANNEL_Temp = (uint8_t)0x0e, //选择内部温度传感器做为AD输入口
|
||||
ADC_CHANNEL_VDD_D4 = (uint8_t)0x0f //选择内部1/4VDD做AD输入口
|
||||
} ADC_Channel_TypeDef;
|
||||
#endif
|
||||
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx) || defined(SC92F859x) || defined(SC92F759x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_EAIN_0 = (uint16_t)0x0001, //选择AIN0
|
||||
ADC_EAIN_1 = (uint16_t)0x0002, //选择AIN1
|
||||
ADC_EAIN_2 = (uint16_t)0x0004, //选择AIN2
|
||||
ADC_EAIN_3 = (uint16_t)0x0008, //选择AIN3
|
||||
ADC_EAIN_4 = (uint16_t)0x0010, //选择AIN4
|
||||
ADC_EAIN_5 = (uint16_t)0x0020, //选择AIN5
|
||||
ADC_EAIN_6 = (uint16_t)0x0040, //选择AIN6
|
||||
ADC_EAIN_7 = (uint16_t)0x0080, //选择AIN7
|
||||
ADC_EAIN_8 = (uint16_t)0x0100, //选择AIN8
|
||||
ADC_EAIN_9 = (uint16_t)0x0200, //选择AIN9
|
||||
ADC_EAIN_10 = (uint16_t)0x0400, //选择AIN10
|
||||
ADC_EAIN_11 = (uint16_t)0x0800, //选择AIN11
|
||||
ADC_EAIN_12 = (uint16_t)0x1000, //选择AIN12
|
||||
ADC_EAIN_13 = (uint16_t)0x2000, //选择AIN13
|
||||
ADC_EAIN_14 = (uint16_t)0x4000, //选择AIN14
|
||||
ADC_EAIN_15 = (uint16_t)0x8000 //选择AIN15
|
||||
} ADC_EAIN_TypeDef;
|
||||
#elif defined(SC92F7003) || defined(SC92F8003) || defined(SC92F740x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_EAIN_0 = (uint16_t)0x0001, //选择AIN0
|
||||
ADC_EAIN_1 = (uint16_t)0x0002, //选择AIN1
|
||||
ADC_EAIN_2 = (uint16_t)0x0004, //选择AIN2
|
||||
ADC_EAIN_3 = (uint16_t)0x0008, //选择AIN3
|
||||
ADC_EAIN_4 = (uint16_t)0x0010, //选择AIN4
|
||||
ADC_EAIN_5 = (uint16_t)0x0020, //选择AIN5
|
||||
ADC_EAIN_6 = (uint16_t)0x0040 //选择AIN6
|
||||
} ADC_EAIN_TypeDef;
|
||||
#elif defined(SC92F846xB) || defined(SC92F746xB) || defined(SC92F836xB) || defined(SC92F736xB) || defined(SC92F83Ax)\
|
||||
|| defined(SC92F73Ax) || defined(SC92F84Ax) || defined(SC92F74Ax) || defined(SC92F742x) || defined(SC92F725X)\
|
||||
|| defined(SC92F735X) || defined(SC92F732X) || defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)\
|
||||
|| defined(SC92F848x) || defined(SC92F748x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_EAIN_0 = (uint16_t)0x0001, //选择AIN0
|
||||
ADC_EAIN_1 = (uint16_t)0x0002, //选择AIN1
|
||||
ADC_EAIN_2 = (uint16_t)0x0004, //选择AIN2
|
||||
ADC_EAIN_3 = (uint16_t)0x0008, //选择AIN3
|
||||
ADC_EAIN_4 = (uint16_t)0x0010, //选择AIN4
|
||||
ADC_EAIN_5 = (uint16_t)0x0020, //选择AIN5
|
||||
ADC_EAIN_6 = (uint16_t)0x0040, //选择AIN6
|
||||
ADC_EAIN_7 = (uint16_t)0x0080, //选择AIN7
|
||||
ADC_EAIN_8 = (uint16_t)0x0100, //选择AIN8
|
||||
ADC_EAIN_9 = (uint16_t)0x0200, //选择AIN9
|
||||
} ADC_EAIN_TypeDef;
|
||||
#elif defined(SC92F730x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_EAIN_0 = (uint16_t)0x0001, //选择AIN0
|
||||
ADC_EAIN_1 = (uint16_t)0x0002, //选择AIN1
|
||||
ADC_EAIN_6 = (uint16_t)0x0040, //选择AIN6
|
||||
ADC_EAIN_7 = (uint16_t)0x0080, //选择AIN7
|
||||
} ADC_EAIN_TypeDef;
|
||||
#elif defined(SC92F7490)
|
||||
typedef enum
|
||||
{
|
||||
ADC_EAIN_0 = (uint16_t)0x0001, //选择AIN0
|
||||
ADC_EAIN_1 = (uint16_t)0x0002, //选择AIN1
|
||||
} ADC_EAIN_TypeDef;
|
||||
#endif
|
||||
|
||||
/* 内部温度采集和可调节增益放大器(PGA)枚举*/
|
||||
#if defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||||
/* PGA共模电压枚举 */
|
||||
typedef enum
|
||||
{
|
||||
ADC_PGACOM_0V = 0x00, //共模电压为0V
|
||||
ADC_PGACOM_1_2V = 0x40, //共模电压为1.2V
|
||||
} ADC_PGACOM_TypeDef;
|
||||
|
||||
/* PGA同相增益枚举 */
|
||||
typedef enum
|
||||
{
|
||||
ADC_PGAGAN_NonInvert20 = 0x00, //同相增益为20,反相增益为19
|
||||
ADC_PGAGAN_NonInvert100 = 0x20, //同相增益为100,反相增益为99
|
||||
} ADC_PGAGAN_TypeDef;
|
||||
|
||||
/* PGA相位枚举 */
|
||||
typedef enum
|
||||
{
|
||||
ADC_PGAIPT_NonInvert = 0x00, //同相输入
|
||||
ADC_PGAIPT_Invert = 0x10, //反相输入
|
||||
} ADC_PGAIPT_TypeDef;
|
||||
#endif
|
||||
|
||||
/*******************************宏函数*******************************/
|
||||
/*****************************************************
|
||||
*函数名称:void ADC_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:ADC中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define ADC_ITConfig(NewState,Priority) \
|
||||
do{ \
|
||||
EADC = (bit)NewState; \
|
||||
IPADC = (bit)Priority; \
|
||||
}while(0)
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void ADC_StartConversion(void)
|
||||
*函数功能:开始一次AD转换
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define ADC_StartConversion() SET_BIT(ADCCON,0X40)
|
||||
|
||||
/* 内部温度采集和可调节增益放大器函数声明 */
|
||||
#if defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||||
/* 内部温度采集相关函数声明 */
|
||||
void ADC_TSCmd(FunctionalState NewState);
|
||||
void ADC_CHOPConfig(PriorityStatus NewState);
|
||||
uint16_t ADC_Get_TS_StandardData(void);
|
||||
float ADC_GetTSValue(void);
|
||||
/* PGA相关函数声明 */
|
||||
void ADC_PGAConfig(ADC_PGACOM_TypeDef ADC_PGACOM, ADC_PGAGAN_TypeDef ADC_PGAGAN, ADC_PGAIPT_TypeDef ADC_PGAIPT);
|
||||
void ADC_PGACmd(PriorityStatus NewState);
|
||||
#endif
|
||||
|
||||
/* ADC通用函数声明 */
|
||||
void ADC_DeInit(void);
|
||||
void ADC_Init(ADC_PresSel_TypeDef ADC_PrescalerSelection, ADC_Cycle_TypeDef ADC_Cycle);
|
||||
void ADC_ChannelConfig(ADC_Channel_TypeDef ADC_Channel,
|
||||
FunctionalState NewState);
|
||||
void ADC_Cmd(FunctionalState NewState);
|
||||
unsigned int ADC_GetConversionValue(void);
|
||||
FlagStatus ADC_GetFlagStatus(void);
|
||||
void ADC_ClearFlag(void);
|
||||
void ADC_EAINConfig(uint16_t ADC_EAIN_Select,
|
||||
FunctionalState NewState);
|
||||
void ADC_VrefConfig(ADC_Vref_TypeDef ADC_Vref);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92f_btm.h
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: BTM固件库函数H文件
|
||||
// 最后更正日期: 2022年4月2日
|
||||
// 版本: V1.10002
|
||||
// 说明:
|
||||
//*************************************************************
|
||||
#ifndef _sc92f_BTM_H_
|
||||
#define _sc92f_BTM_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
#if defined(SC92F748x) || defined(SC92F848x) || defined(SC92F859x) || defined(SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
BTM_TIMEBASE_15_625MS = (uint8_t)0x00, //BTM每15.625MS产生一次中断
|
||||
BTM_TIMEBASE_31_25MS = (uint8_t)0x01, //BTM每31.25MS产生一次中断
|
||||
BTM_TIMEBASE_62_5MS = (uint8_t)0x02, //BTM每62.5MS产生一次中断
|
||||
BTM_TIMEBASE_125MS = (uint8_t)0x03, //BTM每125MS产生一次中断
|
||||
BTM_TIMEBASE_250MS = (uint8_t)0x04, //BTM每0.25S产生一次中断
|
||||
BTM_TIMEBASE_500MS = (uint8_t)0x05, //BTM每0.5S产生一次中断
|
||||
BTM_TIMEBASE_1S = (uint8_t)0x06, //BTM每1S产生一次中断
|
||||
BTM_TIMEBASE_2S = (uint8_t)0x07, //BTM每2S产生一次中断
|
||||
BTM_TIMEBASE_8S = (uint8_t)0x09, //BTM每8S产生一次中断
|
||||
BTM_TIMEBASE_16S = (uint8_t)0x0A, //BTM每16S产生一次中断
|
||||
BTM_TIMEBASE_32S = (uint8_t)0x0B, //BTM每32产生一次中断
|
||||
} BTM_Timebase_TypeDef;
|
||||
#elif defined (SC92F732X)
|
||||
typedef enum
|
||||
{
|
||||
BTM_TIMEBASE_15_625MS = (uint8_t)0x00, //BTM每15.625MS产生一次中断
|
||||
BTM_TIMEBASE_31_25MS = (uint8_t)0x01, //BTM每31.25MS产生一次中断
|
||||
BTM_TIMEBASE_62_5MS = (uint8_t)0x02, //BTM每62.5MS产生一次中断
|
||||
BTM_TIMEBASE_125MS = (uint8_t)0x03, //BTM每125MS产生一次中断
|
||||
BTM_TIMEBASE_250MS = (uint8_t)0x04, //BTM每0.25S产生一次中断
|
||||
BTM_TIMEBASE_500MS = (uint8_t)0x05, //BTM每0.5S产生一次中断
|
||||
BTM_TIMEBASE_1S = (uint8_t)0x06, //BTM每1S产生一次中断
|
||||
BTM_TIMEBASE_2S = (uint8_t)0x07, //BTM每2S产生一次中断
|
||||
} BTM_Timebase_TypeDef;
|
||||
#else
|
||||
typedef enum
|
||||
{
|
||||
BTM_TIMEBASE_15_625MS = (uint8_t)0x00, //BTM每15.625MS产生一次中断
|
||||
BTM_TIMEBASE_31_25MS = (uint8_t)0x01, //BTM每31.25MS产生一次中断
|
||||
BTM_TIMEBASE_62_5MS = (uint8_t)0x02, //BTM每62.5MS产生一次中断
|
||||
BTM_TIMEBASE_125MS = (uint8_t)0x03, //BTM每125MS产生一次中断
|
||||
BTM_TIMEBASE_250MS = (uint8_t)0x04, //BTM每0.25S产生一次中断
|
||||
BTM_TIMEBASE_500MS = (uint8_t)0x05, //BTM每0.5S产生一次中断
|
||||
BTM_TIMEBASE_1S = (uint8_t)0x06, //BTM每1S产生一次中断
|
||||
BTM_TIMEBASE_2S = (uint8_t)0x07, //BTM每2S产生一次中断
|
||||
BTM_TIMEBASE_4S = (uint8_t)0x08, //BTM每4S产生一次中断
|
||||
} BTM_Timebase_TypeDef;
|
||||
#endif
|
||||
|
||||
/*******************************宏函数*******************************/
|
||||
/**************************************************
|
||||
*函数名称:void BTM_DeInit(void)
|
||||
*函数功能:BTM相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
#define BTM_DeInit() CLEAR_REG(BTMCON)
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void BTM_GetFlagStatus(void)
|
||||
*函数功能:获取BTM中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
FlagStatus:BTM中断标志状态
|
||||
*****************************************************/
|
||||
#define BTM_GetFlagStatus() ((READ_BIT(BTMCON,0x40)) ? (SET):(RESET))
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void BTM_ClearFlag(void)
|
||||
*函数功能:清除BTM中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define BTM_ClearFlag() CLEAR_BIT(BTMCON,0x40)
|
||||
|
||||
void BTM_Init(BTM_Timebase_TypeDef BTM_Timebase);
|
||||
void BTM_Cmd(FunctionalState NewState);
|
||||
void BTM_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority);
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_chksum.h
|
||||
// 作者 :
|
||||
// 模块功能 : CHKSUM固件库函数头文件
|
||||
// 最后更正日期: 2021/8/20
|
||||
// 版本 : V1.10000
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_CHKSUM_H_
|
||||
#define _sc92f_CHKSUM_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
#if defined(SC92F7003) || defined(SC92F8003) || defined(SC92F736xB) || defined(SC92F836xB) || defined(SC92F740x) || defined(SC92F742x)\
|
||||
|| defined(SC92F73Ax) || defined(SC92F83Ax) || defined(SC92F744xB) || defined(SC92F844xB) || defined(SC92F746xB) || defined(SC92F846xB)\
|
||||
|| defined(SC92F748x) || defined(SC92F848x) || defined(SC92F74Ax) || defined(SC92F84Ax) || defined(SC92F74Ax_2) || defined(SC92F84Ax_2)\
|
||||
|| defined(SC92F754x) || defined (SC92F854x) || defined (SC92F759x) || defined(SC92F859x) || defined (SC92F7490) || defined(SC92FWxx)\
|
||||
|| defined(SC92F827X) || defined(SC92F847X)
|
||||
void CHKSUM_DeInit(void);
|
||||
void CHKSUM_StartOperation(void);
|
||||
uint16_t CHKSUM_GetCheckValue(void);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_conf.h
|
||||
// 作者 :
|
||||
// 模块功能 : sc92f配置头文件
|
||||
// 最后更正日期: 2022/01/24
|
||||
// 版本 : V1.10002
|
||||
// 说明 :本文件仅适用于赛元92F系列单片机
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_CONF_H_
|
||||
#define _sc92f_CONF_H_
|
||||
|
||||
#include "sc92f_gpio.h"
|
||||
#include "sc92f_timer0.h"
|
||||
#include "sc92f_timer1.h"
|
||||
#include "sc92f_timer2.h"
|
||||
#include "sc92f_timer3.h"
|
||||
#include "sc92f_timer4.h"
|
||||
#include "sc92f_adc.h"
|
||||
#include "sc92f_btm.h"
|
||||
#include "sc92f_pwm.h"
|
||||
#include "sc92f_int.h"
|
||||
#include "sc92f_uart0.h"
|
||||
#include "sc92f_ssi.h"
|
||||
#include "sc92f_chksum.h"
|
||||
#include "sc92f_iap.h"
|
||||
#include "sc92f_option.h"
|
||||
#include "sc92f_wdt.h"
|
||||
#include "sc92f_pwr.h"
|
||||
#include "sc92f_ddic.h"
|
||||
#include "sc92f_acmp.h"
|
||||
#include "sc92f_mdu.h"
|
||||
#include "sc92f_CRC.h"
|
||||
#include "sc92f_usci0.h"
|
||||
#include "sc92f_usci1.h"
|
||||
#include "sc92f_usci2.h"
|
||||
#include "sc92f_lpd.h"
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92F_CRC.h
|
||||
// 作者 :
|
||||
// 模块功能 : CRC固件库函数头文件
|
||||
// 最后更正日期: 2020/8/14
|
||||
// 版本 : V1.0
|
||||
// 说明 :该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_CRC_H_
|
||||
#define _sc92f_CRC_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
uint32_t CRC_All(void); //根据IAP Range选项,硬件CRC运算CODE内容,返回CRC结果
|
||||
uint32_t CRC_Frame(uint8_t *buff,
|
||||
uint8_t Length); //软件CRC,将buff指向的数组进行CRC运算,返回CRC结果
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_ddic.c
|
||||
// 作者 :
|
||||
// 模块功能 : DDIC固件库函数C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022/01/20
|
||||
// 版本 : V1.10002
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
#ifndef _sc92f_DDIC_H_
|
||||
#define _sc92f_DDIC_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92F859x) || defined(SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
DDIC_PIN_X0 = ((uint8_t)0x01), //Px0口打开显示驱动功能
|
||||
DDIC_PIN_X1 = ((uint8_t)0x02), //Px1口打开显示驱动功能
|
||||
DDIC_PIN_X2 = ((uint8_t)0x04), //Px2口打开显示驱动功能
|
||||
DDIC_PIN_X3 = ((uint8_t)0x08), //Px3口打开显示驱动功能
|
||||
DDIC_PIN_X4 = ((uint8_t)0x10), //Px4口打开显示驱动功能
|
||||
DDIC_PIN_X5 = ((uint8_t)0x20), //Px5口打开显示驱动功能
|
||||
DDIC_PIN_X6 = ((uint8_t)0x40), //Px6口打开显示驱动功能
|
||||
DDIC_PIN_X7 = ((uint8_t)0x80), //Px7口打开显示驱动功能
|
||||
} DDIC_Pin_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DDIC_DUTYCYCLE_D8 = (uint8_t)0x00, //1/8 占空比
|
||||
DDIC_DUTYCYCLE_D6 = (uint8_t)0x10, //1/6 占空比
|
||||
DDIC_DUTYCYCLE_D5 = (uint8_t)0x20, //1/5 占空比
|
||||
DDIC_DUTYCYCLE_D4 = (uint8_t)0x30 //1/4 占空比
|
||||
} DDIC_DutyCycle_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DDIC_ResSel_100K = (uint8_t)0X00, //设定内部分压电阻为100k
|
||||
DDIC_ResSel_200K = (uint8_t)0X04, //设定内部分压电阻为200k
|
||||
DDIC_ResSel_400K = (uint8_t)0X08, //设定内部分压电阻为400k
|
||||
DDIC_ResSel_800K = (uint8_t)0X0C //设定内部分压电阻为800k
|
||||
} DDIC_ResSel_Typedef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DDIC_BIAS_D3 = 0X01, //LCD偏置电压为1/3
|
||||
DDIC_BIAS_D4 = 0X00 //LCD偏置电压为1/4
|
||||
} DDIC_BiasVoltage_Typedef;
|
||||
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
SEG0_27COM4_7 = (uint8_t)0x01, // 1/4占空比时,S0-S27为segment,C4-C7为common
|
||||
SEG4_27COM0_3 = (uint8_t)0x00 // 1/4占空比时,S4-S27为segment,C0-C3为common
|
||||
} DDIC_OutputPin_TypeDef;
|
||||
|
||||
#else
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SEG0_27COM4_7 = (uint8_t)0x00, // 1/4占空比时,S0-S27为segment,C4-C7为common
|
||||
SEG4_27COM0_3 = (uint8_t)0x01 // 1/4占空比时,S4-S27为segment,C0-C3为common
|
||||
} DDIC_OutputPin_TypeDef;
|
||||
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DMOD_LCD = (uint8_t)0x00, // LCD模式
|
||||
DMOD_LED = (uint8_t)0x01 // LED模式
|
||||
} DDIC_DMOD_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DDIC_SEG0 = (uint8_t)0, //SEG0
|
||||
DDIC_SEG1 = (uint8_t)1, //SEG1
|
||||
DDIC_SEG2 = (uint8_t)2, //SEG2
|
||||
DDIC_SEG3 = (uint8_t)3, //SEG3
|
||||
DDIC_SEG4 = (uint8_t)4, //SEG4
|
||||
DDIC_SEG5 = (uint8_t)5, //SEG5
|
||||
DDIC_SEG6 = (uint8_t)6, //SEG6
|
||||
DDIC_SEG7 = (uint8_t)7, //SEG7
|
||||
DDIC_SEG8 = (uint8_t)8, //SEG8
|
||||
DDIC_SEG9 = (uint8_t)9, //SEG9
|
||||
DDIC_SEG10 = (uint8_t)10, //SEG10
|
||||
DDIC_SEG11 = (uint8_t)11, //SEG11
|
||||
DDIC_SEG12 = (uint8_t)12, //SEG12
|
||||
DDIC_SEG13 = (uint8_t)13, //SEG13
|
||||
DDIC_SEG14 = (uint8_t)14, //SEG14
|
||||
DDIC_SEG15 = (uint8_t)15, //SEG15
|
||||
DDIC_SEG16 = (uint8_t)16, //SEG16
|
||||
DDIC_SEG17 = (uint8_t)17, //SEG17
|
||||
DDIC_SEG18 = (uint8_t)18, //SEG18
|
||||
DDIC_SEG19 = (uint8_t)19, //SEG19
|
||||
DDIC_SEG20 = (uint8_t)20, //SEG20
|
||||
DDIC_SEG21 = (uint8_t)21, //SEG21
|
||||
DDIC_SEG22 = (uint8_t)22, //SEG22
|
||||
DDIC_SEG23 = (uint8_t)23, //SEG23
|
||||
DDIC_SEG24 = (uint8_t)24, //SEG24
|
||||
DDIC_SEG25 = (uint8_t)25, //SEG25
|
||||
DDIC_SEG26 = (uint8_t)26, //SEG26
|
||||
DDIC_SEG27 = (uint8_t)27, //SEG27
|
||||
} DDIC_Control_SEG_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DDIC_COM0 = (uint8_t)0x01, //COM0
|
||||
DDIC_COM1 = (uint8_t)0x02, //COM1
|
||||
DDIC_COM2 = (uint8_t)0x04, //COM2
|
||||
DDIC_COM3 = (uint8_t)0x08, //COM3
|
||||
DDIC_COM4 = (uint8_t)0x10, //COM4
|
||||
DDIC_COM5 = (uint8_t)0x20, //COM5
|
||||
DDIC_COM6 = (uint8_t)0x40, //COM6
|
||||
DDIC_COM7 = (uint8_t)0x80 //COM7
|
||||
} DDIC_Control_COM_TypeDef;
|
||||
typedef enum
|
||||
{
|
||||
DDIC_Control_ON = (uint8_t)0x01, //点亮
|
||||
DDIC_Control_OFF = (uint8_t)0x00 //熄灭
|
||||
} DDIC_Control_Status;
|
||||
|
||||
|
||||
extern uint8_t xdata LCDRAM[30];
|
||||
|
||||
void DDIC_DeInit(void);
|
||||
void DDIC_Init(DDIC_DutyCycle_TypeDef
|
||||
DDIC_DutyCylce, uint8_t P0OutputPin,
|
||||
uint8_t P1OutputPin, uint8_t P2OutputPin,
|
||||
uint8_t P3OutputPin);
|
||||
void DDIC_LEDConfig(void);
|
||||
void DDIC_LCDConfig(uint8_t LCDVoltage,
|
||||
DDIC_ResSel_Typedef DDIC_ResSel,
|
||||
DDIC_BiasVoltage_Typedef DDIC_BiasVoltage);
|
||||
void DDIC_Cmd(FunctionalState NewState);
|
||||
void DDIC_OutputPinOfDutycycleD4(
|
||||
DDIC_OutputPin_TypeDef DDIC_OutputPin);
|
||||
void DDIC_DMOD_Selcet(DDIC_DMOD_TypeDef
|
||||
DDIC_DMOD);
|
||||
void DDIC_Control(DDIC_Control_SEG_TypeDef DDIC_Seg,
|
||||
uint8_t DDIC_Com,
|
||||
DDIC_Control_Status DDIC_Contr);
|
||||
#endif
|
||||
|
||||
#if defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined (SC92F83Ax) || defined (SC92F73Ax)|| defined (SC92F84Ax)|| defined (SC92F74Ax)|| defined (SC92F742x) || defined (SC92F730x) || defined (SC92F725X) || defined (SC92F735X) || defined (SC92F732X) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x) || defined (SC92F848x) || defined (SC92F748x)
|
||||
#if defined (SC92F730x)
|
||||
typedef enum
|
||||
{
|
||||
DDIC_PIN_00 = ((uint8_t)0x01), //P0x0口输出LCD
|
||||
DDIC_PIN_01 = ((uint8_t)0x02), //P0x1口输出LCD
|
||||
DDIC_PIN_02 = ((uint8_t)0x04), //P0x2口输出LCD
|
||||
DDIC_PIN_03 = ((uint8_t)0x08), //P0x3口输出LCD
|
||||
} DDIC_Pin_TypeDef;
|
||||
#else
|
||||
typedef enum
|
||||
{
|
||||
DDIC_PIN_00 = ((uint8_t)0x01), //P0x0口输出LCD
|
||||
DDIC_PIN_01 = ((uint8_t)0x02), //P0x1口输出LCD
|
||||
DDIC_PIN_02 = ((uint8_t)0x04), //P0x2口输出LCD
|
||||
DDIC_PIN_03 = ((uint8_t)0x08), //P0x3口输出LCD
|
||||
DDIC_PIN_04 = ((uint8_t)0x10), //P0x4口输出LCD
|
||||
} DDIC_Pin_TypeDef;
|
||||
#endif
|
||||
|
||||
#if defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
|
||||
typedef enum
|
||||
{
|
||||
DDIC_ResSel_0K = (uint8_t)0X00, //关闭内部分压电阻
|
||||
DDIC_ResSel_25K = (uint8_t)0X04, //设定内部分压电阻为12.5k
|
||||
DDIC_ResSel_50K = (uint8_t)0X08, //设定内部分压电阻为37.5k
|
||||
DDIC_ResSel_100K = (uint8_t)0X0c //设定内部分压电阻为87.5k
|
||||
} DDIC_ResSel_Typedef;
|
||||
#else
|
||||
typedef enum
|
||||
{
|
||||
DDIC_ResSel_0K = (uint8_t)0X00, //关闭内部分压电阻
|
||||
DDIC_ResSel_12_5K = (uint8_t)0X04, //设定内部分压电阻为12.5k
|
||||
DDIC_ResSel_37_5K = (uint8_t)0X08, //设定内部分压电阻为37.5k
|
||||
DDIC_ResSel_87_5K = (uint8_t)0X0c //设定内部分压电阻为87.5k
|
||||
} DDIC_ResSel_Typedef;
|
||||
|
||||
#endif
|
||||
|
||||
void DDIC_DeInit();
|
||||
void DDIC_Init(uint8_t P0OutputPin);
|
||||
void DDIC_LCDConfig(DDIC_ResSel_Typedef
|
||||
DDIC_ResSel);
|
||||
void DDIC_Config_Init(uint8_t P0OutputPin,
|
||||
DDIC_ResSel_Typedef DDIC_ResSel);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2022 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_gpio.h
|
||||
// 作者 :
|
||||
// 模块功能 : GPIO固件库函数头文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2021/08/20
|
||||
// 版本 : V1.10001
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_GPIO_H_
|
||||
#define _sc92f_GPIO_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
#if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB) || defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx)|| defined(SC92F859x) || defined(SC92F759x)
|
||||
typedef enum
|
||||
{
|
||||
|
||||
GPIO0 = (uint8_t)0x00, //P0
|
||||
GPIO1 = (uint8_t)0x01, //P1
|
||||
GPIO2 = (uint8_t)0x02, //P2
|
||||
GPIO3 = (uint8_t)0x03, //P3
|
||||
GPIO4 = (uint8_t)0x04, //P4
|
||||
GPIO5 = (uint8_t)0x05 //P5
|
||||
}GPIO_TypeDef;
|
||||
#elif defined (SC92F730x ) || defined (SC92F725X) || defined (SC92F735X) || defined (SC92F8003) || defined (SC92F740x) || defined (SC92F827X) || defined (SC92F837X) || defined (SC92F7003)
|
||||
typedef enum
|
||||
{
|
||||
GPIO0 = (uint8_t)0x00, //P0
|
||||
GPIO1 = (uint8_t)0x01, //P1
|
||||
GPIO2 = (uint8_t)0x02, //P2
|
||||
}GPIO_TypeDef;
|
||||
#else
|
||||
typedef enum
|
||||
{
|
||||
GPIO0 = (uint8_t)0x00, //P0
|
||||
GPIO1 = (uint8_t)0x01, //P1
|
||||
GPIO2 = (uint8_t)0x02, //P2
|
||||
GPIO5 = (uint8_t)0x05 //P5
|
||||
}GPIO_TypeDef;
|
||||
#endif
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GPIO_MODE_IN_HI = (uint8_t)0x00, //高阻输入模式
|
||||
GPIO_MODE_IN_PU = (uint8_t)0x01, //带上拉的输入模式
|
||||
GPIO_MODE_OUT_PP = (uint8_t)0x02 //强推挽输出模式
|
||||
} GPIO_Mode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GPIO_PIN_0 = ((uint8_t)0x01), //IO管脚Px0
|
||||
GPIO_PIN_1 = ((uint8_t)0x02), //IO管脚Px1
|
||||
GPIO_PIN_2 = ((uint8_t)0x04), //IO管脚Px2
|
||||
GPIO_PIN_3 = ((uint8_t)0x08), //IO管脚Px3
|
||||
GPIO_PIN_4 = ((uint8_t)0x10), //IO管脚Px4
|
||||
GPIO_PIN_5 = ((uint8_t)0x20), //IO管脚Px5
|
||||
GPIO_PIN_6 = ((uint8_t)0x40), //IO管脚Px6
|
||||
GPIO_PIN_7 = ((uint8_t)0x80), //IO管脚Px7
|
||||
GPIO_PIN_LNIB = ((uint8_t)0x0F), //IO管脚Px0~3
|
||||
GPIO_PIN_HNIB = ((uint8_t)0xF0), //IO管脚Px4~7
|
||||
GPIO_PIN_ALL = ((uint8_t)0xFF) //IO管脚Px0~7
|
||||
} GPIO_Pin_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IOH_Grade_0 = ((uint8_t)0x00), //IOH等级0
|
||||
IOH_Grade_1 = ((uint8_t)0x01), //IOH等级1
|
||||
IOH_Grade_2 = ((uint8_t)0x02), //IOH等级2
|
||||
IOH_Grade_3 = ((uint8_t)0x03), //IOH等级3
|
||||
} GPIO_IOH_Grade_TypeDef;
|
||||
|
||||
void GPIO_IOH_Config(GPIO_TypeDef GPIOx, GPIO_Pin_TypeDef PortPins,GPIO_IOH_Grade_TypeDef GPIO_IOH_Grade);
|
||||
|
||||
void GPIO_DeInit(void);
|
||||
void GPIO_Init(GPIO_TypeDef GPIOx,
|
||||
uint8_t PortPins, GPIO_Mode_TypeDef GPIO_Mode);
|
||||
void GPIO_Write(GPIO_TypeDef GPIOx,
|
||||
uint8_t PortVal);
|
||||
void GPIO_WriteHigh(GPIO_TypeDef GPIOx,
|
||||
uint8_t PortPins);
|
||||
void GPIO_WriteLow(GPIO_TypeDef GPIOx,
|
||||
uint8_t PortPins);
|
||||
uint8_t GPIO_ReadPort(GPIO_TypeDef GPIOx);
|
||||
BitStatus GPIO_ReadPin(GPIO_TypeDef GPIOx,
|
||||
uint8_t PortPins);
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92f_iap.h
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: IAP固件库函数头文件
|
||||
// 最后更正日期: 2022年3月23日
|
||||
// 版本: V1.100005
|
||||
// 说明: 本文件仅适用于赛元92F/93F/92L系列单片机
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_IAP_H_
|
||||
#define _sc92f_IAP_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
#include "intrins.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IAP_MEMTYPE_ROM = (uint8_t)0x00, //IAP操作区域为ROM
|
||||
IAP_MEMTYPE_UID = (uint8_t)0x01, //IAP操作区域为UID,只允许读操作!!!
|
||||
IAP_MEMTYPE_EEPROM = (uint8_t)0x02 //IAP操作区域为EEPROM
|
||||
} IAP_MemType_TypeDef;
|
||||
|
||||
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92F7003) || defined(SC92F8003) || defined(SC92F740x)
|
||||
typedef enum
|
||||
{
|
||||
IAP_HOLDTIME_1500US = (uint8_t)0x08, //设定CPU Hold Time为1.5MS
|
||||
IAP_HOLDTIME_3000US = (uint8_t)0x04, //设定CPU Hold Time为3MS
|
||||
IAP_HOLDTIME_6000US = (uint8_t)0x00 //设定CPU Hold Time为6MS
|
||||
}IAP_HoldTime_TypeDef;
|
||||
#elif defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined (SC92F83Ax) || defined (SC92F73Ax)\
|
||||
|| defined (SC92F84Ax) || defined (SC92F74Ax)|| defined (SC92F742x) || defined (SC92F730x) || defined (SC92F827X) || defined (SC92F837X) \
|
||||
|| defined (SC92F725X) || defined (SC92F735X) || defined (SC92F732X) || defined (SC92F7490) || defined (SC93F833x) || defined (SC93F843x)\
|
||||
|| defined (SC93F733x) || defined (SC93F743x)
|
||||
typedef enum
|
||||
{
|
||||
IAP_HOLDTIME_4MS = (uint8_t)0x00, //设定CPU Hold Time为4MS
|
||||
IAP_HOLDTIME_2MS = (uint8_t)0x04, //设定CPU Hold Time为2MS
|
||||
IAP_HOLDTIME_1MS = (uint8_t)0x08 //设定CPU Hold Time为1MS
|
||||
}IAP_HoldTime_TypeDef;
|
||||
#elif defined (SC92FWxx)
|
||||
typedef enum
|
||||
{
|
||||
IAP_HOLDTIME_3000US = (uint8_t)0x00, //设定CPU Hold Time为4MS
|
||||
IAP_HOLDTIME_1500US = (uint8_t)0x04, //设定CPU Hold Time为2MS
|
||||
IAP_HOLDTIME_1000US = (uint8_t)0x08 //设定CPU Hold Time为1MS
|
||||
}IAP_HoldTime_TypeDef;
|
||||
#elif defined(SC92F848x) || defined(SC92F748x) || defined(SC92F859x) || defined(SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
IAP_HOLDTIME_Null = (uint8_t)0x00 //高速Flash,不需要Hold Time
|
||||
}IAP_HoldTime_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IAP_BTLDType_APPROM = (uint8_t)0x00, //MCU复位后从APROM复位
|
||||
IAP_BTLDType_LDROM = (uint8_t)0x01, //MCU复位后从LDROM复位
|
||||
} IAP_BTLDType_TypeDef;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
void IAP_DeInit(void);
|
||||
void IAP_SetHoldTime(IAP_HoldTime_TypeDef IAP_HoldTime);
|
||||
void IAP_ProgramByte(uint16_t Address,
|
||||
uint8_t Data, IAP_MemType_TypeDef IAP_MemType,
|
||||
uint8_t WriteTimeLimit);
|
||||
uint8_t IAP_ReadByte(uint16_t Address,
|
||||
IAP_MemType_TypeDef IAP_MemType);
|
||||
|
||||
#if defined(SC92F848x) || defined(SC92F748x) || defined(SC92F859x) || defined(SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
void IAP_SectorErase(IAP_MemType_TypeDef IAP_MemType, uint32_t IAP_SectorEraseAddress,
|
||||
uint8_t WriteTimeLimit);
|
||||
void IAP_BootLoaderControl(IAP_BTLDType_TypeDef IAP_BTLDType);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,220 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_INT.h
|
||||
// 作者 :
|
||||
// 模块功能 : INT固件库函数头文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022/01/05
|
||||
// 版本 : V1.10003
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_INT_H_
|
||||
#define _sc92f_INT_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
INT_TRIGGER_RISE_ONLY = (uint8_t)0x01, //外部中断触发方式为上升沿
|
||||
INT_TRIGGER_FALL_ONLY = (uint8_t)0x02, //外部中断触发方式为下降沿
|
||||
INT_TRIGGER_RISE_FALL = (uint8_t)0x03, //外部中断触发方式为上升沿与下降沿
|
||||
INT_TRIGGER_DISABLE = (uint8_t)0x04 //关闭外部中断触发
|
||||
} INT_TriggerMode_Typedef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
INT0 = (uint8_t)0x00, //外部中断0
|
||||
INT1 = (uint8_t)0x01, //外部中断1
|
||||
INT2 = (uint8_t)0x02 //外部中断2
|
||||
} INTx_Typedef;
|
||||
|
||||
#if defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined (SC92F83Ax) || defined (SC92F73Ax)\
|
||||
|| defined (SC92F84Ax) || defined (SC92F74Ax) || defined (SC92F848x) || defined (SC92F748x)
|
||||
typedef enum
|
||||
{
|
||||
INT01 = (uint8_t)0x02, //将P11设置为INT0脚
|
||||
INT02 = (uint8_t)0x04, //将P12设置为INT0脚
|
||||
INT03 = (uint8_t)0x08 //将P13设置为INT0脚
|
||||
|
||||
} INT0x_Typedef;
|
||||
|
||||
#elif defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined (SC92FWxx) || defined (SC92F859x) || defined (SC92F759x)
|
||||
typedef enum
|
||||
{
|
||||
INT04 = (uint8_t)0x10, //将P04设置为外部中断脚
|
||||
INT05 = (uint8_t)0x20, //将P05设置为外部中断脚
|
||||
INT06 = (uint8_t)0x40, //将P06设置为外部中断脚
|
||||
INT07 = (uint8_t)0x80 //将P07设置为外部中断脚
|
||||
} INT0x_Typedef;
|
||||
|
||||
#elif defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x)
|
||||
typedef enum
|
||||
{
|
||||
INT00 = (uint8_t)0x01, //将P00设置为INT0脚
|
||||
INT01 = (uint8_t)0x02 //将P01设置为INT0脚
|
||||
} INT0x_Typedef;
|
||||
|
||||
#elif defined (SC92F742x) || defined (SC92F730x) || defined (SC92F725X) || defined (SC92F735X) || defined (SC92F732X)
|
||||
typedef enum
|
||||
{
|
||||
INT00 = (uint8_t)0x01, //将P10设置为INT0脚
|
||||
INT01 = (uint8_t)0x02, //将P11设置为INT0脚
|
||||
INT02 = (uint8_t)0x04, //将P12设置为INT0脚
|
||||
INT03 = (uint8_t)0x08 //将P13设置为INT0脚
|
||||
} INT0x_Typedef;
|
||||
|
||||
#elif defined (SC92F827X) || defined (SC92F837X) || defined (SC92F7490) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
INT01 = (uint8_t)0x02, //将P11设置为INT0脚
|
||||
INT02 = (uint8_t)0x04, //将P12设置为INT0脚
|
||||
INT03 = (uint8_t)0x08 //将P13设置为INT0脚
|
||||
} INT0x_Typedef;
|
||||
|
||||
#endif
|
||||
|
||||
#if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined (SC92FWxx) || defined (SC92F859x) || defined (SC92F759x)
|
||||
typedef enum
|
||||
{
|
||||
INT10 = (uint8_t)0x01, //将P40设置为外部中断脚
|
||||
INT11 = (uint8_t)0x02, //将P41设置为外部中断脚
|
||||
INT12 = (uint8_t)0x04, //将P42设置为外部中断脚
|
||||
INT13 = (uint8_t)0x08, //将P43设置为外部中断脚
|
||||
INT14 = (uint8_t)0x10, //将P14设置为外部中断脚
|
||||
INT15 = (uint8_t)0x20, //将P15设置为外部中断脚
|
||||
INT16 = (uint8_t)0x40, //将P16设置为外部中断脚
|
||||
INT17 = (uint8_t)0x80 //将P17设置为外部中断脚
|
||||
} INT1x_Typedef;
|
||||
|
||||
#elif defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined (SC92F83Ax) || defined (SC92F73Ax)\
|
||||
|| defined (SC92F84Ax) || defined (SC92F74Ax) || defined (SC92F848x) || defined (SC92F748x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
INT10 = (uint8_t)0x01, //将P14设置为INT1脚
|
||||
INT11 = (uint8_t)0x02, //将P15设置为INT1脚
|
||||
INT12 = (uint8_t)0x04, //将P16设置为INT1脚
|
||||
INT13 = (uint8_t)0x08 //将P17设置为INT1脚
|
||||
} INT1x_Typedef;
|
||||
|
||||
#elif defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x)
|
||||
typedef enum
|
||||
{
|
||||
INT10 = (uint8_t)0x01, //将P10设置为INT1脚
|
||||
INT11 = (uint8_t)0x02, //将P11设置为INT1脚
|
||||
INT12 = (uint8_t)0x04, //将P12设置为INT1脚
|
||||
INT13 = (uint8_t)0x08, //将P13设置为INT1脚
|
||||
INT14 = (uint8_t)0x10, //将P14设置为INT1脚
|
||||
INT15 = (uint8_t)0x20, //将P15设置为INT1脚
|
||||
INT16 = (uint8_t)0x40 //将P16设置为INT1脚
|
||||
} INT1x_Typedef;
|
||||
|
||||
#elif defined (SC92F742x) || defined (SC92F732X) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
|
||||
typedef enum
|
||||
{
|
||||
INT10 = (uint8_t)0x01, //将P14设置为INT1脚
|
||||
INT11 = (uint8_t)0x02, //将P15设置为INT1脚
|
||||
INT12 = (uint8_t)0x04, //将P16设置为INT1脚
|
||||
INT13 = (uint8_t)0x08 //将P17设置为INT1脚
|
||||
} INT1x_Typedef;
|
||||
|
||||
#elif defined (SC92F730x) || defined (SC92F827X) || defined (SC92F837X) || defined (SC92F725X) || defined (SC92F735X) || defined (SC92F7490)
|
||||
typedef enum
|
||||
{
|
||||
INT_Null = (uint8_t)0x00, //没有INT1引脚
|
||||
} INT1x_Typedef;
|
||||
|
||||
#endif
|
||||
|
||||
#if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined (SC92FWxx) || defined (SC92F859x) || defined (SC92F759x)
|
||||
typedef enum
|
||||
{
|
||||
INT20 = (uint8_t)0x01, //将P20设置为外部中断脚
|
||||
INT21 = (uint8_t)0x02, //将P21设置为外部中断脚
|
||||
INT22 = (uint8_t)0x04, //将P22设置为外部中断脚
|
||||
INT23 = (uint8_t)0x08 //将P23设置为外部中断脚
|
||||
} INT2x_Typedef;
|
||||
|
||||
#elif defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined (SC92F83Ax) || defined (SC92F73Ax)\
|
||||
|| defined (SC92F84Ax) || defined (SC92F74Ax) || defined (SC92F848x) || defined (SC92F748x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
INT20 = (uint8_t)0x01, //将P04设置为INT2脚
|
||||
INT21 = (uint8_t)0x02, //将P05设置为INT2脚
|
||||
INT22 = (uint8_t)0x04, //将P06设置为INT2脚
|
||||
INT23 = (uint8_t)0x08, //将P07设置为INT2脚
|
||||
INT24 = (uint8_t)0x10, //将P20设置为INT2脚
|
||||
INT25 = (uint8_t)0x20 //将P21设置为INT2脚
|
||||
} INT2x_Typedef;
|
||||
|
||||
#elif defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x)
|
||||
typedef enum
|
||||
{
|
||||
INT21 = (uint8_t)0x02, //将P21设置为INT2脚
|
||||
INT22 = (uint8_t)0x04, //将P22设置为INT2脚
|
||||
INT23 = (uint8_t)0x08, //将P23设置为INT2脚
|
||||
INT24 = (uint8_t)0x10, //将P24设置为INT2脚
|
||||
INT25 = (uint8_t)0x20, //将P25设置为INT2脚
|
||||
INT26 = (uint8_t)0x40, //将P26设置为INT2脚
|
||||
INT27 = (uint8_t)0x80 //将P27设置为INT2脚
|
||||
} INT2x_Typedef;
|
||||
|
||||
#elif defined (SC92F742x) || defined (SC92F732X) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
|
||||
typedef enum
|
||||
{
|
||||
INT20 = (uint8_t)0x01, //将P04设置为INT2脚
|
||||
INT21 = (uint8_t)0x02, //将P05设置为INT2脚
|
||||
INT22 = (uint8_t)0x04, //将P06设置为INT2脚
|
||||
INT23 = (uint8_t)0x08, //将P07设置为INT2脚
|
||||
INT24 = (uint8_t)0x10, //将P20设置为INT2脚
|
||||
INT25 = (uint8_t)0x20 //将P21设置为INT2脚
|
||||
} INT2x_Typedef;
|
||||
|
||||
#elif defined (SC92F730x) || defined (SC92F725X) || defined (SC92F735X)
|
||||
typedef enum
|
||||
{
|
||||
INT24 = (uint8_t)0x10, //将P20设置为外部中断脚
|
||||
INT25 = (uint8_t)0x20 //将P21设置为外部中断脚
|
||||
} INT2x_Typedef;
|
||||
|
||||
#elif defined (SC92F837X)
|
||||
typedef enum
|
||||
{
|
||||
INT20 = (uint8_t)0x01, //将P04设置为INT2脚
|
||||
INT21 = (uint8_t)0x02, //将P05设置为INT2脚
|
||||
INT24 = (uint8_t)0x10, //将P20设置为INT2脚
|
||||
INT25 = (uint8_t)0x20 //将P21设置为INT2脚
|
||||
} INT2x_Typedef;
|
||||
|
||||
#elif defined (SC92F7490) || defined (SC92F827X)
|
||||
typedef enum
|
||||
{
|
||||
INT21 = (uint8_t)0x02, //将P05设置为INT2脚
|
||||
INT24 = (uint8_t)0x10, //将P20设置为INT2脚
|
||||
INT25 = (uint8_t)0x20 //将P21设置为INT2脚
|
||||
} INT2x_Typedef;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
void INT_DeInit(INTx_Typedef INTx);
|
||||
void INT0_SetTriggerMode(uint8_t INT0x,
|
||||
INT_TriggerMode_Typedef TriggerMode);
|
||||
void INT0_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority);
|
||||
#if !defined (SC92F730x) && !defined (SC92F827X) && !defined (SC92F837X) && !defined (SC92F725X) || defined (SC92F735X)
|
||||
void INT1_SetTriggerMode(uint8_t INT1x,
|
||||
INT_TriggerMode_Typedef TriggerMode);
|
||||
void INT1_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority);
|
||||
#endif
|
||||
void INT2_SetTriggerMode(uint8_t INT2x,
|
||||
INT_TriggerMode_Typedef TriggerMode);
|
||||
void INT2_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority);
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92F_LPD.h
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: LPD固件库函数头文件
|
||||
// 最后更正日期: 2022年3月23日
|
||||
// 版本: V1.100001
|
||||
// 说明: 该文件仅适用于SC92L系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_LPD_H_
|
||||
#define _sc92f_LPD_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
LPD_VTRIP_1_85V = (uint8_t)0x00, //LPD门限电压阈值为1.85V
|
||||
LPD_VTRIP_2_05V = (uint8_t)0x01, //LPD门限电压阈值为2.05V
|
||||
LPD_VTRIP_2_25V = (uint8_t)0x02, //LPD门限电压阈值为2.25V
|
||||
LPD_VTRIP_2_45V = (uint8_t)0x03, //LPD门限电压阈值为2.45V
|
||||
LPD_VTRIP_2_85V = (uint8_t)0x04, //LPD门限电压阈值为2.85V
|
||||
LPD_VTRIP_3_45V = (uint8_t)0x05, //LPD门限电压阈值为3.45V
|
||||
LPD_VTRIP_3_85V = (uint8_t)0x06, //LPD门限电压阈值为3.85V
|
||||
LPD_VTRIP_4_45V = (uint8_t)0x07, //LPD门限电压阈值为4.45V
|
||||
} LPD_Vtrip_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
LPD_FLAG_LPDIF = (uint8_t)0x40, //LPD中断请求标志
|
||||
LPD_FLAG_LPDOF = (uint8_t)0x80, //LPD状态标志位
|
||||
} LPD_Flag_TypeDef;
|
||||
|
||||
/*******************************宏函数*******************************/
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus LPD_GetFlagStatus(LPD_Flag_Typedef LPD_Flag)
|
||||
*函数功能:获得LPD中断标志状态
|
||||
*入口参数:
|
||||
LPD_GetFlagStatus:LPD_Flag:中断标志位选择
|
||||
*出口参数:
|
||||
FlagStatus:LPD中断标志位置起状态
|
||||
*****************************************************/
|
||||
#define LPD_GetFlagStatus(LPD_Flag) ((READ_BIT(SCON,LPD_Flag)) ? (SET):(RESET))
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void LPD_ClearFlag(LPD_Flag_Typedef LPD_Flag)
|
||||
*函数功能:清除LPD中断标志状态
|
||||
*入口参数:
|
||||
LPD_Flag_Typedef;LPD_Flag:中断标志位选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define LPD_ClearFlag() CLEAR_BIT(SCON,LPD_Flag)
|
||||
|
||||
void LPD_DeInit(void);
|
||||
void LPD_VtripConfig(LPD_Vtrip_TypeDef LPD_Vtrip);
|
||||
void LPD_ITConfig(FunctionalState NewState, PriorityStatus Priority);
|
||||
void LPD_Cmd(FunctionalState NewState);
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_mdu.h
|
||||
// 作者 :
|
||||
// 模块功能 : MDU固件库函数头文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022/01/24
|
||||
// 版本 : V1.10001
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_MDU_H_
|
||||
#define _sc92f_MDU_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
#if defined (SC92F854x) || defined (SC92F754x) || defined (SC92F844xB) || defined (SC92F744xB) || defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB) || defined (SC92F848x) || defined (SC92F748x)\
|
||||
|| defined (SC92F859x) || defined (SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef struct
|
||||
{
|
||||
uint8_t MDU_EXA3Reg; //EXA3寄存器
|
||||
uint8_t MDU_EXA2Reg; //EXA2寄存器
|
||||
uint8_t MDU_EXA1Reg; //EXA1寄存器
|
||||
uint8_t MDU_EXA0Reg; //EXA0寄存器
|
||||
} MDU_EXAxReg_Typedef;
|
||||
|
||||
typedef union
|
||||
{
|
||||
MDU_EXAxReg_Typedef MDU_EXAxReg;
|
||||
uint32_t MDU_Temp;
|
||||
} MDU_Temp_Union;
|
||||
|
||||
void MDU_DeInit(void);
|
||||
void MDU_MultiplicationConfig(uint16_t
|
||||
Multiplicand, uint16_t Multiplier);
|
||||
void MDU_DivisionConfig(uint32_t Dividend,
|
||||
uint16_t Divisor);
|
||||
void MDU_StartOperation(void);
|
||||
uint32_t MDU_GetProduct(void);
|
||||
uint32_t MDU_GetQuotient(void);
|
||||
uint16_t MDU_GetRemainder(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,141 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_option.h
|
||||
// 作者 :
|
||||
// 模块功能 : Customer Option寄存器配置头文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022/01/24
|
||||
// 版本 : V1.0007
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_OPTION_H_
|
||||
#define _sc92f_OPTION_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
SYSCLK_PRESSEL_FOSC_D1 = (uint8_t)0x00, //预分频 Fsys = Fosc/1
|
||||
SYSCLK_PRESSEL_FOSC_D2 = (uint8_t)0x10, //预分频 Fsys = Fosc/2
|
||||
SYSCLK_PRESSEL_FOSC_D4 = (uint8_t)0x20, //预分频 Fsys = Fosc/4
|
||||
SYSCLK_PRESSEL_FOSC_D8 = (uint8_t)0x30 //预分频 Fsys = Fosc/8
|
||||
} SYSCLK_PresSel_TypeDef;
|
||||
#else
|
||||
typedef enum
|
||||
{
|
||||
SYSCLK_PRESSEL_FOSC_D1 = (uint8_t)0x00, //预分频 Fsys = Fosc/1
|
||||
SYSCLK_PRESSEL_FOSC_D2 = (uint8_t)0x10, //预分频 Fsys = Fosc/2
|
||||
SYSCLK_PRESSEL_FOSC_D4 = (uint8_t)0x20, //预分频 Fsys = Fosc/4
|
||||
SYSCLK_PRESSEL_FOSC_D12 = (uint8_t)0x30 //预分频 Fsys = Fosc/12
|
||||
} SYSCLK_PresSel_TypeDef;
|
||||
#endif
|
||||
|
||||
#if defined (SC92F859x) || defined (SC92F759x)||defined (SC92F848x) || defined (SC92F748x)
|
||||
typedef enum
|
||||
{
|
||||
LVR_INVALID = (uint8_t)0x04, //LVR无效
|
||||
LVR_1_9V = (uint8_t)0x00, //LVR 1.9V复位
|
||||
LVR_2_9V = (uint8_t)0x01, //LVR 2.9V复位
|
||||
LVR_3_7V = (uint8_t)0x02, //LVR 3.7V复位
|
||||
LVR_4_3V = (uint8_t)0x03 //LVR 4.3V复位
|
||||
} LVR_Config_TypeDef;
|
||||
#elif defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
LVR_INVALID = (uint8_t)0x04, //LVR无效
|
||||
LVR_1_7V = (uint8_t)0x00, //LVR 1.7V复位
|
||||
LVR_2_7V = (uint8_t)0x01, //LVR 2.7V复位
|
||||
LVR_3_7V = (uint8_t)0x02, //LVR 3.7V复位
|
||||
LVR_4_3V = (uint8_t)0x03 //LVR 4.3V复位
|
||||
} LVR_Config_TypeDef;
|
||||
#else
|
||||
typedef enum
|
||||
{
|
||||
LVR_INVALID = (uint8_t)0x04, //LVR无效
|
||||
LVR_2_3V = (uint8_t)0x00, //LVR 2.3V复位
|
||||
LVR_2_9V = (uint8_t)0x01, //LVR 2.9V复位
|
||||
LVR_3_7V = (uint8_t)0x02, //LVR 3.7V复位
|
||||
LVR_4_3V = (uint8_t)0x03 //LVR 4.3V复位
|
||||
} LVR_Config_TypeDef;
|
||||
#endif
|
||||
|
||||
#if defined (SC92F848x) || defined (SC92F748x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
IAP_OPERATERANGE_ONLY_EEPROM = (uint8_t)0x00, //只允许EEPROM进行IAP操作
|
||||
IAP_OPERATERANGE__LAST_1K_CODEREGION = (uint8_t)0x04, //允许ROM最后1k和EEPROM进行IAP操作
|
||||
IAP_OPERATERANGE__LAST_2K_CODEREGION = (uint8_t)0x08, //允许ROM最后2k和EEPROM进行IAP操作
|
||||
IAP_OPERATERANGE__ALL_CODEREGION = (uint8_t)0x0c //允许ROM和EEPROM所有区域进行IAP操作
|
||||
} IAP_OperateRange_TypeDef;
|
||||
#else
|
||||
typedef enum
|
||||
{
|
||||
IAP_OPERATERANGE_ONLY_EEPROM = (uint8_t)0x00, //只允许EEPROM进行IAP操作
|
||||
IAP_OPERATERANGE__LAST_0_5K_CODEREGION = (uint8_t)0x04, //允许ROM最后0.5k和EEPROM进行IAP操作
|
||||
IAP_OPERATERANGE__LAST_1K_CODEREGION = (uint8_t)0x08, //允许ROM最后1k和EEPROM进行IAP操作
|
||||
IAP_OPERATERANGE__ALL_CODEREGION = (uint8_t)0x0c //允许ROM和EEPROM所有区域进行IAP操作
|
||||
} IAP_OperateRange_TypeDef;
|
||||
#endif
|
||||
|
||||
|
||||
#if defined (SC92F859x) || defined (SC92F759x) || defined (SC92F848x) || defined (SC92F748x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
ADC_VREF_VDD = 0x00, //选择VDD做ADC参考电压
|
||||
ADC_VREF_1_024V = 0x40, //选择内部1.024V做ADC参考电压
|
||||
ADC_VREF_2_4V = 0x80, //选择内部2.4V做ADC参考电压
|
||||
ADC_VREF_2_048V = 0xC0, //选择内部2.048V做ADC参考电压
|
||||
} ADC_Vref_TypeDef;
|
||||
#else
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ADC_VREF_VDD = 0x00, //选择VDD做ADC参考电压
|
||||
ADC_VREF_2_4V = 0x80, //选择内部2.4V做ADC参考电压
|
||||
} ADC_Vref_TypeDef;
|
||||
#endif
|
||||
|
||||
#if defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined (SC92F83Ax)\
|
||||
|| defined (SC92F73Ax) || defined (SC92F84Ax) || defined (SC92F74Ax) || defined (SC92F740x)\
|
||||
|| defined (SC92F848x) || defined (SC92F748x) || defined (SC92F8003) || defined (SC92F7003)
|
||||
typedef enum
|
||||
{
|
||||
XTIPLL_HIGHER_THAN_12M = (uint8_t)0x40, //外接晶振振荡频率大于等于12M
|
||||
XTIPLL_UNDER_12M = (uint8_t)0x00 //外接晶振振荡频率小于12M
|
||||
} XTIPLL_Range_TypeDef;
|
||||
#endif
|
||||
|
||||
void OPTION_WDT_Cmd(FunctionalState NewState);
|
||||
|
||||
void OPTION_SYSCLK_Init(SYSCLK_PresSel_TypeDef
|
||||
SYSCLK_PresSel);
|
||||
#if !defined(SC92F848x) && !defined(SC92F748x) && !defined(SC92F859x) && !defined (SC92F759x) && !defined(SC92L853x) && !defined (SC92L753x)
|
||||
void OPTION_RST_PIN_Cmd(FunctionalState NewState);
|
||||
#endif
|
||||
void OPTION_LVR_Init(LVR_Config_TypeDef
|
||||
LVR_Config);
|
||||
void OPTION_ADC_VrefConfig(ADC_Vref_TypeDef ADC_Vref);
|
||||
void OPTION_IAP_SetOperateRange(
|
||||
IAP_OperateRange_TypeDef IAP_OperateRange);
|
||||
|
||||
#if defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined (SC92F83Ax)\
|
||||
|| defined (SC92F73Ax) || defined (SC92F84Ax) || defined (SC92F74Ax) || defined (SC92F740x)\
|
||||
|| defined (SC92F8003) || defined (SC92F7003)
|
||||
void OPTION_XTIPLL_SetRange(XTIPLL_Range_TypeDef
|
||||
XTIPLL_Range);
|
||||
#endif
|
||||
|
||||
#if !defined(SC92F848x) && !defined(SC92F748x)
|
||||
void OPTION_XTIPLL_Cmd(FunctionalState NewState);
|
||||
#endif
|
||||
|
||||
#if defined (SC92F742x)||defined (SC92F83Ax) || defined (SC92F73Ax)|| defined (SC92F84Ax) || defined (SC92F74Ax) \
|
||||
||defined (SC92F74Ax_2)||defined (SC92F84Ax_2)||defined (SC92F844xB)||defined (SC92F744xB) \
|
||||
||defined (SC92F859x) || defined (SC92F759x) ||defined (SC92F848x) || defined (SC92F748x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
void OPTION_JTG_Cmd(FunctionalState NewState);
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,406 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_pwm.h
|
||||
// 作者 :
|
||||
// 模块功能 : PWM固件库函数头文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022年7月6日
|
||||
// 版本 : V1.10005
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_PWM_H_
|
||||
#define _sc92f_PWM_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
#if !defined (SC92F7490)
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92F859x) || defined(SC92F759x)
|
||||
typedef enum
|
||||
{
|
||||
PWM_PRESSEL_FHRC_D1 = (uint8_t)0x00, //PWM预分频为Fhrc/1
|
||||
PWM_PRESSEL_FHRC_D2 = (uint8_t)0x10, //PWM预分频为Fhrc/2
|
||||
PWM_PRESSEL_FHRC_D4 = (uint8_t)0x20, //PWM预分频为Fhrc/4
|
||||
PWM_PRESSEL_FHRC_D8 = (uint8_t)0x30 //PWM预分频为Fhrc/8
|
||||
} PWM_PresSel_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM40 = (uint8_t)0x01, //PWM输出通道选择:PWM40
|
||||
PWM41 = (uint8_t)0x02, //PWM输出通道选择:PWM41
|
||||
PWM42 = (uint8_t)0x04, //PWM输出通道选择:PWM42
|
||||
PWM43 = (uint8_t)0x08, //PWM输出通道选择:PWM43
|
||||
PWM50 = (uint8_t)0x10, //PWM输出通道选择:PWM50
|
||||
PWM51 = (uint8_t)0x20, //PWM输出通道选择:PWM51
|
||||
PWM52 = (uint8_t)0x40, //PWM输出通道选择:PWM52
|
||||
PWM53 = (uint8_t)0x80 //PWM输出通道选择:PWM53
|
||||
} PWM_OutputPin_TypeDef;
|
||||
#elif defined (SC92F742x) || defined (SC92F730x) || defined (SC92F827X) || defined (SC92F837X) || defined (SC92F725X) || defined(SC92F735X)
|
||||
typedef enum
|
||||
{
|
||||
PWM_PRESSEL_FSYS_D1 = (uint8_t)0x00, //PWM预分频为Fsys/1
|
||||
PWM_PRESSEL_FSYS_D2 = (uint8_t)0x01, //PWM预分频为Fsys/2
|
||||
PWM_PRESSEL_FSYS_D4 = (uint8_t)0x02, //PWM预分频为Fsys/4
|
||||
PWM_PRESSEL_FSYS_D8 = (uint8_t)0x03, //PWM预分频为Fsys/8
|
||||
PWM_PRESSEL_FSYS_D32 = (uint8_t)0x04, //PWM预分频为Fsys/32
|
||||
PWM_PRESSEL_FSYS_D64 = (uint8_t)0x05, //PWM预分频为Fsys/64
|
||||
PWM_PRESSEL_FSYS_D128 = (uint8_t)0x06, //PWM预分频为Fsys/128
|
||||
PWM_PRESSEL_FSYS_D256 = (uint8_t)0x07 //PWM预分频为Fsys/256
|
||||
} PWM_PresSel_TypeDef;
|
||||
|
||||
#if defined (SC92F827X)
|
||||
typedef enum
|
||||
{
|
||||
PWM0 = (uint8_t)0x01, //PWM输出通道选择:PWM0
|
||||
PWM1 = (uint8_t)0x02, //PWM输出通道选择:PWM1
|
||||
} PWM_OutputPin_TypeDef;
|
||||
#elif defined (SC92F732X) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
|
||||
typedef enum
|
||||
{
|
||||
PWM0 = (uint8_t)0x01, //PWM输出通道选择:PWM0
|
||||
PWM1 = (uint8_t)0x02, //PWM输出通道选择:PWM1
|
||||
PWM2 = (uint8_t)0x04, //PWM输出通道选择:PWM2
|
||||
} PWM_OutputPin_TypeDef;
|
||||
#elif defined (SC92F837X)
|
||||
typedef enum
|
||||
{
|
||||
PWM0 = (uint8_t)0x01, //PWM输出通道选择:PWM0
|
||||
PWM1 = (uint8_t)0x02, //PWM输出通道选择:PWM1
|
||||
PWM2 = (uint8_t)0x04, //PWM输出通道选择:PWM2
|
||||
PWM3 = (uint8_t)0x08, //PWM输出通道选择:PWM3
|
||||
} PWM_OutputPin_TypeDef;
|
||||
#elif defined (SC92F730x)
|
||||
typedef enum
|
||||
{
|
||||
PWM0 = (uint8_t)0x01, //PWM输出通道选择:PWM0
|
||||
PWM1 = (uint8_t)0x02, //PWM输出通道选择:PWM1
|
||||
PWM2 = (uint8_t)0x04, //PWM输出通道选择:PWM2
|
||||
PWM4 = (uint8_t)0x10, //PWM输出通道选择:PWM4
|
||||
PWM5 = (uint8_t)0x20 //PWM输出通道选择:PWM5
|
||||
} PWM_OutputPin_TypeDef;
|
||||
#else
|
||||
typedef enum
|
||||
{
|
||||
PWM0 = (uint8_t)0x01, //PWM输出通道选择:PWM0
|
||||
PWM1 = (uint8_t)0x02, //PWM输出通道选择:PWM1
|
||||
PWM2 = (uint8_t)0x04, //PWM输出通道选择:PWM2
|
||||
PWM3 = (uint8_t)0x08, //PWM输出通道选择:PWM3
|
||||
PWM4 = (uint8_t)0x10, //PWM输出通道选择:PWM4
|
||||
PWM5 = (uint8_t)0x20 //PWM输出通道选择:PWM5
|
||||
} PWM_OutputPin_TypeDef;
|
||||
#endif
|
||||
|
||||
#elif defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined (SC92F83Ax) || defined (SC92F73Ax)|| defined (SC92F84Ax) || defined (SC92F74Ax) || defined (SC92F848x) || defined (SC92F748x)
|
||||
typedef enum
|
||||
{
|
||||
PWM_PRESSEL_FOSC_D1 = (uint8_t)0x00, //PWM预分频为Fosc/1
|
||||
PWM_PRESSEL_FOSC_D2 = (uint8_t)0x01, //PWM预分频为Fosc/2
|
||||
PWM_PRESSEL_FOSC_D8 = (uint8_t)0x02, //PWM预分频为Fosc/8
|
||||
PWM_PRESSEL_FOSC_D32 = (uint8_t)0x03 //PWM预分频为Fosc/32
|
||||
} PWM_PresSel_TypeDef;
|
||||
typedef enum
|
||||
{
|
||||
PWM0 = (uint8_t)0x01, //PWM输出通道选择:PWM0
|
||||
PWM1 = (uint8_t)0x02, //PWM输出通道选择:PWM1
|
||||
PWM2 = (uint8_t)0x04, //PWM输出通道选择:PWM2
|
||||
PWM3 = (uint8_t)0x08, //PWM输出通道选择:PWM3
|
||||
PWM4 = (uint8_t)0x10, //PWM输出通道选择:PWM4
|
||||
PWM5 = (uint8_t)0x20, //PWM输出通道选择:PWM5
|
||||
} PWM_OutputPin_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM0PWM3 = (uint8_t)0x00, //PWM互补模式通道选择:PWM0、PWM3
|
||||
PWM1PWM4 = (uint8_t)0x01, //PWM互补模式通道选择:PWM1、PWM4
|
||||
PWM2PWM5 = (uint8_t)0x02 //PWM互补模式通道选择:PWM2、PWM5
|
||||
} PWM_ComplementaryOutputPin_TypeDef;
|
||||
#elif defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x)
|
||||
typedef enum
|
||||
{
|
||||
PWM_PRESSEL_FOSC_D1 = (uint8_t)0x00, //PWM预分频为Fosc/1
|
||||
PWM_PRESSEL_FOSC_D2 = (uint8_t)0x01, //PWM预分频为Fosc/2
|
||||
PWM_PRESSEL_FOSC_D8 = (uint8_t)0x02, //PWM预分频为Fosc/8
|
||||
PWM_PRESSEL_FOSC_D32 = (uint8_t)0x03 //PWM预分频为Fosc/32
|
||||
} PWM_PresSel_TypeDef;
|
||||
typedef enum
|
||||
{
|
||||
PWM2_OutputPin_P26 = ((uint8_t)0x00), //PWM2输出口选择P26
|
||||
PWM2_OutputPin_P14 = ((uint8_t)0x04) //PWM2输出口选择P14
|
||||
} PWM2_OutputPin_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM5_OutputPin_P12 = ((uint8_t)0x00), //PWM5输出口选择P12
|
||||
PWM5_OutputPin_P21 = ((uint8_t)0x08) //PWM5输出口选择P21
|
||||
} PWM5_OutputPin_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM0 = (uint8_t)0x01, //PWM输出通道选择:PWM0
|
||||
PWM1 = (uint8_t)0x02, //PWM输出通道选择:PWM1
|
||||
PWM2 = (uint8_t)0x04, //PWM输出通道选择:PWM2
|
||||
PWM3 = (uint8_t)0x08, //PWM输出通道选择:PWM3
|
||||
PWM4 = (uint8_t)0x10, //PWM输出通道选择:PWM4
|
||||
PWM5 = (uint8_t)0x20, //PWM输出通道选择:PWM5
|
||||
PWM6 = (uint8_t)0x40, //PWM输出通道选择:PWM6
|
||||
} PWM_OutputPin_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM0PWM3 = (uint8_t)0x00, //PWM互补模式通道选择:PWM0、PWM3
|
||||
PWM1PWM4 = (uint8_t)0x01, //PWM互补模式通道选择:PWM1、PWM4
|
||||
PWM2PWM5 = (uint8_t)0x02 //PWM互补模式通道选择:PWM2、PWM5
|
||||
} PWM_ComplementaryOutputPin_TypeDef;
|
||||
#elif defined (SC92F732X) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
|
||||
typedef enum
|
||||
{
|
||||
PWM_PRESSEL_FSYS_D1 = (uint8_t)0x00, //PWM预分频为Fsys/1
|
||||
PWM_PRESSEL_FSYS_D2 = (uint8_t)0x01, //PWM预分频为Fsys/2
|
||||
PWM_PRESSEL_FSYS_D4 = (uint8_t)0x02, //PWM预分频为Fsys/4
|
||||
PWM_PRESSEL_FSYS_D8 = (uint8_t)0x03, //PWM预分频为Fsys/8
|
||||
PWM_PRESSEL_FSYS_D32 = (uint8_t)0x04, //PWM预分频为Fsys/32
|
||||
PWM_PRESSEL_FSYS_D64 = (uint8_t)0x05, //PWM预分频为Fsys/64
|
||||
PWM_PRESSEL_FSYS_D128 = (uint8_t)0x06, //PWM预分频为Fsys/128
|
||||
PWM_PRESSEL_FSYS_D256 = (uint8_t)0x07 //PWM预分频为Fsys/256
|
||||
} PWM_PresSel_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM0 = (uint8_t)0x01, //PWM输出通道选择:PWM0
|
||||
PWM1 = (uint8_t)0x02, //PWM输出通道选择:PWM1
|
||||
PWM2 = (uint8_t)0x04, //PWM输出通道选择:PWM2
|
||||
} PWM_OutputPin_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM0_OutputPin_P00 = ((uint8_t)0x00), //PWM2输出口选择P26
|
||||
PWM0_OutputPin_P25 = ((uint8_t)0x01) //PWM2输出口选择P14
|
||||
} PWM0_OutputPin_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM1_OutputPin_P01 = ((uint8_t)0x00), //PWM5输出口选择P12
|
||||
PWM1_OutputPin_P26 = ((uint8_t)0x02) //PWM5输出口选择P21
|
||||
} PWM1_OutputPin_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM2_OutputPin_P02 = ((uint8_t)0x00), //PWM2输出口选择P26
|
||||
PWM2_OutputPin_P27 = ((uint8_t)0x04) //PWM2输出口选择P14
|
||||
} PWM2_OutputPin_TypeDef;
|
||||
|
||||
//duty微调控制,以四个PWM2周期为一个循环:
|
||||
typedef enum
|
||||
{
|
||||
PWM_DutyMode0 = ((uint8_t)0x00), //00:四个PWM2输出的duty均为PDT2设定值;(D、D、D、D)
|
||||
PWM_DutyMode1 = ((uint8_t)0x01), //01:第一个PWM2输出的duty为PDT2设定值加1,其余三个PWM2输出的duty均为PDT2设定值;(D+1、D、D、D)
|
||||
PWM_DutyMode2 = ((uint8_t)0x02), //10:第一和第二个PWM2输出的duty为PDT2设定值加1,其余二个PWM2输出的duty均为PDT2设定值;(D+1、D+1、D、D)
|
||||
PWM_DutyMode3 = ((uint8_t)0x03), //11:第一、第二和第三个PWM2输出的duty为PDT2设定值加1,第四个PWM2输出的Duty为PDT2设定值; (D+1、D+1、D+1、D)
|
||||
} PWM_DutyMode_TypeDef;
|
||||
#elif defined (SC92FWxx)
|
||||
typedef enum
|
||||
{
|
||||
PWM0_PRESSEL_FHRC_D1 = (uint8_t)0x00, //PWM0预分频为Fhrc/1
|
||||
PWM0_PRESSEL_FHRC_D2 = (uint8_t)0x10, //PWM0预分频为Fhrc/2
|
||||
PWM0_PRESSEL_FHRC_D4 = (uint8_t)0x20, //PWM0预分频为Fhrc/4
|
||||
PWM0_PRESSEL_FHRC_D8 = (uint8_t)0x30, //PWM0预分频为Fhrc/8
|
||||
PWM1_PRESSEL_FHRC_D1 = (uint8_t)0x01, //PWM1预分频为Fhrc/1
|
||||
PWM1_PRESSEL_FHRC_D2 = (uint8_t)0x11, //PWM1预分频为Fhrc/2
|
||||
PWM1_PRESSEL_FHRC_D4 = (uint8_t)0x21, //PWM1预分频为Fhrc/4
|
||||
PWM1_PRESSEL_FHRC_D8 = (uint8_t)0x31, //PWM1预分频为Fhrc/8
|
||||
} PWM_PresSel_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM000 = (uint8_t)0x00, //PWM输出通道选择: PWM000
|
||||
PWM001 = (uint8_t)0x02, //PWM输出通道选择: PWM001
|
||||
PWM002 = (uint8_t)0x04, //PWM输出通道选择: PWM002
|
||||
PWM003 = (uint8_t)0x06, //PWM输出通道选择: PWM003
|
||||
PWM004 = (uint8_t)0x08, //PWM输出通道选择: PWM004
|
||||
PWM005 = (uint8_t)0x0A, //PWM输出通道选择: PWM005
|
||||
PWM006 = (uint8_t)0x0C, //PWM输出通道选择: PWM006
|
||||
PWM007 = (uint8_t)0x0E, //PWM输出通道选择: PWM007
|
||||
PWM010 = (uint8_t)0x10, //PWM输出通道选择: PWM010
|
||||
PWM011 = (uint8_t)0x12, //PWM输出通道选择: PWM011
|
||||
PWM012 = (uint8_t)0x14, //PWM输出通道选择: PWM012
|
||||
PWM013 = (uint8_t)0x16, //PWM输出通道选择: PWM013
|
||||
PWM014 = (uint8_t)0x18, //PWM输出通道选择: PWM014
|
||||
PWM015 = (uint8_t)0x1A, //PWM输出通道选择: PWM015
|
||||
PWM016 = (uint8_t)0x1C, //PWM输出通道选择: PWM016
|
||||
PWM017 = (uint8_t)0x1E, //PWM输出通道选择: PWM017
|
||||
PWM020 = (uint8_t)0x20, //PWM输出通道选择: PWM020
|
||||
PWM021 = (uint8_t)0x22, //PWM输出通道选择: PWM021
|
||||
PWM022 = (uint8_t)0x24, //PWM输出通道选择: PWM022
|
||||
PWM023 = (uint8_t)0x26, //PWM输出通道选择: PWM023
|
||||
PWM024 = (uint8_t)0x28, //PWM输出通道选择: PWM024
|
||||
PWM025 = (uint8_t)0x2A, //PWM输出通道选择: PWM025
|
||||
PWM026 = (uint8_t)0x2C, //PWM输出通道选择: PWM026
|
||||
PWM027 = (uint8_t)0x2E, //PWM输出通道选择: PWM027
|
||||
PWM030 = (uint8_t)0x30, //PWM输出通道选择: PWM030
|
||||
PWM031 = (uint8_t)0x32, //PWM输出通道选择: PWM031
|
||||
PWM032 = (uint8_t)0x34, //PWM输出通道选择: PWM032
|
||||
PWM033 = (uint8_t)0x36, //PWM输出通道选择: PWM033
|
||||
PWM034 = (uint8_t)0x38, //PWM输出通道选择: PWM034
|
||||
PWM035 = (uint8_t)0x3A, //PWM输出通道选择: PWM025
|
||||
PWM036 = (uint8_t)0x3C, //PWM输出通道选择: PWM026
|
||||
PWM037 = (uint8_t)0x3E, //PWM输出通道选择: PWM027
|
||||
PWM140 = (uint8_t)0x40, //PWM输出通道选择: PWM140
|
||||
PWM141 = (uint8_t)0x42, //PWM输出通道选择: PWM141
|
||||
PWM142 = (uint8_t)0x44, //PWM输出通道选择: PWM142
|
||||
PWM143 = (uint8_t)0x46, //PWM输出通道选择: PWM153
|
||||
PWM150 = (uint8_t)0x48, //PWM输出通道选择: PWM150
|
||||
PWM151 = (uint8_t)0x4A, //PWM输出通道选择: PWM151
|
||||
PWM152 = (uint8_t)0x4C, //PWM输出通道选择: PWM152
|
||||
PWM153 = (uint8_t)0x4E, //PWM输出通道选择: PWM153
|
||||
} PWM_OutputPin_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM0_Type = (uint8_t)0x00, //PWM预分频为Fhrc/1
|
||||
PWM1_Type = (uint8_t)0x01, //PWM预分频为Fhrc/2
|
||||
} PWM_Type_TypeDef;
|
||||
|
||||
#elif defined (SC92L853x) || defined (SC92L753x)
|
||||
//PWM预分频选择
|
||||
typedef enum
|
||||
{
|
||||
PWM_PRESSEL_FHRC_D1 = (uint8_t)0x00, //PWM0预分频为Fhrc/1
|
||||
PWM_PRESSEL_FHRC_D2 = (uint8_t)0x10, //PWM0预分频为Fhrc/2
|
||||
PWM_PRESSEL_FHRC_D4 = (uint8_t)0x20, //PWM0预分频为Fhrc/4
|
||||
PWM_PRESSEL_FHRC_D8 = (uint8_t)0x30, //PWM0预分频为Fhrc/8
|
||||
} PWM_PresSel_TypeDef;
|
||||
|
||||
//PWM输出通道选择
|
||||
typedef enum
|
||||
{
|
||||
PWM0 = (uint8_t)0x00, //PWM输出通道选择: PWM00
|
||||
PWM1 = (uint8_t)0x02, //PWM输出通道选择: PWM01
|
||||
PWM2 = (uint8_t)0x04, //PWM输出通道选择: PWM02
|
||||
PWM3 = (uint8_t)0x06, //PWM输出通道选择: PWM03
|
||||
PWM4 = (uint8_t)0x08, //PWM输出通道选择: PWM04
|
||||
PWM5 = (uint8_t)0x0A, //PWM输出通道选择: PWM05
|
||||
PWM6 = (uint8_t)0x0C, //PWM输出通道选择: PWM06
|
||||
PWM7 = (uint8_t)0x0E, //PWM输出通道选择: PWM07
|
||||
} PWM_OutputPin_TypeDef;
|
||||
|
||||
//PWM对齐模式
|
||||
typedef enum
|
||||
{
|
||||
PWM0_Edge_Aligned_Mode = (uint8_t)0x00, //PWM边沿对齐模式
|
||||
PWM0_Center_Alignment_Mode = (uint8_t)0x01, //PWM中间对齐模式
|
||||
} PWM_Aligned_Mode_TypeDef;
|
||||
|
||||
//PWM故障检测模式
|
||||
typedef enum
|
||||
{
|
||||
PWM0_Latch_Mode = ((uint8_t)0x00), //PWM故障检测模式:锁存模式
|
||||
PWM0_Immediate_Mode = ((uint8_t)0x20) //PWM故障检测模式:立即模式
|
||||
} PWM_FaultDetectionMode_TypeDef;
|
||||
|
||||
//PWM故障检测电平选择
|
||||
typedef enum
|
||||
{
|
||||
PWM0_FaultDetectionVoltage_Low = ((uint8_t)0x00), //PWM故障检测低电平选择
|
||||
PWM0_FaultDetectionVoltage_high = ((uint8_t)0x10) //PWM故障检测高电平选择
|
||||
} PWM_FaultDetectionVoltageSelect_TypeDef;
|
||||
|
||||
//PWM故障检测输入信号滤波时间
|
||||
typedef enum
|
||||
{
|
||||
PWM0_WaveFilteringTime_0us = ((uint8_t)0x00), //PWM故障检测输入信号滤波时间0us
|
||||
PWM0_WaveFilteringTime_1us = ((uint8_t)0x01), //PWM故障检测输入信号滤波时间1us
|
||||
PWM0_WaveFilteringTime_4us = ((uint8_t)0x02), //PWM故障检测输入信号滤波时间4us
|
||||
PWM0_WaveFilteringTime_16us = ((uint8_t)0x03) //PWM故障检测输入信号滤波时间16us
|
||||
} PWM_FaultDetectionWaveFilteringTime_TypeDef;
|
||||
|
||||
//PWM互补模式通道选择
|
||||
typedef enum
|
||||
{
|
||||
PWM0PWM1 = (uint8_t)0x00, //PWM互补模式通道选择:PWM00、PWM01
|
||||
PWM2PWM3 = (uint8_t)0x04, //PWM互补模式通道选择:PWM02、PWM03
|
||||
PWM4PWM5 = (uint8_t)0x08, //PWM互补模式通道选择:PWM04、PWM05
|
||||
PWM6PWM7 = (uint8_t)0x0C //PWM互补模式通道选择:PWM06、PWM07
|
||||
} PWM_ComplementaryOutputPin_TypeDef;
|
||||
|
||||
//PWM源选择
|
||||
typedef enum
|
||||
{
|
||||
PWM0_Type = (uint8_t)0x00, //操作PWM0
|
||||
} PWM_Type_TypeDef;
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM_OUTPUTSTATE_DISABLE = ((uint8_t)0x00), //该PIN脚作为GPIO
|
||||
PWM_OUTPUTSTATE_ENABLE = ((uint8_t)0x01) //该PIN脚作为PWM
|
||||
} PWM_OutputState_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM_POLARITY_NON_INVERT = ((uint8_t)0x00), //PWM输出不反向`
|
||||
PWM_POLARITY_INVERT = ((uint8_t)0x01) //PWM输出反向
|
||||
} PWM_Polarity_TypeDef;
|
||||
|
||||
void PWM_DeInit(void);
|
||||
void PWM_Init(PWM_PresSel_TypeDef PWM_PresSel,
|
||||
uint16_t PWM_Period);
|
||||
void PWM_OutputStateConfig(uint8_t PWM_OutputPin,
|
||||
PWM_OutputState_TypeDef PWM_OutputState);
|
||||
void PWM_PolarityConfig(uint8_t PWM_OutputPin,
|
||||
PWM_Polarity_TypeDef PWM_Polarity);
|
||||
void PWM_IndependentModeConfig(PWM_OutputPin_TypeDef PWM_OutputPin,
|
||||
uint16_t PWM_DutyCycle);
|
||||
void PWM_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority);
|
||||
|
||||
#if defined (SC92FWxx) || defined (SC92L853x) || defined (SC92L753x)
|
||||
#if !defined (SC92FWxx)
|
||||
void PWM_Aligned_Mode_Select(PWM_Aligned_Mode_TypeDef PWM_Aligned_Mode);
|
||||
void PWM_FaultDetectionModeConfigEX(PWM_Type_TypeDef PWM_Type,
|
||||
PWM_FaultDetectionMode_TypeDef FaultDetectionMode,
|
||||
PWM_FaultDetectionVoltageSelect_TypeDef FaultDetectionVoltageSelect,
|
||||
PWM_FaultDetectionWaveFilteringTime_TypeDef FaultDetectionWaveFilteringTime);
|
||||
#endif
|
||||
void PWM_CmdEX(PWM_Type_TypeDef PWM_Type,
|
||||
FunctionalState NewState);
|
||||
FlagStatus PWM_GetFlagStatusEX(PWM_Type_TypeDef PWM_Type);
|
||||
void PWM_ClearFlagEX(PWM_Type_TypeDef PWM_Type);
|
||||
void PWM_IndependentModeConfigEX(PWM_OutputPin_TypeDef PWM_OutputPin, uint16_t PWM_DutyCycle,
|
||||
PWM_OutputState_TypeDef PWM_OutputState);
|
||||
|
||||
void PWM_ITConfigEX(PWM_Type_TypeDef PWM_Type, FunctionalState NewState, PriorityStatus Priority);
|
||||
FlagStatus PWM_GetFaultDetectionFlagStatusEX(PWM_Type_TypeDef PWM_Type);
|
||||
void PWM_ClearFaultDetectionFlagEX(PWM_Type_TypeDef PWM_Type);
|
||||
void PWM_FaultDetectionConfigEX(PWM_Type_TypeDef PWM_Type, FunctionalState NewState);
|
||||
#else
|
||||
void PWM_Cmd(FunctionalState NewState);
|
||||
FlagStatus PWM_GetFlagStatus(void);
|
||||
void PWM_ClearFlag(void);
|
||||
#endif
|
||||
|
||||
/* 复用通道以及死区配置函数 */
|
||||
#if defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined (SC92F83Ax) || defined (SC92F73Ax)|| defined (SC92F84Ax) || defined (SC92F74Ax)|| defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x) || defined (SC92F848x) || defined (SC92F748x) || defined (SC92F848x) || defined (SC92F748x)
|
||||
void PWM_ComplementaryModeConfig( PWM_ComplementaryOutputPin_TypeDef
|
||||
PWM_ComplementaryOutputPin,
|
||||
uint16_t PWM_DutyCycle);
|
||||
void PWM_DeadTimeConfig(uint8_t PWM012_RisingDeadTime, uint8_t PWM345_fallingDeadTime);
|
||||
#endif
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
void PWM_DeadTimeConfigEX(PWM_Type_TypeDef PWM_Type, uint8_t PWM_RisingDeadTime, uint8_t PWM_FallingDeadTime);
|
||||
#endif
|
||||
/* PWM输出通道选择 */
|
||||
#if defined (SC92F8003) || defined (SC92F740x) || defined (SC92F7003)
|
||||
void PWM_PWM2Selection(PWM2_OutputPin_TypeDef PWM2_OutputPin);
|
||||
void PWM_PWM5Selection(PWM5_OutputPin_TypeDef PWM5_OutputPin);
|
||||
#endif
|
||||
#if defined (SC92F732X) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
|
||||
void PWM_PWM0Selection(PWM0_OutputPin_TypeDef PWM0_OutputPin);
|
||||
void PWM_PWM1Selection(PWM1_OutputPin_TypeDef PWM1_OutputPin);
|
||||
void PWM_PWM2Selection(PWM2_OutputPin_TypeDef PWM2_OutputPin);
|
||||
void PMM_DutyModeSelection(PWM_OutputPin_TypeDef PWM_OutputPin, PWM_DutyMode_TypeDef PWM_DutyMode);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_pwr.h
|
||||
// 作者 :
|
||||
// 模块功能 : PWR固件库函数头文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2020/8/18
|
||||
// 版本 : V1.0
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_PWR_H_
|
||||
#define _sc92f_PWR_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
#include <intrins.h>
|
||||
|
||||
void PWR_DeInit(void);
|
||||
void PWR_EnterSTOPMode(void);
|
||||
void PWR_EnterIDLEMode(void);
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,282 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_ssi.h
|
||||
// 作者 :
|
||||
// 模块功能 : SSI固件库函数头文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2020/08/20
|
||||
// 版本 : V1.10001
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_SSI_H_
|
||||
#define _sc92f_SSI_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
#if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)||defined (SC92F84Ax) || defined (SC92F74Ax)\
|
||||
|| defined (SC92F83Ax) || defined (SC92F73Ax) || defined (SC92F7003) || defined(SC92F8003) || defined (SC92F740x) || defined (SC92F827X)\
|
||||
|| defined (SC92F837X) || defined (SC92FWxx) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x) || defined (SC92F848x) || defined (SC92F748x)\
|
||||
|| defined (SC92F859x) || defined (SC92F859x)
|
||||
typedef enum
|
||||
{
|
||||
SPI_FIRSTBIT_MSB = (uint8_t)0x00, //MSB优先发送
|
||||
SPI_FIRSTBIT_LSB = (uint8_t)0x04 //LSB优先发送
|
||||
} SPI_FirstBit_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPI_BAUDRATEPRESCALER_4 = (uint8_t)0x00, //SPI时钟速率为系统时钟除以4
|
||||
SPI_BAUDRATEPRESCALER_8 = (uint8_t)0x01, //SPI时钟速率为系统时钟除以8
|
||||
SPI_BAUDRATEPRESCALER_16 = (uint8_t)0x02, //SPI时钟速率为系统时钟除以16
|
||||
SPI_BAUDRATEPRESCALER_32 = (uint8_t)0x03, //SPI时钟速率为系统时钟除以32
|
||||
SPI_BAUDRATEPRESCALER_64 = (uint8_t)0x04, //SPI时钟速率为系统时钟除以64
|
||||
SPI_BAUDRATEPRESCALER_128 = (uint8_t)0x05, //SPI时钟速率为系统时钟除以128
|
||||
SPI_BAUDRATEPRESCALER_256 = (uint8_t)0x06, //SPI时钟速率为系统时钟除以256
|
||||
SPI_BAUDRATEPRESCALER_512 = (uint8_t)0x07 //SPI时钟速率为系统时钟除以512
|
||||
} SPI_BaudRatePrescaler_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPI_MODE_MASTER = (uint8_t)0x20, //SPI为主设备
|
||||
SPI_MODE_SLAVE = (uint8_t)0x00 //SPI为从设备
|
||||
} SPI_Mode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPI_CLOCKPOLARITY_LOW = (uint8_t)0x00, //SCK在空闲状态下为低电平
|
||||
SPI_CLOCKPOLARITY_HIGH = (uint8_t)0x10 //SCK在空闲状态下为高电平
|
||||
} SPI_ClockPolarity_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPI_CLOCKPHASE_1EDGE = (uint8_t)0x00, //SCK的第一沿采集数据
|
||||
SPI_CLOCKPHASE_2EDGE = (uint8_t)0x08 //SCK的第二沿采集数据
|
||||
} SPI_ClockPhase_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
//作为从机
|
||||
TWI_SlaveBusy = 0x00,
|
||||
TWI_SlaveReceivedaAddress = 0x01,
|
||||
TWI_SlaveReceivedaData = 0x02,
|
||||
TWI_SlaveSendData = 0x03,
|
||||
TWI_SlaveReceivedaUACK = 0x04,
|
||||
TWI_SlaveDisableACK = 0x05,
|
||||
TWI_SlaveAddressError = 0x06,
|
||||
|
||||
}SSI_TWIState_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPI_TXE_DISINT = (uint8_t)0x00, //TXE为1时不允许发送中断
|
||||
SPI_TXE_ENINT = (uint8_t)0x01 //TXE为1时允许发送中断
|
||||
} SPI_TXE_INT_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UART1_Mode_10B = 0X00,//UART1设置为10位模式
|
||||
UART1_Mode_11B = 0X80 //UART1设置为11位模式
|
||||
} UART1_Mode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UART1_RX_ENABLE = 0X10,//UART1允许接收
|
||||
UART1_RX_DISABLE = 0X00 //UART1禁止接收
|
||||
} UART1_RX_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPI_FLAG_SPIF = (uint8_t)0x80, //SPI数据传送标志位SPIF
|
||||
SPI_FLAG_WCOL = (uint8_t)0x50, //SPI写入冲突标志位WCOL
|
||||
SPI_FLAG_TXE = (uint8_t)0x08, //SPI发送缓存器空标志TXE
|
||||
TWI_FLAG_TWIF = (uint8_t)0x40, //TWI中断标志位TWIF
|
||||
TWI_FLAG_GCA = (uint8_t)0x10, //TWI通用地址响应标志位GCA
|
||||
UART1_FLAG_TI = (uint8_t)0x02, //UART1发送中断标志位TI
|
||||
UART1_FLAG_RI = (uint8_t)0x01 //UART1接收中断标志位RI
|
||||
} SSI_Flag_TypeDef;
|
||||
|
||||
#if defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x)
|
||||
typedef enum
|
||||
{
|
||||
SSI_PinSelection_P10P27P26 = (uint8_t)0x00, //SSI共用引脚为P10,P27,P26
|
||||
SSI_PinSelection_P21P22P23 = (uint8_t)0x20, //SSI共用引脚为P21,P22,P23
|
||||
SSI_PinSelection_URATP27 = (uint8_t)0x00, //SSIUART引脚为P27,无RX
|
||||
SSI_PinSelection_URATP22 = (uint8_t)0x20 //SSIUART引脚为P22,无RX
|
||||
} SSI_PinSelection_TypeDef;
|
||||
void SSI_PinSelection(SSI_PinSelection_TypeDef
|
||||
PinSeletion);
|
||||
#endif
|
||||
|
||||
void SSI_DeInit(void);
|
||||
void SSI_SPI_Init(SPI_FirstBit_TypeDef FirstBit,
|
||||
SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,
|
||||
SPI_Mode_TypeDef Mode,
|
||||
SPI_ClockPolarity_TypeDef ClockPolarity,
|
||||
SPI_ClockPhase_TypeDef ClockPhase,
|
||||
SPI_TXE_INT_TypeDef SPI_TXE_INT);
|
||||
void SSI_SPI_Cmd(FunctionalState NewState);
|
||||
void SSI_SPI_SendData(uint8_t Data);
|
||||
uint8_t SSI_SPI_ReceiveData(void);
|
||||
void SSI_TWI_Init(uint8_t TWI_Address);
|
||||
void SSI_TWI_AcknowledgeConfig(FunctionalState NewState);
|
||||
void SSI_TWI_GeneralCallCmd(FunctionalState NewState);
|
||||
FlagStatus SSI_GetTWIStatus(SSI_TWIState_TypeDef SSI_TWIState);
|
||||
FlagStatus SSI_GetFlagStatus(SSI_Flag_TypeDef SSI_FLAG);
|
||||
void SSI_TWI_Cmd(FunctionalState NewState);
|
||||
void SSI_TWI_SendData(uint8_t Data);
|
||||
uint8_t SSI_TWI_ReceiveData(void);
|
||||
void SSI_UART1_Init(uint32_t UART1Fsys,
|
||||
uint32_t BaudRate, UART1_Mode_TypeDef Mode,
|
||||
UART1_RX_TypeDef RxMode);
|
||||
void SSI_UART1_SendData8(uint8_t Data);
|
||||
uint8_t SSI_UART1_ReceiveData8(void);
|
||||
void SSI_UART1_SendData9(uint16_t Data);
|
||||
uint16_t SSI_UART1_ReceiveData9(void);
|
||||
void SSI_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority);
|
||||
void SSI_ClearFlag(SSI_Flag_TypeDef SSI_FLAG);
|
||||
#endif
|
||||
|
||||
#if defined (SC92F742x) || defined (SC92F7490)
|
||||
typedef enum
|
||||
{
|
||||
SPI_FIRSTBIT_MSB = (uint8_t)0x00, //MSB优先发送
|
||||
SPI_FIRSTBIT_LSB = (uint8_t)0x04 //LSB优先发送
|
||||
} SPI_FirstBit_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPI_BAUDRATEPRESCALER_1 = (uint8_t)0x00, //SPI时钟速率为Fsys/1
|
||||
SPI_BAUDRATEPRESCALER_2 = (uint8_t)0x01, //SPI时钟速率为Fsys/2
|
||||
SPI_BAUDRATEPRESCALER_4 = (uint8_t)0x02, //SPI时钟速率为Fsys/4
|
||||
SPI_BAUDRATEPRESCALER_8 = (uint8_t)0x03, //SPI时钟速率为Fsys/8
|
||||
SPI_BAUDRATEPRESCALER_16 = (uint8_t)0x04, //SPI时钟速率为Fsys/16
|
||||
SPI_BAUDRATEPRESCALER_32 = (uint8_t)0x05, //SPI时钟速率为Fsys/32
|
||||
SPI_BAUDRATEPRESCALER_64 = (uint8_t)0x06, //SPI时钟速率为Fsys/64
|
||||
SPI_BAUDRATEPRESCALER_128 = (uint8_t)0x07 //SPI时钟速率为Fsys/128
|
||||
} SPI_BaudRatePrescaler_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPI_MODE_MASTER = (uint8_t)0x20, //SPI为主设备
|
||||
SPI_MODE_SLAVE = (uint8_t)0x00 //SPI为从设备
|
||||
} SPI_Mode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPI_CLOCKPOLARITY_LOW = (uint8_t)0x00, //SCK在空闲状态下为低电平
|
||||
SPI_CLOCKPOLARITY_HIGH = (uint8_t)0x10 //SCK在空闲状态下为高电平
|
||||
} SPI_ClockPolarity_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPI_CLOCKPHASE_1EDGE = (uint8_t)0x00, //SCK的第一沿采集数据
|
||||
SPI_CLOCKPHASE_2EDGE = (uint8_t)0x08 //SCK的第二沿采集数据
|
||||
} SPI_ClockPhase_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPI_TXE_DISINT = (uint8_t)0x00, //TXE为0时不允许发送中断
|
||||
SPI_TXE_ENINT = (uint8_t)0x01 //TXE为1时允许发送中断
|
||||
} SPI_TXE_INT_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UART_Mode_10B = 0X00, //UART设置为10位模式
|
||||
UART_Mode_11B = 0X80 //UART设置为11位模式
|
||||
} UART_Mode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UART_RX_ENABLE = 0X10, //UART允许接收
|
||||
UART_RX_DISABLE = 0X00 //UART禁止接收
|
||||
} UART_RX_TypeDef;
|
||||
|
||||
typedef enum{
|
||||
//作为从机
|
||||
TWI_SlaveBusy = 0x00,
|
||||
TWI_SlaveReceivedaAddress = 0x01,
|
||||
TWI_SlaveReceivedaData = 0x02,
|
||||
TWI_SlaveSendData = 0x03,
|
||||
TWI_SlaveReceivedaUACK = 0x04,
|
||||
TWI_SlaveDisableACK = 0x05,
|
||||
TWI_SlaveAddressError = 0x06,
|
||||
|
||||
}SSI_TWIState_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPI_FLAG_SPIF = (uint8_t)0x80, //SPI数据传送标志位SPIF
|
||||
SPI_FLAG_WCOL = (uint8_t)0x50, //SPI写入冲突标志位WCOL
|
||||
SPI_FLAG_TXE = (uint8_t)0x08, //SPI发送缓存器空标志TXE
|
||||
TWI_FLAG_TWIF = (uint8_t)0x40, //TWI中断标志位TWIF
|
||||
TWI_FLAG_GCA = (uint8_t)0x10, //TWI通用地址响应标志位GCA
|
||||
UART_FLAG_TI = (uint8_t)0x02, //UART发送中断标志位TI
|
||||
UART_FLAG_RI = (uint8_t)0x01 //UART接收中断标志位RI
|
||||
} SSI_Flag_TypeDef;
|
||||
|
||||
void SSI0_DeInit(void);
|
||||
void SSI0_SPI_Init(SPI_FirstBit_TypeDef FirstBit,
|
||||
SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,
|
||||
SPI_Mode_TypeDef Mode,
|
||||
SPI_ClockPolarity_TypeDef ClockPolarity,
|
||||
SPI_ClockPhase_TypeDef ClockPhase,
|
||||
SPI_TXE_INT_TypeDef SPI_TXE_INT);
|
||||
void SSI0_SPI_Cmd(FunctionalState NewState);
|
||||
void SSI0_SPI_SendData(uint8_t Data);
|
||||
uint8_t SSI0_SPI_ReceiveData(void);
|
||||
void SSI0_TWI_Init(uint8_t TWI_Address);
|
||||
void SSI0_TWI_AcknowledgeConfig(FunctionalState NewState);
|
||||
void SSI0_TWI_GeneralCallCmd(FunctionalState NewState);
|
||||
FlagStatus SSI0_GetTWIStatus(SSI_TWIState_TypeDef SSI_TWIState);
|
||||
void SSI0_TWI_Cmd(FunctionalState NewState);
|
||||
void SSI0_TWI_SendData(uint8_t Data);
|
||||
uint8_t SSI0_TWI_ReceiveData(void);
|
||||
void SSI0_UART_Init(uint32_t UARTFsys,
|
||||
uint32_t BaudRate, UART_Mode_TypeDef Mode,
|
||||
UART_RX_TypeDef RxMode);
|
||||
void SSI0_UART_SendData8(uint8_t Data);
|
||||
uint8_t SSI0_UART_ReceiveData8(void);
|
||||
void SSI0_UART_SendData9(uint16_t Data);
|
||||
uint16_t SSI0_UART_ReceiveData9(void);
|
||||
void SSI0_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority);
|
||||
FlagStatus SSI0_GetFlagStatus(SSI_Flag_TypeDef SSI_FLAG);
|
||||
void SSI0_ClearFlag(SSI_Flag_TypeDef SSI_FLAG);
|
||||
|
||||
void SSI1_DeInit(void);
|
||||
void SSI1_SPI_Init(SPI_FirstBit_TypeDef FirstBit,
|
||||
SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,
|
||||
SPI_Mode_TypeDef Mode,
|
||||
SPI_ClockPolarity_TypeDef ClockPolarity,
|
||||
SPI_ClockPhase_TypeDef ClockPhase,
|
||||
SPI_TXE_INT_TypeDef SPI_TXE_INT);
|
||||
void SSI1_SPI_Cmd(FunctionalState NewState);
|
||||
void SSI1_SPI_SendData(uint8_t Data);
|
||||
uint8_t SSI1_SPI_ReceiveData(void);
|
||||
void SSI1_TWI_Init(uint8_t TWI_Address);
|
||||
void SSI1_TWI_AcknowledgeConfig(FunctionalState NewState);
|
||||
void SSI1_TWI_GeneralCallCmd(FunctionalState NewState);
|
||||
FlagStatus SSI1_GetTWIStatus(SSI_TWIState_TypeDef SSI_TWIState);
|
||||
void SSI1_TWI_Cmd(FunctionalState NewState);
|
||||
void SSI1_TWI_SendData(uint8_t Data);
|
||||
uint8_t SSI1_TWI_ReceiveData(void);
|
||||
void SSI1_UART_Init(uint32_t UARTFsys,
|
||||
uint32_t BaudRate, UART_Mode_TypeDef Mode,
|
||||
UART_RX_TypeDef RxMode);
|
||||
void SSI1_UART_SendData8(uint8_t Data);
|
||||
uint8_t SSI1_UART_ReceiveData8(void);
|
||||
void SSI1_UART_SendData9(uint16_t Data);
|
||||
uint16_t SSI1_UART_ReceiveData9(void);
|
||||
void SSI1_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority);
|
||||
FlagStatus SSI1_GetFlagStatus(SSI_Flag_TypeDef
|
||||
SSI_FLAG);
|
||||
void SSI1_ClearFlag(SSI_Flag_TypeDef SSI_FLAG);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,139 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92f_tiemr0.h
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: TIMER0固件库函数C文件
|
||||
// 最后更正日期: 2022年3月23日
|
||||
// 版本: V1.10001
|
||||
// 说明:
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_TIMER0_H_
|
||||
#define _sc92f_TIMER0_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM0_PRESSEL_FSYS_D12 = ((uint8_t)0x00), //TIMER0计数源来自系统时钟12分频
|
||||
TIM0_PRESSEL_FSYS_D1 = ((uint8_t)0x01) //TIMER0计数源来自系统时钟
|
||||
} TIM0_PresSel_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM0_MODE_TIMER = ((uint8_t)0x01), //TIMER0做定时器
|
||||
TIM0_MODE_COUNTER = ((uint8_t)0x02) //TIMER0做计数器
|
||||
} TIM0_CountMode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM0_WORK_MODE0 = ((uint8_t)0x00), //TIMER0选择工作模式0
|
||||
TIM0_WORK_MODE1 = ((uint8_t)0x01), //TIMER0选择工作模式1
|
||||
TIM0_WORK_MODE2 = ((uint8_t)0x02), //TIMER0选择工作模式2
|
||||
TIM0_WORK_MODE3 = ((uint8_t)0x03) //TIMER0选择工作模式3
|
||||
} TIM0_WorkMode_TypeDef;
|
||||
|
||||
/************************宏函数************************/
|
||||
/**************************************************
|
||||
*函数名称:void TIM0_Mode0SetReloadCounter(uint16_t TIM0_SetCounter)
|
||||
*函数功能:TIMER0工作模式0初值重载函数
|
||||
*入口参数:
|
||||
uint16_t:TIM0_SetCounter:配置TIMER0重载值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
#define TIM0_Mode0SetReloadCounter(TIM0_SetCounter) \
|
||||
do{ \
|
||||
TL0 = (uint8_t)TIM0_SetCounter; \
|
||||
TH0 = (TIM0_SetCounter >> 5); \
|
||||
}while(0)
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM0_Mode1SetReloadCounter(uint16_t TIM0_SetCounter)
|
||||
*函数功能:TIMER0工作模式1初值重载函数
|
||||
*入口参数:
|
||||
uint16_t:TIM0_SetCounter:配置TIMER0重载值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
#define TIM0_Mode1SetReloadCounter(TIM0_SetCounter) \
|
||||
do{ \
|
||||
TL0 = (uint8_t)TIM0_SetCounter; \
|
||||
TH0 = (TIM0_SetCounter >> 8); \
|
||||
}while(0)
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM0_SetTH0Counter(uint8_t TIM0_SetCounter)
|
||||
*函数功能:TIMER0 TH0赋值函数
|
||||
*入口参数:
|
||||
uint8_t:TIM0_SetCounter:配置TH0
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
#define TIM0_SetTH0Counter(TIM0_SetCounter) (TH0 = TIM0_SetCounter)
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM0_SetTL0Counter(uint8_t TIM0_SetCounter)
|
||||
*函数功能:TIMER0 TL0赋值函数
|
||||
*入口参数:
|
||||
uint8_t:TIM0_SetCounter:配置TL0
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
#define TIM0_SetTL0Counter(TIM0_SetCounter) (TL0 = TIM0_SetCounter)
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM0_Cmd(FunctionalState NewState)
|
||||
*函数功能:TIMER0功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define TIM0_Cmd(NewState) (TR0 = (bit)NewState)
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus TIM0_GetFlagStatus(void)
|
||||
*函数功能:获得TIMER0中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
FlagStatus:TIMER0中断标志状态
|
||||
*****************************************************/
|
||||
#define TIM0_GetFlagStatus() (TF0)
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM0_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:TIMER1中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define TIM0_ITConfig(NewState,Priority) \
|
||||
do{ \
|
||||
ET0 = (bit)NewState; \
|
||||
IPT0 = (bit)Priority; \
|
||||
}while(0)
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM0_ClearFlag(void)
|
||||
*函数功能:清除TIMER0中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define TIM0_ClearFlag() (TF0 = 0)
|
||||
|
||||
void TIM0_DeInit(void);
|
||||
void TIM0_TimeBaseInit(TIM0_PresSel_TypeDef
|
||||
TIM0_PrescalerSelection,
|
||||
TIM0_CountMode_TypeDef TIM0_CountMode);
|
||||
void TIM0_WorkMode0Config(uint16_t
|
||||
TIM0_SetCounter);
|
||||
void TIM0_WorkMode1Config(uint16_t
|
||||
TIM0_SetCounter);
|
||||
void TIM0_WorkMode2Config(uint8_t
|
||||
TIM0_SetCounter);
|
||||
void TIM0_WorkMode3Config(uint8_t TIM0_SetCounter,
|
||||
uint8_t TIM1_SetCounter);
|
||||
void TIM0_WorkModeConfig(TIM0_WorkMode_TypeDef
|
||||
TIM0_WorkMode, uint16_t TIM0_SetCounter1,
|
||||
uint16_t TIM0_SetCounter2);
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_timer1.h
|
||||
// 作者 :
|
||||
// 模块功能 : TIMER1固件库函数头文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2020/8/18
|
||||
// 版本 : V1.0
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_TIMER1_H_
|
||||
#define _sc92f_TIMER1_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM1_PRESSEL_FSYS_D12 = ((uint8_t)0x00), //TIMER1计数源来自系统时钟12分频
|
||||
TIM1_PRESSEL_FSYS_D1 = ((uint8_t)0x01) //TIMER1计数源来自系统时钟
|
||||
} TIM1_PresSel_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM1_MODE_TIMER = ((uint8_t)0x01), //TIMER1做定时器
|
||||
TIM1_MODE_COUNTER = ((uint8_t)0x02) //TIMER1做计数器
|
||||
} TIM1_CountMode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM1_WORK_MODE0 = ((uint8_t)0x00), //TIMER1选择工作模式0
|
||||
TIM1_WORK_MODE1 = ((uint8_t)0x01), //TIMER1选择工作模式1
|
||||
TIM1_WORK_MODE2 = ((uint8_t)0x02), //TIMER1选择工作模式2
|
||||
} TIM1_WorkMode_TypeDef;
|
||||
|
||||
/************************宏函数************************/
|
||||
/**************************************************
|
||||
*函数名称:void TIM1_Mode0SetReloadCounter(uint16_t TIM1_SetCounter)
|
||||
*函数功能:TIMER1工作模式0初值重载函数
|
||||
*入口参数:
|
||||
uint16_t:TIM1_SetCounter:配置TIMER0重载值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
#define TIM1_Mode0SetReloadCounter(TIM1_SetCounter) \
|
||||
do{ \
|
||||
TL1 = (uint8_t)TIM1_SetCounter; \
|
||||
TH1 = (TIM1_SetCounter >> 5); \
|
||||
}while(0)
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM1_Mode1SetReloadCounter(uint16_t TIM1_SetCounter)
|
||||
*函数功能:TIMER0工作模式1初值重载函数
|
||||
*入口参数:
|
||||
uint16_t:TIM1_SetCounter:配置TIMER0重载值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
#define TIM1_Mode1SetReloadCounter(TIM1_SetCounter) \
|
||||
do{ \
|
||||
TL1 = (uint8_t)TIM1_SetCounter; \
|
||||
TH1 = (TIM1_SetCounter >> 8); \
|
||||
}while(0)
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM1_Cmd(FunctionalState NewState)
|
||||
*函数功能:TIMER1功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define TIM1_Cmd(NewState) (TR1 = (bit)NewState)
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM1_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:TIMER1中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define TIM1_ITConfig(NewState,Priority) \
|
||||
do{ \
|
||||
ET1 = (bit)NewState; \
|
||||
IPT1 = (bit)Priority; \
|
||||
}while(0)
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus TIM1_GetFlagStatus(void)
|
||||
*函数功能:获得TIMER1中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
FlagStatus:TIMER1中断标志状态
|
||||
*****************************************************/
|
||||
#define TIM1_GetFlagStatus() (TF1)
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM1_ClearFlag(void)
|
||||
*函数功能:清除TIMER1中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define TIM1_ClearFlag() (TF1 = 0)
|
||||
|
||||
void TIM1_DeInit(void);
|
||||
void TIM1_TimeBaseInit(TIM1_PresSel_TypeDef
|
||||
TIM1_PrescalerSelection,
|
||||
TIM1_CountMode_TypeDef TIM1_CountMode);
|
||||
void TIM1_WorkMode0Config(uint16_t TIM1_SetCounter);
|
||||
void TIM1_WorkMode1Config(uint16_t TIM1_SetCounter);
|
||||
void TIM1_WorkMode2Config(uint8_t TIM1_SetCounter);
|
||||
void TIM1_WorkModeConfig(TIM1_WorkMode_TypeDef TIM1_WorkMode,
|
||||
uint16_t TIM1_SetCounter);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92f_timer2.h
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: TIMER2固件库函数头文件
|
||||
// 最后更正日期: 2022年3月23日
|
||||
// 版本: V1.10003
|
||||
// 说明: 该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_TIMER2_H_
|
||||
#define _sc92f_TIMER2_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM2_PRESSEL_FSYS_D12 = ((uint8_t)0x00), //TIMER2计数源来自系统时钟12分频
|
||||
TIM2_PRESSEL_FSYS_D1 = ((uint8_t)0x01) //TIMER2计数源来自系统时钟
|
||||
} TIM2_PresSel_TypeDef;
|
||||
|
||||
#if defined (SC92F730x) || defined (SC92F827X) || defined (SC92F837X) || defined (SC92F725X) || defined (SC92F735X)
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM2_MODE_TIMER = ((uint8_t)0x01), //TIMER2做定时器
|
||||
} TIM2_CountMode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM2_COUNTDIRECTION_UP = ((uint8_t)0x00), //向上计数模式
|
||||
} TIM2_CountDirection_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM2_FLAG_TF2 = (uint8_t)0x80, //中断标志位TF2,计数溢出
|
||||
} TIM2_Flag_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM2_WORK_MODE1 = ((uint8_t)0x00), //TIMER2选择工作模式1
|
||||
} TIM2_WorkMode_TypeDef;
|
||||
|
||||
#else
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM2_MODE_TIMER = ((uint8_t)0x01), //TIMER2做定时器
|
||||
TIM2_MODE_COUNTER = ((uint8_t)0x02) //TIMER2做计数器
|
||||
} TIM2_CountMode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM2_COUNTDIRECTION_UP = ((uint8_t)0x00), //向上计数模式
|
||||
TIM2_COUNTDIRECTION_DOWN_UP = ((uint8_t)0x10) //向上/向下计数模式
|
||||
} TIM2_CountDirection_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM2_FLAG_TF2 = (uint8_t)0x80, //中断标志位TF2,计数溢出
|
||||
TIM2_FLAG_EXF2 = (uint8_t)0x40 //中断标志位EXF2,外部触发
|
||||
} TIM2_Flag_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM2_WORK_MODE0 = ((uint8_t)0x00), //TIMER2选择工作模式0
|
||||
TIM2_WORK_MODE1 = ((uint8_t)0x01), //TIMER2选择工作模式1
|
||||
TIM2_WORK_MODE3 = ((uint8_t)0x03), //TIMER2选择工作模式3
|
||||
} TIM2_WorkMode_TypeDef;
|
||||
|
||||
#endif
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void BTM_ClearFlag(void)
|
||||
*函数功能:清除BTM中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define BTM_ClearFlag() CLEAR_BIT(BTMCON,0x40)
|
||||
|
||||
void TIM2_DeInit();
|
||||
void TIM2_PrescalerSelection(TIM2_PresSel_TypeDef TIM2_PrescalerSelection);
|
||||
void TIM2_TimeBaseInit(TIM2_PresSel_TypeDef TIM2_PrescalerSelection,
|
||||
TIM2_CountMode_TypeDef TIM2_CountMode,
|
||||
TIM2_CountDirection_TypeDef TIM2_CountDirection);
|
||||
void TIM2_WorkMode0Config(uint16_t TIM2_SetCounter);
|
||||
void TIM2_WorkMode1Config(uint16_t TIM2_SetCounter);
|
||||
void TIM2_WorkMode3Config(uint16_t TIM2_SetCounter);
|
||||
void TIM2_WorkModeConfig(TIM2_WorkMode_TypeDef TIM2_WorkMode, uint16_t TIM2_SetCounter);
|
||||
void TIM2_SetEXEN2(FunctionalState NewState);
|
||||
void TIM2_Cmd(FunctionalState NewState);
|
||||
void TIM2_ITConfig(FunctionalState NewState, PriorityStatus Priority);
|
||||
FlagStatus TIM2_GetFlagStatus(TIM2_Flag_TypeDef TIM2_Flag);
|
||||
void TIM2_ClearFlag(TIM2_Flag_TypeDef TIM2_Flag);
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_timer3.h
|
||||
// 作者 :
|
||||
// 模块功能 : TIMER3固件库函数头文件
|
||||
// 最后更正日期: 2022/01/18
|
||||
// 版本 : V1.10000
|
||||
// 说明 :该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_TIMER3_H_
|
||||
#define _sc92f_TIMER3_H_
|
||||
|
||||
#include "sc92f.H"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM3_PRESSEL_FSYS_D12 = ((uint8_t)0x00), //TIMER3计数源来自系统时钟12分频
|
||||
TIM3_PRESSEL_FSYS_D1 = ((uint8_t)0x01) //TIMER3计数源来自系统时钟
|
||||
} TIM3_PresSel_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM3_MODE_TIMER = ((uint8_t)0x01), //TIMER3做定时器
|
||||
TIM3_MODE_COUNTER = ((uint8_t)0x02) //TIMER3做计数器
|
||||
} TIM3_CountMode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM3_COUNTDIRECTION_UP = ((uint8_t)0x00), //向上计数模式
|
||||
TIM3_COUNTDIRECTION_DOWN_UP = ((uint8_t)0x10) //向上/向下计数模式
|
||||
} TIM3_CountDirection_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM3_FLAG_TF3 = (uint8_t)0x80, //中断标志位TF3
|
||||
TIM3_FLAG_EXF3 = (uint8_t)0x40 //中断标志位EXF3
|
||||
} TIM3_Flag_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM3_WORK_MODE0 = ((uint8_t)0x00), //TIMER3选择工作模式0
|
||||
TIM3_WORK_MODE1 = ((uint8_t)0x01), //TIMER3选择工作模式1
|
||||
TIM3_WORK_MODE3 = ((uint8_t)0x03), //TIMER3选择工作模式3
|
||||
} TIM3_WorkMode_TypeDef;
|
||||
|
||||
void TIM3_DeInit();
|
||||
void TIM3_PrescalerSelection(TIM3_PresSel_TypeDef TIM3_PrescalerSelection);
|
||||
void TIM3_WorkMode1Config(uint16_t TIM3_SetCounter);
|
||||
void TIM3_Cmd(FunctionalState NewState);
|
||||
void TIM3_ITConfig(FunctionalState NewState, PriorityStatus Priority);
|
||||
FlagStatus TIM3_GetFlagStatus(TIM3_Flag_TypeDef TIM3_Flag);
|
||||
void TIM3_ClearFlag(TIM3_Flag_TypeDef TIM3_Flag);
|
||||
|
||||
void TIM3_TimeBaseInit(TIM3_CountMode_TypeDef TIM3_CountMode,
|
||||
TIM3_CountDirection_TypeDef TIM3_CountDirection);
|
||||
void TIM3_WorkMode0Config(uint16_t TIM3_SetCounter);
|
||||
void TIM3_WorkMode3Config(uint16_t TIM3_SetCounter);
|
||||
void TIM3_WorkModeConfig(TIM3_WorkMode_TypeDef TIM3_WorkMode, uint16_t TIM3_SetCounter);
|
||||
void TIM3_SetEXEN3(FunctionalState NewState);
|
||||
|
||||
#endif
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_timerx.h
|
||||
// 作者 :
|
||||
// 模块功能 : TIMER4固件库函数头文件
|
||||
// 最后更正日期: 2021/01/18
|
||||
// 版本 : V1.10000
|
||||
// 说明 :该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_TIMER4_H_
|
||||
#define _sc92f_TIMER4_H_
|
||||
|
||||
#include "sc92f.H"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM4_PRESSEL_FSYS_D12 = ((uint8_t)0x00), //TIMER4计数源来自系统时钟12分频
|
||||
TIM4_PRESSEL_FSYS_D1 = ((uint8_t)0x01) //TIMER4计数源来自系统时钟
|
||||
} TIM4_PresSel_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM4_MODE_TIMER = ((uint8_t)0x01), //TIMER2做定时器
|
||||
TIM4_MODE_COUNTER = ((uint8_t)0x02) //TIMER2做计数器
|
||||
} TIM4_CountMode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM4_COUNTDIRECTION_UP = ((uint8_t)0x00), //向上计数模式
|
||||
TIM4_COUNTDIRECTION_DOWN_UP = ((uint8_t)0x10) //向上/向下计数模式
|
||||
} TIM4_CountDirection_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM4_FLAG_TF4 = (uint8_t)0x80, //中断标志位TF4
|
||||
TIM4_FLAG_EXF4 = (uint8_t)0x40 //中断标志位EXF4
|
||||
} TIM4_Flag_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TIM4_WORK_MODE0 = ((uint8_t)0x00), //TIMER4选择工作模式0
|
||||
TIM4_WORK_MODE1 = ((uint8_t)0x01), //TIMER4选择工作模式1
|
||||
TIM4_WORK_MODE3 = ((uint8_t)0x03), //TIMER4选择工作模式3
|
||||
} TIM4_WorkMode_TypeDef;
|
||||
|
||||
void TIM4_DeInit();
|
||||
void TIM4_PrescalerSelection(TIM4_PresSel_TypeDef TIM4_PrescalerSelection);
|
||||
void TIM4_WorkMode1Config(uint16_t TIM4_SetCounter);
|
||||
void TIM4_Cmd(FunctionalState NewState);
|
||||
void TIM4_ITConfig(FunctionalState NewState, PriorityStatus Priority);
|
||||
FlagStatus TIM4_GetFlagStatus(TIM4_Flag_TypeDef TIM4_Flag);
|
||||
void TIM4_ClearFlag(TIM4_Flag_TypeDef TIM4_Flag);
|
||||
|
||||
void TIM4_TimeBaseInit(TIM4_CountMode_TypeDef TIM4_CountMode,
|
||||
TIM4_CountDirection_TypeDef TIM4_CountDirection);
|
||||
void TIM4_WorkMode0Config(uint16_t TIM4_SetCounter);
|
||||
void TIM4_WorkMode3Config(uint16_t TIM4_SetCounter);
|
||||
void TIM4_WorkModeConfig(TIM4_WorkMode_TypeDef TIM4_WorkMode, uint16_t TIM4_SetCounter);
|
||||
void TIM4_SetEXEN4(FunctionalState NewState);
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_uart0.h
|
||||
// 作者 :
|
||||
// 模块功能 : UART0固件库函数头文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022/01/24
|
||||
// 版本 : V1.10002
|
||||
// 说明 :本文件仅适用于赛元92F/93F/92L系列单片机
|
||||
//*************************************************************
|
||||
#ifndef _sc92f_UART0_H_
|
||||
#define _sc92f_UART0_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
#if !defined (SC92F742x) && !defined (SC92F827X) && !defined (SC92F837X)
|
||||
|
||||
#define UART0_BaudRate_FsysDIV12 0X00 //仅模式0可用,串行端口在系统时钟的1/12下运行
|
||||
#define UART0_BaudRate_FsysDIV4 0X01 //仅模式0可用,串行端口在系统时钟的1/4下运行
|
||||
#define UART0_BaudRate_FsysDIV64 0X00 //仅模式1可用,串行端口在系统时钟的1/64下运行
|
||||
#define UART0_BaudRate_FsysDIV32 0X01 //仅模式1可用,串行端口在系统时钟的1/32下运行
|
||||
#if defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x)
|
||||
typedef enum
|
||||
{
|
||||
UART0_PinSelection_P15P16 = (uint8_t)0x00, //UART0引脚为P15,P16
|
||||
UART0_PinSelection_P15 = (uint8_t)0x00, //UART0引脚为P15,P16,无RX
|
||||
UART0_PinSelection_P11P20 = (uint8_t)0x10, //UART0引脚为P11,P20
|
||||
UART0_PinSelection_P20 = (uint8_t)0x10, //UART0引脚为P20,无RX
|
||||
} UART0_PinSelection_TypeDef;
|
||||
#endif
|
||||
|
||||
#if defined(SC92F725X) || defined(SC92F735X)|| defined (SC92F730x ) || defined (SC92F732X) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
|
||||
typedef enum
|
||||
{
|
||||
UART0_CLOCK_TIMER1 = (uint8_t)0X02, //TIMER1做波特率发生器
|
||||
UART0_CLOCK_TIMER1_FreqMcl2 = (uint8_t)0X82, //TIMER1做波特率发生器,且二倍频
|
||||
UART0_CLOCK_TIMER1_DIV6 = (uint8_t)0X80, //TIMER1做波特率发生器,且6分频
|
||||
UART0_CLOCK_TIMER1_DIV12 = (uint8_t)0X00, //TIMER1做波特率发生器,且12分频
|
||||
UART0_CLOCK_TIMER2 = (uint8_t)0X34, //TIMER2做波特率发生器
|
||||
UART0_CLOCK_TIMER2_DIV12 = (uint8_t)0X30, //定时器2 12分频,模式1和3通用
|
||||
}UART0_Clock_Typedef;
|
||||
#elif defined (SC92F848x) || defined (SC92F748x) || defined(SC92F859x) || defined(SC92F759x) || defined(SC92L853x) || defined(SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
UART0_CLOCK_TIMER1 = (uint8_t)0X00, //TIMER1做波特率发生器
|
||||
UART0_CLOCK_TIMER2 = (uint8_t)0X30, //TIMER2做波特率发生器
|
||||
UART0_CLOCK_TIMER1_DIV16 = (uint8_t)0X80, //TIMER1做波特率发生器
|
||||
UART0_CLOCK_TIMER2_DIV16 = (uint8_t)0XB0, //TIMER2做波特率发生器
|
||||
}UART0_Clock_Typedef;
|
||||
#else
|
||||
typedef enum
|
||||
{
|
||||
//模式0和3的定时器选择
|
||||
UART0_CLOCK_TIMER1 = (uint8_t)0X00, //TIMER1做波特率发生器
|
||||
UART0_CLOCK_TIMER2 = (uint8_t)0X30, //TIMER2做波特率发生器
|
||||
}UART0_Clock_Typedef;
|
||||
#endif
|
||||
|
||||
#if defined (SC92F730x) || defined (SC92F725X) || defined (SC92F735X) || defined (SC92F732X) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
|
||||
typedef enum
|
||||
{
|
||||
UART0_Mode_8B = 0X00, //UART工作模式:8位半双工
|
||||
UART0_Mode_10B = 0X40, //UART工作模式:10位全双工
|
||||
UART0_Mode_11B = 0XC0, //UART工作模式:11位全双工
|
||||
UART0_Mode_11B_BaudRateFix = 80//UART工作模式:11位全双工,波特率固定
|
||||
}UART0_Mode_Typedef;
|
||||
#else
|
||||
typedef enum
|
||||
{
|
||||
UART0_Mode_8B = 0X00, //UART工作模式:8位半双工
|
||||
UART0_Mode_10B = 0X40, //UART工作模式:10位全双工
|
||||
UART0_Mode_11B = 0XC0, //UART工作模式:11位全双工
|
||||
}UART0_Mode_Typedef;
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UART0_RX_ENABLE = 0x10, //允许接收数据
|
||||
UART0_RX_DISABLE = 0x00 //不允许接收数据
|
||||
} UART0_RX_Typedef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UART0_FLAG_RI = 0X01, //接收中断标志位RI
|
||||
UART0_FLAG_TI = 0X02 //发送中断标志位TI
|
||||
} UART0_Flag_Typedef;
|
||||
|
||||
/*******************************宏函数*******************************/
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus UART0_GetFlagStatus(UART0_Flag_Typedef UART0_Flag)
|
||||
*函数功能:获得UART0中断标志状态
|
||||
*入口参数:
|
||||
UART0_GetFlagStatus:UART0_Flag:中断标志位选择
|
||||
*出口参数:
|
||||
FlagStatus:UART0中断标志位置起状态
|
||||
*****************************************************/
|
||||
#define UART0_GetFlagStatus(UART0_Flag) ((UART0_Flag == UART0_FLAG_TI) ? (TI):(RI))
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void UART0_ClearFlag(UART0_Flag_Typedef UART0_Flag)
|
||||
*函数功能:清除UART0中断标志状态
|
||||
*入口参数:
|
||||
UART0_Flag_Typedef;UART0_Flag:中断标志位选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define UART0_ClearFlag(UART0_Flag) CLEAR_BIT(SCON,UART0_Flag)
|
||||
|
||||
void UART0_DeInit(void);
|
||||
void UART0_Init(uint32_t Uart0Fsys,
|
||||
uint32_t BaudRate, UART0_Mode_Typedef Mode,
|
||||
UART0_Clock_Typedef ClockMode,
|
||||
UART0_RX_Typedef RxMode);
|
||||
void UART0_SendData8(uint8_t Data);
|
||||
uint8_t UART0_ReceiveData8(void);
|
||||
void UART0_SendData9(uint16_t Data);
|
||||
uint16_t UART0_ReceiveData9(void);
|
||||
void UART0_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority);
|
||||
#if defined (SC92F8003) || defined (SC92F740x) || defined (SC92F7003)
|
||||
void UART0_PinSelection(UART0_PinSelection_TypeDef
|
||||
PinSeletion);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,171 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92F_usci0.h
|
||||
// 作者 :
|
||||
// 模块功能 : USCI0固件库函数头文件
|
||||
// 最后更正日期: 2022/01/05
|
||||
// 版本 : V1.1000
|
||||
// 说明 : 该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_USCI0_H_
|
||||
#define _sc92f_USCI0_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
#define USCI0_UART_BaudRate_FsysDIV12 0X00 //仅模式0可用,串行端口在系统时钟的1/12下运行
|
||||
#define USCI0_UART_BaudRate_FsysDIV4 0X01 //仅模式0可用,串行端口在系统时钟的1/4下运行
|
||||
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
typedef enum
|
||||
{
|
||||
USCI0_Mode_SPI = (uint8_t)0x01, //SPI
|
||||
USCI0_Mode_TWI = (uint8_t)0x02, //TWI
|
||||
USCI0_Mode_UART = (uint8_t)0x03 //UART
|
||||
} USCI0_CommunicationMode_TypeDef;
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_SPI_FIRSTBIT_MSB = (uint8_t)0x00, //MSB优先发送
|
||||
USCI0_SPI_FIRSTBIT_LSB = (uint8_t)0x04 //LSB优先发送
|
||||
} USCI0_SPI_FirstBit_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_SPI_BAUDRATEPRESCALER_1 = (uint8_t)0x00, //SPI时钟速率为系统时钟除以1
|
||||
USCI0_SPI_BAUDRATEPRESCALER_2 = (uint8_t)0x01, //SPI时钟速率为系统时钟除以2
|
||||
USCI0_SPI_BAUDRATEPRESCALER_4 = (uint8_t)0x02, //SPI时钟速率为系统时钟除以4
|
||||
USCI0_SPI_BAUDRATEPRESCALER_8 = (uint8_t)0x03, //SPI时钟速率为系统时钟除以8
|
||||
USCI0_SPI_BAUDRATEPRESCALER_16 = (uint8_t)0x04, //SPI时钟速率为系统时钟除以16
|
||||
USCI0_SPI_BAUDRATEPRESCALER_32 = (uint8_t)0x05, //SPI时钟速率为系统时钟除以32
|
||||
USCI0_SPI_BAUDRATEPRESCALER_64 = (uint8_t)0x06, //SPI时钟速率为系统时钟除以64
|
||||
USCI0_SPI_BAUDRATEPRESCALER_128 = (uint8_t)0x07 //SPI时钟速率为系统时钟除以128
|
||||
} USCI0_SPI_BaudRatePrescaler_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_SPI_MODE_MASTER = (uint8_t)0x20, //SPI为主设备
|
||||
USCI0_SPI_MODE_SLAVE = (uint8_t)0x00 //SPI为从设备
|
||||
} USCI0_SPI_Mode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_SPI_CLOCKPOLARITY_LOW = (uint8_t)0x00, //SCK在空闲状态下为低电平
|
||||
USCI0_SPI_CLOCKPOLARITY_HIGH = (uint8_t)0x10 //SCK在空闲状态下为高电平
|
||||
} USCI0_SPI_ClockPolarity_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_SPI_CLOCKPHASE_1EDGE = (uint8_t)0x00, //SCK的第一沿采集数据
|
||||
USCI0_SPI_CLOCKPHASE_2EDGE = (uint8_t)0x08 //SCK的第二沿采集数据
|
||||
} USCI0_SPI_ClockPhase_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_SPI_TXE_DISINT = (uint8_t)0x00, //TBIE为0时不允许发送中断
|
||||
USCI0_SPI_TXE_ENINT = (uint8_t)0x01 //TBIE为1时允许发送中断
|
||||
} USCI0_SPI_TXE_INT_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_SPI_DATA8 = (uint8_t)0x00, //SPI 8位传输模式
|
||||
USCI0_SPI_DATA16 = (uint8_t)0x02 //SPI 16位传输模式
|
||||
} USCI0_TransmissionMode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_TWI_1024 = (uint8_t)0x00, //TWI通信速率 Fhrc/1024
|
||||
USCI0_TWI_512 = (uint8_t)0x01, //TWI通信速率 Fhrc/512
|
||||
USCI0_TWI_256 = (uint8_t)0x02, //TWI通信速率 Fhrc/256
|
||||
USCI0_TWI_128 = (uint8_t)0x03, //TWI通信速率 Fhrc/128
|
||||
USCI0_TWI_64 = (uint8_t)0x04, //TWI通信速率 Fhrc/64
|
||||
USCI0_TWI_32 = (uint8_t)0x05, //TWI通信速率 Fhrc/32
|
||||
USCI0_TWI_16 = (uint8_t)0x06, //TWI通信速率 Fhrc/16
|
||||
} USCI0_TWI_MasterCommunicationRate_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_TWI_SlaveBusy = 0x00, //作为从机
|
||||
USCI0_TWI_SlaveReceivedaAddress = 0x01,
|
||||
USCI0_TWI_SlaveReceivedaData = 0x02,
|
||||
USCI0_TWI_SlaveSendData = 0x03,
|
||||
USCI0_TWI_SlaveReceivedaUACK = 0x04,
|
||||
USCI0_TWI_SlaveDisableACK = 0x05,
|
||||
USCI0_TWI_SlaveAddressError = 0x06,
|
||||
USCI0_TWI_MasterBusy = 0x00, //作为主机
|
||||
USCI0_TWI_MasterSendAddress = 0x01,
|
||||
USCI0_TWI_MasterSendData = 0x02,
|
||||
USCI0_TWI_MasterReceivedaData = 0x03,
|
||||
USCI0_TWI_MasterReceivedaUACK = 0x04,
|
||||
} USCI0_TWIState_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_UART_Mode_8B = 0X00, //UART设置为8位模式
|
||||
USCI0_UART_Mode_10B = 0X40, //UART设置为10位模式
|
||||
USCI0_UART_Mode_11B = 0X80 //UART设置为11位模式
|
||||
} USCI0_UART_Mode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_UART_RX_ENABLE = 0X10, //UART允许接收
|
||||
USCI0_UART_RX_DISABLE = 0X00 //UART禁止接收
|
||||
} USCI0_UART_RX_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_SPI_FLAG_SPIF = (uint8_t)0x80, //SPI数据传送标志位SPIF
|
||||
USCI0_SPI_FLAG_WCOL = (uint8_t)0x50, //SPI写入冲突标志位WCOL
|
||||
USCI0_SPI_FLAG_TXE = (uint8_t)0x08, //SPI发送缓存器空标志TXE
|
||||
USCI0_TWI_FLAG_TWIF = (uint8_t)0x40, //TWI中断标志位TWIF
|
||||
USCI0_TWI_FLAG_GCA = (uint8_t)0x10, //TWI通用地址响应标志位GCA
|
||||
USCI0_TWI_FLAG_MSTR = (uint8_t)0x20, //TWI主从标志位MSTR
|
||||
USCI0_TWI_FLAG_TXRXnE = (uint8_t)0x80,
|
||||
USCI0_UART_FLAG_RI = (uint8_t)0x01, //UART接收中断标志位RI
|
||||
USCI0_UART_FLAG_TI = (uint8_t)0x02, //UART发送中断标志位TI
|
||||
} USCI0_Flag_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI0_TWI_Write = 0x00, //写操作
|
||||
USCI0_TWI_Read = 0x01, //读操作
|
||||
} USCI0_TWI_RWType;
|
||||
|
||||
void USCI0_DeInit(void);
|
||||
void USCI0_SPI_Init(USCI0_SPI_FirstBit_TypeDef FirstBit,
|
||||
USCI0_SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler, USCI0_SPI_Mode_TypeDef Mode,
|
||||
USCI0_SPI_ClockPolarity_TypeDef ClockPolarity, USCI0_SPI_ClockPhase_TypeDef ClockPhase,
|
||||
USCI0_SPI_TXE_INT_TypeDef SPI_TXE_INT, USCI0_TransmissionMode_TypeDef TransmissionMode);
|
||||
void USCI0_TransmissionMode(USCI0_TransmissionMode_TypeDef TransmissionMode);
|
||||
void USCI0_SPI_Cmd(FunctionalState NewState);
|
||||
void USCI0_SPI_SendData_8(uint8_t Data);
|
||||
uint8_t USCI0_SPI_ReceiveData_8(void);
|
||||
void USCI0_SPI_SendData_16(uint16_t Data);
|
||||
uint16_t USCI0_SPI_ReceiveData_16(void);
|
||||
void USCI0_TWI_Slave_Init(uint8_t TWI_Address);
|
||||
void USCI0_TWI_MasterCommunicationRate(USCI0_TWI_MasterCommunicationRate_TypeDef
|
||||
TWI_MasterCommunicationRate);
|
||||
void USCI0_TWI_Start(void);
|
||||
void USCI0_TWI_MasterModeStop(void);
|
||||
void USCI0_TWI_SendAddr(uint8_t Addr, USCI0_TWI_RWType RW);
|
||||
void USCI0_TWI_SlaveClockExtension(FunctionalState NewState);
|
||||
void USCI0_TWI_AcknowledgeConfig(FunctionalState NewState);
|
||||
void USCI0_TWI_GeneralCallCmd(FunctionalState NewState);
|
||||
FlagStatus USCI0_GetTWIStatus(USCI0_TWIState_TypeDef USCI0_TWIState);
|
||||
void USCI0_TWI_Cmd(FunctionalState NewState);
|
||||
void USCI0_TWI_SendData(uint8_t Data);
|
||||
uint8_t USCI0_TWI_ReceiveData(void);
|
||||
void USCI0_UART_Init(uint32_t UART1Fsys, uint32_t BaudRate, USCI0_UART_Mode_TypeDef Mode,
|
||||
USCI0_UART_RX_TypeDef RxMode);
|
||||
void USCI0_UART_SendData8(uint8_t Data);
|
||||
uint8_t USCI0_UART_ReceiveData8(void);
|
||||
void USCI0_UART_SendData9(uint16_t Data);
|
||||
uint16_t USCI0_UART_ReceiveData9(void);
|
||||
void USCI0_ITConfig(FunctionalState NewState, PriorityStatus Priority);
|
||||
FlagStatus USCI0_GetFlagStatus(USCI0_Flag_TypeDef USCI0_FLAG);
|
||||
void USCI0_ClearFlag(USCI0_Flag_TypeDef USCI0_FLAG);
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2019 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,168 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92F_usci1.h
|
||||
// 作者 :
|
||||
// 模块功能 : USCI1固件库函数头文件
|
||||
// 最后更正日期: 2022/01/05
|
||||
// 版本 : V1.10000
|
||||
// 说明 :该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_USCI1_H_
|
||||
#define _sc92f_USCI1_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
#define USCI1_UART_BaudRate_FsysDIV12 0X00 //仅模式0可用,串行端口在系统时钟的1/12下运行
|
||||
#define USCI1_UART_BaudRate_FsysDIV4 0X01 //仅模式0可用,串行端口在系统时钟的1/4下运行
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_Mode_SPI = (uint8_t)0x01, //SPI
|
||||
USCI1_Mode_TWI = (uint8_t)0x02, //TWI
|
||||
USCI1_Mode_UART = (uint8_t)0x03 //UART
|
||||
} USCI1_CommunicationMode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_SPI_FIRSTBIT_MSB = (uint8_t)0x00, //MSB优先发送
|
||||
USCI1_SPI_FIRSTBIT_LSB = (uint8_t)0x04 //LSB优先发送
|
||||
} USCI1_SPI_FirstBit_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_SPI_BAUDRATEPRESCALER_1 = (uint8_t)0x00, //SPI时钟速率为系统时钟除以1
|
||||
USCI1_SPI_BAUDRATEPRESCALER_2 = (uint8_t)0x01, //SPI时钟速率为系统时钟除以2
|
||||
USCI1_SPI_BAUDRATEPRESCALER_4 = (uint8_t)0x02, //SPI时钟速率为系统时钟除以4
|
||||
USCI1_SPI_BAUDRATEPRESCALER_8 = (uint8_t)0x03, //SPI时钟速率为系统时钟除以8
|
||||
USCI1_SPI_BAUDRATEPRESCALER_16 = (uint8_t)0x04, //SPI时钟速率为系统时钟除以16
|
||||
USCI1_SPI_BAUDRATEPRESCALER_32 = (uint8_t)0x05, //SPI时钟速率为系统时钟除以32
|
||||
USCI1_SPI_BAUDRATEPRESCALER_64 = (uint8_t)0x06, //SPI时钟速率为系统时钟除以64
|
||||
USCI1_SPI_BAUDRATEPRESCALER_128 = (uint8_t)0x07 //SPI时钟速率为系统时钟除以128
|
||||
} USCI1_SPI_BaudRatePrescaler_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_SPI_MODE_MASTER = (uint8_t)0x20, //SPI为主设备
|
||||
USCI1_SPI_MODE_SLAVE = (uint8_t)0x00 //SPI为从设备
|
||||
} USCI1_SPI_Mode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_SPI_CLOCKPOLARITY_LOW = (uint8_t)0x00, //SCK在空闲状态下为低电平
|
||||
USCI1_SPI_CLOCKPOLARITY_HIGH = (uint8_t)0x10 //SCK在空闲状态下为高电平
|
||||
} USCI1_SPI_ClockPolarity_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_SPI_CLOCKPHASE_1EDGE = (uint8_t)0x00, //SCK的第一沿采集数据
|
||||
USCI1_SPI_CLOCKPHASE_2EDGE = (uint8_t)0x08 //SCK的第二沿采集数据
|
||||
} USCI1_SPI_ClockPhase_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_SPI_TXE_DISINT = (uint8_t)0x00, //TBIE为0时不允许发送中断
|
||||
USCI1_SPI_TXE_ENINT = (uint8_t)0x01 //TBIE为1时允许发送中断
|
||||
} USCI1_SPI_TXE_INT_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_SPI_DATA8 = (uint8_t)0x00, //SPI 8位传输模式
|
||||
USCI1_SPI_DATA16 = (uint8_t)0x02 //SPI 16位传输模式
|
||||
} USCI1_TransmissionMode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_TWI_1024 = (uint8_t)0x00, //TWI通信速率 Fhrc/1024
|
||||
USCI1_TWI_512 = (uint8_t)0x01, //TWI通信速率 Fhrc/512
|
||||
USCI1_TWI_256 = (uint8_t)0x02, //TWI通信速率 Fhrc/256
|
||||
USCI1_TWI_128 = (uint8_t)0x03, //TWI通信速率 Fhrc/128
|
||||
USCI1_TWI_64 = (uint8_t)0x04, //TWI通信速率 Fhrc/64
|
||||
USCI1_TWI_32 = (uint8_t)0x05, //TWI通信速率 Fhrc/32
|
||||
USCI1_TWI_16 = (uint8_t)0x06, //TWI通信速率 Fhrc/16
|
||||
} USCI1_TWI_MasterCommunicationRate_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_TWI_SlaveBusy = 0x00,
|
||||
USCI1_TWI_SlaveReceivedaAddress = 0x01,
|
||||
USCI1_TWI_SlaveReceivedaData = 0x02,
|
||||
USCI1_TWI_SlaveSendData = 0x03,
|
||||
USCI1_TWI_SlaveReceivedaUACK = 0x04,
|
||||
USCI1_TWI_SlaveDisableACK = 0x05,
|
||||
USCI1_TWI_SlaveAddressError = 0x06,
|
||||
USCI1_TWI_MasterBusy = 0x00,
|
||||
USCI1_TWI_MasterSendAddress = 0x01,
|
||||
USCI1_TWI_MasterSendData = 0x02,
|
||||
USCI1_TWI_MasterReceivedaData = 0x03,
|
||||
USCI1_TWI_MasterReceivedaUACK = 0x04,
|
||||
} USCI1_TWIState_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_UART_Mode_8B = 0X00, //UART设置为8位模式
|
||||
USCI1_UART_Mode_10B = 0X40, //UART设置为10位模式
|
||||
USCI1_UART_Mode_11B = 0X80 //UART设置为11位模式
|
||||
} USCI1_UART_Mode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_UART_RX_ENABLE = 0X10, //UART允许接收
|
||||
USCI1_UART_RX_DISABLE = 0X00 //UART禁止接收
|
||||
} USCI1_UART_RX_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_SPI_FLAG_SPIF = (uint8_t)0x80, //SPI数据传送标志位SPIF
|
||||
USCI1_SPI_FLAG_WCOL = (uint8_t)0x50, //SPI写入冲突标志位WCOL
|
||||
USCI1_SPI_FLAG_TXE = (uint8_t)0x08, //SPI发送缓存器空标志TXE
|
||||
USCI1_TWI_FLAG_TWIF = (uint8_t)0x40, //TWI中断标志位TWIF
|
||||
USCI1_TWI_FLAG_GCA = (uint8_t)0x10, //TWI通用地址响应标志位GCA
|
||||
USCI1_TWI_FLAG_MSTR = (uint8_t)0x20, //TWI主从标志位MSTR
|
||||
USCI1_TWI_FLAG_TXRXnE = (uint8_t)0x80,
|
||||
USCI1_UART_FLAG_RI = (uint8_t)0x01, //UART接收中断标志位RI
|
||||
USCI1_UART_FLAG_TI = (uint8_t)0x02, //UART发送中断标志位TI
|
||||
} USCI1_Flag_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI1_TWI_Write = 0x00, //写操作
|
||||
USCI1_TWI_Read = 0x01, //读操作
|
||||
} USCI1_TWI_RWType;
|
||||
|
||||
void USCI1_DeInit(void);
|
||||
void USCI1_SPI_Init(USCI1_SPI_FirstBit_TypeDef FirstBit,
|
||||
USCI1_SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler, USCI1_SPI_Mode_TypeDef Mode,
|
||||
USCI1_SPI_ClockPolarity_TypeDef ClockPolarity, USCI1_SPI_ClockPhase_TypeDef ClockPhase,
|
||||
USCI1_SPI_TXE_INT_TypeDef SPI_TXE_INT, USCI1_TransmissionMode_TypeDef TransmissionMode);
|
||||
void USCI1_TransmissionMode(USCI1_TransmissionMode_TypeDef TransmissionMode);
|
||||
void USCI1_SPI_Cmd(FunctionalState NewState);
|
||||
void USCI1_SPI_SendData_8(uint8_t Data);
|
||||
uint8_t USCI1_SPI_ReceiveData_8(void);
|
||||
void USCI1_SPI_SendData_16(uint16_t Data);
|
||||
uint16_t USCI1_SPI_ReceiveData_16(void);
|
||||
void USCI1_TWI_Slave_Init(uint8_t TWI_Address);
|
||||
void USCI1_TWI_MasterCommunicationRate(USCI1_TWI_MasterCommunicationRate_TypeDef
|
||||
TWI_MasterCommunicationRate);
|
||||
void USCI1_TWI_Start(void);
|
||||
void USCI1_TWI_MasterModeStop(void);
|
||||
void USCI1_TWI_SlaveClockExtension(FunctionalState NewState);
|
||||
void USCI1_TWI_AcknowledgeConfig(FunctionalState NewState);
|
||||
void USCI1_TWI_GeneralCallCmd(FunctionalState NewState);
|
||||
FlagStatus USCI1_GetTWIStatus(USCI1_TWIState_TypeDef USCI1_TWIState);
|
||||
void USCI1_TWI_Cmd(FunctionalState NewState);
|
||||
void USCI1_TWI_SendData(uint8_t Data);
|
||||
uint8_t USCI1_TWI_ReceiveData(void);
|
||||
void USCI1_UART_Init(uint32_t UART1Fsys, uint32_t BaudRate, USCI1_UART_Mode_TypeDef Mode,
|
||||
USCI1_UART_RX_TypeDef RxMode);
|
||||
void USCI1_UART_SendData8(uint8_t Data);
|
||||
uint8_t USCI1_UART_ReceiveData8(void);
|
||||
void USCI1_UART_SendData9(uint16_t Data);
|
||||
uint16_t USCI1_UART_ReceiveData9(void);
|
||||
void USCI1_ITConfig(FunctionalState NewState, PriorityStatus Priority);
|
||||
FlagStatus USCI1_GetFlagStatus(USCI1_Flag_TypeDef USCI1_FLAG);
|
||||
void USCI1_ClearFlag(USCI1_Flag_TypeDef USCI1_FLAG);
|
||||
void USCI1_TWI_SendAddr(uint8_t Addr, USCI1_TWI_RWType RW);
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2019 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,168 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92F_usci2.h
|
||||
// 作者 :
|
||||
// 模块功能 : USCI2固件库函数头文件
|
||||
// 最后更正日期: 2022/01/05
|
||||
// 版本 : V1.10000
|
||||
// 说明 :该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_USCI2_H_
|
||||
#define _sc92f_USCI2_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
#define USCI2_UART_BaudRate_FsysDIV12 0X00 //仅模式0可用,串行端口在系统时钟的1/12下运行
|
||||
#define USCI2_UART_BaudRate_FsysDIV4 0X01 //仅模式0可用,串行端口在系统时钟的1/4下运行
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_Mode_SPI = (uint8_t)0x01, //SPI
|
||||
USCI2_Mode_TWI = (uint8_t)0x02, //TWI
|
||||
USCI2_Mode_UART = (uint8_t)0x03 //UART
|
||||
} USCI2_CommunicationMode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_SPI_FIRSTBIT_MSB = (uint8_t)0x00, //MSB优先发送
|
||||
USCI2_SPI_FIRSTBIT_LSB = (uint8_t)0x04 //LSB优先发送
|
||||
} USCI2_SPI_FirstBit_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_SPI_BAUDRATEPRESCALER_1 = (uint8_t)0x00, //SPI时钟速率为系统时钟除以1
|
||||
USCI2_SPI_BAUDRATEPRESCALER_2 = (uint8_t)0x01, //SPI时钟速率为系统时钟除以2
|
||||
USCI2_SPI_BAUDRATEPRESCALER_4 = (uint8_t)0x02, //SPI时钟速率为系统时钟除以4
|
||||
USCI2_SPI_BAUDRATEPRESCALER_8 = (uint8_t)0x03, //SPI时钟速率为系统时钟除以8
|
||||
USCI2_SPI_BAUDRATEPRESCALER_16 = (uint8_t)0x04, //SPI时钟速率为系统时钟除以16
|
||||
USCI2_SPI_BAUDRATEPRESCALER_32 = (uint8_t)0x05, //SPI时钟速率为系统时钟除以32
|
||||
USCI2_SPI_BAUDRATEPRESCALER_64 = (uint8_t)0x06, //SPI时钟速率为系统时钟除以64
|
||||
USCI2_SPI_BAUDRATEPRESCALER_128 = (uint8_t)0x07 //SPI时钟速率为系统时钟除以128
|
||||
} USCI2_SPI_BaudRatePrescaler_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_SPI_MODE_MASTER = (uint8_t)0x20, //SPI为主设备
|
||||
USCI2_SPI_MODE_SLAVE = (uint8_t)0x00 //SPI为从设备
|
||||
} USCI2_SPI_Mode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_SPI_CLOCKPOLARITY_LOW = (uint8_t)0x00, //SCK在空闲状态下为低电平
|
||||
USCI2_SPI_CLOCKPOLARITY_HIGH = (uint8_t)0x10 //SCK在空闲状态下为高电平
|
||||
} USCI2_SPI_ClockPolarity_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_SPI_CLOCKPHASE_1EDGE = (uint8_t)0x00, //SCK的第一沿采集数据
|
||||
USCI2_SPI_CLOCKPHASE_2EDGE = (uint8_t)0x08 //SCK的第二沿采集数据
|
||||
} USCI2_SPI_ClockPhase_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_SPI_TXE_DISINT = (uint8_t)0x00, //TBIE为0时不允许发送中断
|
||||
USCI2_SPI_TXE_ENINT = (uint8_t)0x01 //TBIE为1时允许发送中断
|
||||
} USCI2_SPI_TXE_INT_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_SPI_DATA8 = (uint8_t)0x00, //SPI 8位传输模式
|
||||
USCI2_SPI_DATA16 = (uint8_t)0x01 //SPI 16位传输模式
|
||||
} USCI2_TransmissionMode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_TWI_1024 = (uint8_t)0x00, //TWI通信速率 Fhrc/1024
|
||||
USCI2_TWI_512 = (uint8_t)0x01, //TWI通信速率 Fhrc/512
|
||||
USCI2_TWI_256 = (uint8_t)0x02, //TWI通信速率 Fhrc/256
|
||||
USCI2_TWI_128 = (uint8_t)0x03, //TWI通信速率 Fhrc/128
|
||||
USCI2_TWI_64 = (uint8_t)0x04, //TWI通信速率 Fhrc/64
|
||||
USCI2_TWI_32 = (uint8_t)0x05, //TWI通信速率 Fhrc/32
|
||||
USCI2_TWI_16 = (uint8_t)0x06, //TWI通信速率 Fhrc/16
|
||||
} USCI2_TWI_MasterCommunicationRate_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_TWI_SlaveBusy = 0x00,
|
||||
USCI2_TWI_SlaveReceivedaAddress = 0x01,
|
||||
USCI2_TWI_SlaveReceivedaData = 0x02,
|
||||
USCI2_TWI_SlaveSendData = 0x03,
|
||||
USCI2_TWI_SlaveReceivedaUACK = 0x04,
|
||||
USCI2_TWI_SlaveDisableACK = 0x05,
|
||||
USCI2_TWI_SlaveAddressError = 0x06,
|
||||
USCI2_TWI_MasterBusy = 0x00,
|
||||
USCI2_TWI_MasterSendAddress = 0x01,
|
||||
USCI2_TWI_MasterSendData = 0x02,
|
||||
USCI2_TWI_MasterReceivedaData = 0x03,
|
||||
USCI2_TWI_MasterReceivedaUACK = 0x04,
|
||||
} USCI2_TWIState_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_UART_Mode_8B = 0X00, //UART设置为8位模式
|
||||
USCI2_UART_Mode_10B = 0X40, //UART设置为10位模式
|
||||
USCI2_UART_Mode_11B = 0X80 //UART设置为11位模式
|
||||
} USCI2_UART_Mode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_UART_RX_ENABLE = 0X10, //UART允许接收
|
||||
USCI2_UART_RX_DISABLE = 0X00 //UART禁止接收
|
||||
} USCI2_UART_RX_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_SPI_FLAG_SPIF = (uint8_t)0x80, //SPI数据传送标志位SPIF
|
||||
USCI2_SPI_FLAG_WCOL = (uint8_t)0x50, //SPI写入冲突标志位WCOL
|
||||
USCI2_SPI_FLAG_TXE = (uint8_t)0x08, //SPI发送缓存器空标志TXE
|
||||
USCI2_TWI_FLAG_TWIF = (uint8_t)0x40, //TWI中断标志位TWIF
|
||||
USCI2_TWI_FLAG_GCA = (uint8_t)0x10, //TWI通用地址响应标志位GCA
|
||||
USCI2_TWI_FLAG_MSTR = (uint8_t)0x20, //TWI主从标志位MSTR
|
||||
USCI2_TWI_FLAG_TXRXnE = (uint8_t)0x80,
|
||||
USCI2_UART_FLAG_RI = (uint8_t)0x01, //UART接收中断标志位RI
|
||||
USCI2_UART_FLAG_TI = (uint8_t)0x02, //UART发送中断标志位TI
|
||||
} USCI2_Flag_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
USCI2_TWI_Write = 0x00, //写操作
|
||||
USCI2_TWI_Read = 0x01, //读操作
|
||||
} USCI2_TWI_RWType;
|
||||
|
||||
void USCI2_DeInit(void);
|
||||
void USCI2_SPI_Init(USCI2_SPI_FirstBit_TypeDef FirstBit,
|
||||
USCI2_SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler, USCI2_SPI_Mode_TypeDef Mode,
|
||||
USCI2_SPI_ClockPolarity_TypeDef ClockPolarity, USCI2_SPI_ClockPhase_TypeDef ClockPhase,
|
||||
USCI2_SPI_TXE_INT_TypeDef SPI_TXE_INT, USCI2_TransmissionMode_TypeDef TransmissionMode);
|
||||
void USCI2_TransmissionMode(USCI2_TransmissionMode_TypeDef TransmissionMode);
|
||||
void USCI2_SPI_Cmd(FunctionalState NewState);
|
||||
void USCI2_SPI_SendData_8(uint8_t Data);
|
||||
uint8_t USCI2_SPI_ReceiveData_8(void);
|
||||
void USCI2_SPI_SendData_16(uint16_t Data);
|
||||
uint16_t USCI2_SPI_ReceiveData_16(void);
|
||||
void USCI2_TWI_Slave_Init(uint8_t TWI_Address);
|
||||
void USCI2_TWI_MasterCommunicationRate(USCI2_TWI_MasterCommunicationRate_TypeDef
|
||||
TWI_MasterCommunicationRate);
|
||||
void USCI2_TWI_Start(void);
|
||||
void USCI2_TWI_MasterModeStop(void);
|
||||
void USCI2_TWI_SlaveClockExtension(FunctionalState NewState);
|
||||
void USCI2_TWI_AcknowledgeConfig(FunctionalState NewState);
|
||||
void USCI2_TWI_GeneralCallCmd(FunctionalState NewState);
|
||||
FlagStatus USCI2_GetTWIStatus(USCI2_TWIState_TypeDef USCI2_TWIState);
|
||||
void USCI2_TWI_Cmd(FunctionalState NewState);
|
||||
void USCI2_TWI_SendData(uint8_t Data);
|
||||
uint8_t USCI2_TWI_ReceiveData(void);
|
||||
void USCI2_UART_Init(uint32_t UART1Fsys, uint32_t BaudRate, USCI2_UART_Mode_TypeDef Mode,
|
||||
USCI2_UART_RX_TypeDef RxMode);
|
||||
void USCI2_UART_SendData8(uint8_t Data);
|
||||
uint8_t USCI2_UART_ReceiveData8(void);
|
||||
void USCI2_UART_SendData9(uint16_t Data);
|
||||
uint16_t USCI2_UART_ReceiveData9(void);
|
||||
void USCI2_ITConfig(FunctionalState NewState, PriorityStatus Priority);
|
||||
FlagStatus USCI2_GetFlagStatus(USCI2_Flag_TypeDef USCI2_FLAG);
|
||||
void USCI2_ClearFlag(USCI2_Flag_TypeDef USCI2_FLAG);
|
||||
void USCI2_TWI_SendAddr(uint8_t Addr, USCI2_TWI_RWType RW);
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2019 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92f_wdt.h
|
||||
// 作者:
|
||||
// 模块功能: WDT固件库函数头文件
|
||||
// 最后更正日期: 2022年3月23日
|
||||
// 版本: V1.10002
|
||||
// 说明:
|
||||
//*************************************************************
|
||||
|
||||
#ifndef _sc92f_WDT_H_
|
||||
#define _sc92f_WDT_H_
|
||||
|
||||
#include "sc92f.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
WDT_OverflowTime_500MS = (uint8_t)0x00, //看门狗溢出时间为500MS
|
||||
WDT_OverflowTime_250MS = (uint8_t)0x01, //看门狗溢出时间为250MS
|
||||
WDT_OverflowTime_125MS = (uint8_t)0x02, //看门狗溢出时间为125MS
|
||||
WDT_OverflowTime_62_5MS = (uint8_t)0x03, //看门狗溢出时间为62.5MS
|
||||
WDT_OverflowTime_31_5MS = (uint8_t)0x04, //看门狗溢出时间为31.5MS
|
||||
WDT_OverflowTime_15_75MS = (uint8_t)0x05, //看门狗溢出时间为15.75MS
|
||||
WDT_OverflowTime_7_88MS = (uint8_t)0x06, //看门狗溢出时间为7.88MS
|
||||
WDT_OverflowTime_3_94MS = (uint8_t)0x07 //看门狗溢出时间为3.94MS
|
||||
} WDT_OverflowTime_TypeDef;
|
||||
|
||||
/************************宏函数************************/
|
||||
/*****************************************************
|
||||
*函数名称:void WDT_SetReload(void)
|
||||
*函数功能:WDT喂狗
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#define WDT_SetReload() SET_BIT(WDTCON,0x10)
|
||||
|
||||
void WDT_DeInit(void);
|
||||
void WDT_Init(WDT_OverflowTime_TypeDef
|
||||
OverflowTime);
|
||||
void WDT_Cmd(FunctionalState NewState);
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_acmp.c
|
||||
// 作者 :
|
||||
// 模块功能 : ACMP固件库函数C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2020/8/18
|
||||
// 版本 : V1.00000
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_acmp.h"
|
||||
|
||||
#if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB) || defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined (SC92FWxx) || defined(SC92F859x) || defined(SC92F759x)
|
||||
/**************************************************
|
||||
*函数名称:void ACMP_DeInit(void)
|
||||
*函数功能:MDU相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void ACMP_DeInit(void)
|
||||
{
|
||||
CMPCON = 0X00;
|
||||
CMPCFG = 0X00;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void ACMP_Init(ACMP_Vref_Typedef ACMP_Vref, ACMP_Channel_TypeDef ACMP_Channel)
|
||||
*函数功能:模拟比较器初始化配置函数
|
||||
*入口参数:
|
||||
ACMP_Vref_Typedef:ACMP_Vref:ACMP参考电压选择
|
||||
ACMP_Channel_TypeDef:ACMP_Channel:ACMP输入通道选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void ACMP_Init(ACMP_Vref_Typedef ACMP_Vref,
|
||||
ACMP_Channel_TypeDef ACMP_Channel)
|
||||
{
|
||||
CMPCON = CMPCON & 0XF0 | ACMP_Vref;
|
||||
CMPCFG = CMPCFG & 0XEC | ACMP_Channel;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void ACMP_SetTriggerMode(ACMP_TriggerMode_Typedef ACMP_TriggerMode)
|
||||
*函数功能:ACMP中断触发方式配置函数
|
||||
*入口参数:
|
||||
ACMP_TriggerMode_Typedef:ACMP_TriggerMode:中断触发方式选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void ACMP_SetTriggerMode(ACMP_TriggerMode_Typedef
|
||||
ACMP_TriggerMode)
|
||||
{
|
||||
CMPCFG = CMPCFG & 0XF3 | ACMP_TriggerMode;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void ACMP_Cmd(FunctionalState NewState)
|
||||
*函数功能:ACMP功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void ACMP_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
CMPCON &= 0X7F;
|
||||
}
|
||||
else
|
||||
{
|
||||
CMPCON |= 0x80;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void ACMP_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:ACMP中断初始化
|
||||
*入口参数:FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void ACMP_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority)
|
||||
{
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
IE1 &= 0XBF;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE1 |= 0X20;
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
if(Priority == LOW)
|
||||
{
|
||||
IP1 &= 0XBF;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP1 |= 0X20;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus ACMP_GetFlagStatus(ACMP_Flag_TypeDef ACMP_Flag)
|
||||
*函数功能:获得ACMP标志状态
|
||||
*入口参数:ACMP_Flag 标志位选择
|
||||
*出口参数:
|
||||
ACMP_Flag_TypeDef:FlagStatus:ACMP标志状态
|
||||
*****************************************************/
|
||||
FlagStatus ACMP_GetFlagStatus(ACMP_Flag_TypeDef
|
||||
ACMP_Flag)
|
||||
{
|
||||
return (bool)(CMPCON & ACMP_Flag);
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void ACMP_ClearFlag(void)
|
||||
*函数功能:清除标志状态
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void ACMP_ClearFlag(void)
|
||||
{
|
||||
CMPCON &= (~ACMP_FLAG_CMPIF);
|
||||
}
|
||||
#endif
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,462 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92f_adc.c
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: ADC固件库函数C文件
|
||||
// 最后更正日期: 2022年3月23日
|
||||
// 版本: V1.10005
|
||||
// 说明:
|
||||
//*************************************************************
|
||||
|
||||
/* 头文件引用 */
|
||||
#include "sc92f_adc.h"
|
||||
|
||||
#if !defined(SC92F827X) && !defined(SC92F837X)
|
||||
/**************************************************
|
||||
*函数名称:void ADC_DeInit(void)
|
||||
*函数功能:ADC相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void ADC_DeInit(void)
|
||||
{
|
||||
ADCCON = 0x00;
|
||||
ADCCFG0 = 0X00;
|
||||
ADCCFG1 = 0X00;
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92F846xB) || defined(SC92F746xB) || defined(SC92F836xB) || defined(SC92F736xB) || defined(SC92F84Ax) || defined(SC92F74Ax)\
|
||||
|| defined(SC92F83Ax) || defined(SC92F73Ax) || defined(SC92F848x) || defined(SC92F748x) || defined (SC92F859x) || defined (SC92F759x)\
|
||||
|| defined (SC92L853x) || defined (SC92L753x)
|
||||
ADCCFG2 = 0X00;
|
||||
#endif
|
||||
ADCVL = 0X00;
|
||||
ADCVH = 0X00;
|
||||
EADC = 0;
|
||||
IPADC = 0;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void ADC_Init(ADC_PresSel_TypeDef ADC_PrescalerSelection, ADC_Cycle_TypeDef ADC_Cycle)
|
||||
*函数功能:ADC初始化配置函数
|
||||
*入口参数:
|
||||
ADC_PresSel_TypeDef:ADC_PrescalerSelection:预分频选择
|
||||
ADC_Cycle_TypeDef:ADC_Cycle:采样时钟周期选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92F846xB) || defined(SC92F746xB) || defined(SC92F836xB) || defined(SC92F736xB) || defined(SC92F84Ax) || defined(SC92F74Ax)\
|
||||
|| defined(SC92F83Ax) || defined(SC92F73Ax) || defined(SC92FWxx) || defined(SC92F848x) || defined(SC92F748x)\
|
||||
|| defined (SC92F859x) || defined (SC92F759x)
|
||||
void ADC_Init(ADC_PresSel_TypeDef ADC_PrescalerSelection,
|
||||
ADC_Cycle_TypeDef ADC_Cycle)
|
||||
{
|
||||
/* 配置ADC时钟分频和采样周期 */
|
||||
ADCCFG2 = ADC_PrescalerSelection | ADC_Cycle;
|
||||
}
|
||||
#elif defined(SC92F7003) || defined(SC92F8003) || defined(SC92F740x)
|
||||
void ADC_Init(ADC_PresSel_TypeDef ADC_PrescalerSelection,
|
||||
ADC_Cycle_TypeDef ADC_Cycle)
|
||||
{
|
||||
/* 配置ADC时钟分频和采样周期 */
|
||||
ADCCFG1 = ADC_PrescalerSelection | ADC_Cycle;
|
||||
}
|
||||
#elif defined(SC92F742x) || defined(SC92F725X) || defined(SC92F735X) || defined(SC92F730x) || defined(SC92F732X) || defined(SC92F7490)\
|
||||
|| defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||||
void ADC_Init(ADC_PresSel_TypeDef ADC_PrescalerSelection,
|
||||
ADC_Cycle_TypeDef ADC_Cycle)
|
||||
{
|
||||
ADC_Cycle = 0; //SC92F742x无此功能
|
||||
/* 配置ADC时钟分频 */
|
||||
ADCCON = (ADCCON & 0xDF) | ADC_PrescalerSelection;
|
||||
}
|
||||
#elif defined (SC92L853x) || defined (SC92L753x)
|
||||
void ADC_Init(ADC_PresSel_TypeDef ADC_PrescalerSelection, ADC_Cycle_TypeDef ADC_Cycle)
|
||||
{
|
||||
ADC_Cycle = 0x00; //该入参在92L系列无效
|
||||
/* 配置ADC时钟分频 */
|
||||
ADCCFG2 = ADC_PrescalerSelection;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void ADC_ChannelConfig(ADC_Channel_TypeDef ADC_Channel, FunctionalState NewState)
|
||||
*函数功能:ADC输入口配置函数,并且使能相关功能
|
||||
*入口参数:
|
||||
ADC_Channel_TypeDef:ADC_Channel:ADC输入口选择
|
||||
FunctionalState:NewState:ADCx使能/关闭选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92F846xB) || defined(SC92F746xB) || defined(SC92F836xB) || defined(SC92F736xB) || defined(SC92F84Ax) || defined(SC92F74Ax)\
|
||||
|| defined(SC92F83Ax) || defined(SC92F73Ax) || defined(SC92FWxx) || defined(SC92F848x) || defined(SC92F748x)\
|
||||
|| defined(SC92F859x) || defined(SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
void ADC_ChannelConfig(ADC_Channel_TypeDef ADC_Channel, FunctionalState NewState)
|
||||
{
|
||||
uint16_t TempReg;
|
||||
/* 配置ADC转换通道 */
|
||||
ADCCON = (ADCCON & 0XE0) | ADC_Channel;
|
||||
|
||||
/* 配置ADC外部采样通道 */
|
||||
if (ADC_Channel < ADC_CHANNEL_VDD_D4) //内部采样通道无需配置
|
||||
{
|
||||
TempReg = (0x0001 << ADC_Channel);
|
||||
if (NewState == DISABLE)// 使能ADC采样通道
|
||||
{
|
||||
ADCCFG0 &= (~(uint8_t)TempReg);
|
||||
ADCCFG1 &= (~(uint8_t)(TempReg >> 8));
|
||||
}
|
||||
else // 失能ADC采样通道
|
||||
{
|
||||
ADCCFG0 |= ((uint8_t)TempReg);
|
||||
ADCCFG1 |= ((uint8_t)(TempReg >> 8));
|
||||
}
|
||||
}
|
||||
}
|
||||
#elif defined(SC92F7003) || defined(SC92F8003) || defined(SC92F740x) || defined(SC92F7490)
|
||||
void ADC_ChannelConfig(ADC_Channel_TypeDef ADC_Channel, FunctionalState NewState)
|
||||
{
|
||||
uint8_t TempReg;
|
||||
/* 配置ADC转换通道 */
|
||||
ADCCON = (ADCCON & 0xE0) | ADC_Channel;
|
||||
|
||||
/* 配置ADC采样通道 */
|
||||
if (ADC_Channel < ADC_CHANNEL_VDD_D4) //内部采样通道无需配置
|
||||
{
|
||||
TempReg = (0x01 << ADC_Channel);
|
||||
if (ADC_Channel < ADC_CHANNEL_VDD_D4)
|
||||
{
|
||||
if (NewState == DISABLE) //失能ADC采样通道
|
||||
{
|
||||
ADCCFG0 &= (~TempReg);
|
||||
}
|
||||
else //使能ADC采样通道
|
||||
{
|
||||
ADCCFG0 |= TempReg;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#elif defined(SC92F742x) || defined(SC92F730x) || defined(SC92F725X) || defined(SC92F735X) || defined(SC92F732X)
|
||||
void ADC_ChannelConfig(ADC_Channel_TypeDef ADC_Channel, FunctionalState NewState)
|
||||
{
|
||||
uint16_t TempReg;
|
||||
/* 配置ADC转换通道 */
|
||||
ADCCON = (ADCCON & 0xF0) | ADC_Channel;
|
||||
|
||||
/* 配置ADC采样通道 */
|
||||
if (ADC_Channel < ADC_CHANNEL_VDD_D4) //内部采样通道无需配置
|
||||
{
|
||||
TempReg = (0x0001 << ADC_Channel);
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
ADCCFG0 &= (~(uint8_t)TempReg);
|
||||
ADCCFG1 &= (~(uint8_t)(TempReg >> 8));
|
||||
}
|
||||
else
|
||||
{
|
||||
ADCCFG0 |= ((uint8_t)TempReg);
|
||||
ADCCFG1 |= ((uint8_t)(TempReg >> 8));
|
||||
}
|
||||
}
|
||||
}
|
||||
#elif defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||||
void ADC_ChannelConfig(ADC_Channel_TypeDef ADC_Channel, FunctionalState NewState)
|
||||
{
|
||||
uint16_t TempReg;
|
||||
/* 配置ADC转换通道 */
|
||||
ADCCON = (ADCCON & 0xF0) | ADC_Channel;
|
||||
|
||||
/* 配置ADC采样通道 */
|
||||
if (ADC_Channel < ADC_CHANNEL_Temp) //配置外部采样通道
|
||||
{
|
||||
TempReg = (0x0001 << ADC_Channel);
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
ADCCFG0 &= (~(uint8_t)TempReg);
|
||||
ADCCFG1 &= (~(uint8_t)(TempReg >> 8));
|
||||
}
|
||||
else
|
||||
{
|
||||
ADCCFG0 |= ((uint8_t)TempReg);
|
||||
ADCCFG1 |= ((uint8_t)(TempReg >> 8));
|
||||
}
|
||||
}
|
||||
else if (ADC_Channel == ADC_CHANNEL_Temp) //内部温度采样通道
|
||||
{
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
TSCFG &= 0X7F;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* ADC参考电压选择内部2.4V作为参考 */
|
||||
OPINX = 0xC2;
|
||||
OPREG = OPREG & 0X7F | 0x80;
|
||||
|
||||
TSCFG |= 0x80;
|
||||
}
|
||||
}
|
||||
else if (ADC_Channel == ADC_CHANNEL_9_PGA) //可变增益放大器采样通道
|
||||
{
|
||||
unsigned char code *IFBAddr = 0x3D;
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
ADCCFG1 &= (~(uint8_t)0x02); //关闭通道9
|
||||
PGACON &= 0x7F; //使能PGA
|
||||
}
|
||||
/* 读取PGA内部出厂校准值 */
|
||||
else
|
||||
{
|
||||
ADCCFG1 |= ((uint8_t)0x02); //PGA输入通道与通道9复用,使能通道9
|
||||
|
||||
IAPADE = 0x01; //指针指向 IFB 区
|
||||
PGACFG = *(IFBAddr); //读取校准值
|
||||
IAPADE = 0x00; //指针指向 ROM 区
|
||||
|
||||
PGACON |= 0x80; //使能PGA
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void ADC_EAINConfig(uint16_t ADC_Channel, FunctionalState NewState)
|
||||
*函数功能:将对应的ADC输入口设置为模拟输入模式
|
||||
*入口参数:
|
||||
ADC_EAIN_TypeDef:ADC_EAIN_Select:选择需要设置的ADC口
|
||||
FunctionalState:NewState:ADC通道使能/关闭选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void ADC_EAINConfig(uint16_t ADC_EAIN_Select,
|
||||
FunctionalState NewState)
|
||||
{
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
ADCCFG0 &= (~(uint8_t)ADC_EAIN_Select);
|
||||
#if defined (SC92F854x) || defined (SC92F754x) || defined (SC92F844xB) || defined (SC92F744xB) || defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)||defined (SC92F84Ax) || defined (SC92F74Ax)\
|
||||
|| defined(SC92F83Ax) || defined(SC92F73Ax) || defined(SC92F848x) || defined(SC92F748x) || defined(SC92F859x) || defined (SC92F759x)\
|
||||
|| defined (SC92L853x) || defined (SC92L753x)
|
||||
ADCCFG1 &= (~(uint8_t)(ADC_EAIN_Select >> 8));
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
ADCCFG0 |= ((uint8_t)ADC_EAIN_Select);
|
||||
#if defined (SC92F854x) || defined (SC92F754x) || defined (SC92F844xB) || defined (SC92F744xB)||defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB) || defined (SC92F84Ax) || defined (SC92F74Ax)\
|
||||
|| defined(SC92F83Ax) || defined(SC92F73Ax) || defined(SC92F848x) || defined(SC92F748x) || defined(SC92F859x) || defined (SC92F759x)\
|
||||
|| defined (SC92L853x) || defined (SC92L753x)
|
||||
ADCCFG1 |= ((uint8_t)(ADC_EAIN_Select >> 8));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
/*****************************************************
|
||||
*函数名称:void ADC_Cmd(FunctionalState NewState)
|
||||
*函数功能:ADC功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void ADC_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
ADCCON &= 0X7F;
|
||||
}
|
||||
else
|
||||
{
|
||||
ADCCON |= 0x80;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint16_t ADC_GetConversionValue(void)
|
||||
*函数功能:获得一次AD转换数据
|
||||
*入口参数:void
|
||||
*出口参数:uint16_t
|
||||
*****************************************************/
|
||||
unsigned int ADC_GetConversionValue(void)
|
||||
{
|
||||
return ((ADCVH << 4) + (ADCVL >> 4));
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus ADC_GetFlagStatus(void)
|
||||
*函数功能:获得ADC中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
FlagStatus:ADC中断标志状态
|
||||
*****************************************************/
|
||||
FlagStatus ADC_GetFlagStatus(void)
|
||||
{
|
||||
#if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)||defined (SC92F84Ax) || defined (SC92F74Ax)\
|
||||
|| defined (SC92F83Ax) || defined (SC92F73Ax) || defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x) || defined (SC92FWxx)\
|
||||
|| defined(SC92F848x) || defined(SC92F748x) || defined(SC92F859x) || defined (SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
return (bool)(ADCCON & 0x20);
|
||||
#elif defined(SC92F742x) || defined(SC92F730x) || defined(SC92F725X) || defined(SC92F735X) || defined(SC92F732X) || defined(SC92F7490) || defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||||
return (bool)(ADCCON & 0x10);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void ADC_ClearFlag(void)
|
||||
*函数功能:清除ADC中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void ADC_ClearFlag(void)
|
||||
{
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92F846xB) || defined(SC92F746xB) || defined(SC92F836xB) || defined(SC92F736xB) || defined(SC92F84Ax) || defined(SC92F74Ax)\
|
||||
|| defined(SC92F83Ax) || defined(SC92F73Ax) || defined(SC92F8003) || defined(SC92F740x) || defined(SC92F848x) || defined(SC92F748x)\
|
||||
|| defined(SC92F859x) || defined(SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
ADCCON &= 0xdf;
|
||||
#endif
|
||||
#if defined(SC92F742x) || defined(SC92F730x) || defined(SC92F725X) || defined(SC92F735X) || defined(SC92F732X) || defined(SC92F7490) || defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||||
ADCCON &= 0xef;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||||
unsigned int ADC_TS_StandardData = 0x8000;
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void ADC_TSCmd(PriorityStatus NewState)
|
||||
*函数功能:ADC 温度传感器功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void ADC_TSCmd(FunctionalState NewState)
|
||||
{
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
TSCFG &= 0X7F;
|
||||
}
|
||||
else
|
||||
{
|
||||
TSCFG |= 0X80;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void ADC_CHOPConfig(PriorityStatus NewState)
|
||||
*函数功能:拉高或者拉低抵消offset的应用控制位
|
||||
*入口参数:
|
||||
PriorityStatus:NewState:温度传感器高/低选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void ADC_CHOPConfig(PriorityStatus NewState)
|
||||
{
|
||||
if (NewState == LOW)
|
||||
{
|
||||
TSCFG &= 0XFE;
|
||||
}
|
||||
else
|
||||
{
|
||||
TSCFG |= 0x01;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void ADC_CHOPConfig(PriorityStatus NewState)
|
||||
*函数功能:获取出厂时ADC 25度时的转换值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
uint16_t ADC_Get_TS_StandardData(void)
|
||||
{
|
||||
unsigned int code *IFBAddr = 0x3E;
|
||||
IAPADE = 0x01; //指针指向 IFB 区
|
||||
ADC_TS_StandardData = *(IFBAddr);
|
||||
IAPADE = 0x00; //指针指向 ROM 区
|
||||
return ADC_TS_StandardData;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void ADC_GetTSValue(void)
|
||||
*函数功能:直接获取float类型温度值,获取温度时会关闭中断
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
float:温度值
|
||||
*****************************************************/
|
||||
float ADC_GetTSValue(void)
|
||||
{
|
||||
unsigned char EADC_Flag = EADC; //获取EA标志位状态
|
||||
unsigned int ADC_Value1 = 0, ADC_Value2 = 0, ADC_Value = 0;
|
||||
unsigned int code *IFBAddr = 0x3E;
|
||||
|
||||
ADC_Get_TS_StandardData();
|
||||
disableInterrupts(); //关闭中断
|
||||
ADC_CHOPConfig(LOW); //拉低抵消offset的应用控制位
|
||||
ADC_StartConversion(); //开始AD转换
|
||||
while(!ADC_GetFlagStatus()); //等待转换完成
|
||||
ADC_ClearFlag(); //清除转换标志位
|
||||
ADC_Value1 = ADC_GetConversionValue(); //获取第一次AD的转换值
|
||||
ADC_CHOPConfig(HIGH); //拉高抵消offset的应用控制位
|
||||
ADC_StartConversion(); //开始AD转换
|
||||
while(!ADC_GetFlagStatus()); //等待转换完成
|
||||
ADC_ClearFlag(); //清除转换标志位
|
||||
ADC_Value2 = ADC_GetConversionValue(); //获取第二次AD的转换值
|
||||
ADC_Value = (ADC_Value1 + ADC_Value2) / 2; //获取两次AD采样的平均值
|
||||
|
||||
if (EADC_Flag) //还原加入运算前的EA标志位
|
||||
{
|
||||
enableInterrupts();
|
||||
}
|
||||
return (25 + ((float)ADC_Value - (float)ADC_TS_StandardData) / 8);
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:ADC_PGAConfig(ADC_PGACOM_TypeDef ADC_PGACOM,ADC_PGAGAN_TypeDef ADC_PGAGAN,ADC_PGAIPT_TypeDef ADC_PGAIPT)
|
||||
*函数功能:PGA相关配置
|
||||
*入口参数:
|
||||
ADC_PGACOM_TypeDef:ADC_PGACOM:PGA共模电压选择
|
||||
ADC_PGAGAN_TypeDef:ADC_PGAGAN:PGA增益放大倍数
|
||||
ADC_PGAIPT_TypeDef:ADC_PGAIPT:PGA同相/反相选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void ADC_PGAConfig(ADC_PGACOM_TypeDef ADC_PGACOM, ADC_PGAGAN_TypeDef ADC_PGAGAN, ADC_PGAIPT_TypeDef ADC_PGAIPT)
|
||||
{
|
||||
PGACON &= 0x8F;
|
||||
PGACON |= (ADC_PGACOM | ADC_PGAGAN | ADC_PGAIPT);
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void ADC_PGACmd(PriorityStatus NewState)
|
||||
*函数功能:ADC PGA功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void ADC_PGACmd(PriorityStatus NewState)
|
||||
{
|
||||
if (NewState == LOW)
|
||||
{
|
||||
PGACON &= 0XFE;
|
||||
}
|
||||
else
|
||||
{
|
||||
PGACON |= 0x01;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void ADC_VrefConfig(ADC_Vref_TypeDef ADC_Vref)
|
||||
*函数功能:ADC 参考电压选择
|
||||
*入口参数:
|
||||
ADC_Vref_TypeDef:ADC_Vref:选择ADC参考电压
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void ADC_VrefConfig(ADC_Vref_TypeDef ADC_Vref)
|
||||
{
|
||||
OPINX = 0xC2;
|
||||
OPREG = OPREG & 0X7F | ADC_Vref;
|
||||
}
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2021 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92f_btm.c
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: BTM固件库函数C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022年4月2日
|
||||
// 版本: V1.10002
|
||||
// 说明:
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_btm.h"
|
||||
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void BTM_Init(BTM_Timebase_TypeDef BTM_Timebase)
|
||||
*函数功能:BTM初始化配置函数
|
||||
*入口参数:
|
||||
BTM_Timebase_TypeDef:BTM_Timebase:BTM溢出时间选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void BTM_Init(BTM_Timebase_TypeDef BTM_Timebase)
|
||||
{
|
||||
BTMCON = (BTMCON & 0xF0) | BTM_Timebase; //配置溢出时间
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void BTM_Cmd(FunctionalState NewState)
|
||||
*函数功能:BTM功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void BTM_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
BTMCON &= 0x7f; //失能BTM
|
||||
}
|
||||
else
|
||||
{
|
||||
BTMCON |= 0x80; //使能BTM
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void BTM_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:BTM中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void BTM_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority)
|
||||
{
|
||||
//中断使能设置
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
IE1 &= 0xfb;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE1 |= 0x04;
|
||||
}
|
||||
|
||||
//中断优先级设置
|
||||
if(Priority == LOW)
|
||||
{
|
||||
IP1 &= 0xfb;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP1 |= 0x04;
|
||||
}
|
||||
}
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_chksum.c
|
||||
// 作者 :
|
||||
// 模块功能 : CHKSUM固件库函数C文件
|
||||
// 最后更正日期: 2021/08/20
|
||||
// 版本 : V1.10001
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_chksum.h"
|
||||
|
||||
#if defined(SC92F7003) || defined(SC92F8003) || defined(SC92F736xB) || defined(SC92F836xB) || defined(SC92F740x) || defined(SC92F742x)\
|
||||
|| defined(SC92F73Ax) || defined(SC92F83Ax) || defined(SC92F744xB) || defined(SC92F844xB) || defined(SC92F746xB) || defined(SC92F846xB)\
|
||||
|| defined(SC92F748x) || defined(SC92F848x) || defined(SC92F74Ax) || defined(SC92F84Ax) || defined(SC92F74Ax_2) || defined(SC92F84Ax_2)\
|
||||
|| defined(SC92F754x) || defined (SC92F854x) || defined (SC92F759x) || defined(SC92F859x) || defined (SC92F7490) || defined(SC92FWxx)\
|
||||
|| defined(SC92F827X) || defined(SC92F847X)
|
||||
/**************************************************
|
||||
*函数名称:void CHKSUM_DeInit(void)
|
||||
*函数功能:CHKSUM相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void CHKSUM_DeInit(void)
|
||||
{
|
||||
OPERCON &= 0XFE;
|
||||
CHKSUML = 0X00;
|
||||
CHKSUMH = 0X00;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void CHKSUM_StartOperation(void)
|
||||
*函数功能:触发一次check sum计算
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void CHKSUM_StartOperation(void)
|
||||
{
|
||||
OPERCON |= 0X01;
|
||||
|
||||
while(OPERCON & 0x01);
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:uint16_t CHKSUM_GetCheckValue(void)
|
||||
*函数功能:获取一次check sum计算值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint16_t:check sum计算值
|
||||
**************************************************/
|
||||
uint16_t CHKSUM_GetCheckValue(void)
|
||||
{
|
||||
uint16_t checktemp;
|
||||
checktemp = (uint16_t)(CHKSUMH << 8) +
|
||||
(uint16_t)CHKSUML;
|
||||
return checktemp;
|
||||
}
|
||||
#endif
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92F_CRC.c
|
||||
// 作者 :
|
||||
// 模块功能 : CRC固件库函数C文件
|
||||
// 最后更正日期: 2020/8/13
|
||||
// 版本 : V1.0000
|
||||
// 说明 :该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_CRC.h"
|
||||
#include "intrins.H"
|
||||
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
/**************************************************
|
||||
*函数名称:unsigned long CRC_All()
|
||||
*函数功能:求本工程HEX的CRC32校验值,该计算结果会根据OPTION的IAR Range不同而变化
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint32_t:返回CRC计算结果
|
||||
**************************************************/
|
||||
uint32_t CRC_All()
|
||||
{
|
||||
uint32_t CRC_Result;
|
||||
OPERCON |= 0x01;
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
CRCINX = 0x00;
|
||||
CRC_Result = CRCREG;
|
||||
CRC_Result = CRCREG * 256 + CRC_Result;
|
||||
CRC_Result = CRCREG * 65536 + CRC_Result;
|
||||
CRC_Result = CRCREG * 16777216 + CRC_Result;
|
||||
return CRC_Result;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:uint32_t CRC_Frame(uint8_t* buff,uint8_t Length)
|
||||
*函数功能:求输入帧的CRC校验值
|
||||
*入口参数:
|
||||
uint8_t*:buff:传入需要进行CRC计算的数组
|
||||
uint8_t:Length:传入需要计算的数组长度
|
||||
*出口参数:
|
||||
uint32_t:CRC计算结果
|
||||
**************************************************/
|
||||
uint32_t CRC_Frame(uint8_t *buff, uint8_t Length)
|
||||
{
|
||||
uint8_t i;
|
||||
uint32_t CRC_Result = 0;
|
||||
|
||||
EA = 0;
|
||||
OPERCON |= 0x02;
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
|
||||
for (i = 0; i < Length; i++)
|
||||
{
|
||||
CRC_Result = *(buff + i);
|
||||
CRCREG = CRC_Result;
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
}
|
||||
|
||||
CRCINX = 0x00;
|
||||
CRC_Result = CRCREG;
|
||||
CRC_Result = CRCREG * 256 + CRC_Result;
|
||||
CRC_Result = CRCREG * 65536 + CRC_Result;
|
||||
CRC_Result = CRCREG * 16777216 + CRC_Result;
|
||||
EA = 1;
|
||||
|
||||
return CRC_Result;
|
||||
}
|
||||
#endif
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,228 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_ddic.c
|
||||
// 作者 :
|
||||
// 模块功能 : DDIC固件库函数C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022/01/20
|
||||
// 版本 : V1.10002
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_ddic.h"
|
||||
|
||||
#if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined (SC92F859x) || defined (SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
uint8_t xdata LCDRAM[30] _at_ 0xF00;
|
||||
#else
|
||||
uint8_t xdata LCDRAM[30] _at_ 0x700;
|
||||
#endif
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void DDIC_DeInit(void)
|
||||
*函数功能:DDIC相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void DDIC_DeInit(void)
|
||||
{
|
||||
DDRCON = 0X00;
|
||||
P0VO = 0X00;
|
||||
P1VO = 0X00;
|
||||
P2VO = 0X00;
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
P5VO = 0X00;
|
||||
#else
|
||||
P3VO = 0X00;
|
||||
#endif
|
||||
OTCON &= 0XF0;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void DDIC_Init(uint8_t P0OutputPin)
|
||||
*函数功能:DDIC初始化配置函数
|
||||
*入口参数:
|
||||
DDIC_DutyCycle_TypeDef:DDIC_DutyCylce:LCD/LED显示占空比控制
|
||||
DDIC_Pin_TypeDef:P0OutputPin:设置P0口引脚为LCD电压输出口,可以使用或语句操作枚举的多个成员
|
||||
DDIC_Pin_TypeDef:P1OutputPin:设置P1口引脚为LCD电压输出口,可以使用或语句操作枚举的多个成员
|
||||
DDIC_Pin_TypeDef:P2OutputPin:设置P2口引脚为LCD电压输出口,可以使用或语句操作枚举的多个成员
|
||||
DDIC_Pin_TypeDef:P3OutputPin:设置P3口引脚为LCD电压输出口,可以使用或语句操作枚举的多个成员
|
||||
注:当型号为SC92L853x或SC92L753x时,实际为设置P5口
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void DDIC_Init(DDIC_DutyCycle_TypeDef DDIC_DutyCylce,
|
||||
uint8_t P0OutputPin, uint8_t P1OutputPin,
|
||||
uint8_t P2OutputPin, uint8_t P3OutputPin)
|
||||
{
|
||||
DDRCON = DDRCON & 0XCF | DDIC_DutyCylce;
|
||||
P0VO = P0OutputPin;
|
||||
P1VO = P1OutputPin;
|
||||
P2VO = P2OutputPin;
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
P5VO = P3OutputPin;
|
||||
#else
|
||||
P3VO = P3OutputPin;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void DDIC_LEDConfig(void)
|
||||
*函数功能:LED配置函数
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void DDIC_LEDConfig(void)
|
||||
{
|
||||
DDRCON |= 0X40;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void DDIC_LCDConfig(uint8_t LCDVoltage,
|
||||
DDIC_ResSel_Typedef DDIC_ResSel,
|
||||
DDIC_BiasVoltage_Typedef DDIC_BiasVoltage)
|
||||
*函数功能:LCD配置函数
|
||||
*入口参数:
|
||||
uint8_t:LCDVoltage:LCD电压调节
|
||||
DDIC_ResSel_Typedef:DDIC_ResSel:LCD电压输出口电阻选择
|
||||
DDIC_BiasVoltage_Typedef:DDIC_BiasVoltage:LCD显示驱动偏置电压设置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void DDIC_LCDConfig(uint8_t LCDVoltage,
|
||||
DDIC_ResSel_Typedef DDIC_ResSel,
|
||||
DDIC_BiasVoltage_Typedef DDIC_BiasVoltage)
|
||||
{
|
||||
DDRCON = DDRCON & 0XB0 | LCDVoltage;
|
||||
OTCON = OTCON & 0XF2 | DDIC_ResSel | DDIC_BiasVoltage;
|
||||
}
|
||||
/**************************************************
|
||||
*函数名称:void DDIC_DMOD_Selcet(DDIC_DMOD_TypeDef DDIC_DMOD)
|
||||
*函数功能:显示驱动模式选择
|
||||
*入口参数:
|
||||
DDIC_DMOD_TypeDef:DDIC_DMOD:选择显示模式
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void DDIC_DMOD_Selcet(DDIC_DMOD_TypeDef DDIC_DMOD)
|
||||
{
|
||||
if(DDIC_DMOD == DMOD_LED)
|
||||
{
|
||||
DDRCON |= 0X40;
|
||||
}
|
||||
else
|
||||
{
|
||||
DDRCON &= 0XBF;
|
||||
}
|
||||
}
|
||||
/*****************************************************
|
||||
*函数名称:void DDIC_OutputPinOfDutycycleD4(DDIC_OutputPin_TypeDef DDIC_OutputPin)
|
||||
*函数功能:1/4占空比时segment与common复用管脚选择
|
||||
*入口参数:
|
||||
DDIC_OutputPin_TypeDef:DDIC_OutputPin:输出管脚选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void DDIC_OutputPinOfDutycycleD4(
|
||||
DDIC_OutputPin_TypeDef DDIC_OutputPin)
|
||||
{
|
||||
OTCON &= ~0X02;
|
||||
OTCON = DDIC_OutputPin<<1;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void DDIC_Cmd(FunctionalState NewState)
|
||||
*函数功能:显示驱动功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void DDIC_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
DDRCON &= 0X7F;
|
||||
}
|
||||
else
|
||||
{
|
||||
DDRCON |= 0x80;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void DDIC_Control(DDIC_Control_SEG_TypeDef DDIC_Seg,DDIC_Control_COM_TypeDef DDIC_Com,DDIC_Control_Status DDIC_Contr)
|
||||
*函数功能:控制输入的SEG和COM脚对应LCD/LED的亮灭
|
||||
*入口参数:DDIC_Control_SEG_TypeDef DDIC_Seg 选择控制的SEG口
|
||||
DDIC_Control_COM_TypeDef DDIC_Com 选择控制的COM口
|
||||
DDIC_Control_Status DDIC_Contr 控制状态
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void DDIC_Control(DDIC_Control_SEG_TypeDef DDIC_Seg,
|
||||
uint8_t DDIC_Com,
|
||||
DDIC_Control_Status DDIC_Contr)
|
||||
{
|
||||
if(DDIC_Contr)
|
||||
{
|
||||
LCDRAM[DDIC_Seg] |= DDIC_Com;
|
||||
}
|
||||
else
|
||||
{
|
||||
LCDRAM[DDIC_Seg] &= (~DDIC_Com);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB) || defined (SC92F83Ax) || defined (SC92F73Ax)\
|
||||
|| defined (SC92F84Ax) || defined (SC92F74Ax) || defined (SC92F742x) || defined (SC92F730x) || defined (SC92F725X) || defined (SC92F735X)\
|
||||
|| defined (SC92F732X) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x) || defined (SC92F848x) || defined (SC92F748x)
|
||||
/**************************************************
|
||||
*函数名称:void DDIC_DeInit(void)
|
||||
*函数功能:DDIC相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void DDIC_DeInit(void)
|
||||
{
|
||||
P0VO = 0X00;
|
||||
OTCON &= 0XF3;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void DDIC_Init(uint8_t P0OutputPin)
|
||||
*函数功能:DDIC初始化配置函数
|
||||
*入口参数:
|
||||
DDIC_Pin_TypeDef:P0OutputPin:设置P0口引脚为LCD电压输出口,可以使用或语句操作枚举的多个成员
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void DDIC_Init(uint8_t P0OutputPin)
|
||||
{
|
||||
P0VO = P0OutputPin;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void DDIC_LCDConfig(DDIC_ResSel_Typedef DDIC_ResSel)
|
||||
*函数功能:LCD配置函数
|
||||
*入口参数:
|
||||
DDIC_ResSel_Typedef:DDIC_ResSel:LCD电压输出口电阻选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void DDIC_LCDConfig(DDIC_ResSel_Typedef DDIC_ResSel)
|
||||
{
|
||||
OTCON = (OTCON & 0XF3) | DDIC_ResSel;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void DDIC_Config_Init(uint8_t P0OutputPin,DDIC_ResSel_Typedef DDIC_ResSel)
|
||||
*函数功能:LCD初始化及配置函数
|
||||
*入口参数:
|
||||
DDIC_Pin_TypeDef:P0OutputPin:设置P0口引脚为LCD电压输出口,可以使用或语句操作枚举的多个成员
|
||||
DDIC_ResSel_Typedef:DDIC_ResSel:LCD电压输出口电阻选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void DDIC_Config_Init(uint8_t P0OutputPin,
|
||||
DDIC_ResSel_Typedef DDIC_ResSel)
|
||||
{
|
||||
P0VO = P0OutputPin;
|
||||
OTCON = (OTCON & 0XF3) | DDIC_ResSel;
|
||||
}
|
||||
|
||||
#endif
|
||||
/******************* (C) COPYRIGHT 2019 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,539 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_gpio.c
|
||||
// 作者 :
|
||||
// 模块功能 : GPIO固件库函数C文件
|
||||
// 局部函数列表 :
|
||||
// 最后更正日期 : 2022/01/11
|
||||
// 版本 : V1.10004
|
||||
// 说明 : 本文件仅适用于赛元92F/93F/92L系列单片机
|
||||
//*************************************************************
|
||||
|
||||
|
||||
#include "sc92f_gpio.h"
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void GPIO_DeInit(void)
|
||||
*函数功能:GPIO相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void GPIO_DeInit(void)
|
||||
{
|
||||
P0CON = 0x00;
|
||||
P0PH = 0x00;
|
||||
P0 = 0;
|
||||
P1CON = 0x00;
|
||||
P1PH = 0x00;
|
||||
P1 = 0;
|
||||
P2CON = 0x00;
|
||||
P2PH = 0x00;
|
||||
P2 = 0;
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx) || defined(SC92F859x) || defined(SC92F759x)
|
||||
P3CON = 0x00;
|
||||
P3PH = 0x00;
|
||||
P3 = 0;
|
||||
P4CON = 0x00;
|
||||
P4PH = 0x00;
|
||||
P4 = 0;
|
||||
#endif
|
||||
#if !defined(SC92F730x) && !defined(SC92F725X) && !defined(SC92F735X) && !defined(SC92F7003) && !defined(SC92F8003) && !defined(SC92F740x) && !defined(SC92F827X) && !defined(SC92F837X)
|
||||
P5CON = 0x00;
|
||||
P5PH = 0x00;
|
||||
P5 = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void GPIO_Init(GPIO_TypeDef GPIOx, uint8_t PortPins, GPIO_Mode_TypeDef GPIO_Mode)
|
||||
*函数功能:GPIO口模式配置初始化
|
||||
*入口参数:
|
||||
GPIO_TypeDef:GPIOx:选择操作的GPIO口
|
||||
GPIO_Pin_TypeDef:PortPins:选择GPIO管脚Pxy
|
||||
GPIO_Mode_TypeDef:GPIO_Mode:选择GPIO口模式(高阻输入、上拉输入、推挽输出)
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void GPIO_Init(GPIO_TypeDef GPIOx,
|
||||
uint8_t PortPins, GPIO_Mode_TypeDef GPIO_Mode)
|
||||
{
|
||||
if (GPIOx == GPIO0)
|
||||
{
|
||||
if (GPIO_Mode == GPIO_MODE_IN_HI)
|
||||
{
|
||||
P0CON &= ~PortPins;
|
||||
P0PH &= ~PortPins;
|
||||
}
|
||||
|
||||
if (GPIO_Mode == GPIO_MODE_IN_PU)
|
||||
{
|
||||
P0CON &= ~PortPins;
|
||||
P0PH |= PortPins;
|
||||
}
|
||||
|
||||
if (GPIO_Mode == GPIO_MODE_OUT_PP)
|
||||
{
|
||||
P0CON |= PortPins;
|
||||
}
|
||||
}
|
||||
else if (GPIOx == GPIO1)
|
||||
{
|
||||
if (GPIO_Mode == GPIO_MODE_IN_HI)
|
||||
{
|
||||
P1CON &= ~PortPins;
|
||||
P1PH &= ~PortPins;
|
||||
}
|
||||
|
||||
if (GPIO_Mode == GPIO_MODE_IN_PU)
|
||||
{
|
||||
P1CON &= ~PortPins;
|
||||
P1PH |= PortPins;
|
||||
}
|
||||
|
||||
if (GPIO_Mode == GPIO_MODE_OUT_PP)
|
||||
{
|
||||
P1CON |= PortPins;
|
||||
}
|
||||
}
|
||||
else if (GPIOx == GPIO2)
|
||||
{
|
||||
if (GPIO_Mode == GPIO_MODE_IN_HI)
|
||||
{
|
||||
P2CON &= ~PortPins;
|
||||
P2PH &= ~PortPins;
|
||||
}
|
||||
|
||||
if (GPIO_Mode == GPIO_MODE_IN_PU)
|
||||
{
|
||||
P2CON &= ~PortPins;
|
||||
P2PH |= PortPins;
|
||||
}
|
||||
|
||||
if (GPIO_Mode == GPIO_MODE_OUT_PP)
|
||||
{
|
||||
P2CON |= PortPins;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx) || defined(SC92F859x) || defined(SC92F759x)
|
||||
else if (GPIOx == GPIO3)
|
||||
{
|
||||
if (GPIO_Mode == GPIO_MODE_IN_HI)
|
||||
{
|
||||
P3CON &= ~PortPins;
|
||||
P3PH &= ~PortPins;
|
||||
}
|
||||
|
||||
if (GPIO_Mode == GPIO_MODE_IN_PU)
|
||||
{
|
||||
P3CON &= ~PortPins;
|
||||
P3PH |= PortPins;
|
||||
}
|
||||
|
||||
if (GPIO_Mode == GPIO_MODE_OUT_PP)
|
||||
{
|
||||
P3CON |= PortPins;
|
||||
}
|
||||
}
|
||||
else if (GPIOx == GPIO4)
|
||||
{
|
||||
if (GPIO_Mode == GPIO_MODE_IN_HI)
|
||||
{
|
||||
P4CON &= ~PortPins;
|
||||
P4PH &= ~PortPins;
|
||||
}
|
||||
|
||||
if (GPIO_Mode == GPIO_MODE_IN_PU)
|
||||
{
|
||||
P4CON &= ~PortPins;
|
||||
P4PH |= PortPins;
|
||||
}
|
||||
|
||||
if (GPIO_Mode == GPIO_MODE_OUT_PP)
|
||||
{
|
||||
P4CON |= PortPins;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
#if !defined(SC92F730x) && !defined(SC92F725X) && !defined(SC92F735X) && !defined(SC92F7003) && !defined(SC92F8003) && !defined(SC92F740x) && !defined(SC92F827X) && !defined(SC92F837X)
|
||||
else if (GPIOx == GPIO5)
|
||||
{
|
||||
if (GPIO_Mode == GPIO_MODE_IN_HI)
|
||||
{
|
||||
P5CON &= ~PortPins;
|
||||
P5PH &= ~PortPins;
|
||||
}
|
||||
|
||||
if (GPIO_Mode == GPIO_MODE_IN_PU)
|
||||
{
|
||||
P5CON &= ~PortPins;
|
||||
P5PH |= PortPins;
|
||||
}
|
||||
|
||||
if (GPIO_Mode == GPIO_MODE_OUT_PP)
|
||||
{
|
||||
P5CON |= PortPins;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void GPIO_Write(GPIO_TypeDef GPIOx, uint8_t PortVal)
|
||||
*函数功能:GPIO口赋值
|
||||
*入口参数:
|
||||
GPIO_TypeDef:GPIOx:选择操作的GPIO口
|
||||
uint8_t:PortVal:GPIO口的值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void GPIO_Write(GPIO_TypeDef GPIOx,
|
||||
uint8_t PortVal)
|
||||
{
|
||||
if (GPIOx == GPIO0)
|
||||
{
|
||||
P0 = PortVal;
|
||||
}
|
||||
|
||||
if (GPIOx == GPIO1)
|
||||
{
|
||||
P1 = PortVal;
|
||||
}
|
||||
|
||||
if (GPIOx == GPIO2)
|
||||
{
|
||||
P2 = PortVal;
|
||||
}
|
||||
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx) || defined(SC92F859x) || defined(SC92F759x)
|
||||
|
||||
if (GPIOx == GPIO3)
|
||||
{
|
||||
P3 = PortVal;
|
||||
}
|
||||
|
||||
if (GPIOx == GPIO4)
|
||||
{
|
||||
P4 = PortVal;
|
||||
}
|
||||
|
||||
#endif
|
||||
#if !defined(SC92F730x) && !defined(SC92F725X) && !defined(SC92F735X) && !defined(SC92F8003) && !defined(SC92F740x) && !defined(SC92F827X) && !defined(SC92F837X) && !defined(SC92F7003)
|
||||
|
||||
if (GPIOx == GPIO5)
|
||||
{
|
||||
P5 = PortVal;
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void GPIO_WriteHigh(GPIO_TypeDef GPIOx, uint8_t PortPins)
|
||||
*函数功能:GPIO口管脚Pxy置位
|
||||
*入口参数:
|
||||
GPIO_TypeDef:GPIOx:选择操作的GPIO口
|
||||
GPIO_Pin_TypeDef:PortPins:选择GPIO口管脚Pxy
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void GPIO_WriteHigh(GPIO_TypeDef GPIOx,
|
||||
uint8_t PortPins)
|
||||
{
|
||||
if (GPIOx == GPIO0)
|
||||
{
|
||||
P0 |= PortPins;
|
||||
}
|
||||
|
||||
if (GPIOx == GPIO1)
|
||||
{
|
||||
P1 |= PortPins;
|
||||
}
|
||||
|
||||
if (GPIOx == GPIO2)
|
||||
{
|
||||
P2 |= PortPins;
|
||||
}
|
||||
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx) || defined(SC92F859x) || defined(SC92F759x)
|
||||
|
||||
if (GPIOx == GPIO3)
|
||||
{
|
||||
P3 |= PortPins;
|
||||
}
|
||||
|
||||
if (GPIOx == GPIO4)
|
||||
{
|
||||
P4 |= PortPins;
|
||||
}
|
||||
|
||||
#endif
|
||||
#if !defined(SC92F730x) && !defined(SC92F725X) && !defined(SC92F735X) && !defined(SC92F8003) && !defined(SC92F740x) && !defined(SC92F827X) && !defined(SC92F837X) && !defined(SC92F7003)
|
||||
|
||||
if (GPIOx == GPIO5)
|
||||
{
|
||||
P5 |= PortPins;
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void GPIO_WriteLow(GPIO_TypeDef GPIOx, uint8_t PortPins)
|
||||
*函数功能:GPIO口管脚Pxy复位
|
||||
*入口参数:
|
||||
GPIO_TypeDef:GPIOx:选择操作的GPIO口
|
||||
GPIO_Pin_TypeDef:PortPins:选择GPIO口管脚Pxy
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void GPIO_WriteLow(GPIO_TypeDef GPIOx,
|
||||
uint8_t PortPins)
|
||||
{
|
||||
if (GPIOx == GPIO0)
|
||||
{
|
||||
P0 &= ~PortPins;
|
||||
}
|
||||
|
||||
if (GPIOx == GPIO1)
|
||||
{
|
||||
P1 &= ~PortPins;
|
||||
}
|
||||
|
||||
if (GPIOx == GPIO2)
|
||||
{
|
||||
P2 &= ~PortPins;
|
||||
}
|
||||
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx) || defined(SC92F859x) || defined(SC92F759x)
|
||||
|
||||
if (GPIOx == GPIO3)
|
||||
{
|
||||
P3 &= ~PortPins;
|
||||
}
|
||||
|
||||
if (GPIOx == GPIO4)
|
||||
{
|
||||
P4 &= ~PortPins;
|
||||
}
|
||||
|
||||
#endif
|
||||
#if !defined(SC92F730x) && !defined(SC92F725X) && !defined(SC92F735X) && !defined(SC92F8003) && !defined(SC92F740x) && !defined(SC92F827X) && !defined(SC92F837X) && !defined(SC92F7003)
|
||||
|
||||
if (GPIOx == GPIO5)
|
||||
{
|
||||
P5 &= ~PortPins;
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:uint8_t GPIO_ReadPort(GPIO_TypeDef GPIOx)
|
||||
*函数功能:读GPIO口Px的值
|
||||
*入口参数:
|
||||
GPIO_TypeDef:GPIOx:选择操作的GPIO口
|
||||
*出口参数:uint8_t 返回Px的值
|
||||
**************************************************/
|
||||
uint8_t GPIO_ReadPort(GPIO_TypeDef GPIOx)
|
||||
{
|
||||
if (GPIOx == GPIO0)
|
||||
{
|
||||
return P0;
|
||||
}
|
||||
else if (GPIOx == GPIO1)
|
||||
{
|
||||
return P1;
|
||||
}
|
||||
else if (GPIOx == GPIO2)
|
||||
{
|
||||
return P2;
|
||||
}
|
||||
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx) || defined(SC92F859x) || defined(SC92F759x)
|
||||
else if (GPIOx == GPIO3)
|
||||
{
|
||||
return P3;
|
||||
}
|
||||
else if (GPIOx == GPIO4)
|
||||
{
|
||||
return P4;
|
||||
}
|
||||
|
||||
#endif
|
||||
#if !defined(SC92F730x) && !defined(SC92F725X) && !defined(SC92F735X) && !defined(SC92F8003) && !defined(SC92F740x) && !defined(SC92F827X) && !defined(SC92F837X) && !defined(SC92F7003)
|
||||
else if (GPIOx == GPIO5)
|
||||
{
|
||||
return P5;
|
||||
}
|
||||
|
||||
#endif
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:BitStatus GPIO_ReadPin(GPIO_TypeDef GPIOx, uint8_t PortPins)
|
||||
*函数功能:读GPIO口管脚Pxy的值
|
||||
*入口参数:
|
||||
GPIO_TypeDef:GPIOx:选择操作的GPIO口
|
||||
GPIO_Pin_TypeDef:PortPins:选择GPIO口管脚Pxy
|
||||
*出口参数:BitStatus 返回Pxy的值
|
||||
**************************************************/
|
||||
BitStatus GPIO_ReadPin(GPIO_TypeDef GPIOx,
|
||||
uint8_t PortPins)
|
||||
{
|
||||
if (GPIOx == GPIO0)
|
||||
{
|
||||
return ((bit)(P0 & PortPins));
|
||||
}
|
||||
else if (GPIOx == GPIO1)
|
||||
{
|
||||
return ((bit)(P1 & PortPins));
|
||||
}
|
||||
else if (GPIOx == GPIO2)
|
||||
{
|
||||
return ((bit)(P2 & PortPins));
|
||||
}
|
||||
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx) || defined(SC92F859x) || defined(SC92F759x)
|
||||
else if (GPIOx == GPIO3)
|
||||
{
|
||||
return ((bit)(P3 & PortPins));
|
||||
}
|
||||
else if (GPIOx == GPIO4)
|
||||
{
|
||||
return ((bit)(P4 & PortPins));
|
||||
}
|
||||
|
||||
#endif
|
||||
#if !defined(SC92F730x) && !defined(SC92F725X) && !defined(SC92F735X) && !defined(SC92F8003) && !defined(SC92F740x) && !defined(SC92F827X) && !defined(SC92F837X) && !defined(SC92F7003)
|
||||
else if (GPIOx == GPIO5)
|
||||
{
|
||||
return ((bit)(P5 & PortPins));
|
||||
}
|
||||
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void GPIO_IOH_Config(GPIO_TypeDef GPIOx, uint8_t PortPins,GPIO_IOH_Grade_TypeDef GPIO_IOH_Grade)
|
||||
*函数功能:设置GPIO口管脚IOH输出能力
|
||||
*入口参数:
|
||||
GPIO_TypeDef:GPIOx:选择操作的GPIO口
|
||||
GPIO_Pin_TypeDef:PortPins:选择GPIO口管脚Pxy
|
||||
GPIO_IOH_Grade_TypeDef:GPIO_IOH_Grade:IO输出等级
|
||||
*出口参数:BitStatus 返回Pxy的值
|
||||
**************************************************/
|
||||
#if !defined(SC92F7003) && !defined(SC92F8003) && !defined(SC92F740x)
|
||||
void GPIO_IOH_Config(GPIO_TypeDef GPIOx, GPIO_Pin_TypeDef PortPins, GPIO_IOH_Grade_TypeDef GPIO_IOH_Grade)
|
||||
{
|
||||
#if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92F84Ax_2) || defined(SC92F74Ax_2)\
|
||||
|| defined(SC92FWxx) || defined(SC92F859x) || defined(SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
switch (GPIOx)
|
||||
{
|
||||
case GPIO0:
|
||||
if (PortPins == GPIO_PIN_LNIB)
|
||||
{
|
||||
IOHCON0 &= 0xFC;
|
||||
IOHCON0 |= GPIO_IOH_Grade;
|
||||
}
|
||||
else if (PortPins == GPIO_PIN_HNIB)
|
||||
{
|
||||
IOHCON0 &= 0xF3;
|
||||
IOHCON0 |= GPIO_IOH_Grade << 2;
|
||||
}
|
||||
break;
|
||||
case GPIO1:
|
||||
if (PortPins == GPIO_PIN_LNIB)
|
||||
{
|
||||
IOHCON0 &= 0xCF;
|
||||
IOHCON0 |= GPIO_IOH_Grade << 4;
|
||||
}
|
||||
else if (PortPins == GPIO_PIN_HNIB)
|
||||
{
|
||||
IOHCON0 &= 0x3F;
|
||||
IOHCON0 |= GPIO_IOH_Grade << 6;
|
||||
}
|
||||
break;
|
||||
case GPIO2:
|
||||
if (PortPins == GPIO_PIN_LNIB)
|
||||
{
|
||||
IOHCON1 &= 0xFC;
|
||||
IOHCON1 |= GPIO_IOH_Grade;
|
||||
}
|
||||
else if (PortPins == GPIO_PIN_HNIB)
|
||||
{
|
||||
IOHCON1 &= 0xF3;
|
||||
IOHCON1 |= GPIO_IOH_Grade << 2;
|
||||
}
|
||||
break;
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
case GPIO5:
|
||||
if (PortPins == GPIO_PIN_LNIB)
|
||||
{
|
||||
IOHCON1 &= 0xCF;
|
||||
IOHCON1 |= GPIO_IOH_Grade << 4;
|
||||
}
|
||||
else if (PortPins == GPIO_PIN_HNIB)
|
||||
{
|
||||
IOHCON1 &= 0x3f;
|
||||
IOHCON1 |= GPIO_IOH_Grade << 6;
|
||||
}
|
||||
break;
|
||||
#else
|
||||
case GPIO3:
|
||||
if (PortPins == GPIO_PIN_LNIB)
|
||||
{
|
||||
IOHCON1 &= 0xCF;
|
||||
IOHCON1 |= GPIO_IOH_Grade << 4;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#else
|
||||
switch (GPIOx)
|
||||
{
|
||||
case GPIO0:
|
||||
if (PortPins == GPIO_PIN_LNIB)
|
||||
{
|
||||
IOHCON &= 0xFC;
|
||||
IOHCON |= GPIO_IOH_Grade;
|
||||
}
|
||||
else if (PortPins == GPIO_PIN_HNIB)
|
||||
{
|
||||
IOHCON &= 0xF3;
|
||||
IOHCON |= GPIO_IOH_Grade << 2;
|
||||
}
|
||||
break;
|
||||
case GPIO2:
|
||||
if (PortPins == GPIO_PIN_LNIB)
|
||||
{
|
||||
IOHCON &= 0xFC;
|
||||
IOHCON |= GPIO_IOH_Grade;
|
||||
}
|
||||
else if (PortPins == GPIO_PIN_HNIB)
|
||||
{
|
||||
IOHCON &= 0xF3;
|
||||
IOHCON |= GPIO_IOH_Grade << 2;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2021 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,172 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_iap.c
|
||||
// 作者 :
|
||||
// 模块功能 : IAP固件库函数C文件
|
||||
// 最后更正日期: 2022/01/24
|
||||
// 版本 : V1.10002
|
||||
// 说明 :本文件仅适用于赛元92F/93F/92L系列单片机
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_iap.h"
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void IAP_DeInit(void)
|
||||
*函数功能:IAP相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void IAP_DeInit(void)
|
||||
{
|
||||
IAPKEY = 0X00;
|
||||
IAPADL = 0X00;
|
||||
IAPADH = 0X00;
|
||||
IAPADE = 0X00;
|
||||
IAPDAT = 0X00;
|
||||
IAPCTL = 0X00;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void IAP_SetHoldTime(IAP_HoldTime_TypeDef IAP_HoldTime)
|
||||
*函数功能:IAP操作CPU Hold Time配置函数
|
||||
*入口参数:
|
||||
IAP_HoldTime_TypeDef:IAP_HoldTimed:Hold TimeTime选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void IAP_SetHoldTime(IAP_HoldTime_TypeDef
|
||||
IAP_HoldTime)
|
||||
{
|
||||
IAPCTL = IAPCTL & 0XF3 | IAP_HoldTime;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void IAP_ProgramByte(uint16_t Address, uint8_t Data, IAP_MemType_TypeDef IAP_MemType, uint8_t WriteTimeLimit)
|
||||
*函数功能:IAP写入一个字节
|
||||
*入口参数:
|
||||
uint16_t:Address:IAP操作地址
|
||||
uint8_t:Data:写入的数据
|
||||
IAP_MemType_TypeDef:IAP_MemType:IAP操作对象(ROM、EEPROM)
|
||||
备注:IAP_MEMTYPE_UID不允许写操作,对UID进行写操作无效
|
||||
uint8_t:WriteTimeLimit:IAP操作时限 (非零值)
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void IAP_ProgramByte(uint16_t Address,
|
||||
uint8_t Data, IAP_MemType_TypeDef IAP_MemType,
|
||||
uint8_t WriteTimeLimit)
|
||||
{
|
||||
BitStatus tmpbit;
|
||||
|
||||
/* UID操作区域不允许写操作 */
|
||||
if(IAP_MemType == IAP_MEMTYPE_UID)
|
||||
return;
|
||||
|
||||
tmpbit = (BitStatus)EA;
|
||||
if(tmpbit != RESET)
|
||||
{
|
||||
disableInterrupts();
|
||||
}
|
||||
|
||||
IAPADE = IAP_MemType;
|
||||
IAPDAT = Data;
|
||||
IAPADH = (uint8_t)(Address >> 8);
|
||||
IAPADL = (uint8_t)Address;
|
||||
IAPKEY = WriteTimeLimit;
|
||||
#if defined (SC92F848x) || defined (SC92F748x) || defined (SC92F859x) || defined (SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
IAPCTL |= 0x10;
|
||||
#endif
|
||||
IAPCTL |= 0x02;
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
IAPADE = IAP_MEMTYPE_ROM;
|
||||
|
||||
if(tmpbit != RESET)
|
||||
{
|
||||
enableInterrupts();
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:uint8_t IAP_ReadByte(uint16_t Address, IAP_MemType_TypeDef IAP_MemType)
|
||||
*函数功能:IAP读一个字节
|
||||
*入口参数:
|
||||
uint16_t:Address:IAP操作地址
|
||||
IAP_MemType_TypeDef:FLASH_MemType:IAP操作对象(ROM、UID、EEPROM)
|
||||
*出口参数:uint8_t 读到的字节数据
|
||||
**************************************************/
|
||||
uint8_t IAP_ReadByte(uint16_t Address,
|
||||
IAP_MemType_TypeDef IAP_MemType)
|
||||
{
|
||||
uint8_t tmpbyte;
|
||||
BitStatus tmpbit;
|
||||
tmpbit = (BitStatus)EA;
|
||||
|
||||
if(tmpbit != RESET)
|
||||
{
|
||||
disableInterrupts();
|
||||
}
|
||||
|
||||
IAPADE = IAP_MemType;
|
||||
tmpbyte = *((uint8_t code*)Address);
|
||||
IAPADE = IAP_MEMTYPE_ROM;
|
||||
|
||||
if(tmpbit != RESET)
|
||||
{
|
||||
enableInterrupts();
|
||||
}
|
||||
|
||||
return tmpbyte;
|
||||
}
|
||||
|
||||
#if defined (SC92F848x) || defined (SC92F748x) || defined (SC92F859x) || defined (SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
/**************************************************
|
||||
*函数名称:void IAP_SectorErase(IAP_MemType_TypeDef IAP_MemType, uint16_t IAP_SectorEraseAddress)
|
||||
*函数功能:IAP扇区擦除
|
||||
*入口参数:
|
||||
IAP_MemType_TypeDef:IAP_MemType:IAP操作对象(ROM)
|
||||
uint32_t:IAP_SectorEraseAddress:IAP扇区擦除目标地址
|
||||
uint8_t:WriteTimeLimit:IAP操作时限(值需大于等于0x40)
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void IAP_SectorErase(IAP_MemType_TypeDef IAP_MemType, uint32_t IAP_SectorEraseAddress,
|
||||
uint8_t WriteTimeLimit)
|
||||
{
|
||||
/* UID操作区域不允许扇区擦除操作 */
|
||||
if((IAP_MemType == IAP_MEMTYPE_UID) || (IAP_MemType == IAP_MEMTYPE_EEPROM))
|
||||
return;
|
||||
|
||||
IAPADE = IAP_MemType;
|
||||
IAPADH = (uint8_t)(IAP_SectorEraseAddress >> 8); //擦除IAP目标地址高位值
|
||||
IAPADL = (uint8_t)IAP_SectorEraseAddress; //擦除IAP目标地址低位值
|
||||
IAPKEY = WriteTimeLimit;
|
||||
IAPCTL = 0x20;
|
||||
IAPCTL |= 0x02;
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
IAPADE = IAP_MEMTYPE_ROM;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void IAP_BootLoaderControl(IAP_BTLDType_TypeDef IAP_BTLDType)
|
||||
*函数功能:MCU复位后从那个区域启动
|
||||
*入口参数:
|
||||
IAP_BTLDType_TypeDef:IAP_BTLDType:选择启动区域
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void IAP_BootLoaderControl(IAP_BTLDType_TypeDef IAP_BTLDType)
|
||||
{
|
||||
IAPCTL = (IAPCTL & ~IAP_BTLDType_LDROM) | IAP_BTLDType;
|
||||
}
|
||||
#endif
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,284 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_int.c
|
||||
// 作者 :
|
||||
// 模块功能 : INT固件库函数C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022/01/05
|
||||
// 版本 : V1.10003
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_int.h"
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void INT_DeInit(INTx_Typedef INTx)
|
||||
*函数功能:INTx相关寄存器复位至缺省值
|
||||
*入口参数:
|
||||
INTx_Typedef:INTx:INTx选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
#if !defined (SC92F827X) && !defined (SC92F837X) && !defined (SC92F730x) && !defined (SC92F725X) && !defined (SC92F735X) && !defined (SC92F7490)
|
||||
void INT_DeInit(INTx_Typedef INTx)
|
||||
{
|
||||
switch(INTx)
|
||||
{
|
||||
case INT0:
|
||||
INT0R = 0x00;
|
||||
INT0F = 0x00;
|
||||
IE &= (~0X01);
|
||||
IP &= ~0X01;
|
||||
TCON &= (~0X02);
|
||||
break;
|
||||
|
||||
case INT1:
|
||||
INT1R = 0x00;
|
||||
INT1F = 0x00;
|
||||
IE &= (~0X04);
|
||||
IP &= ~0X04;
|
||||
TCON &= (~0X08);
|
||||
break;
|
||||
|
||||
case INT2:
|
||||
INT2R = 0x00;
|
||||
INT2F = 0x00;
|
||||
IE1 &= (~0X08);
|
||||
IP1 &= ~0X08;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
#else
|
||||
void INT_DeInit(INTx_Typedef INTx)
|
||||
{
|
||||
switch(INTx)
|
||||
{
|
||||
case INT0:
|
||||
INT0R = 0x00;
|
||||
INT0F = 0x00;
|
||||
IE &= (~0X01);
|
||||
IP &= ~0X01;
|
||||
TCON &= (~0X02);
|
||||
break;
|
||||
|
||||
case INT2:
|
||||
INT2R = 0x00;
|
||||
INT2F = 0x00;
|
||||
IE1 &= (~0X08);
|
||||
IP1 &= ~0X08;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void INT0_SetTriggerMode(uint8_t INT0x, INT_TriggerMode_Typedef TriggerMode)
|
||||
*函数功能:INT0x中断触发方式配置函数
|
||||
*入口参数:
|
||||
INT0x_Typedef:INT0x:INT0x选择
|
||||
INT_TriggerMode_Typedef:TriggerMode:中断触发方式选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void INT0_SetTriggerMode(uint8_t INT0x,
|
||||
INT_TriggerMode_Typedef TriggerMode)
|
||||
{
|
||||
switch(TriggerMode)
|
||||
{
|
||||
case INT_TRIGGER_RISE_ONLY:
|
||||
INT0R |= INT0x;
|
||||
INT0F &= (~INT0x);
|
||||
break;
|
||||
|
||||
case INT_TRIGGER_FALL_ONLY:
|
||||
INT0R &= (~INT0x);
|
||||
INT0F |= INT0x;
|
||||
break;
|
||||
|
||||
case INT_TRIGGER_RISE_FALL:
|
||||
INT0R |= INT0x;
|
||||
INT0F |= INT0x;
|
||||
break;
|
||||
|
||||
case INT_TRIGGER_DISABLE:
|
||||
INT0R &= (~INT0x);
|
||||
INT0F &= (~INT0x);
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void INT1_SetTriggerMode(uint8_t INT1x, INT_TriggerMode_Typedef TriggerMode)
|
||||
*函数功能:INT1x中断触发方式配置函数
|
||||
*入口参数:
|
||||
INT1x_Typedef:INT1x:INT1x选择
|
||||
INT_TriggerMode_Typedef:TriggerMode:中断触发方式选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
#if !defined (SC92F827X) && !defined (SC92F837X) && !defined (SC92F730x) && !defined (SC92F725X) && !defined (SC92F735X) && !defined (SC92F7490)
|
||||
void INT1_SetTriggerMode(uint8_t INT1x,
|
||||
INT_TriggerMode_Typedef TriggerMode)
|
||||
{
|
||||
switch(TriggerMode)
|
||||
{
|
||||
case INT_TRIGGER_RISE_ONLY:
|
||||
INT1R |= INT1x;
|
||||
INT1F &= (~INT1x);
|
||||
break;
|
||||
|
||||
case INT_TRIGGER_FALL_ONLY:
|
||||
INT1R &= (~INT1x);
|
||||
INT1F |= INT1x;
|
||||
break;
|
||||
|
||||
case INT_TRIGGER_RISE_FALL:
|
||||
INT1R |= INT1x;
|
||||
INT1F |= INT1x;
|
||||
break;
|
||||
|
||||
case INT_TRIGGER_DISABLE:
|
||||
INT1R &= (~INT1x);
|
||||
INT1F &= (~INT1x);
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void INT2_SetTriggerMode(uint8_t INT2x, INT_TriggerMode_Typedef TriggerMode)
|
||||
*函数功能:INT2x中断触发方式配置函数
|
||||
*入口参数:
|
||||
INT2x_Typedef:INT2x:INT2x选择
|
||||
INT_TriggerMode_Typedef:TriggerMode:中断触发方式选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void INT2_SetTriggerMode(uint8_t INT2x,
|
||||
INT_TriggerMode_Typedef TriggerMode)
|
||||
{
|
||||
switch(TriggerMode)
|
||||
{
|
||||
case INT_TRIGGER_RISE_ONLY:
|
||||
INT2R |= INT2x;
|
||||
INT2F &= (~INT2x);
|
||||
break;
|
||||
|
||||
case INT_TRIGGER_FALL_ONLY:
|
||||
INT2R &= (~INT2x);
|
||||
INT2F |= INT2x;
|
||||
break;
|
||||
|
||||
case INT_TRIGGER_RISE_FALL:
|
||||
INT2R |= INT2x;
|
||||
INT2F |= INT2x;
|
||||
break;
|
||||
|
||||
case INT_TRIGGER_DISABLE:
|
||||
INT2R &= (~INT2x);
|
||||
INT2F &= (~INT2x);
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void INT0_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:INT0中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void INT0_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority)
|
||||
{
|
||||
if(NewState != DISABLE)
|
||||
{
|
||||
IE |= 0X01;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE &= (~0X01);
|
||||
}
|
||||
|
||||
if(Priority == LOW)
|
||||
{
|
||||
IP &= ~0X01;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP |= 0X01;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void INT1_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:INT1中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void INT1_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority)
|
||||
{
|
||||
if(NewState != DISABLE)
|
||||
{
|
||||
IE |= 0X04;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE &= (~0X04);
|
||||
}
|
||||
|
||||
if(Priority == LOW)
|
||||
{
|
||||
IP &= ~0X04;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP |= 0X04;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void INT2_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:INT0中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void INT2_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority)
|
||||
{
|
||||
if(NewState != DISABLE)
|
||||
{
|
||||
IE1 |= 0X08;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE1 &= (~0X08);
|
||||
}
|
||||
|
||||
if(Priority == LOW)
|
||||
{
|
||||
IP1 &= ~0X08;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP1 |= 0X08;
|
||||
}
|
||||
}
|
||||
|
||||
/******************* (C) COPYRIGHT 2021 SinOne Microelectronics *****END OF FILE****/
|
||||
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92F_LPD.c
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: LPD固件库函数C文件
|
||||
// 最后更正日期: 2022年3月23日
|
||||
// 版本: V1.100002
|
||||
// 说明: 该文件仅适用于SC92L系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_lpd.h"
|
||||
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI1_DeInit(void)
|
||||
*函数功能:USCI1相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void LPD_DeInit(void)
|
||||
{
|
||||
/* 配置相关寄存器复位 */
|
||||
LPDCFG = 0x00;
|
||||
/* 中断相关寄存器复位 */
|
||||
IE2 &= 0x7F;
|
||||
IP2 &= 0x7F;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void LPD_VtripConfig(LPD_Vtrip_TypeDef LPD_Vtrip)
|
||||
*函数功能:设置LPD门限电压阈值
|
||||
*入口参数:
|
||||
LPD_Vtrip_TypeDef:LPD_Vtrip:LPD门限电压阈值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void LPD_VtripConfig(LPD_Vtrip_TypeDef LPD_Vtrip)
|
||||
{
|
||||
LPDCFG &= 0xF1; //复位门限电压阈值寄存器
|
||||
LPDCFG = LPD_Vtrip << 1; //设置门限电压阈值寄存器
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void LPD_Cmd(FunctionalState NewState)
|
||||
*函数功能:使能LPD功能
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能使能/失能
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void LPD_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if(NewState == ENABLE)
|
||||
{
|
||||
LPDCFG &= 0xFE;
|
||||
}
|
||||
else
|
||||
{
|
||||
LPDCFG |= 0x01;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void LPD_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:LPD中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void LPD_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
{
|
||||
/* 中断开关 */
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
IE2 |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE2 &= 0xFE;
|
||||
}
|
||||
|
||||
/* 中断优先级 */
|
||||
if (Priority != LOW)
|
||||
{
|
||||
IP2 |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP2 &= 0xFE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_mdu.c
|
||||
// 作者 :
|
||||
// 模块功能 : MDU固件库函数C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022/01/24
|
||||
// 版本 : V1.10001
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_mdu.h"
|
||||
|
||||
#if defined (SC92F854x) || defined (SC92F754x) || defined (SC92F844xB) || defined (SC92F744xB) || defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB) || defined (SC92F848x) || defined (SC92F748x)\
|
||||
|| defined (SC92F859x) || defined (SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
/**************************************************
|
||||
*函数名称:void MDU_DeInit(void)
|
||||
*函数功能:MDU相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void MDU_DeInit(void)
|
||||
{
|
||||
OPERCON &= 0X3F;
|
||||
EXA0 = 0X00;
|
||||
EXA1 = 0X00;
|
||||
EXA2 = 0X00;
|
||||
EXA3 = 0X00;
|
||||
EXBL = 0X00;
|
||||
EXBH = 0X00;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void MDU_MultiplicationConfig(uint16_t Multiplicand, uint16_t Multiplier)
|
||||
*函数功能:MDU乘法运算配置函数
|
||||
*入口参数:
|
||||
uint32_t:Multiplicand:被乘数
|
||||
uint32_t:Multiplier:乘数
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void MDU_MultiplicationConfig(uint16_t
|
||||
Multiplicand, uint16_t Multiplier)
|
||||
{
|
||||
OPERCON &= 0XBF;
|
||||
EXBL = Multiplier ;
|
||||
EXBH = Multiplier >> 8;
|
||||
EXA0 = Multiplicand ;
|
||||
EXA1 = Multiplicand >> 8;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void MDU_DivisionConfig(uint32_t Dividend, uint16_t Divisor)
|
||||
*函数功能:MDU除法运算配置函数
|
||||
*入口参数:
|
||||
uint32_t:Dividend:被除数
|
||||
uint32_t:Divisor:除数
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void MDU_DivisionConfig(uint32_t Dividend,
|
||||
uint16_t Divisor)
|
||||
{
|
||||
MDU_Temp_Union MDU_DivisionTemp;
|
||||
MDU_DivisionTemp.MDU_Temp = Dividend;
|
||||
OPERCON |= 0X40;
|
||||
EXA0 = MDU_DivisionTemp.MDU_EXAxReg.MDU_EXA0Reg;
|
||||
EXA1 = MDU_DivisionTemp.MDU_EXAxReg.MDU_EXA1Reg;
|
||||
EXA2 = MDU_DivisionTemp.MDU_EXAxReg.MDU_EXA2Reg;
|
||||
EXA3 = MDU_DivisionTemp.MDU_EXAxReg.MDU_EXA3Reg;
|
||||
EXBL = Divisor;
|
||||
EXBH = Divisor >> 8;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void MDU_StartOperation(void)
|
||||
*函数功能:MDU启动一次运算
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void MDU_StartOperation(void)
|
||||
{
|
||||
OPERCON |= 0x80;
|
||||
|
||||
while(OPERCON & 0x80);
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:uint32_t MDU_GetProduct(void)
|
||||
*函数功能:获取乘积
|
||||
*入口参数:void
|
||||
*出口参数:uint32_t:乘积
|
||||
**************************************************/
|
||||
uint32_t MDU_GetProduct(void)
|
||||
{
|
||||
MDU_Temp_Union MDU_ProductTemp;
|
||||
MDU_ProductTemp.MDU_EXAxReg.MDU_EXA0Reg = EXA0;
|
||||
MDU_ProductTemp.MDU_EXAxReg.MDU_EXA1Reg = EXA1;
|
||||
MDU_ProductTemp.MDU_EXAxReg.MDU_EXA2Reg = EXA2;
|
||||
MDU_ProductTemp.MDU_EXAxReg.MDU_EXA3Reg = EXA3;
|
||||
return MDU_ProductTemp.MDU_Temp;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:uint32_t MDU_GetQuotient(void)
|
||||
*函数功能:获取商
|
||||
*入口参数:void
|
||||
*出口参数:uint32_t:商
|
||||
**************************************************/
|
||||
uint32_t MDU_GetQuotient(void)
|
||||
{
|
||||
MDU_Temp_Union MDU_QuotientTemp;
|
||||
MDU_QuotientTemp.MDU_EXAxReg.MDU_EXA0Reg = EXA0;
|
||||
MDU_QuotientTemp.MDU_EXAxReg.MDU_EXA1Reg = EXA1;
|
||||
MDU_QuotientTemp.MDU_EXAxReg.MDU_EXA2Reg = EXA2;
|
||||
MDU_QuotientTemp.MDU_EXAxReg.MDU_EXA3Reg = EXA3;
|
||||
return MDU_QuotientTemp.MDU_Temp;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:uint16_t MDU_GetRemainder(void)
|
||||
*函数功能:获取余数
|
||||
*入口参数:void
|
||||
*出口参数:uint16_t:余数
|
||||
**************************************************/
|
||||
uint16_t MDU_GetRemainder(void)
|
||||
{
|
||||
uint16_t MDU_RemainderTemp;
|
||||
MDU_RemainderTemp = EXBH * 256 + EXBL;
|
||||
return MDU_RemainderTemp;
|
||||
}
|
||||
#endif
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,178 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_option.c
|
||||
// 作者 :
|
||||
// 模块功能 : Customer Option寄存器配置C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022/01/24
|
||||
// 版本 : V1.0005
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_option.h"
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void OPTION_WDT_Cmd(FunctionalState NewState)
|
||||
*函数功能:WDT功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void OPTION_WDT_Cmd(FunctionalState NewState)
|
||||
{
|
||||
OPINX = 0XC1;
|
||||
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
OPREG &= 0X7F;
|
||||
}
|
||||
else
|
||||
{
|
||||
OPREG |= 0X80;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void OPTION_XTIPLL_Cmd(FunctionalState NewState)
|
||||
*函数功能:外接晶振使能
|
||||
*入口参数:
|
||||
FunctionalState:NewState:启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#if !defined(SC92F848x) && !defined(SC92F748x)
|
||||
void OPTION_XTIPLL_Cmd(FunctionalState NewState)
|
||||
{
|
||||
OPINX = 0XC1;
|
||||
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
OPREG &= 0XBF;
|
||||
}
|
||||
else
|
||||
{
|
||||
OPREG |= 0X40;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/*****************************************************
|
||||
*函数名称:void OPTION_SYSCLK_Init(SYSCLK_PresSel_TypeDef SYSCLK_PresSel)
|
||||
*函数功能:系统时钟分频初始化
|
||||
*入口参数:
|
||||
SYSCLK_PresSel_TypeDef:SYSCLK_PresSel:选择系统时钟分频
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void OPTION_SYSCLK_Init(SYSCLK_PresSel_TypeDef
|
||||
SYSCLK_PresSel)
|
||||
{
|
||||
OPINX = 0XC1;
|
||||
OPREG = OPREG & 0XCF | SYSCLK_PresSel;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void OPTION_RST_PIN_Cmd(FunctionalState NewState)
|
||||
*函数功能:外部复位管脚(P17)使能
|
||||
*入口参数:
|
||||
FunctionalState:NewState:使能/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
#if !defined(SC92F848x) && !defined(SC92F748x) && !defined(SC92F859x) && !defined (SC92F759x) && !defined(SC92L853x) && !defined (SC92L753x)
|
||||
void OPTION_RST_PIN_Cmd(FunctionalState NewState)
|
||||
{
|
||||
OPINX = 0XC1;
|
||||
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
OPREG |= 0X08;
|
||||
}
|
||||
else
|
||||
{
|
||||
OPREG &= 0XF7;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void OPTION_LVR_Init(LVR_Config_TypeDef LVR_Config)
|
||||
*函数功能:LVR 电压选择
|
||||
*入口参数:
|
||||
LVR_Config_TypeDef:LVR_Config:选择LVR电压
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void OPTION_LVR_Init(LVR_Config_TypeDef
|
||||
LVR_Config)
|
||||
{
|
||||
OPINX = 0XC1;
|
||||
OPREG = OPREG & 0XF8 | LVR_Config;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void OPTION_ADC_VrefConfig(ADC_Vref_TypeDef ADC_Vref)
|
||||
*函数功能:ADC 参考电压选择
|
||||
*入口参数:
|
||||
ADC_Vref_TypeDef:ADC_Vref:选择ADC参考电压
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void OPTION_ADC_VrefConfig(ADC_Vref_TypeDef
|
||||
ADC_Vref)
|
||||
{
|
||||
OPINX = 0xC2;
|
||||
OPREG = OPREG & 0X7F | ADC_Vref;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void OPTION_IAP_SetOperateRange(IAP_OperateRange_TypeDef IAP_OperateRange)
|
||||
*函数功能:允许IAP操作的范围设置
|
||||
*入口参数:
|
||||
IAP_OperateRange_TypeDef:IAP_OperateRange:IAP操作范围
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void OPTION_IAP_SetOperateRange(
|
||||
IAP_OperateRange_TypeDef IAP_OperateRange)
|
||||
{
|
||||
OPINX = 0xC2;
|
||||
OPREG = (OPREG & 0xF3) | IAP_OperateRange;
|
||||
}
|
||||
|
||||
#if defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined (SC92F83Ax)\
|
||||
|| defined (SC92F73Ax) || defined (SC92F84Ax) || defined (SC92F74Ax) || defined (SC92F740x)\
|
||||
|| defined (SC92F8003) || defined (SC92F7003)
|
||||
/*****************************************************
|
||||
*函数名称:void OPTION_XTIPLL_SetRange(XTIPLL_Range_TypeDef XTIPLL_Range)
|
||||
*函数功能:外部高频晶振频率范围
|
||||
*入口参数:
|
||||
XTIPLL_Range_TypeDef:XTIPLL_Range:外部晶振频率选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void OPTION_XTIPLL_SetRange(XTIPLL_Range_TypeDef
|
||||
XTIPLL_Range)
|
||||
{
|
||||
OPINX = 0XC2;
|
||||
OPREG = OPREG & 0XBF | XTIPLL_Range;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined (SC92F742x)||defined (SC92F83Ax) || defined (SC92F73Ax)|| defined (SC92F84Ax) || defined (SC92F74Ax) \
|
||||
||defined (SC92F74Ax_2)||defined (SC92F84Ax_2)||defined (SC92F844xB)||defined (SC92F744xB) \
|
||||
||defined (SC92F859x) || defined (SC92F759x) ||defined (SC92F848x) || defined (SC92F748x) || defined (SC92L853x) || defined (SC92L753x)
|
||||
/**************************************************
|
||||
*函数名称:void OPTION_JTG_Cmd(FunctionalState NewState)
|
||||
*函数功能:JTAG模式使能开关
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void OPTION_JTG_Cmd(FunctionalState NewState)
|
||||
{
|
||||
OPINX = 0xC2;
|
||||
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
OPREG |= 0X10; //1 JTAG无效
|
||||
}
|
||||
else
|
||||
{
|
||||
OPREG &= 0XEF; //0 JTAG有效
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,62 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_pwr.c
|
||||
// 作者 :
|
||||
// 模块功能 : PWR固件库函数C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2020/8/18
|
||||
// 版本 : V1.0
|
||||
// 说明 :本文件仅适用于赛元92F系列单片机
|
||||
//*************************************************************
|
||||
#include "sc92f_pwr.h"
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWR_DeInit(void)
|
||||
*函数功能:PWR相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWR_DeInit(void)
|
||||
{
|
||||
PCON &= 0XFC;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWR_EnterSTOPMode(void)
|
||||
*函数功能:MCU进入STOP模式
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWR_EnterSTOPMode(void)
|
||||
{
|
||||
PCON |= 0X02;
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWR_EnterIDLEMode(void)
|
||||
*函数功能:MCU进入IDLE模式
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWR_EnterIDLEMode(void)
|
||||
{
|
||||
PCON |= 0X01;
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
_nop_();
|
||||
}
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,420 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_ssi.c
|
||||
// 作者 :
|
||||
// 模块功能 : SSI固件库函数C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2021/08/20
|
||||
// 版本 : V1.10001
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_ssi.h"
|
||||
|
||||
#if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||||
|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB) || defined (SC92F84Ax) || defined (SC92F74Ax)\
|
||||
|| defined (SC92F83Ax) || defined (SC92F73Ax) || defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x) || defined (SC92F827X)\
|
||||
|| defined (SC92F837X) || defined (SC92FWxx) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x) || defined (SC92F848x) || defined (SC92F748x)\
|
||||
|| defined (SC92F859x) || defined (SC92F759x)
|
||||
/**************************************************
|
||||
*函数名称:void SSI_DeInit(void)
|
||||
*函数功能:SSI相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI_DeInit(void)
|
||||
{
|
||||
OTCON &= 0X3F;
|
||||
SSCON0 = 0X00;
|
||||
SSCON1 = 0X00;
|
||||
SSCON2 = 0X00;
|
||||
SSDAT = 0X00;
|
||||
IE1 &= (~0X01);
|
||||
IP1 &= (~0X01);
|
||||
}
|
||||
|
||||
#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
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI_SPI_Init(SPI_FirstBit_TypeDef FirstBit, SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,SPI_Mode_TypeDef Mode,
|
||||
SPI_ClockPolarity_TypeDef ClockPolarity, SPI_ClockPhase_TypeDef ClockPhase,SPI_TXE_INT_TypeDef SPI_TXE_INT)
|
||||
*函数功能:SPI初始化配置函数
|
||||
*入口参数:
|
||||
SPI_FirstBit_TypeDef:FirstBit:优先传送位选择(MSB/LSB)
|
||||
SPI_BaudRatePrescaler_TypeDef:BaudRatePrescaler:SPI时钟频率选择
|
||||
SPI_Mode_TypeDef:Mode:SPI工作模式选择
|
||||
SPI_ClockPolarity_TypeDef:ClockPolarity:SPI时钟极性选择
|
||||
SPI_ClockPhase_TypeDef:ClockPhase:SPI时钟相位选择
|
||||
SPI_TXE_INT_TypeDef:SPI_TXE_INT:发送缓存器中断允许选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI_SPI_Init(SPI_FirstBit_TypeDef FirstBit,
|
||||
SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,
|
||||
SPI_Mode_TypeDef Mode,
|
||||
SPI_ClockPolarity_TypeDef ClockPolarity,
|
||||
SPI_ClockPhase_TypeDef ClockPhase,
|
||||
SPI_TXE_INT_TypeDef SPI_TXE_INT)
|
||||
{
|
||||
OTCON = (OTCON & 0X3F) | 0X40;
|
||||
SSCON1 = SSCON1 & (~0X05) | FirstBit |
|
||||
SPI_TXE_INT;
|
||||
SSCON0 = SSCON0 & 0X80 | BaudRatePrescaler | Mode
|
||||
| ClockPolarity | ClockPhase;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI_SPI_Cmd(FunctionalState NewState)
|
||||
*函数功能:SPI功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI_SPI_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if(NewState != DISABLE)
|
||||
{
|
||||
SSCON0 |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
SSCON0 &= (~0X80);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI_SPI_SendData(uint8_t Data)
|
||||
*函数功能:SPI发送数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI_SPI_SendData(uint8_t Data)
|
||||
{
|
||||
SSDAT = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t SSI_SPI_ReceiveData(void)
|
||||
*函数功能:获得SSDAT中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:SPI接收到的8位数据
|
||||
*****************************************************/
|
||||
uint8_t SSI_SPI_ReceiveData(void)
|
||||
{
|
||||
return SSDAT;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI_TWI_Init(uint8_t TWI_Address)
|
||||
*函数功能:TWI初始化配置函数
|
||||
*入口参数:
|
||||
uint8_t:TWI_Address:TWI作为从机时7位从机地址配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI_TWI_Init(uint8_t TWI_Address)
|
||||
{
|
||||
OTCON = OTCON & 0X3F | 0X80;
|
||||
SSCON1 = TWI_Address << 1;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI_TWI_AcknowledgeConfig(FunctionalState NewState)
|
||||
*函数功能:TWI接收应答使能函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:接收应答使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI_TWI_AcknowledgeConfig(FunctionalState
|
||||
NewState)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
SSCON0 |= 0X08;
|
||||
}
|
||||
else
|
||||
{
|
||||
SSCON0 &= 0XF7;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI_TWI_GeneralCallCmd(FunctionalState NewState)
|
||||
*函数功能:TWI通用地址响应使能函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:通用地址响应使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI_TWI_GeneralCallCmd(FunctionalState
|
||||
NewState)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
SSCON1 |= 0X01;
|
||||
}
|
||||
else
|
||||
{
|
||||
SSCON1 &= 0XFE;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:FlagStatus SSI_GetTWIStatus(SSI_TWIState_TypeDef SSI_TWIState)
|
||||
*函数功能:获取TWI状态机
|
||||
*入口参数:
|
||||
SSI_TWIState_TypeDef:SSI_TWIState:TWI状态机状态
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
FlagStatus SSI_GetTWIStatus(SSI_TWIState_TypeDef SSI_TWIState)
|
||||
{
|
||||
if((SSCON0&0x07) == SSI_TWIState)
|
||||
return SET;
|
||||
else
|
||||
return RESET;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI_TWI_Cmd(FunctionalState NewState)
|
||||
*函数功能:TWI功能开关函数
|
||||
*入口参数:FunctionalState NewState 功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI_TWI_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if(NewState != DISABLE)
|
||||
{
|
||||
SSCON0 |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
SSCON0 &= (~0X80);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI_TWI_SendData(uint8_t Data)
|
||||
*函数功能:TWI发送数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI_TWI_SendData(uint8_t Data)
|
||||
{
|
||||
SSDAT = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t SSI_TWI_ReceiveData(void)
|
||||
*函数功能:获得SSDAT中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:TWI接收到的8位数据
|
||||
*****************************************************/
|
||||
uint8_t SSI_TWI_ReceiveData(void)
|
||||
{
|
||||
return SSDAT;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI_UART1_Init(uint32_t UART1Fsys, uint32_t BaudRate, UART1_Mode_TypeDef Mode, UART1_RX_TypeDef RxMode)
|
||||
*函数功能:UART1初始化配置函数
|
||||
*入口参数:
|
||||
uint32_t:UART1Fsys:系统时钟频率
|
||||
uint32_t:BaudRate:波特率
|
||||
UART1_Mode_TypeDef:Mode:UART1工作模式
|
||||
UART1_RX_TypeDef:RxMode:接收允许选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI_UART1_Init(uint32_t UART1Fsys,
|
||||
uint32_t BaudRate, UART1_Mode_TypeDef Mode,
|
||||
UART1_RX_TypeDef RxMode)
|
||||
{
|
||||
|
||||
#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
|
||||
OTCON |= 0xC0;
|
||||
SSCON0 = SSCON0 & 0X0F | Mode | RxMode;
|
||||
SSCON2 = UART1Fsys / BaudRate / 256;
|
||||
SSCON1 = UART1Fsys / BaudRate % 256;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI_UART1_SendData8(uint8_t Data)
|
||||
*函数功能:UART1发送8位数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI_UART1_SendData8(uint8_t Data)
|
||||
{
|
||||
SSDAT = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t SSI_UART1_ReceiveData8(void)
|
||||
*函数功能:获得SSDAT中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:UART接收到的8位数据
|
||||
*****************************************************/
|
||||
uint8_t SSI_UART1_ReceiveData8(void)
|
||||
{
|
||||
return SSDAT;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI_UART1_SendData9(uint16_t Data)
|
||||
*函数功能:UART1发送9位数据
|
||||
*入口参数:
|
||||
uint16_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI_UART1_SendData9(uint16_t Data)
|
||||
{
|
||||
uint8_t Data_9Bit;
|
||||
Data_9Bit = (Data >> 8);
|
||||
|
||||
if(Data_9Bit)
|
||||
{
|
||||
SSCON0 |= 0x08;
|
||||
}
|
||||
else
|
||||
{
|
||||
SSCON0 &= 0xf7;
|
||||
}
|
||||
|
||||
SSDAT = (uint8_t)Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint16_t SSI_UART1_ReceiveData9(void)
|
||||
*函数功能:获得SSDAT中的值及第九位的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint16_t:接收到的数据
|
||||
*****************************************************/
|
||||
uint16_t SSI_UART1_ReceiveData9(void)
|
||||
{
|
||||
uint16_t Data9;
|
||||
Data9 = SSDAT + ((uint16_t)(SSCON0 & 0X04) << 6);
|
||||
SSCON0 &= 0XFB;
|
||||
return Data9;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:SSI中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority)
|
||||
{
|
||||
if(NewState != DISABLE)
|
||||
{
|
||||
IE1 |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE1 &= 0xFE;
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
if(Priority != LOW)
|
||||
{
|
||||
IP1 |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP1 &= 0xFE;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus SSI_GetFlagStatus(SSI_Flag_TypeDef SSI_FLAG)
|
||||
*函数功能:获得SSI标志状态
|
||||
*入口参数:
|
||||
SSI_Flag_TypeDef:SSI_FLAG:所需获取的标志位
|
||||
*出口参数:
|
||||
FlagStatus:SSI标志位置起状态
|
||||
*****************************************************/
|
||||
FlagStatus SSI_GetFlagStatus(SSI_Flag_TypeDef
|
||||
SSI_FLAG)
|
||||
{
|
||||
FlagStatus bitstatus = RESET;
|
||||
|
||||
if((SSI_FLAG == SPI_FLAG_SPIF) ||
|
||||
(SSI_FLAG == SPI_FLAG_WCOL) ||
|
||||
(SSI_FLAG == SPI_FLAG_TXE))
|
||||
{
|
||||
if((SSI_FLAG & SSCON1) != (uint8_t)RESET)
|
||||
{
|
||||
bitstatus = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
bitstatus = RESET;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if((SSI_FLAG & SSCON0) != (uint8_t)RESET)
|
||||
{
|
||||
bitstatus = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
bitstatus = RESET;
|
||||
}
|
||||
}
|
||||
|
||||
return bitstatus;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI_ClearFlag(SSI_Flag_TypeDef SSI_FLAG)
|
||||
*函数功能:清除SSI标志状态
|
||||
*入口参数:
|
||||
SSI_Flag_TypeDef:SSI_FLAG:所需清除的标志位
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI_ClearFlag(SSI_Flag_TypeDef SSI_FLAG)
|
||||
{
|
||||
if((SSI_FLAG == SPI_FLAG_SPIF) ||
|
||||
(SSI_FLAG == SPI_FLAG_WCOL) ||
|
||||
(SSI_FLAG == SPI_FLAG_TXE))
|
||||
{
|
||||
SSCON1 &= (~SSI_FLAG);
|
||||
}
|
||||
else
|
||||
{
|
||||
SSCON0 &= (~SSI_FLAG);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,392 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_ssi0.c
|
||||
// 作者 :
|
||||
// 模块功能 : SSI0固件库函数C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2021/07/23
|
||||
// 版本 : V1.10000
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_ssi.h"
|
||||
|
||||
#if defined (SC92F742x) || defined (SC92F7490)
|
||||
/**************************************************
|
||||
*函数名称:void SSI0_DeInit(void)
|
||||
*函数功能:SSI0相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI0_DeInit(void)
|
||||
{
|
||||
OTCON &= 0XCF;
|
||||
SS0CON0 = 0X00;
|
||||
SS0CON1 = 0X00;
|
||||
SS0CON2 = 0X00;
|
||||
SS0DAT = 0X00;
|
||||
IE &= (~0X10);
|
||||
IP &= (~0X10);
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI0_SPI_Init(SPI_FirstBit_TypeDef FirstBit, SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,SPI_Mode_TypeDef Mode,
|
||||
SPI_ClockPolarity_TypeDef ClockPolarity, SPI_ClockPhase_TypeDef ClockPhase,SPI_TXE_INT_TypeDef SPI_TXE_INT)
|
||||
*函数功能:SPI初始化配置函数
|
||||
*入口参数:
|
||||
SPI_FirstBit_TypeDef:FirstBit:优先传送位选择(MSB/LSB)
|
||||
SPI_BaudRatePrescaler_TypeDef:BaudRatePrescaler:SPI时钟频率选择
|
||||
SPI_Mode_TypeDef:Mode:SPI工作模式选择
|
||||
SPI_ClockPolarity_TypeDef:ClockPolarityLSPI时钟极性选择
|
||||
SPI_ClockPhase_TypeDef:ClockPhase:SPI时钟相位选择
|
||||
SPI_TXE_INT_TypeDef:SPI_TXE_INT:发送缓存器中断允许选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI0_SPI_Init(SPI_FirstBit_TypeDef FirstBit,
|
||||
SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,
|
||||
SPI_Mode_TypeDef Mode,
|
||||
SPI_ClockPolarity_TypeDef ClockPolarity,
|
||||
SPI_ClockPhase_TypeDef ClockPhase,
|
||||
SPI_TXE_INT_TypeDef SPI_TXE_INT)
|
||||
{
|
||||
OTCON = (OTCON & 0XCF) | 0X10;
|
||||
SS0CON1 = SS0CON1 & (~0X05) | FirstBit |
|
||||
SPI_TXE_INT;
|
||||
SS0CON0 = SS0CON0 & 0X80 | BaudRatePrescaler |
|
||||
Mode | ClockPolarity | ClockPhase;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI0_SPI_Cmd(FunctionalState NewState)
|
||||
*函数功能:SPI功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI0_SPI_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if(NewState != DISABLE)
|
||||
{
|
||||
SS0CON0 |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
SS0CON0 &= (~0X80);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI0_SPI_SendData(uint8_t Data)
|
||||
*函数功能:SPI发送数据
|
||||
*入口参数:
|
||||
uint8_t:Data:S{PI发送的8位数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI0_SPI_SendData(uint8_t Data)
|
||||
{
|
||||
SS0DAT = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t SSI0_SPI_ReceiveData(void)
|
||||
*函数功能:获得SS0DAT中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:SPI接收到的8位数据
|
||||
*****************************************************/
|
||||
uint8_t SSI0_SPI_ReceiveData(void)
|
||||
{
|
||||
return SS0DAT;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI0_TWI_Init(uint8_t TWI_Address)
|
||||
*函数功能:TWI初始化配置函数
|
||||
*入口参数:
|
||||
uint8_t:TWI_Address:TWI作为从机时7位从机地址配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI0_TWI_Init(uint8_t TWI_Address)
|
||||
{
|
||||
OTCON = OTCON & 0XCF | 0X20;
|
||||
SS0CON1 = TWI_Address << 1;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI0_TWI_AcknowledgeConfig(FunctionalState NewState)
|
||||
*函数功能:TWI接收应答使能函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:接收应答使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI0_TWI_AcknowledgeConfig(FunctionalState
|
||||
NewState)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
SS0CON0 |= 0X08;
|
||||
}
|
||||
else
|
||||
{
|
||||
SS0CON0 &= 0XF7;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI0_TWI_GeneralCallCmd(FunctionalState NewState)
|
||||
*函数功能:TWI通用地址响应使能函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:通用地址响应使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI0_TWI_GeneralCallCmd(FunctionalState
|
||||
NewState)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
SS0CON1 |= 0X01;
|
||||
}
|
||||
else
|
||||
{
|
||||
SS0CON1 &= 0XFE;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:FlagStatus SSI0_GetTWIStatus(SSI_TWIState_TypeDef SSI_TWIState)
|
||||
*函数功能:获取TWI状态机
|
||||
*入口参数:
|
||||
SSI_TWIState_TypeDef:SSI_TWIState:TWI状态机状态
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
FlagStatus SSI0_GetTWIStatus(SSI_TWIState_TypeDef SSI_TWIState)
|
||||
{
|
||||
if((SS0CON0&0x07) == SSI_TWIState)
|
||||
return SET;
|
||||
else
|
||||
return RESET;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI0_TWI_Cmd(FunctionalState NewState)
|
||||
*函数功能:TWI功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI0_TWI_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if(NewState != DISABLE)
|
||||
{
|
||||
SS0CON0 |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
SS0CON0 &= (~0X80);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI0_TWI_SendData(uint8_t Data)
|
||||
*函数功能:TWI发送数据
|
||||
*入口参数:
|
||||
uint8_t:Data:TWI发送的8位数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI0_TWI_SendData(uint8_t Data)
|
||||
{
|
||||
SS0DAT = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t SSI0_TWI_ReceiveData(void)
|
||||
*函数功能:获得SS0DAT中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:TWI接收到的8位数据
|
||||
*****************************************************/
|
||||
uint8_t SSI0_TWI_ReceiveData(void)
|
||||
{
|
||||
return SS0DAT;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI0_UART_Init(uint32_t UARTFsys, uint32_t BaudRate, UART_Mode_TypeDef Mode, UART_RX_TypeDef RxMode)
|
||||
*函数功能:UART初始化配置函数
|
||||
*入口参数:
|
||||
uint32_t:UARTFsys:系统时钟频率
|
||||
uint32_t:BaudRate:波特率
|
||||
UART_Mode_TypeDef:Mode:UART1工作模式
|
||||
UART_RX_TypeDef:RxMode:接收允许选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI0_UART_Init(uint32_t UARTFsys,
|
||||
uint32_t BaudRate, UART_Mode_TypeDef Mode,
|
||||
UART_RX_TypeDef RxMode)
|
||||
{
|
||||
OTCON |= 0x30;
|
||||
SS0CON0 = SS0CON0 & 0X0F | Mode | RxMode;
|
||||
SS0CON2 = UARTFsys / BaudRate / 256;
|
||||
SS0CON1 = UARTFsys / BaudRate % 256;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI0_UART_SendData8(uint8_t Data)
|
||||
*函数功能:UART发送8位数据
|
||||
*入口参数:
|
||||
uint8_t:Data:UART发送的8位数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI0_UART_SendData8(uint8_t Data)
|
||||
{
|
||||
SS0DAT = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t SSI0_UART_ReceiveData8(void)
|
||||
*函数功能:获得SS0DAT中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:UART接收到的8位数据
|
||||
*****************************************************/
|
||||
uint8_t SSI0_UART_ReceiveData8(void)
|
||||
{
|
||||
return SS0DAT;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI0_UART_SendData9(uint16_t Data)
|
||||
*函数功能:UART发送9位数据
|
||||
*入口参数:
|
||||
Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI0_UART_SendData9(uint16_t Data)
|
||||
{
|
||||
uint8_t Data_9Bit;
|
||||
Data_9Bit = (Data >> 8);
|
||||
|
||||
if(Data_9Bit)
|
||||
{
|
||||
SS0CON0 |= 0x08;
|
||||
}
|
||||
else
|
||||
{
|
||||
SS0CON0 &= 0xf7;
|
||||
}
|
||||
|
||||
SS0DAT = (uint8_t)Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint16_t SSI0_UART_ReceiveData9(void)
|
||||
*函数功能:获得SS0DAT中的值及第九位的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint16_t:接收到的数据
|
||||
*****************************************************/
|
||||
uint16_t SSI0_UART_ReceiveData9(void)
|
||||
{
|
||||
uint16_t Data9;
|
||||
Data9 = SS0DAT + ((uint16_t)(SS0CON0 & 0X04) <<
|
||||
6);
|
||||
SS0CON0 &= 0XFB;
|
||||
return Data9;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI0_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:SSI0中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI0_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority)
|
||||
{
|
||||
//中断使能/关闭设置
|
||||
if(NewState != DISABLE)
|
||||
{
|
||||
IE |= 0x10;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE &= ~0x10;
|
||||
}
|
||||
|
||||
//中断优先级设置
|
||||
if(Priority != LOW)
|
||||
{
|
||||
IP |= 0x10;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP &= ~0x10;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus SSI0_GetFlagStatus(SSI_Flag_TypeDef SSI_FLAG)
|
||||
*函数功能:获得SSI0标志状态
|
||||
*入口参数:
|
||||
SSI_Flag_TypeDef:SSI_FLAG:所需获取的标志位
|
||||
*出口参数:
|
||||
FlagStatus:SSI标志位置起状态
|
||||
*****************************************************/
|
||||
FlagStatus SSI0_GetFlagStatus(SSI_Flag_TypeDef
|
||||
SSI_FLAG)
|
||||
{
|
||||
FlagStatus bitstatus = RESET;
|
||||
|
||||
if((SSI_FLAG == SPI_FLAG_SPIF) ||
|
||||
(SSI_FLAG == SPI_FLAG_WCOL) ||
|
||||
(SSI_FLAG == SPI_FLAG_TXE))
|
||||
{
|
||||
if((SSI_FLAG & SS0CON1) != (uint8_t)RESET)
|
||||
{
|
||||
bitstatus = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
bitstatus = RESET;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if((SSI_FLAG & SS0CON0) != (uint8_t)RESET)
|
||||
{
|
||||
bitstatus = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
bitstatus = RESET;
|
||||
}
|
||||
}
|
||||
|
||||
return bitstatus;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI0_ClearFlag(SSI_Flag_TypeDef SSI_FLAG)
|
||||
*函数功能:清除SSI0标志状态
|
||||
*入口参数:
|
||||
SSI_Flag_TypeDef:SSI_FLAG:所需清除的标志位
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI0_ClearFlag(SSI_Flag_TypeDef SSI_FLAG)
|
||||
{
|
||||
if((SSI_FLAG == SPI_FLAG_SPIF) ||
|
||||
(SSI_FLAG == SPI_FLAG_WCOL) ||
|
||||
(SSI_FLAG == SPI_FLAG_TXE))
|
||||
{
|
||||
SS0CON1 &= (~SSI_FLAG);
|
||||
}
|
||||
else
|
||||
{
|
||||
SS0CON0 &= (~SSI_FLAG);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2021 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,392 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_ssi1.c
|
||||
// 作者 :
|
||||
// 模块功能 : SSI1固件库函数C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2021/09/06
|
||||
// 版本 : V1.0001
|
||||
// 说明 :
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_ssi.h"
|
||||
|
||||
#if defined (SC92F742x) || defined (SC92F7490)
|
||||
/**************************************************
|
||||
*函数名称:void SSI1_DeInit(void)
|
||||
*函数功能:SSI1相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI1_DeInit(void)
|
||||
{
|
||||
OTCON &= 0X3F;
|
||||
SS1CON0 = 0X00;
|
||||
SS1CON1 = 0X00;
|
||||
SS1CON2 = 0X00;
|
||||
SS1DAT = 0X00;
|
||||
IE1 &= (~0X01);
|
||||
IP1 &= (~0X01);
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI1_SPI_Init(SPI_FirstBit_TypeDef FirstBit, SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,SPI_Mode_TypeDef Mode,
|
||||
SPI_ClockPolarity_TypeDef ClockPolarity, SPI_ClockPhase_TypeDef ClockPhase,SPI_TXE_INT_TypeDef SPI_TXE_INT)
|
||||
*函数功能:SPI初始化配置函数
|
||||
*入口参数:
|
||||
SPI_FirstBit_TypeDef:FirstBit:优先传送位选择(MSB/LSB)
|
||||
SPI_BaudRatePrescaler_TypeDef:BaudRatePrescaler:SPI时钟频率选择
|
||||
SPI_Mode_TypeDef:Mode:SPI工作模式选择
|
||||
SPI_ClockPolarity_TypeDef:ClockPolarityLSPI时钟极性选择
|
||||
SPI_ClockPhase_TypeDef:ClockPhase:SPI时钟相位选择
|
||||
SPI_TXE_INT_TypeDef:SPI_TXE_INT:发送缓存器中断允许选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI1_SPI_Init(SPI_FirstBit_TypeDef FirstBit,
|
||||
SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,
|
||||
SPI_Mode_TypeDef Mode,
|
||||
SPI_ClockPolarity_TypeDef ClockPolarity,
|
||||
SPI_ClockPhase_TypeDef ClockPhase,
|
||||
SPI_TXE_INT_TypeDef SPI_TXE_INT)
|
||||
{
|
||||
OTCON = (OTCON & 0X3F) | 0X40;
|
||||
SS1CON1 = SS1CON1 & (~0X05) | FirstBit |
|
||||
SPI_TXE_INT;
|
||||
SS1CON0 = SS1CON0 & 0X80 | BaudRatePrescaler |
|
||||
Mode | ClockPolarity | ClockPhase;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI1_SPI_Cmd(FunctionalState NewState)
|
||||
*函数功能:SPI功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI1_SPI_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if(NewState != DISABLE)
|
||||
{
|
||||
SS1CON0 |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
SS1CON0 &= (~0X80);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI1_SPI_SendData(uint8_t Data)
|
||||
*函数功能:SPI发送数据
|
||||
*入口参数:
|
||||
uint8_t:Data:S{PI发送的8位数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI1_SPI_SendData(uint8_t Data)
|
||||
{
|
||||
SS1DAT = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t SSI1_SPI_ReceiveData(void)
|
||||
*函数功能:获得SS1DAT中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:SPI接收到的8位数据
|
||||
*****************************************************/
|
||||
uint8_t SSI1_SPI_ReceiveData(void)
|
||||
{
|
||||
return SS1DAT;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI1_TWI_Init(uint8_t TWI_Address)
|
||||
*函数功能:TWI初始化配置函数
|
||||
*入口参数:
|
||||
uint8_t:TWI_Address:TWI作为从机时7位从机地址配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI1_TWI_Init(uint8_t TWI_Address)
|
||||
{
|
||||
OTCON = OTCON & 0X3F | 0X80;
|
||||
SS1CON1 = TWI_Address << 1;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI1_TWI_AcknowledgeConfig(FunctionalState NewState)
|
||||
*函数功能:TWI接收应答使能函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:接收应答使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI1_TWI_AcknowledgeConfig(FunctionalState
|
||||
NewState)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
SS1CON0 |= 0X08;
|
||||
}
|
||||
else
|
||||
{
|
||||
SS1CON0 &= 0XF7;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI1_TWI_GeneralCallCmd(FunctionalState NewState)
|
||||
*函数功能:TWI通用地址响应使能函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:通用地址响应使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI1_TWI_GeneralCallCmd(FunctionalState
|
||||
NewState)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
SS1CON1 |= 0X01;
|
||||
}
|
||||
else
|
||||
{
|
||||
SS1CON1 &= 0XFE;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI1_TWI_Cmd(FunctionalState NewState)
|
||||
*函数功能:TWI功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI1_TWI_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if(NewState != DISABLE)
|
||||
{
|
||||
SS1CON0 |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
SS1CON0 &= (~0X80);
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:FlagStatus SSI0_GetTWIStatus(SSI_TWIState_TypeDef SSI_TWIState)
|
||||
*函数功能:获取TWI状态机
|
||||
*入口参数:
|
||||
SSI_TWIState_TypeDef:SSI_TWIState:TWI状态机状态
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
FlagStatus SSI1_GetTWIStatus(SSI_TWIState_TypeDef SSI_TWIState)
|
||||
{
|
||||
if((SS1CON0&0x07) == SSI_TWIState)
|
||||
return SET;
|
||||
else
|
||||
return RESET;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI1_TWI_SendData(uint8_t Data)
|
||||
*函数功能:TWI发送数据
|
||||
*入口参数:
|
||||
uint8_t:Data:TWI发送的8位数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI1_TWI_SendData(uint8_t Data)
|
||||
{
|
||||
SS1DAT = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t SSI1_TWI_ReceiveData(void)
|
||||
*函数功能:获得SS1DAT中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:TWI接收到的8位数据
|
||||
*****************************************************/
|
||||
uint8_t SSI1_TWI_ReceiveData(void)
|
||||
{
|
||||
return SS1DAT;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void SSI1_UART_Init(uint32_t UARTFsys, uint32_t BaudRate, UART_Mode_TypeDef Mode, UART_RX_TypeDef RxMode)
|
||||
*函数功能:UART初始化配置函数
|
||||
*入口参数:
|
||||
uint32_t:UARTFsys:系统时钟频率
|
||||
uint32_t:BaudRate:波特率
|
||||
UART_Mode_TypeDef:Mode:UART1工作模式
|
||||
UART_RX_TypeDef:RxMode:接收允许选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void SSI1_UART_Init(uint32_t UARTFsys,
|
||||
uint32_t BaudRate, UART_Mode_TypeDef Mode,
|
||||
UART_RX_TypeDef RxMode)
|
||||
{
|
||||
OTCON |= 0xC0;
|
||||
SS1CON0 = SS1CON0 & 0X0F | Mode | RxMode;
|
||||
SS1CON2 = UARTFsys / BaudRate / 256;
|
||||
SS1CON1 = UARTFsys / BaudRate % 256;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI1_UART_SendData8(uint8_t Data)
|
||||
*函数功能:UART发送8位数据
|
||||
*入口参数:
|
||||
uint8_t:Data:UART发送的8位数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI1_UART_SendData8(uint8_t Data)
|
||||
{
|
||||
SS1DAT = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t SSI1_UART_ReceiveData8(void)
|
||||
*函数功能:获得SS0DAT中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:UART接收到的8位数据
|
||||
*****************************************************/
|
||||
uint8_t SSI1_UART_ReceiveData8(void)
|
||||
{
|
||||
return SS1DAT;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI1_UART_SendData9(uint16_t Data)
|
||||
*函数功能:UART发送9位数据
|
||||
*入口参数:
|
||||
Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI1_UART_SendData9(uint16_t Data)
|
||||
{
|
||||
uint8_t Data_9Bit;
|
||||
Data_9Bit = (Data >> 8);
|
||||
|
||||
if(Data_9Bit)
|
||||
{
|
||||
SS1CON0 |= 0x08;
|
||||
}
|
||||
else
|
||||
{
|
||||
SS1CON0 &= 0xf7;
|
||||
}
|
||||
|
||||
SS1DAT = (uint8_t)Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint16_t SSI1_UART_ReceiveData9(void)
|
||||
*函数功能:获得SS1DAT中的值及第九位的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint16_t:接收到的数据
|
||||
*****************************************************/
|
||||
uint16_t SSI1_UART_ReceiveData9(void)
|
||||
{
|
||||
uint16_t Data9;
|
||||
Data9 = SS1DAT + ((uint16_t)(SS1CON0 & 0X04) <<
|
||||
6);
|
||||
SS1CON0 &= 0XFB;
|
||||
return Data9;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI1_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:SSI1中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI1_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority)
|
||||
{
|
||||
//中断使能/关闭设置
|
||||
if(NewState != DISABLE)
|
||||
{
|
||||
IE1 |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE1 &= 0xFE;
|
||||
}
|
||||
|
||||
//中断优先级设置
|
||||
if(Priority != LOW)
|
||||
{
|
||||
IP1 |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP1 &= 0xFE;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus SSI1_GetFlagStatus(SSI_Flag_TypeDef SSI_FLAG)
|
||||
*函数功能:获得SSI1标志状态
|
||||
*入口参数:
|
||||
SSI_Flag_TypeDef:SSI_FLAG:所需获取的标志位
|
||||
*出口参数:
|
||||
FlagStatus:SSI标志位置起状态
|
||||
*****************************************************/
|
||||
FlagStatus SSI1_GetFlagStatus(SSI_Flag_TypeDef
|
||||
SSI_FLAG)
|
||||
{
|
||||
FlagStatus bitstatus = RESET;
|
||||
|
||||
if((SSI_FLAG == SPI_FLAG_SPIF) ||
|
||||
(SSI_FLAG == SPI_FLAG_WCOL) ||
|
||||
(SSI_FLAG == SPI_FLAG_TXE))
|
||||
{
|
||||
if((SSI_FLAG & SS1CON1) != (uint8_t)RESET)
|
||||
{
|
||||
bitstatus = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
bitstatus = RESET;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if((SSI_FLAG & SS1CON0) != (uint8_t)RESET)
|
||||
{
|
||||
bitstatus = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
bitstatus = RESET;
|
||||
}
|
||||
}
|
||||
|
||||
return bitstatus;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void SSI1_ClearFlag(SSI_Flag_TypeDef SSI_FLAG)
|
||||
*函数功能:清除SSI1标志状态
|
||||
*入口参数:
|
||||
SSI_Flag_TypeDef:SSI_FLAG:所需清除的标志位
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SSI1_ClearFlag(SSI_Flag_TypeDef SSI_FLAG)
|
||||
{
|
||||
if((SSI_FLAG == SPI_FLAG_SPIF) ||
|
||||
(SSI_FLAG == SPI_FLAG_WCOL) ||
|
||||
(SSI_FLAG == SPI_FLAG_TXE))
|
||||
{
|
||||
SS1CON1 &= (~SSI_FLAG);
|
||||
}
|
||||
else
|
||||
{
|
||||
SS1CON0 &= (~SSI_FLAG);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,165 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92f_tiemr0.c
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: TIMER0固件库函数C文件
|
||||
// 最后更正日期: 2022年3月23日
|
||||
// 版本: V1.10002
|
||||
// 说明:
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_timer0.h"
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM0_DeInit(void)
|
||||
*函数功能:TIMER0相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM0_DeInit(void)
|
||||
{
|
||||
TMOD &= 0XF0;
|
||||
TCON &= 0XCD;
|
||||
TMCON &= 0XFE;
|
||||
TH0 = 0X00;
|
||||
TL0 = 0X00;
|
||||
ET0 = 0;
|
||||
IPT0 = 0;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM0_TimeBaseInit(TIM0_PresSel_TypeDef TIM0_PrescalerSelection, TIM0_CountMode_TypeDef TIM0_CountMode)
|
||||
*函数功能:TIMER0基本设置配置函数
|
||||
*入口参数:
|
||||
TIM0_PresSel_TypeDef:TIM0_PrescalerSelection:预分频选择
|
||||
TIM0_CountMode_TypeDef:TIM0_CountMode:计数/定时模式选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM0_TimeBaseInit(TIM0_PresSel_TypeDef
|
||||
TIM0_PrescalerSelection,
|
||||
TIM0_CountMode_TypeDef TIM0_CountMode)
|
||||
{
|
||||
if(TIM0_PrescalerSelection ==
|
||||
TIM0_PRESSEL_FSYS_D12)
|
||||
{
|
||||
TMCON &= 0XFE;
|
||||
}
|
||||
else
|
||||
if(TIM0_PrescalerSelection ==
|
||||
TIM0_PRESSEL_FSYS_D1)
|
||||
{
|
||||
TMCON |= 0X01;
|
||||
}
|
||||
|
||||
if(TIM0_CountMode == TIM0_MODE_TIMER)
|
||||
{
|
||||
TMOD &= 0xFB;
|
||||
}
|
||||
else
|
||||
if(TIM0_CountMode == TIM0_MODE_COUNTER)
|
||||
{
|
||||
TMOD |= 0x04;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM0_WorkMode0Config(uint16_t TIM0_SetCounter)
|
||||
*函数功能:TIMER0工作模式0配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM0_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM0_WorkMode0Config(uint16_t
|
||||
TIM0_SetCounter)
|
||||
{
|
||||
TMOD &= 0XFC;
|
||||
TL0 = (uint8_t)TIM0_SetCounter;
|
||||
TH0 = (TIM0_SetCounter >> 5);
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM0_WorkMode1Config(uint16_t TIM0_SetCounter)
|
||||
*函数功能:TIMER0工作模式1配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM0_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM0_WorkMode1Config(uint16_t
|
||||
TIM0_SetCounter)
|
||||
{
|
||||
TMOD &= 0XFC;
|
||||
TMOD |= 0X01;
|
||||
TL0 = TIM0_SetCounter % 256;
|
||||
TH0 = TIM0_SetCounter / 256;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM0_WorkMode2Config(uint8_t TIM0_SetCounter)
|
||||
*函数功能:TIMER0工作模式2配置函数
|
||||
*入口参数:
|
||||
uint8_t:TIM0_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM0_WorkMode2Config(uint8_t TIM0_SetCounter)
|
||||
{
|
||||
TMOD &= 0XFC;
|
||||
TMOD |= 0X02;
|
||||
TL0 = TIM0_SetCounter;
|
||||
TH0 = TIM0_SetCounter;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM0_WorkModeConfig(TIM0_WorkMode_TypeDef TIM0_WorkMode, uint16_t TIM0_SetCounter1, uint16_t TIM0_SetCounter2)
|
||||
*函数功能:TIMER0工作模式配置函数
|
||||
*入口参数:
|
||||
TIM0_WorkMode_TypeDef:TIM0_WorkMode:TIMER0工作模式选择
|
||||
uint16_t:TIM0_SetCounter1:TIMER0计数初值配置1
|
||||
uint16_t:TIM0_SetCounter2:TIMER0计数初值配置2
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM0_WorkModeConfig(TIM0_WorkMode_TypeDef
|
||||
TIM0_WorkMode, uint16_t TIM0_SetCounter1,
|
||||
uint16_t TIM0_SetCounter2)
|
||||
{
|
||||
switch (TIM0_WorkMode)
|
||||
{
|
||||
case TIM0_WORK_MODE0:
|
||||
TIM0_WorkMode0Config(TIM0_SetCounter1);
|
||||
break;
|
||||
|
||||
case TIM0_WORK_MODE1:
|
||||
TIM0_WorkMode1Config(TIM0_SetCounter1);
|
||||
break;
|
||||
|
||||
case TIM0_WORK_MODE2:
|
||||
TIM0_WorkMode2Config(TIM0_SetCounter1);
|
||||
break;
|
||||
|
||||
case TIM0_WORK_MODE3:
|
||||
TIM0_WorkMode3Config(TIM0_SetCounter1,
|
||||
TIM0_SetCounter2);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM0_WorkMode3Config(uint8_t TIM0_SetCounter, uint8_t TIM1_SetCounter)
|
||||
*函数功能:TIMER0工作模式3配置函数
|
||||
*入口参数:
|
||||
uint8_t:TIM0_SetCounter:配置TIMER0_TL0计数初值
|
||||
uint8_t:TIM1_SetCounter
|
||||
配置TIMER0_TH0计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM0_WorkMode3Config(uint8_t TIM0_SetCounter,
|
||||
uint8_t TIM1_SetCounter)
|
||||
{
|
||||
TMOD |= 0X03;
|
||||
TL0 = TIM0_SetCounter;
|
||||
TH0 = TIM1_SetCounter;
|
||||
}
|
||||
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92f_timer1.c
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: TIMER1固件库函数C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022年3月23日
|
||||
// 版本: V1.10001
|
||||
// 说明:该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
#include "sc92f_timer1.h"
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM1_DeInit(void)
|
||||
*函数功能:TIMER1相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM1_DeInit(void)
|
||||
{
|
||||
TMOD &= 0X0F;
|
||||
TCON &= 0X37;
|
||||
TMCON &= 0XFD;
|
||||
TH1 = 0X00;
|
||||
TL1 = 0X00;
|
||||
ET1 = 0;
|
||||
IPT1 = 0;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM1_TimeBaseInit(TIM1_PresSel_TypeDef TIM1_PrescalerSelection, TIM1_CountMode_TypeDef TIM1_CountMode)
|
||||
*函数功能:TIMER1基本设置配置函数
|
||||
*入口参数:
|
||||
TIM1_PresSel_TypeDef:TIM1_PrescalerSelection:预分频选择
|
||||
TIM1_CountMode_TypeDef:TIM1_CountMode:计数/定时模式选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM1_TimeBaseInit(TIM1_PresSel_TypeDef TIM1_PrescalerSelection,
|
||||
TIM1_CountMode_TypeDef TIM1_CountMode)
|
||||
{
|
||||
//判断是否需要进行分频
|
||||
if(TIM1_PrescalerSelection == TIM1_PRESSEL_FSYS_D12)
|
||||
{
|
||||
TMCON &= 0xFD;
|
||||
}
|
||||
else if(TIM1_PrescalerSelection == TIM1_PRESSEL_FSYS_D1)
|
||||
{
|
||||
TMCON |= 0x02;
|
||||
}
|
||||
|
||||
//TIM1工作模式
|
||||
if(TIM1_CountMode == TIM1_MODE_TIMER)
|
||||
{
|
||||
TMOD &= 0xBF;
|
||||
}
|
||||
else if(TIM1_CountMode == TIM1_MODE_COUNTER)
|
||||
{
|
||||
TMOD |= 0x40;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM1_WorkMode0Config(uint16_t TIM1_SetCounter)
|
||||
*函数功能:TIMER1工作模式0配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM1_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM1_WorkMode0Config(uint16_t
|
||||
TIM1_SetCounter)
|
||||
{
|
||||
TMOD &= 0XCF;
|
||||
TL1 = (uint8_t)TIM1_SetCounter;
|
||||
TH1 = (TIM1_SetCounter >> 5);
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM1_WorkMode1Config(uint16_t TIM1_SetCounter)
|
||||
*函数功能:TIMER1工作模式1配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM1_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM1_WorkMode1Config(uint16_t
|
||||
TIM1_SetCounter)
|
||||
{
|
||||
TMOD &= 0XCF;
|
||||
TMOD |= 0X10;
|
||||
TL1 = TIM1_SetCounter % 256;
|
||||
TH1 = TIM1_SetCounter / 256;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM1_WorkMode2Config(uint8_t TIM1_SetCounter)
|
||||
*函数功能:TIMER1工作模式2配置函数
|
||||
*入口参数:
|
||||
uint8_t:TIM1_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM1_WorkMode2Config(uint8_t TIM1_SetCounter)
|
||||
{
|
||||
TMOD &= 0XCF;
|
||||
TMOD |= 0X20;
|
||||
TL1 = TIM1_SetCounter;
|
||||
TH1 = TIM1_SetCounter;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM1_WorkModeConfig(TIM1_WorkMode_TypeDef TIM1_WorkMode, uint16_t TIM1_SetCounter)
|
||||
*函数功能:TIMER1工作模式配置函数
|
||||
*入口参数:
|
||||
TIM1_WorkMode_TypeDef:TIM1_WorkMode:TIMER1工作模式选择
|
||||
uint16_t:TIM1_SetCounter:TIMER1计数初值配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM1_WorkModeConfig(TIM1_WorkMode_TypeDef
|
||||
TIM1_WorkMode, uint16_t TIM1_SetCounter)
|
||||
{
|
||||
switch(TIM1_WorkMode)
|
||||
{
|
||||
case TIM1_WORK_MODE0:
|
||||
TIM1_WorkMode0Config(TIM1_SetCounter);
|
||||
break;
|
||||
|
||||
case TIM1_WORK_MODE1:
|
||||
TIM1_WorkMode1Config(TIM1_SetCounter);
|
||||
break;
|
||||
|
||||
case TIM1_WORK_MODE2:
|
||||
TIM1_WorkMode2Config(TIM1_SetCounter);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,541 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92f_timer2.c
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: TIMER2固件库函数C文件
|
||||
// 最后更正日期: 2022年3月23日
|
||||
// 版本: V1.10004
|
||||
// 说明: 该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_timer2.h"
|
||||
|
||||
#if !defined (SC92L853x) && !defined(SC92L753x)
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_DeInit(void)
|
||||
*函数功能:TIMER2相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_DeInit(void)
|
||||
{
|
||||
T2CON = 0X00;
|
||||
#if !defined (SC92F730x) && !defined (SC92F827X) && !defined (SC92F837X) && !defined (SC92F725X) && !defined (SC92F735X)
|
||||
T2MOD = 0X00;
|
||||
#endif
|
||||
TMCON &= 0XFB;
|
||||
TH2 = 0X00;
|
||||
TL2 = 0X00;
|
||||
RCAP2H = 0X00;
|
||||
RCAP2L = 0X00;
|
||||
ET2 = 0;
|
||||
IPT2 = 0;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_TimeBaseInit(TIM2_PresSel_TypeDef TIM2_PrescalerSelection,TIM2_CountMode_TypeDef TIM2_CountMode, TIM2_CountDirection_TypeDef TIM2_CountDirection)
|
||||
*函数功能:TIMER2基本设置配置函数
|
||||
*入口参数:
|
||||
TIM2_PresSel_TypeDef:TIM2_PrescalerSelection:预分频选择
|
||||
TIM2_CountMode_TypeDef:TIM2_CountMode:计数/定时模式选择
|
||||
TIM2_CountDirection_TypeDef:TIM2_CountDirection:计数方向选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_TimeBaseInit(TIM2_PresSel_TypeDef
|
||||
TIM2_PrescalerSelection,
|
||||
TIM2_CountMode_TypeDef TIM2_CountMode,
|
||||
TIM2_CountDirection_TypeDef TIM2_CountDirection)
|
||||
{
|
||||
if(TIM2_PrescalerSelection == TIM2_PRESSEL_FSYS_D12)
|
||||
{
|
||||
TMCON &= 0XFB;
|
||||
}
|
||||
else if(TIM2_PrescalerSelection == TIM2_PRESSEL_FSYS_D1)
|
||||
{
|
||||
TMCON |= 0X04;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#if !defined (SC92F730x) && !defined (SC92F827X) && !defined (SC92F837X) && !defined (SC92F725X) && !defined (SC92F735X)\
|
||||
&& !defined (SC92F825X) && !defined (SC92F835X)
|
||||
|
||||
if(TIM2_CountDirection == TIM2_COUNTDIRECTION_UP)
|
||||
{
|
||||
T2MOD &= 0XFE;
|
||||
}
|
||||
else if(TIM2_CountDirection ==
|
||||
TIM2_COUNTDIRECTION_DOWN_UP)
|
||||
{
|
||||
T2MOD |= 0X01;
|
||||
}
|
||||
|
||||
if(TIM2_CountMode == TIM2_MODE_TIMER)
|
||||
{
|
||||
T2CON &= 0XFD;
|
||||
}
|
||||
else if(TIM2_CountMode == TIM2_MODE_COUNTER)
|
||||
{
|
||||
T2CON |= 0X02;
|
||||
}
|
||||
|
||||
|
||||
#else
|
||||
TIM2_CountMode = 1;
|
||||
TIM2_CountDirection = 0;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_WorkMode1Config(uint16_t TIM2_SetCounter)
|
||||
*函数功能:TIMER2工作模式1配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM2_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_WorkMode1Config(uint16_t
|
||||
TIM2_SetCounter)
|
||||
{
|
||||
RCAP2L = TIM2_SetCounter % 256;
|
||||
RCAP2H = TIM2_SetCounter / 256;
|
||||
TL2 = RCAP2L;
|
||||
TH2 = RCAP2H;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_WorkModeConfig(TIM2_WorkMode_TypeDef TIM2_WorkMode, uint16_t TIM2_SetCounter)
|
||||
*函数功能:TIMER2工作模式配置函数
|
||||
*入口参数:
|
||||
TIM2_WorkMode_TypeDef:TIM2_WorkMode:TIMER2工作模式选择
|
||||
uint16_t:TIM2_SetCounter:TIMER2计数初值配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_WorkModeConfig(TIM2_WorkMode_TypeDef
|
||||
TIM2_WorkMode, uint16_t TIM2_SetCounter)
|
||||
{
|
||||
switch(TIM2_WorkMode)
|
||||
{
|
||||
case TIM2_WORK_MODE1:
|
||||
TIM2_WorkMode1Config(TIM2_SetCounter);
|
||||
break;
|
||||
#if !defined (SC92F730x) && !defined (SC92F827X) && !defined (SC92F837X) && !defined (SC92F725X) && !defined (SC92F735X) && !defined (SC92F725X)
|
||||
case TIM2_WORK_MODE0:
|
||||
TIM2_WorkMode0Config(TIM2_SetCounter);
|
||||
break;
|
||||
|
||||
case TIM2_WORK_MODE3:
|
||||
TIM2_WorkMode3Config(TIM2_SetCounter);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#if !defined (SC92F730x) && !defined (SC92F827X) && !defined (SC92F837X) && !defined (SC92F725X) && !defined (SC92F735X)
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_WorkMode0Config(uint16_t TIM2_SetCounter)
|
||||
*函数功能:TIMER2工作模式0配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM2_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_WorkMode0Config(uint16_t
|
||||
TIM2_SetCounter)
|
||||
{
|
||||
T2CON |= 0x09;
|
||||
TL2 = TIM2_SetCounter % 256;
|
||||
TH2 = TIM2_SetCounter / 256;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_WorkMode3Config(uint16_t TIM2_SetCounter)
|
||||
*函数功能:TIMER2工作模式3配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM2_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_WorkMode3Config(uint16_t
|
||||
TIM2_SetCounter)
|
||||
{
|
||||
RCAP2L = TIM2_SetCounter % 256;
|
||||
RCAP2H = TIM2_SetCounter / 256;
|
||||
T2MOD |= 0X02;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM2_SetEXEN2(FunctionalState NewState)
|
||||
*函数功能:TIMER2_EXEN2配置函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:EXEN2使能选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM2_SetEXEN2(FunctionalState NewState)
|
||||
{
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
EXEN2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
EXEN2 = 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM2_Cmd(FunctionalState NewState)
|
||||
*函数功能:TIMER2功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM2_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
TR2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
TR2 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM2_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:TIMER2中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM2_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority)
|
||||
{
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
ET2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ET2 = 1;
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
if(Priority == LOW)
|
||||
{
|
||||
IPT2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
IPT2 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus TIM2_GetFlagStatus(void)
|
||||
*函数功能:获得TIMER2中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
FlagStatus:TIMER2中断标志状态
|
||||
*****************************************************/
|
||||
FlagStatus TIM2_GetFlagStatus(TIM2_Flag_TypeDef
|
||||
TIM2_Flag)
|
||||
{
|
||||
FlagStatus status = RESET;
|
||||
|
||||
if((TIM2_Flag & T2CON) != (uint8_t)RESET)
|
||||
{
|
||||
status = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
status = RESET;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM2_ClearFlag(void)
|
||||
*函数功能:清除TIMER2中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM2_ClearFlag(TIM2_Flag_TypeDef TIM2_Flag)
|
||||
{
|
||||
T2CON &= (~TIM2_Flag);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_DeInit(void)
|
||||
*函数功能:TIMER2相关寄存器复位至初始值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_DeInit()
|
||||
{
|
||||
TXINX = 0x02; //TIMER2选择
|
||||
TXCON = 0X00;
|
||||
TXMOD = 0X00;
|
||||
RCAPXH = 0X00;
|
||||
RCAPXL = 0X00;
|
||||
THX = 0X00;
|
||||
TLX = 0X00;
|
||||
IE1 &= 0X3F;
|
||||
IP1 &= 0X3F;
|
||||
ET2 = 0;
|
||||
IPT2 = 0;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_PrescalerSelection(TIM2_PresSel_TypeDef TIM2_PrescalerSelection)
|
||||
*函数功能:TIMER2 预分频选择
|
||||
*入口参数:
|
||||
TIM2_PresSel_TypeDef:TIM2_PrescalerSelection:预分频选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_PrescalerSelection(TIM2_PresSel_TypeDef TIM2_PrescalerSelection)
|
||||
{
|
||||
TXINX = 0x02;
|
||||
|
||||
if (TIM2_PrescalerSelection == TIM2_PRESSEL_FSYS_D12)
|
||||
{
|
||||
TXMOD &= 0X7F;
|
||||
}
|
||||
else if (TIM2_PrescalerSelection == TIM2_PRESSEL_FSYS_D1)
|
||||
{
|
||||
TXMOD |= 0X80;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_TimeBaseInit(TIM2_CountMode_TypeDef TIM2_CountMode, TIM2_CountDirection_TypeDef TIM2_CountDirection)
|
||||
*函数功能:TIM2基本设置配置函数
|
||||
*入口参数:
|
||||
TIM2_CountMode_TypeDef:TIM2_CountMode:计数/定时模式选择
|
||||
TIM2_CountDirection_TypeDef:TIM2_CountDirection:计数方向选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_TimeBaseInit(TIM2_PresSel_TypeDef TIM2_PrescalerSelection,
|
||||
TIM2_CountMode_TypeDef TIM2_CountMode,
|
||||
TIM2_CountDirection_TypeDef TIM2_CountDirection)
|
||||
{
|
||||
TXINX = 0x02;
|
||||
|
||||
TXMOD &= 0X7F;
|
||||
TXMOD = TIM2_PrescalerSelection<<7;
|
||||
|
||||
if (TIM2_CountMode == TIM2_MODE_TIMER)
|
||||
{
|
||||
TXCON &= 0XFD;
|
||||
}
|
||||
else if (TIM2_CountMode == TIM2_MODE_COUNTER)
|
||||
{
|
||||
TXCON |= 0X02;
|
||||
}
|
||||
|
||||
if (TIM2_CountDirection == TIM2_COUNTDIRECTION_UP)
|
||||
{
|
||||
TXMOD &= 0XFE;
|
||||
}
|
||||
else if (TIM2_CountDirection == TIM2_COUNTDIRECTION_DOWN_UP)
|
||||
{
|
||||
TXMOD |= 0X01;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_WorkMode0Config(uint16_t TIM2_SetCounter)
|
||||
*函数功能:TIMER2工作模式0配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM2_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_WorkMode0Config(uint16_t TIM2_SetCounter)
|
||||
{
|
||||
TXINX = 0x02;
|
||||
CP = 1;
|
||||
TLX = TIM2_SetCounter % 256;
|
||||
THX = TIM2_SetCounter / 256;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_WorkMode1Config(uint16_t TIM2_SetCounter)
|
||||
*函数功能:TIMER2工作模式1配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM2_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_WorkMode1Config(uint16_t TIM2_SetCounter)
|
||||
{
|
||||
TXINX = 0x02;
|
||||
RCAPXL = TIM2_SetCounter % 256;
|
||||
RCAPXH = TIM2_SetCounter / 256;
|
||||
|
||||
TLX = RCAPXL;
|
||||
THX = RCAPXH;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_WorkMode3Config(uint16_t TIM2_SetCounter)
|
||||
*函数功能:TIMER2工作模式3配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM2_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_WorkMode3Config(uint16_t TIM2_SetCounter)
|
||||
{
|
||||
TXINX = 0x02;
|
||||
RCAPXL = TIM2_SetCounter % 256;
|
||||
RCAPXH = TIM2_SetCounter / 256;
|
||||
TXMOD |= 0X02;
|
||||
}
|
||||
/**************************************************
|
||||
*函数名称:void TIM2_WorkModeConfig(TIM2_WorkMode_TypeDef TIM2_WorkMode, uint16_t TIM2_SetCounter)
|
||||
*函数功能:TIMER2工作模式配置函数
|
||||
*入口参数:
|
||||
TIM2_WorkMode_TypeDef:TIM2_WorkMode:TIMER2工作模式选择
|
||||
uint16_t:TIM2_SetCounter:TIMER2计数初值配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM2_WorkModeConfig(TIM2_WorkMode_TypeDef TIM2_WorkMode, uint16_t TIM2_SetCounter)
|
||||
{
|
||||
switch (TIM2_WorkMode)
|
||||
{
|
||||
case TIM2_WORK_MODE0:
|
||||
TIM2_WorkMode0Config(TIM2_SetCounter);
|
||||
break;
|
||||
|
||||
case TIM2_WORK_MODE1:
|
||||
TIM2_WorkMode1Config(TIM2_SetCounter);
|
||||
break;
|
||||
|
||||
case TIM2_WORK_MODE3:
|
||||
TIM2_WorkMode3Config(TIM2_SetCounter);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*****************************************************
|
||||
*函数名称:void TIM2_SetEXEN2(FunctionalState NewState)
|
||||
*函数功能:TIMER2_EXEN2配置函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:EXEN2使能选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM2_SetEXEN2(FunctionalState NewState)
|
||||
{
|
||||
TXINX = 0x02;
|
||||
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
EXENX = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
EXENX = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM2_Cmd(FunctionalState NewState)
|
||||
*函数功能:TIMER2功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM2_Cmd(FunctionalState NewState)
|
||||
{
|
||||
TXINX = 0x02;
|
||||
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
TRX = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
TRX = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM2_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:TIMER2
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM2_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
{
|
||||
TXINX = 0x02;
|
||||
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
ET2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ET2 = 1;
|
||||
}
|
||||
|
||||
if (Priority == LOW)
|
||||
{
|
||||
IPT2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
IPT2 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus TIM2_GetFlagStatus(void)
|
||||
*函数功能:获得TIMER2中断标志状态
|
||||
*入口参数:
|
||||
TIM2_Flag_TypeDef:TIM2_Flag:TIMER2标志选择
|
||||
*出口参数:
|
||||
FlagStatus:TIMER2中断标志状态
|
||||
*****************************************************/
|
||||
FlagStatus TIM2_GetFlagStatus(TIM2_Flag_TypeDef TIM2_Flag)
|
||||
{
|
||||
FlagStatus status = RESET;
|
||||
TXINX = 0x02;
|
||||
|
||||
if ((TIM2_Flag & TXCON) != (uint8_t)RESET)
|
||||
{
|
||||
status = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
status = RESET;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIMX_ClearFlag(void)
|
||||
*函数功能:清除TIMER2中断标志状态
|
||||
*入口参数:
|
||||
TIM2_Flag_TypeDef:TIM2_Flag:TIMER2标志选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM2_ClearFlag(TIM2_Flag_TypeDef TIM2_Flag)
|
||||
{
|
||||
TXINX = 0x02;
|
||||
TXCON &= (~TIM2_Flag);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,280 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_timerx.c
|
||||
// 作者 :
|
||||
// 模块功能 : TIMER3固件库函数C文件
|
||||
// 最后更正日期: 2022/01/14
|
||||
// 版本 : V1.1000
|
||||
// 说明 :该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_timer3.h"
|
||||
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
/**************************************************
|
||||
*函数名称:void TIMX_DeInit(void)
|
||||
*函数功能:TIMER3相关寄存器复位至初始值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM3_DeInit()
|
||||
{
|
||||
TXINX = 0x03; //TIMER3 选择
|
||||
TXCON = 0X00;
|
||||
TXMOD = 0X00;
|
||||
RCAPXH = 0X00;
|
||||
RCAPXL = 0X00;
|
||||
THX = 0X00;
|
||||
TLX = 0X00;
|
||||
IE1 &= 0X3F;
|
||||
IP1 &= 0X3F;
|
||||
ET2 = 0;
|
||||
IPT2 = 0;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM3_PrescalerSelection(TIMX_TimerSelect_TypeDef TIMX_TimerSelect, TIMX_PresSel_TypeDef TIMX_PrescalerSelection)
|
||||
*函数功能:TIMER3 预分频选择
|
||||
*入口参数:
|
||||
TIM3_PresSel_TypeDef:TIM3_PrescalerSelection:预分频选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM3_PrescalerSelection(TIM3_PresSel_TypeDef TIM3_PrescalerSelection)
|
||||
{
|
||||
TXINX = 0x03;
|
||||
|
||||
if(TIM3_PrescalerSelection == TIM3_PRESSEL_FSYS_D12)
|
||||
{
|
||||
TXMOD &= 0X7F;
|
||||
}
|
||||
else
|
||||
if(TIM3_PrescalerSelection == TIM3_PRESSEL_FSYS_D1)
|
||||
{
|
||||
TXMOD |= 0X80;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM3_WorkMode1Config(uint16_t TIM3_SetCounter)
|
||||
*函数功能:TIMER3工作模式1配置函数
|
||||
*入口参数:
|
||||
uint16_t TIM3_SetCounter 配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM3_WorkMode1Config(uint16_t TIM3_SetCounter)
|
||||
{
|
||||
TXINX = 0x03;
|
||||
RCAPXL = TIM3_SetCounter % 256;
|
||||
RCAPXH = TIM3_SetCounter / 256;
|
||||
|
||||
TLX = RCAPXL;
|
||||
THX = RCAPXH;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM3_Cmd(FunctionalState NewState)
|
||||
*函数功能:TIMER3功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM3_Cmd(FunctionalState NewState)
|
||||
{
|
||||
TXINX = 0x03;
|
||||
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
TRX = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
TRX = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM3_ITConfig(TIM3_TimerSelect_TypeDef TIM3_TimerSelect, FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:TIMER3中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM3_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
{
|
||||
TXINX = 0x03;
|
||||
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
IE1 &= 0XBF;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE1 |= 0X40;
|
||||
}
|
||||
|
||||
if(Priority == LOW)
|
||||
{
|
||||
IP1 &= 0XBF;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP1 |= 0X40;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus TIM3_GetFlagStatus(void)
|
||||
*函数功能:获得TIMER3中断标志状态
|
||||
*入口参数:
|
||||
TIM3_Flag_TypeDef:TIM3_Flag:TIMER3标志选择
|
||||
*出口参数:
|
||||
FlagStatus:TIMER3中断标志状态
|
||||
*****************************************************/
|
||||
FlagStatus TIM3_GetFlagStatus(TIM3_Flag_TypeDef TIM3_Flag)
|
||||
{
|
||||
FlagStatus status = RESET;
|
||||
TXINX = 0x03;
|
||||
|
||||
if((TIM3_Flag & TXCON) != (uint8_t)RESET)
|
||||
{
|
||||
status = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
status = RESET;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM3_ClearFlag(TIM3_Flag_TypeDef TIM3_Flag)
|
||||
*函数功能:清除TIMER3中断标志状态
|
||||
*入口参数:
|
||||
TIM3_Flag_TypeDef:TIM3_Flag:TIMER3标志选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM3_ClearFlag(TIM3_Flag_TypeDef TIM3_Flag)
|
||||
{
|
||||
TXINX = 0x03;
|
||||
TXCON &= (~TIM3_Flag);
|
||||
}
|
||||
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM3_TimeBaseInit(TIM3_CountMode_TypeDef TIM3_CountMode, TIM3_CountDirection_TypeDef TIM3_CountDirection)
|
||||
*函数功能:TIM3基本设置配置函数
|
||||
*入口参数:
|
||||
TIM3_CountMode_TypeDef:TIM3_CountMode:计数/定时模式选择
|
||||
TIM3_CountDirection_TypeDef:TIM3_CountDirection:计数方向选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM3_TimeBaseInit(TIM3_CountMode_TypeDef TIM3_CountMode,
|
||||
TIM3_CountDirection_TypeDef TIM3_CountDirection)
|
||||
{
|
||||
TXINX = 0x03;
|
||||
|
||||
if(TIM3_CountMode == TIM3_MODE_TIMER)
|
||||
{
|
||||
TXCON &= 0XFD;
|
||||
}
|
||||
else
|
||||
if(TIM3_CountMode == TIM3_MODE_COUNTER)
|
||||
{
|
||||
TXCON |= 0X02;
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
if(TIM3_CountDirection == TIM3_COUNTDIRECTION_UP)
|
||||
{
|
||||
TXMOD &= 0XFE;
|
||||
}
|
||||
else
|
||||
if(TIM3_CountDirection == TIM3_COUNTDIRECTION_DOWN_UP)
|
||||
{
|
||||
TXMOD |= 0X01;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM3_WorkMode0Config(uint16_t TIM3_SetCounter)
|
||||
*函数功能:TIMER3工作模式0配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM3_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM3_WorkMode0Config(uint16_t TIM3_SetCounter)
|
||||
{
|
||||
TXINX = 0x03;
|
||||
CP = 1;
|
||||
TLX = TIM3_SetCounter % 256;
|
||||
THX = TIM3_SetCounter / 256;
|
||||
}
|
||||
/**************************************************
|
||||
*函数名称:void TIM3_WorkMode3Config(uint16_t TIM3_SetCounter)
|
||||
*函数功能:TIMER3工作模式3配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM3_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM3_WorkMode3Config(uint16_t TIM3_SetCounter)
|
||||
{
|
||||
TXINX = 0x03;
|
||||
RCAPXL = TIM3_SetCounter % 256;
|
||||
RCAPXH = TIM3_SetCounter / 256;
|
||||
TXMOD |= 0X02;
|
||||
}
|
||||
/**************************************************
|
||||
*函数名称:void TIM3_WorkModeConfig(TIM3_WorkMode_TypeDef TIM3_WorkMode, uint16_t TIM3_SetCounter)
|
||||
*函数功能:TIMER3工作模式配置函数
|
||||
*入口参数:
|
||||
TIM3_WorkMode_TypeDef:TIM3_WorkMode:TIMER3工作模式选择
|
||||
uint16_t:TIM3_SetCounter:TIMER3计数初值配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM3_WorkModeConfig(TIM3_WorkMode_TypeDef TIM3_WorkMode, uint16_t TIM3_SetCounter)
|
||||
{
|
||||
switch (TIM3_WorkMode)
|
||||
{
|
||||
case TIM3_WORK_MODE0:
|
||||
TIM3_WorkMode0Config(TIM3_SetCounter);
|
||||
break;
|
||||
|
||||
case TIM3_WORK_MODE1:
|
||||
TIM3_WorkMode1Config(TIM3_SetCounter);
|
||||
break;
|
||||
|
||||
case TIM3_WORK_MODE3:
|
||||
TIM3_WorkMode3Config(TIM3_SetCounter);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*****************************************************
|
||||
*函数名称:void TIM3_SetEXEN3(FunctionalState NewState)
|
||||
*函数功能:TIMER3_EXEN3配置函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:EXEN3使能选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM3_SetEXEN3(FunctionalState NewState)
|
||||
{
|
||||
TXINX = 0x03;
|
||||
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
EXENX = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
EXENX = 1;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
||||
|
|
@ -0,0 +1,278 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_timer4.c
|
||||
// 作者 :
|
||||
// 模块功能 : TIMER4固件库函数C文件
|
||||
// 最后更正日期: 2022/01/18
|
||||
// 版本 : V1.10000
|
||||
// 说明 :该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_timer4.h"
|
||||
|
||||
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
/**************************************************
|
||||
*函数名称:void TIM4_DeInit(void)
|
||||
*函数功能:TIMER4相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM4_DeInit()
|
||||
{
|
||||
TXINX = 0x04; //TIMER4 选择
|
||||
TXCON = 0X00;
|
||||
TXMOD = 0X00;
|
||||
RCAPXH = 0X00;
|
||||
RCAPXL = 0X00;
|
||||
THX = 0X00;
|
||||
TLX = 0X00;
|
||||
IE1 &= 0X3F;
|
||||
IP1 &= 0X3F;
|
||||
ET2 = 0;
|
||||
IPT2 = 0;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM4_PrescalerSelection(TIM4_PresSel_TypeDef TIM4_PrescalerSelection)
|
||||
*函数功能:TIMER4 预分频选择
|
||||
*入口参数:
|
||||
TIM4_PresSel_TypeDef:TIM4_PrescalerSelection:预分频选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM4_PrescalerSelection(TIM4_PresSel_TypeDef TIM4_PrescalerSelection)
|
||||
{
|
||||
TXINX = 0x04;
|
||||
|
||||
if (TIM4_PrescalerSelection == TIM4_PRESSEL_FSYS_D12)
|
||||
{
|
||||
TXMOD &= 0X7F;
|
||||
}
|
||||
else if (TIM4_PrescalerSelection == TIM4_PRESSEL_FSYS_D1)
|
||||
{
|
||||
TXMOD |= 0X80;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM4_WorkMode1Config(uint16_t TIM4_SetCounter)
|
||||
*函数功能:TIMER4工作模式1配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM4_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM4_WorkMode1Config(uint16_t TIM4_SetCounter)
|
||||
{
|
||||
TXINX = 0x04;
|
||||
RCAPXL = TIM4_SetCounter % 256;
|
||||
RCAPXH = TIM4_SetCounter / 256;
|
||||
|
||||
TLX = RCAPXL;
|
||||
THX = RCAPXH;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM4_Cmd(FunctionalState NewState)
|
||||
*函数功能:TIMER4功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM4_Cmd(FunctionalState NewState)
|
||||
{
|
||||
TXINX = 0x04;
|
||||
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
TRX = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
TRX = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIMX_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:TIMER4中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM4_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
{
|
||||
TXINX = 0x04;
|
||||
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
IE1 &= 0X7F;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE1 |= 0X80;
|
||||
}
|
||||
|
||||
if (Priority == LOW)
|
||||
{
|
||||
IP1 &= 0X7F;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP1 |= 0X80;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus TIM4_GetFlagStatus(TIM4_Flag_TypeDef TIM4_Flag)
|
||||
*函数功能:获得TIMER4中断标志状态
|
||||
*入口参数:
|
||||
TIM4_Flag_TypeDef:TIM4_Flag:TIMER4标志选择
|
||||
*出口参数:
|
||||
FlagStatus:TIMER4中断标志状态
|
||||
*****************************************************/
|
||||
FlagStatus TIM4_GetFlagStatus(TIM4_Flag_TypeDef TIM4_Flag)
|
||||
{
|
||||
FlagStatus status = RESET;
|
||||
TXINX = 0x04;
|
||||
|
||||
if ((TIM4_Flag & TXCON) != (uint8_t)RESET)
|
||||
{
|
||||
status = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
status = RESET;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM4_ClearFlag(TIM4_Flag_TypeDef TIM4_Flag)
|
||||
*函数功能:清除TIMER4中断标志状态
|
||||
*入口参数:
|
||||
TIM4_Flag_TypeDef:TIM4_Flag:TIMER4标志选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM4_ClearFlag(TIM4_Flag_TypeDef TIM4_Flag)
|
||||
{
|
||||
TXINX = 0x04;
|
||||
TXCON &= (~TIM4_Flag);
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM4_TimeBaseInit(TIM4_CountMode_TypeDef TIM4_CountMode, TIM4_CountDirection_TypeDef TIM4_CountDirection)
|
||||
*函数功能:TIM4基本设置配置函数
|
||||
*入口参数:
|
||||
TIM4_CountMode_TypeDef:TIM4_CountMode:计数/定时模式选择
|
||||
TIM4_CountDirection_TypeDef:TIM4_CountDirection:计数方向选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM4_TimeBaseInit(TIM4_CountMode_TypeDef TIM4_CountMode,
|
||||
TIM4_CountDirection_TypeDef TIM4_CountDirection)
|
||||
{
|
||||
TXINX = 0x04;
|
||||
|
||||
if (TIM4_CountMode == TIM4_MODE_TIMER)
|
||||
{
|
||||
TXCON &= 0XFD;
|
||||
}
|
||||
else if (TIM4_CountMode == TIM4_MODE_COUNTER)
|
||||
{
|
||||
TXCON |= 0X02;
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
if (TIM4_CountDirection == TIM4_COUNTDIRECTION_UP)
|
||||
{
|
||||
TXMOD &= 0XFE;
|
||||
}
|
||||
else if (TIM4_CountDirection == TIM4_COUNTDIRECTION_DOWN_UP)
|
||||
{
|
||||
TXMOD |= 0X01;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM4_WorkMode0Config(uint16_t TIM4_SetCounter)
|
||||
*函数功能:TIMER4工作模式0配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM4_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM4_WorkMode0Config(uint16_t TIM4_SetCounter)
|
||||
{
|
||||
TXINX = 0x04;
|
||||
CP = 1;
|
||||
TLX = TIM4_SetCounter % 256;
|
||||
THX = TIM4_SetCounter / 256;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM4_WorkMode3Config(uint16_t TIM4_SetCounter)
|
||||
*函数功能:TIMER2工作模式3配置函数
|
||||
*入口参数:
|
||||
uint16_t:TIM2_SetCounter:配置计数初值
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM4_WorkMode3Config(uint16_t TIM4_SetCounter)
|
||||
{
|
||||
TXINX = 0x04;
|
||||
RCAPXL = TIM4_SetCounter % 256;
|
||||
RCAPXH = TIM4_SetCounter / 256;
|
||||
TXMOD |= 0X02;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void TIM4_WorkModeConfig(TIM4_WorkMode_TypeDef TIM4_WorkMode, uint16_t TIM4_SetCounter)
|
||||
*函数功能:TIMER4工作模式配置函数
|
||||
*入口参数:
|
||||
TIM4_WorkMode_TypeDef:TIM4_WorkMode:TIMER2工作模式选择
|
||||
uint16_t:TIM4_SetCounter:TIMER2计数初值配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void TIM4_WorkModeConfig(TIM4_WorkMode_TypeDef TIM4_WorkMode, uint16_t TIM4_SetCounter)
|
||||
{
|
||||
switch (TIM4_WorkMode)
|
||||
{
|
||||
case TIM4_WORK_MODE0:
|
||||
TIM4_WorkMode0Config(TIM4_SetCounter);
|
||||
break;
|
||||
|
||||
case TIM4_WORK_MODE1:
|
||||
TIM4_WorkMode1Config(TIM4_SetCounter);
|
||||
break;
|
||||
|
||||
case TIM4_WORK_MODE3:
|
||||
TIM4_WorkMode3Config(TIM4_SetCounter);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void TIM4_SetEXEN4(FunctionalState NewState)
|
||||
*函数功能:TIMER4_EXEN4配置函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:EXEN4使能选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void TIM4_SetEXEN4(FunctionalState NewState)
|
||||
{
|
||||
TXINX = 0x04;
|
||||
|
||||
if (NewState == DISABLE)
|
||||
{
|
||||
EXENX = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
EXENX = 1;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,388 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92f_uart0.c
|
||||
// 作者 :
|
||||
// 模块功能 : UART0固件库函数C文件
|
||||
// 局部函数列表:
|
||||
// 最后更正日期: 2022/01/01
|
||||
// 版本 : V1.10005
|
||||
// 说明 :本文件仅适用于赛元92F/93F/92L系列单片机
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_uart0.h"
|
||||
|
||||
#if !defined (SC92F742x) && !defined (SC92F827X) && !defined (SC92F837X) && !defined (SC92F7490)
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void UART0_DeInit(void)
|
||||
*函数功能:UART0相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void UART0_DeInit(void)
|
||||
{
|
||||
#if defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x)
|
||||
OTCON &= 0XEF;
|
||||
#endif
|
||||
SCON = 0X00;
|
||||
PCON &= 0X7F;
|
||||
IE &= 0XEF;
|
||||
IP &= 0XEF;
|
||||
}
|
||||
|
||||
#if defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x)
|
||||
/**************************************************
|
||||
*函数名称:UART0_PinSelection(UART0_PinSelection_TypeDef PinSeletion)
|
||||
*函数功能:UART0引脚选择
|
||||
*入口参数:
|
||||
UART0_PinSelection_TypeDef:PinSeletion:选择UART0引脚为P15P16或P11P20
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void UART0_PinSelection(UART0_PinSelection_TypeDef
|
||||
PinSeletion)
|
||||
{
|
||||
OTCON = OTCON & 0XDF | PinSeletion;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void UART0_Init(uint32_t Uart0Fsys, uint32_t BaudRate, UART0_Mode_Typedef Mode,UART0_Clock_Typedef ClockMode, UART0_RX_Typedef RxMode)
|
||||
*函数功能:UART0初始化配置函数
|
||||
*入口参数:
|
||||
uint32_t:Uart0Fsys:系统时钟频率
|
||||
uint32_t:BaudRate:波特率
|
||||
UART0_Mode_Typedef:Mode:UART0工作模式
|
||||
UART0_Clock_Typedef:ClockMode:波特率时钟源(TIMER1/TIMER2)
|
||||
UART0_RX_Typedef:RxMode:接收允许选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void UART0_Init(uint32_t Uart0Fsys, uint32_t BaudRate,
|
||||
UART0_Mode_Typedef Mode, UART0_Clock_Typedef ClockMode,
|
||||
UART0_RX_Typedef RxMode)
|
||||
{
|
||||
#if defined (SC92F725X) || defined (SC92F735X) || defined (SC92F730x ) || defined (SC92F732X) || defined (SC93F833x) || defined (SC93F843x) || defined (SC93F743x)
|
||||
{
|
||||
SCON = SCON & 0X2F | Mode | RxMode; //设置UART工作模式,设置接收允许位
|
||||
|
||||
if(Mode == UART0_Mode_8B ||
|
||||
Mode == UART0_Mode_11B_BaudRateFix)
|
||||
{
|
||||
if(BaudRate == UART0_BaudRate_FsysDIV12 ||
|
||||
BaudRate == UART0_BaudRate_FsysDIV64)
|
||||
{
|
||||
PCON &= 0X7F;
|
||||
}
|
||||
else if(BaudRate == UART0_BaudRate_FsysDIV4 ||
|
||||
BaudRate == UART0_BaudRate_FsysDIV32)
|
||||
{
|
||||
PCON |= 0X80;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
T2CON = (T2CON & 0xCF) | (ClockMode &
|
||||
0X30); //设置波特率时钟源
|
||||
|
||||
if((ClockMode & 0X70) == 0X00)
|
||||
{
|
||||
TMOD |= 0X20;
|
||||
if(ClockMode & 0x80)
|
||||
{
|
||||
PCON |= 0X80;
|
||||
Uart0Fsys = Uart0Fsys * 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
PCON &= 0X7F;
|
||||
}
|
||||
|
||||
if(ClockMode & 0x0F)
|
||||
{
|
||||
TMCON |= 0x02;
|
||||
}
|
||||
else
|
||||
{
|
||||
TMCON &= 0xFD;
|
||||
Uart0Fsys = Uart0Fsys / 12;
|
||||
}
|
||||
|
||||
TH1 = 256 - (Uart0Fsys / 32 / BaudRate);
|
||||
TL1 = TH1;
|
||||
TR1 = 1;
|
||||
}
|
||||
else if((ClockMode & 0X70) == 0X30)
|
||||
{
|
||||
if(ClockMode & 0x0F)
|
||||
{
|
||||
TMCON |= 0x04;
|
||||
}
|
||||
else
|
||||
{
|
||||
TMCON &= 0xFB;
|
||||
Uart0Fsys = Uart0Fsys / 12;
|
||||
}
|
||||
|
||||
RCAP2H = (65536 - Uart0Fsys / 32 / BaudRate) /
|
||||
256;
|
||||
RCAP2L = (65536 - Uart0Fsys / 32 / BaudRate) %
|
||||
256;
|
||||
TR2 = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
#elif defined (SC92F848x) || defined (SC92F748x) || defined (SC92F859x) || defined (SC92F759x)
|
||||
{
|
||||
SCON = (SCON & 0X2F) | Mode | RxMode; //设置UART工作模式,设置接收允许位
|
||||
|
||||
if(Mode == UART0_Mode_8B)
|
||||
{
|
||||
if(BaudRate == UART0_BaudRate_FsysDIV12)
|
||||
{
|
||||
PCON &= 0X7F;
|
||||
}
|
||||
else if(BaudRate == UART0_BaudRate_FsysDIV4)
|
||||
{
|
||||
PCON |= 0X80;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
T2CON = (T2CON & 0xCF) |
|
||||
(ClockMode & 0x30); //设置波特率时钟源
|
||||
|
||||
if(ClockMode & 0x80)
|
||||
{
|
||||
PCON |= 0x80;
|
||||
Uart0Fsys = Uart0Fsys / 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
PCON &= 0x7F;
|
||||
}
|
||||
|
||||
if((ClockMode & 0x7F) == UART0_CLOCK_TIMER1)
|
||||
{
|
||||
TH1 = (Uart0Fsys / BaudRate) / 256;
|
||||
TL1 = (Uart0Fsys / BaudRate) % 256;
|
||||
TR1 = 0;
|
||||
}
|
||||
else if((ClockMode & 0x7F) == UART0_CLOCK_TIMER2)
|
||||
{
|
||||
RCAP2H = (Uart0Fsys / BaudRate) / 256;
|
||||
RCAP2L = (Uart0Fsys / BaudRate) % 256;
|
||||
TR2 = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
#elif defined (SC92L853x) || defined (SC92L753x)
|
||||
{
|
||||
SCON = (SCON & 0X2F) | Mode | RxMode; //设置UART工作模式,设置接收允许位
|
||||
|
||||
/* 如果UART0选择为8位半双工同步通信模式,串行端口在系统时钟的12分频或4分频下运行*/
|
||||
if(Mode == UART0_Mode_8B)
|
||||
{
|
||||
if(BaudRate == UART0_BaudRate_FsysDIV12)
|
||||
{
|
||||
PCON &= 0X7F;
|
||||
}
|
||||
else if(BaudRate == UART0_BaudRate_FsysDIV4)
|
||||
{
|
||||
PCON |= 0X80;
|
||||
}
|
||||
}
|
||||
/* UART0选择模式1/3,波特率为可变 */
|
||||
else
|
||||
{
|
||||
TXCON = (TXCON & 0xCF) | ClockMode; //设置波特率时钟源
|
||||
|
||||
/* 模式1/3可以在系统时钟的1分频或16分频下运行 */
|
||||
if(ClockMode & 0x80)
|
||||
{
|
||||
PCON |= 0x80;
|
||||
Uart0Fsys = Uart0Fsys / 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
PCON &= 0x7F;
|
||||
}
|
||||
|
||||
/* 配置UART0时钟源 */
|
||||
if((ClockMode & 0x7F) == UART0_CLOCK_TIMER1)//UART0时钟源为TIMER1
|
||||
{
|
||||
TH1 = (Uart0Fsys / BaudRate) / 256;
|
||||
TL1 = (Uart0Fsys / BaudRate) % 256;
|
||||
TR1 = 0;
|
||||
}
|
||||
else if((ClockMode & 0x7F) == UART0_CLOCK_TIMER2)//UART0时钟源为TIMER2
|
||||
{
|
||||
RCAPXH = (Uart0Fsys / BaudRate) / 256;
|
||||
RCAPXL = (Uart0Fsys / BaudRate) % 256;
|
||||
TRX = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
{
|
||||
SCON = (SCON & 0X2F) | Mode |
|
||||
RxMode; //设置UART工作模式,设置接收允许位
|
||||
|
||||
if(Mode == UART0_Mode_8B)
|
||||
{
|
||||
if(BaudRate == UART0_BaudRate_FsysDIV12)
|
||||
{
|
||||
PCON &= 0X7F;
|
||||
}
|
||||
else if(BaudRate == UART0_BaudRate_FsysDIV4)
|
||||
{
|
||||
PCON |= 0X80;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
T2CON = (T2CON & 0xCF) |
|
||||
(ClockMode & 0x30); //设置波特率时钟源
|
||||
|
||||
if(ClockMode == UART0_CLOCK_TIMER1)
|
||||
{
|
||||
TH1 = (Uart0Fsys / BaudRate) / 256;
|
||||
TL1 = (Uart0Fsys / BaudRate) % 256;
|
||||
TR1 = 0;
|
||||
}
|
||||
else if(ClockMode == UART0_CLOCK_TIMER2)
|
||||
{
|
||||
RCAP2H = (Uart0Fsys / BaudRate) / 256;
|
||||
RCAP2L = (Uart0Fsys / BaudRate) % 256;
|
||||
#if defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined (SC92F83Ax) || defined (SC92F73Ax)|| defined (SC92F84Ax) || defined (SC92F74Ax) || defined (SC92F7003) || defined (SC92F8003) || defined (SC92F740x)
|
||||
TR2 = 1;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void UART0_SendData8(uint8_t Data)
|
||||
*函数功能:UART0发送8位数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void UART0_SendData8(uint8_t Data)
|
||||
{
|
||||
SBUF = Data;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:uint8_t UART0_ReceiveData8(void)
|
||||
*函数功能:获得SBUF中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:UART接收到的8位数据
|
||||
**************************************************/
|
||||
uint8_t UART0_ReceiveData8(void)
|
||||
{
|
||||
return SBUF;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void UART0_SendData9(uint16_t Data)
|
||||
*函数功能:UART0发送9位数据
|
||||
*入口参数:
|
||||
uint16_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void UART0_SendData9(uint16_t Data)
|
||||
{
|
||||
uint8_t Data_9Bit;
|
||||
Data_9Bit = (Data >> 8);
|
||||
|
||||
if(Data_9Bit)
|
||||
{
|
||||
SCON |= 0X08;
|
||||
}
|
||||
else
|
||||
{
|
||||
SCON &= 0XF7;
|
||||
}
|
||||
|
||||
SBUF = (uint8_t)Data;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:uint16_t UART0_ReceiveData9(void)
|
||||
*函数功能:获得SBUF中的值及第九位的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint16_t:UART接收到的数据
|
||||
**************************************************/
|
||||
uint16_t UART0_ReceiveData9(void)
|
||||
{
|
||||
uint16_t Data9;
|
||||
Data9 = SBUF + ((uint16_t)(SCON & 0X04) << 6);
|
||||
SCON &= 0XFB;
|
||||
return Data9;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void UART0_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:UART0中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void UART0_ITConfig(FunctionalState NewState,
|
||||
PriorityStatus Priority)
|
||||
{
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
EUART = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
EUART = 1;
|
||||
}
|
||||
|
||||
//设置中断优先级
|
||||
if(Priority == LOW)
|
||||
{
|
||||
IPUART = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
IPUART = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus UART0_GetFlagStatus(UART0_Flag_Typedef UART0_Flag)
|
||||
*函数功能:获得UART0中断标志状态
|
||||
*入口参数:
|
||||
UART0_GetFlagStatus:UART0_Flag:中断标志位选择
|
||||
*出口参数:
|
||||
FlagStatus:UART0中断标志位置起状态
|
||||
*****************************************************/
|
||||
//FlagStatus UART0_GetFlagStatus(UART0_Flag_Typedef
|
||||
// UART0_Flag)
|
||||
//{
|
||||
// return (bool)(SCON & UART0_Flag);
|
||||
//}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void UART0_ClearFlag(UART0_Flag_Typedef UART0_Flag)
|
||||
*函数功能:清除UART0中断标志状态
|
||||
*入口参数:
|
||||
UART0_Flag_Typedef;UART0_Flag:中断标志位选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
//void UART0_ClearFlag(UART0_Flag_Typedef
|
||||
// UART0_Flag)
|
||||
//{
|
||||
// SCON &= (~UART0_Flag);
|
||||
//}
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,529 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92F_usci0.c
|
||||
// 作者 :
|
||||
// 模块功能 : USCI0固件库函数C文件
|
||||
// 最后更正日期: 2022/01/05
|
||||
// 版本 : V1.10000
|
||||
// 说明 :该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_usci0.h"
|
||||
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
/**************************************************
|
||||
*函数名称:void USCI0_DeInit(void)
|
||||
*函数功能:USCI0相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI0_DeInit(void)
|
||||
{
|
||||
OTCON &= 0XCF;
|
||||
US0CON0 = 0X00;
|
||||
US0CON1 = 0X00;
|
||||
US0CON2 = 0X00;
|
||||
US0CON3 = 0X00;
|
||||
IE1 &= (~0X01);
|
||||
IP1 &= (~0X01);
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI0_SPI_Init(USCI0_SPI_FirstBit_TypeDef FirstBit, USCI0_SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,USCI0_SPI_Mode_TypeDef Mode,
|
||||
USCI0_SPI_ClockPolarity_TypeDef ClockPolarity, USCI0_SPI_ClockPhase_TypeDef ClockPhase,USCI0_SPI_TXE_INT_TypeDef SPI_TXE_INT,USCI0_TransmissionMode_TypeDef TransmissionMode)
|
||||
*函数功能:SPI初始化配置函数
|
||||
*入口参数:
|
||||
USCI0_SPI_FirstBit_TypeDef:FirstBit:优先传送位选择(MSB/LSB)
|
||||
USCI0_SPI_BaudRatePrescaler_TypeDef:BaudRatePrescaler:SPI时钟频率选择
|
||||
USCI0_SPI_Mode_TypeDef:Mode:SPI工作模式选择
|
||||
USCI0_SPI_ClockPolarity_TypeDef:ClockPolarity:SPI时钟极性选择
|
||||
USCI0_SPI_ClockPhase_TypeDef:ClockPhase:SPI时钟相位选择
|
||||
USCI0_SPI_TXE_INT_TypeDef:SPI_TXE_INT:发送缓存器中断允许选择,该功能在SC92FXX1X芯片上无效
|
||||
USCI0_TransmissionMode_TypeDef:TransmissionMode:SPI传输模式选择 8/16位
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI0_SPI_Init(USCI0_SPI_FirstBit_TypeDef FirstBit,
|
||||
USCI0_SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler, USCI0_SPI_Mode_TypeDef Mode,
|
||||
USCI0_SPI_ClockPolarity_TypeDef ClockPolarity, USCI0_SPI_ClockPhase_TypeDef ClockPhase,
|
||||
USCI0_SPI_TXE_INT_TypeDef SPI_TXE_INT, USCI0_TransmissionMode_TypeDef TransmissionMode)
|
||||
{
|
||||
|
||||
OTCON = (OTCON & 0XCF) | 0X10;
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
SPI_TXE_INT = USCI0_SPI_TXE_DISINT; //SPI_TXE_INT该功能在该类芯片上无效
|
||||
US0CON1 = US0CON1 & (~0X05) | FirstBit | TransmissionMode;
|
||||
#endif
|
||||
US0CON0 = US0CON0 & 0X80 | BaudRatePrescaler | Mode | ClockPolarity | ClockPhase;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI0_TransmissionMode(USCI0_TransmissionMode_TypeDef TransmissionMode)
|
||||
*函数功能:SPI 传输模式配置函数
|
||||
*入口参数:
|
||||
USCI0_TransmissionMode_TypeDef:TransmissionMode:SPI传输模式选择 8/16e位
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI0_TransmissionMode(USCI0_TransmissionMode_TypeDef TransmissionMode)
|
||||
{
|
||||
if (TransmissionMode == USCI0_SPI_DATA8)
|
||||
{
|
||||
US0CON1 &= 0xFD;
|
||||
}
|
||||
else
|
||||
{
|
||||
US0CON1 |= 0x02;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI0_SPI_Cmd(FunctionalState NewState)
|
||||
*函数功能:SPI功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI0_SPI_Cmd(FunctionalState NewState)
|
||||
{
|
||||
OTCON = (OTCON & 0XCF) | 0X10;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US0CON0 |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
US0CON0 &= (~0X80);
|
||||
}
|
||||
}
|
||||
/*****************************************************
|
||||
*函数名称:void USCI0_SPI_SendData_8(uint8_t Data)
|
||||
*函数功能:USCI0 SPI发送数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI0_SPI_SendData_8(uint8_t Data)
|
||||
{
|
||||
US0CON2 = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t USCI0_SPI_ReceiveData_8(void)
|
||||
*函数功能:获得US0CON2中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:接收到的数据
|
||||
*****************************************************/
|
||||
uint8_t USCI0_SPI_ReceiveData_8(void)
|
||||
{
|
||||
return US0CON2;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI0_SPI_SendData_16(uint16_t Data)
|
||||
*函数功能:US0CON2 SPI发送数据
|
||||
*入口参数:
|
||||
uint16_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI0_SPI_SendData_16(uint16_t Data)
|
||||
{
|
||||
US0CON3 = (uint8_t)(Data >> 8);
|
||||
US0CON2 = (uint8_t)Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint16_t USCI0_SPI_ReceiveData_16(void)
|
||||
*函数功能:获得US0CON2中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint16_t:接收的数据
|
||||
*****************************************************/
|
||||
uint16_t USCI0_SPI_ReceiveData_16(void)
|
||||
{
|
||||
uint16_t SPI_data;
|
||||
SPI_data = (uint16_t)((US0CON3 << 8) | US0CON2);
|
||||
return SPI_data;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI0_TWI_Slave_Init(uint8_t TWI_Address)
|
||||
*函数功能:USCI0 TWI从机初始化配置函数
|
||||
*入口参数:
|
||||
uint8_t:TWI_Address:TWI作为从机时的7位从机地址
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI0_TWI_Slave_Init(uint8_t TWI_Address)
|
||||
{
|
||||
OTCON = OTCON & 0XCF | 0X20;
|
||||
US0CON2 = TWI_Address << 1;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI0_TWI_MasterCommunicationRate(USCI0_TWI_MasterCommunicationRate_TypeDef TWI_MasterCommunicationRate)
|
||||
*函数功能:USCI0 TWI主机模式下通讯速率设定
|
||||
*入口参数:
|
||||
USCI0_TWI_MasterCommunicationRate_TypeDef:TWI_MasterCommunicationRate:TWI主机模式下通讯速率
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI0_TWI_MasterCommunicationRate(USCI0_TWI_MasterCommunicationRate_TypeDef
|
||||
TWI_MasterCommunicationRate)
|
||||
{
|
||||
OTCON = OTCON & 0XCF | 0X20;
|
||||
US0CON1 |= TWI_MasterCommunicationRate;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI0_TWI_Start(void)
|
||||
*函数功能:USCI0 TWI 起始位
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI0_TWI_Start(void)
|
||||
{
|
||||
US0CON1 |= 0x20;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI0_TWI_MasterModeStop(void)
|
||||
*函数功能:USCI0 TWI主机模式停止位
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI0_TWI_MasterModeStop(void)
|
||||
{
|
||||
US0CON1 |= 0x10;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI0_TWI_SlaveClockExtension(void)
|
||||
*函数功能:USCI0 TWI从机模式时钟延长功能位
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI0_TWI_SlaveClockExtension(FunctionalState NewState)
|
||||
{
|
||||
OTCON = OTCON & 0XCF | 0X20;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US0CON1 |= 0x40;
|
||||
}
|
||||
else
|
||||
{
|
||||
US0CON1 &= 0XBF;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI0_TWI_AcknowledgeConfig(FunctionalState NewState)
|
||||
*函数功能:TWI接收应答使能函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:接收应答使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI0_TWI_AcknowledgeConfig(FunctionalState NewState)
|
||||
{
|
||||
OTCON = OTCON & 0XCF | 0X20;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US0CON0 |= 0X08;
|
||||
}
|
||||
else
|
||||
{
|
||||
US0CON0 &= 0XF7;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI0_TWI_GeneralCallCmd(FunctionalState NewState)
|
||||
*函数功能:TWI通用地址响应使能函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:通用地址响应使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI0_TWI_GeneralCallCmd(FunctionalState NewState)
|
||||
{
|
||||
OTCON = OTCON & 0XCF | 0X20;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US0CON2 |= 0X01;
|
||||
}
|
||||
else
|
||||
{
|
||||
US0CON2 &= 0XFE;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus USCI0_GetTWIStatus(USCI0_TWIState_TypeDef USCI0_TWIState)
|
||||
*函数功能:读取TWI状态
|
||||
*入口参数:
|
||||
USCI0_TWIState_TypeDef:USCI0_TWIState:TWI状态类型
|
||||
*出口参数:
|
||||
FlagStatus:USCI0_SC标志状态
|
||||
*****************************************************/
|
||||
FlagStatus USCI0_GetTWIStatus(USCI0_TWIState_TypeDef USCI0_TWIState)
|
||||
{
|
||||
if ((US0CON0 & 0x07) == USCI0_TWIState)
|
||||
return SET;
|
||||
else
|
||||
return RESET;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI0_TWI_Cmd(FunctionalState NewState)
|
||||
*函数功能:TWI功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI0_TWI_Cmd(FunctionalState NewState)
|
||||
{
|
||||
OTCON = OTCON & 0XCF | 0X20;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US0CON0 |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
US0CON0 &= (~0X80);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI0_TWI_SendData(uint8_t Data)
|
||||
*函数功能:TWI发送数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI0_TWI_SendData(uint8_t Data)
|
||||
{
|
||||
US0CON3 = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t USCI0_TWI_SendData(void)
|
||||
*函数功能:获得US0CON3中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:接收的数据
|
||||
*****************************************************/
|
||||
uint8_t USCI0_TWI_ReceiveData(void)
|
||||
{
|
||||
return US0CON3;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI0_UART_Init(uint32_t UARTFsys, uint32_t BaudRate, USCI0_UART_Mode_TypeDef Mode, USCI0_UART_RX_TypeDef RxMode)
|
||||
*函数功能:UART初始化配置函数
|
||||
*入口参数:
|
||||
uint32_t:UARTFsys:系统时钟频率
|
||||
uint32_t:BaudRate:波特率
|
||||
USCI0_UART_Mode_TypeDef:Mode:UART1工作模式
|
||||
USCI0_UART_RX_TypeDef:RxMode:接收允许选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI0_UART_Init(uint32_t UARTFsys, uint32_t BaudRate, USCI0_UART_Mode_TypeDef Mode,
|
||||
USCI0_UART_RX_TypeDef RxMode)
|
||||
{
|
||||
OTCON |= 0x30;
|
||||
US0CON0 = US0CON0 & 0X0F | Mode | RxMode;
|
||||
|
||||
if (Mode == USCI0_UART_Mode_8B)
|
||||
{
|
||||
if (BaudRate == USCI0_UART_BaudRate_FsysDIV12)
|
||||
{
|
||||
US0CON0 &= 0XDF;
|
||||
}
|
||||
else if (BaudRate == USCI0_UART_BaudRate_FsysDIV4)
|
||||
{
|
||||
US0CON0 |= 0X20;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
US0CON2 = UARTFsys / BaudRate / 256;
|
||||
US0CON1 = UARTFsys / BaudRate % 256;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI0_UART_SendData8(uint8_t Data)
|
||||
*函数功能:USCI0 UART1发送8位数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI0_UART_SendData8(uint8_t Data)
|
||||
{
|
||||
US0CON3 = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t USCI0_UART_ReceiveData8(void)
|
||||
*函数功能:获得US0CON3中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:接收的数据
|
||||
*****************************************************/
|
||||
uint8_t USCI0_UART_ReceiveData8(void)
|
||||
{
|
||||
return US0CON3;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI0_UART_SendData9(uint16_t Data)
|
||||
*函数功能:UART1发送9位数据
|
||||
*入口参数:
|
||||
uint16_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI0_UART_SendData9(uint16_t Data)
|
||||
{
|
||||
uint8_t Data_9Bit;
|
||||
Data_9Bit = (Data >> 8);
|
||||
|
||||
if (Data_9Bit)
|
||||
{
|
||||
US0CON0 |= 0x08;
|
||||
}
|
||||
else
|
||||
{
|
||||
US0CON0 &= 0xf7;
|
||||
}
|
||||
|
||||
US0CON3 = (uint8_t)Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint16_t USCI0_UART_ReceiveData9(void)
|
||||
*函数功能:获得US0CON3中的值及第九位的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint16_t:接收的数据
|
||||
*****************************************************/
|
||||
uint16_t USCI0_UART_ReceiveData9(void)
|
||||
{
|
||||
uint16_t Data9;
|
||||
Data9 = US0CON3 + ((uint16_t)(US0CON0 & 0X04) << 6);
|
||||
return Data9;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI0_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:USCI0中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI0_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
IE1 |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE1 &= 0xFE;
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
if (Priority != LOW)
|
||||
{
|
||||
IP1 |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP1 &= 0xFE;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus USCI0_GetFlagStatus(USCI0_Flag_TypeDef USCI0_FLAG)
|
||||
*函数功能:获得USCI0标志状态
|
||||
*入口参数:
|
||||
USCI0_Flag_TypeDef:USCI0_FLAG:所需获取的标志位
|
||||
*出口参数:
|
||||
FlagStatus:USCI0标志状态
|
||||
*****************************************************/
|
||||
FlagStatus USCI0_GetFlagStatus(USCI0_Flag_TypeDef USCI0_FLAG)
|
||||
{
|
||||
FlagStatus bitstatus = RESET;
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
if ((USCI0_FLAG == USCI0_SPI_FLAG_SPIF) || (USCI0_FLAG == USCI0_SPI_FLAG_WCOL) || (USCI0_FLAG == USCI0_TWI_FLAG_TXRXnE))
|
||||
#endif
|
||||
{
|
||||
if ((USCI0_FLAG & US0CON1) != (uint8_t)RESET)
|
||||
{
|
||||
bitstatus = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
bitstatus = RESET;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((USCI0_FLAG & US0CON0) != (uint8_t)RESET)
|
||||
{
|
||||
bitstatus = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
bitstatus = RESET;
|
||||
}
|
||||
}
|
||||
|
||||
return bitstatus;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI0_ClearFlag(USCI0_Flag_TypeDef USCI0_FLAG)
|
||||
*函数功能:清除USCI0标志状态
|
||||
*入口参数:
|
||||
USCI0_Flag_TypeDef:USCI0_FLAG:所需清除的标志位
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI0_ClearFlag(USCI0_Flag_TypeDef USCI0_FLAG)
|
||||
{
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
if ((USCI0_FLAG == USCI0_SPI_FLAG_SPIF) || (USCI0_FLAG == USCI0_SPI_FLAG_WCOL) || (USCI0_FLAG == USCI0_TWI_FLAG_TXRXnE))
|
||||
#endif
|
||||
{
|
||||
US0CON1 &= (~USCI0_FLAG); //操作寄存器US0CON1
|
||||
}
|
||||
else if ((USCI0_FLAG == USCI0_UART_FLAG_TI) || (USCI0_FLAG == USCI0_UART_FLAG_RI))
|
||||
{
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
US0CON0 = US0CON0 & 0xFC | USCI0_FLAG;//写1清零
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
US0CON0 &= (~USCI0_FLAG); //操作寄存器US0CON0
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI0_TWI_SendAddr(uint8_t Addr,USCI0_TWI_RWType RW)
|
||||
*函数功能:TWI发送地址,读写类型
|
||||
*入口参数:
|
||||
uint8_t:Addr:发送的地址 0~127
|
||||
USCI0_TWI_RWType:RW:读写类型
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI0_TWI_SendAddr(uint8_t Addr, USCI0_TWI_RWType RW)
|
||||
{
|
||||
US0CON3 = (Addr << 1) | RW;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,528 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称 : sc92F_USCI1.c
|
||||
// 作者 :
|
||||
// 模块功能 : USCI1固件库函数C文件
|
||||
// 最后更正日期: 2022/01/05
|
||||
// 版本 : V1.10000
|
||||
// 说明 :该文件仅适用于SC92F系列芯片
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_usci1.h"
|
||||
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
/**************************************************
|
||||
*函数名称:void USCI1_DeInit(void)
|
||||
*函数功能:USCI1相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI1_DeInit(void)
|
||||
{
|
||||
OTCON &= 0X3F;
|
||||
US1CON0 = 0X00;
|
||||
US1CON1 = 0X00;
|
||||
US1CON2 = 0X00;
|
||||
US1CON3 = 0X00;
|
||||
IE2 &= (~0X01);
|
||||
IP2 &= (~0X01);
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI1_SPI_Init(USCI1_SPI_FirstBit_TypeDef FirstBit, USCI1_SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,USCI1_SPI_Mode_TypeDef Mode,
|
||||
USCI1_SPI_ClockPolarity_TypeDef ClockPolarity, USCI1_SPI_ClockPhase_TypeDef ClockPhase,USCI1_SPI_TXE_INT_TypeDef SPI_TXE_INT,USCI1_TransmissionMode_TypeDef TransmissionMode)
|
||||
*函数功能:SPI初始化配置函数
|
||||
*入口参数:
|
||||
USCI1_SPI_FirstBit_TypeDef:FirstBit:优先传送位选择(MSB/LSB)
|
||||
USCI1_SPI_BaudRatePrescaler_TypeDef:BaudRatePrescaler:SPI时钟频率选择
|
||||
USCI1_SPI_Mode_TypeDef:Mode:SPI工作模式选择
|
||||
USCI1_SPI_ClockPolarity_TypeDef:ClockPolarity:SPI时钟极性选择
|
||||
USCI1_SPI_ClockPhase_TypeDef:ClockPhase:SPI时钟相位选择
|
||||
USCI1_SPI_TXE_INT_TypeDef:SPI_TXE_INT:发送缓存器中断允许选择,该功能在SC92FXX1X芯片上无效
|
||||
USCI1_TransmissionMode_TypeDef:TransmissionMode:SPI传输模式选择 8/16位
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI1_SPI_Init(USCI1_SPI_FirstBit_TypeDef FirstBit,
|
||||
USCI1_SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler, USCI1_SPI_Mode_TypeDef Mode,
|
||||
USCI1_SPI_ClockPolarity_TypeDef ClockPolarity, USCI1_SPI_ClockPhase_TypeDef ClockPhase,
|
||||
USCI1_SPI_TXE_INT_TypeDef SPI_TXE_INT, USCI1_TransmissionMode_TypeDef TransmissionMode)
|
||||
{
|
||||
|
||||
OTCON = (OTCON & 0X3F) | 0X40;
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
SPI_TXE_INT = USCI1_SPI_TXE_DISINT; //SPI_TXE_INT该功能无效
|
||||
US1CON1 = US1CON1 & (~0X05) | FirstBit | TransmissionMode;
|
||||
#endif
|
||||
US1CON0 = US1CON0 & 0X80 | BaudRatePrescaler | Mode | ClockPolarity | ClockPhase;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI1_TransmissionMode(USCI1_TransmissionMode_TypeDef TransmissionMode)
|
||||
*函数功能:SPI 传输模式配置函数
|
||||
*入口参数:
|
||||
USCI1_TransmissionMode_TypeDef:TransmissionMode:SPI传输模式选择 8/16e位
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI1_TransmissionMode(USCI1_TransmissionMode_TypeDef TransmissionMode)
|
||||
{
|
||||
if (TransmissionMode == USCI1_SPI_DATA8)
|
||||
{
|
||||
US1CON1 &= 0xFD;
|
||||
}
|
||||
else
|
||||
{
|
||||
US1CON1 |= 0x02;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI1_SPI_Cmd(FunctionalState NewState)
|
||||
*函数功能:SPI功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI1_SPI_Cmd(FunctionalState NewState)
|
||||
{
|
||||
OTCON = (OTCON & 0X3F) | 0X40;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US1CON0 |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
US1CON0 &= (~0X80);
|
||||
}
|
||||
}
|
||||
/*****************************************************
|
||||
*函数名称:void USCI1_SPI_SendData_8(uint8_t Data)
|
||||
*函数功能:USCI1 SPI发送数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI1_SPI_SendData_8(uint8_t Data)
|
||||
{
|
||||
US1CON2 = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t USCI1_SPI_ReceiveData_8(void)
|
||||
*函数功能:获得US1CON2中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:接收的数据
|
||||
*****************************************************/
|
||||
uint8_t USCI1_SPI_ReceiveData_8(void)
|
||||
{
|
||||
return US1CON2;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI1_SPI_SendData_16(uint16_t Data)
|
||||
*函数功能:US1CON2 SPI发送数据
|
||||
*入口参数:
|
||||
uint16_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI1_SPI_SendData_16(uint16_t Data)
|
||||
{
|
||||
US1CON3 = (uint8_t)(Data >> 8);
|
||||
US1CON2 = (uint8_t)Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint16_t USCI1_SPI_ReceiveData_16(void)
|
||||
*函数功能:获得US1CON2中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint16_t:接收的数据
|
||||
*****************************************************/
|
||||
uint16_t USCI1_SPI_ReceiveData_16(void)
|
||||
{
|
||||
uint16_t SPI_data;
|
||||
SPI_data = (uint16_t)((US1CON3 << 8) | US1CON2);
|
||||
return SPI_data;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI1_TWI_Slave_Init(uint8_t TWI_Address)
|
||||
*函数功能:USCI1 TWI从机初始化配置函数
|
||||
*入口参数:
|
||||
uint8_t:TWI_Address:TWI作为从机时的7位从机地址
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI1_TWI_Slave_Init(uint8_t TWI_Address)
|
||||
{
|
||||
OTCON = OTCON & 0X3F | 0X80;
|
||||
US1CON2 = TWI_Address << 1;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI1_TWI_MasterCommunicationRate(USCI1_TWI_MasterCommunicationRate_TypeDef TWI_MasterCommunicationRate)
|
||||
*函数功能:USCI1 TWI主机模式下通讯速率设定
|
||||
*入口参数:
|
||||
USCI1_TWI_MasterCommunicationRate_TypeDef:TWI_MasterCommunicationRate:TWI主机模式下通讯速率
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI1_TWI_MasterCommunicationRate(USCI1_TWI_MasterCommunicationRate_TypeDef
|
||||
TWI_MasterCommunicationRate)
|
||||
{
|
||||
OTCON = OTCON & 0X3F | 0X80;
|
||||
US1CON1 |= TWI_MasterCommunicationRate;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI1_TWI_Start(void)
|
||||
*函数功能:USCI1 TWI 起始位
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI1_TWI_Start(void)
|
||||
{
|
||||
US1CON1 |= 0x20;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI1_TWI_MasterModeStop(void)
|
||||
*函数功能:USCI1 TWI主机模式停止位
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI1_TWI_MasterModeStop(void)
|
||||
{
|
||||
US1CON1 |= 0x10;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI1_TWI_SlaveClockExtension(FunctionalState NewState)
|
||||
*函数功能:USCI1 TWI从机模式时钟延长功能位
|
||||
*入口参数:
|
||||
FunctionalState:NewState:使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI1_TWI_SlaveClockExtension(FunctionalState NewState)
|
||||
{
|
||||
OTCON = OTCON & 0X3F | 0X80;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US1CON1 |= 0x40;
|
||||
}
|
||||
else
|
||||
{
|
||||
US1CON1 &= 0XBF;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI1_TWI_AcknowledgeConfig(FunctionalState NewState)
|
||||
*函数功能:TWI接收应答使能函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:接收应答使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI1_TWI_AcknowledgeConfig(FunctionalState NewState)
|
||||
{
|
||||
OTCON = OTCON & 0X3F | 0X80;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US1CON0 |= 0X08;
|
||||
}
|
||||
else
|
||||
{
|
||||
US1CON0 &= 0XF7;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI1_TWI_GeneralCallCmd(FunctionalState NewState)
|
||||
*函数功能:TWI通用地址响应使能函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:接收应答使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI1_TWI_GeneralCallCmd(FunctionalState NewState)
|
||||
{
|
||||
OTCON = OTCON & 0X3F | 0X80;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US1CON2 |= 0X01;
|
||||
}
|
||||
else
|
||||
{
|
||||
US1CON2 &= 0XFE;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus USCI1_GetTWIStatus(USCI1_TWIState_TypeDef USCI1_TWIState)
|
||||
*函数功能:读取TWI状态
|
||||
*入口参数:
|
||||
USCI1_TWIState_TypeDef:USCI1_TWIState:TWI状态类型
|
||||
*出口参数:
|
||||
FlagStatus:USCI1_TWI标志状态
|
||||
*****************************************************/
|
||||
FlagStatus USCI1_GetTWIStatus(USCI1_TWIState_TypeDef USCI1_TWIState)
|
||||
{
|
||||
if ((US1CON0 & 0x07) == USCI1_TWIState)
|
||||
return SET;
|
||||
else
|
||||
return RESET;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI1_TWI_Cmd(FunctionalState NewState)
|
||||
*函数功能:TWI功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI1_TWI_Cmd(FunctionalState NewState)
|
||||
{
|
||||
OTCON = OTCON & 0X3F | 0X80;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US1CON0 |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
US1CON0 &= (~0X80);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI1_TWI_SendData(uint8_t Data)
|
||||
*函数功能:TWI发送数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI1_TWI_SendData(uint8_t Data)
|
||||
{
|
||||
US1CON3 = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t USCI1_TWI_SendData(void)
|
||||
*函数功能:获得US1CON3中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:接收的数据
|
||||
*****************************************************/
|
||||
uint8_t USCI1_TWI_ReceiveData(void)
|
||||
{
|
||||
return US1CON3;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI1_UART_Init(uint32_t UARTFsys, uint32_t BaudRate, USCI1_UART_Mode_TypeDef Mode, USCI1_UART_RX_TypeDef RxMode)
|
||||
*函数功能:UART初始化配置函数
|
||||
*入口参数:
|
||||
uint32_t:UARTFsys:系统时钟频率
|
||||
uint32_t:BaudRate:波特率
|
||||
USCI1_UART_Mode_TypeDef:Mode:UART1工作模式
|
||||
USCI1_UART_RX_TypeDef:RxMode:接收允许选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI1_UART_Init(uint32_t UARTFsys, uint32_t BaudRate, USCI1_UART_Mode_TypeDef Mode,
|
||||
USCI1_UART_RX_TypeDef RxMode)
|
||||
{
|
||||
OTCON |= 0xC0;
|
||||
US1CON0 = US1CON0 & 0X0F | Mode | RxMode;
|
||||
|
||||
if (Mode == USCI1_UART_Mode_8B)
|
||||
{
|
||||
if (BaudRate == USCI1_UART_BaudRate_FsysDIV12)
|
||||
{
|
||||
US1CON0 &= 0XDF;
|
||||
}
|
||||
else if (BaudRate == USCI1_UART_BaudRate_FsysDIV4)
|
||||
{
|
||||
US1CON0 |= 0X20;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
US1CON2 = UARTFsys / BaudRate / 256;
|
||||
US1CON1 = UARTFsys / BaudRate % 256;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI1_UART_SendData8(uint8_t Data)
|
||||
*函数功能:USCI1 UART1发送8位数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI1_UART_SendData8(uint8_t Data)
|
||||
{
|
||||
US1CON3 = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t USCI1_UART_ReceiveData8(void)
|
||||
*函数功能:获得US1CON3中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:接收的数据
|
||||
*****************************************************/
|
||||
uint8_t USCI1_UART_ReceiveData8(void)
|
||||
{
|
||||
return US1CON3;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI1_UART_SendData9(uint16_t Data)
|
||||
*函数功能:UART1发送9位数据
|
||||
*入口参数:
|
||||
uint16_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI1_UART_SendData9(uint16_t Data)
|
||||
{
|
||||
uint8_t Data_9Bit;
|
||||
Data_9Bit = (Data >> 8);
|
||||
|
||||
if (Data_9Bit)
|
||||
{
|
||||
US1CON0 |= 0x08;
|
||||
}
|
||||
else
|
||||
{
|
||||
US1CON0 &= 0xf7;
|
||||
}
|
||||
|
||||
US1CON3 = (uint8_t)Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint16_t USCI1_UART_ReceiveData9(void)
|
||||
*函数功能:获得US1CON3中的值及第九位的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint16_t:接收的数据
|
||||
*****************************************************/
|
||||
uint16_t USCI1_UART_ReceiveData9(void)
|
||||
{
|
||||
uint16_t Data9;
|
||||
Data9 = US1CON3 + ((uint16_t)(US1CON0 & 0X04) << 6);
|
||||
return Data9;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI1_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:USCI1中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI1_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
IE2 |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE2 &= 0xFE;
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
if (Priority != LOW)
|
||||
{
|
||||
IP2 |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP2 &= 0xFE;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus USCI1_GetFlagStatus(USCI1_Flag_TypeDef USCI1_FLAG)
|
||||
*函数功能:获得USCI1标志状态
|
||||
*入口参数:
|
||||
USCI1_Flag_Typedef:USCI1_Flag:中断标志位选择
|
||||
*出口参数:
|
||||
FlagStatus:USCI1标志状态
|
||||
*****************************************************/
|
||||
FlagStatus USCI1_GetFlagStatus(USCI1_Flag_TypeDef USCI1_FLAG)
|
||||
{
|
||||
FlagStatus bitstatus = RESET;
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
if ((USCI1_FLAG == USCI1_SPI_FLAG_SPIF) || (USCI1_FLAG == USCI1_SPI_FLAG_WCOL) || (USCI1_FLAG == USCI1_TWI_FLAG_TXRXnE))
|
||||
#endif
|
||||
{
|
||||
if ((USCI1_FLAG & US1CON1) != (uint8_t)RESET)
|
||||
{
|
||||
bitstatus = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
bitstatus = RESET;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((USCI1_FLAG & US1CON0) != (uint8_t)RESET)
|
||||
{
|
||||
bitstatus = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
bitstatus = RESET;
|
||||
}
|
||||
}
|
||||
|
||||
return bitstatus;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI1_ClearFlag(USCI1_Flag_TypeDef USCI1_FLAG)
|
||||
*函数功能:清除USCI1标志状态
|
||||
*入口参数:
|
||||
USCI1_Flag_TypeDef:USCI1_FLAG:所需清除的标志位
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI1_ClearFlag(USCI1_Flag_TypeDef USCI1_FLAG)
|
||||
{
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
if ((USCI1_FLAG == USCI1_SPI_FLAG_SPIF) || (USCI1_FLAG == USCI1_SPI_FLAG_WCOL) || (USCI1_FLAG == USCI1_TWI_FLAG_TXRXnE))
|
||||
#endif
|
||||
{
|
||||
US1CON1 &= (~USCI1_FLAG); //操作寄存器US1CON1
|
||||
}
|
||||
else if ((USCI1_FLAG == USCI1_UART_FLAG_TI) || (USCI1_FLAG == USCI1_UART_FLAG_RI))
|
||||
{
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
US1CON0 = US1CON0 & 0xFC | USCI1_FLAG; //写1清零
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
US1CON0 &= (~USCI1_FLAG); //操作寄存器US1CON0
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI1_TWI_SendAddr(uint8_t Addr,USCI1_TWI_RWType RW)
|
||||
*函数功能:TWI发送地址,读写类型
|
||||
*入口参数:
|
||||
uint8_t:Addr:发送的地址 0~127
|
||||
USCI1_TWI_RWType:RW:读写类型
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI1_TWI_SendAddr(uint8_t Addr, USCI1_TWI_RWType RW)
|
||||
{
|
||||
US1CON3 = (Addr << 1) | RW;
|
||||
}
|
||||
|
||||
#endif
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,535 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92F_usci2.c
|
||||
// 作者: 赛元应用团队
|
||||
// 模块功能: USCI2固件库函数C文件
|
||||
// 最后更正日期: 2022/01/05
|
||||
// 版本: V1.10001
|
||||
// 说明: 该文件仅适用于SC92系列芯片
|
||||
//*************************************************************
|
||||
|
||||
/* 头文件引用 */
|
||||
#include "sc92f_usci2.h"
|
||||
|
||||
#if defined (SC92L853x) || defined (SC92L753x)
|
||||
/**************************************************
|
||||
*函数名称:void USCI2_DeInit(void)
|
||||
*函数功能:USCI2相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI2_DeInit(void)
|
||||
{
|
||||
TMCON &= 0X3F;
|
||||
US2CON0 = 0X00;
|
||||
US2CON1 = 0X00;
|
||||
US2CON2 = 0X00;
|
||||
US2CON3 = 0X00;
|
||||
IE2 &= (~0X02);
|
||||
IP2 &= (~0X02);
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI2_SPI_Init(USCI2_SPI_FirstBit_TypeDef FirstBit, USCI2_SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,USCI2_SPI_Mode_TypeDef Mode,
|
||||
USCI2_SPI_ClockPolarity_TypeDef ClockPolarity, USCI2_SPI_ClockPhase_TypeDef ClockPhase,USCI2_SPI_TXE_INT_TypeDef SPI_TXE_INT,USCI2_TransmissionMode_TypeDef TransmissionMode)
|
||||
*函数功能:SPI初始化配置函数
|
||||
*入口参数:
|
||||
USCI2_SPI_FirstBit_TypeDef:FirstBit:优先传送位选择(MSB/LSB)
|
||||
USCI2_SPI_BaudRatePrescaler_TypeDef:BaudRatePrescaler:SPI时钟频率选择
|
||||
USCI2_SPI_Mode_TypeDef:Mode:SPI工作模式选择
|
||||
USCI2_SPI_ClockPolarity_TypeDef:ClockPolarity:SPI时钟极性选择
|
||||
USCI2_SPI_ClockPhase_TypeDef:ClockPhase:SPI时钟相位选择
|
||||
USCI2_SPI_TXE_INT_TypeDef:SPI_TXE_INT:发送缓存器中断允许选择,该功能在SC92FXX1X芯片上无效
|
||||
USCI2_TransmissionMode_TypeDef:TransmissionMode:SPI传输模式选择 8/16位
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI2_SPI_Init(USCI2_SPI_FirstBit_TypeDef FirstBit,
|
||||
USCI2_SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler, USCI2_SPI_Mode_TypeDef Mode,
|
||||
USCI2_SPI_ClockPolarity_TypeDef ClockPolarity, USCI2_SPI_ClockPhase_TypeDef ClockPhase,
|
||||
USCI2_SPI_TXE_INT_TypeDef SPI_TXE_INT, USCI2_TransmissionMode_TypeDef TransmissionMode)
|
||||
{
|
||||
TMCON = (TMCON & 0X3F) | 0X40;
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
SPI_TXE_INT = USCI2_SPI_TXE_DISINT; //SPI_TXE_INT该功能在SC92FXX1X芯片上无效
|
||||
US2CON1 = US2CON1 & (~0X05) | FirstBit | TransmissionMode;
|
||||
|
||||
#endif
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
US2CON1 = US2CON1 & (~0X05) | FirstBit | SPI_TXE_INT | TransmissionMode;
|
||||
#endif
|
||||
US2CON0 = US2CON0 & 0X80 | BaudRatePrescaler | Mode | ClockPolarity | ClockPhase;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI2_TransmissionMode(USCI2_TransmissionMode_TypeDef TransmissionMode)
|
||||
*函数功能:SPI 传输模式配置函数
|
||||
*入口参数:
|
||||
USCI2_TransmissionMode_TypeDef:TransmissionMode:SPI传输模式选择 8/16e位
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI2_TransmissionMode(USCI2_TransmissionMode_TypeDef TransmissionMode)
|
||||
{
|
||||
|
||||
TMCON = (TMCON & 0X3F) | 0X40;
|
||||
if (TransmissionMode == USCI2_SPI_DATA8)
|
||||
{
|
||||
US2CON1 &= 0xFD;
|
||||
}
|
||||
else
|
||||
{
|
||||
US2CON1 |= 0x02;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI2_SPI_Cmd(FunctionalState NewState)
|
||||
*函数功能:SPI功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI2_SPI_Cmd(FunctionalState NewState)
|
||||
{
|
||||
TMCON = (TMCON & 0X3F) | 0X40;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US2CON0 |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
US2CON0 &= (~0X80);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI2_SPI_SendData_8(uint8_t Data)
|
||||
*函数功能:USCI2 SPI发送数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI2_SPI_SendData_8(uint8_t Data)
|
||||
{
|
||||
US2CON2 = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t USCI2_SPI_ReceiveData_8(void)
|
||||
*函数功能:获得US2CON2中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:接收的数据
|
||||
*****************************************************/
|
||||
uint8_t USCI2_SPI_ReceiveData_8(void)
|
||||
{
|
||||
return US2CON2;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI2_SPI_SendData_16(uint16_t Data)
|
||||
*函数功能:US2CON2 SPI发送数据
|
||||
*入口参数:
|
||||
uint16_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI2_SPI_SendData_16(uint16_t Data)
|
||||
{
|
||||
US2CON3 = (uint8_t)(Data >> 8);
|
||||
US2CON2 = (uint8_t)Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint16_t USCI2_SPI_ReceiveData_16(void)
|
||||
*函数功能:获得US2CON2中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint16_t:接收的数据
|
||||
*****************************************************/
|
||||
uint16_t USCI2_SPI_ReceiveData_16(void)
|
||||
{
|
||||
uint16_t SPI_data;
|
||||
SPI_data = (uint16_t)((US2CON3 << 8) | US2CON2);
|
||||
return SPI_data;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI2_TWI_Slave_Init(uint8_t TWI_Address)
|
||||
*函数功能:USCI2 TWI 从机初始化配置函数
|
||||
*入口参数:
|
||||
uint8_t:TWI_Address:TWI作为从机时的7位从机地址
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI2_TWI_Slave_Init(uint8_t TWI_Address)
|
||||
{
|
||||
TMCON = TMCON & 0X3F | 0X80;
|
||||
US2CON2 = TWI_Address << 1;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI2_TWI_MasterCommunicationRate(USCI2_TWI_MasterCommunicationRate_TypeDef TWI_MasterCommunicationRate)
|
||||
*函数功能:USCI2 TWI主机模式下通讯速率设定
|
||||
*入口参数:
|
||||
USCI2_TWI_MasterCommunicationRate_TypeDef:TWI_MasterCommunicationRate:TWI主机模式下通讯速率
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI2_TWI_MasterCommunicationRate(USCI2_TWI_MasterCommunicationRate_TypeDef
|
||||
TWI_MasterCommunicationRate)
|
||||
{
|
||||
TMCON = TMCON & 0X3F | 0X80; //选择usci2为TWI
|
||||
|
||||
US2CON1 = TWI_MasterCommunicationRate;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI2_TWI_Start(void)
|
||||
*函数功能:USCI2 TWI 起始位
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI2_TWI_Start(void)
|
||||
{
|
||||
US2CON1 |= 0x20;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI2_TWI_MasterModeStop(void)
|
||||
*函数功能:USCI2 TWI主机模式停止位
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI2_TWI_MasterModeStop(void)
|
||||
{
|
||||
US2CON1 |= 0x10;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI2_TWI_SlaveClockExtension(void)
|
||||
*函数功能:USCI2 TWI从机模式时钟延长功能位
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI2_TWI_SlaveClockExtension(FunctionalState NewState)
|
||||
{
|
||||
TMCON = TMCON & 0X3F | 0X80;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US2CON1 |= 0x40;
|
||||
}
|
||||
else
|
||||
{
|
||||
US2CON1 &= 0XBF;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI2_TWI_AcknowledgeConfig(FunctionalState NewState)
|
||||
*函数功能:TWI接收应答使能函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:接收应答使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI2_TWI_AcknowledgeConfig(FunctionalState NewState)
|
||||
{
|
||||
TMCON = TMCON & 0X3F | 0X80;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US2CON0 |= 0X08;
|
||||
}
|
||||
else
|
||||
{
|
||||
US2CON0 &= 0XF7;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI2_TWI_GeneralCallCmd(FunctionalState NewState)
|
||||
*函数功能:TWI通用地址响应使能函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:接收应答使能/失能选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI2_TWI_GeneralCallCmd(FunctionalState NewState)
|
||||
{
|
||||
TMCON = TMCON & 0X3F | 0X80;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US2CON2 |= 0X01;
|
||||
}
|
||||
else
|
||||
{
|
||||
US2CON2 &= 0XFE;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus USCI2_GetTWIStatus(USCI2_TWIState_TypeDef USCI2_TWIState)
|
||||
*函数功能:读取TWI状态
|
||||
*入口参数:
|
||||
USCI2_TWIState_TypeDef:USCI2_TWIState:TWI状态类型
|
||||
*出口参数:
|
||||
FlagStatus:USCI2_TWI标志状态
|
||||
*****************************************************/
|
||||
FlagStatus USCI2_GetTWIStatus(USCI2_TWIState_TypeDef USCI2_TWIState)
|
||||
{
|
||||
if ((US2CON0 & 0x07) == USCI2_TWIState)
|
||||
return SET;
|
||||
else
|
||||
return RESET;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI2_TWI_Cmd(FunctionalState NewState)
|
||||
*函数功能:TWI功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI2_TWI_Cmd(FunctionalState NewState)
|
||||
{
|
||||
TMCON = TMCON & 0X3F | 0X80;
|
||||
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
US2CON0 |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
US2CON0 &= (~0X80);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI2_TWI_SendData(uint8_t Data)
|
||||
*函数功能:TWI发送数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI2_TWI_SendData(uint8_t Data)
|
||||
{
|
||||
US2CON3 = Data;
|
||||
}
|
||||
/*****************************************************
|
||||
*函数名称:void USCI2_TWI_SendAddr(uint8_t Addr,USCI2_TWI_RWType RW)
|
||||
*函数功能:TWI发送地址,读写类型
|
||||
*入口参数:
|
||||
uint8_t:Addr:发送的地址
|
||||
USCI2_TWI_RWType:RW:读写类型
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI2_TWI_SendAddr(uint8_t Addr, USCI2_TWI_RWType RW)
|
||||
{
|
||||
US2CON3 = (Addr << 1) | RW;
|
||||
}
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t USCI2_TWI_ReceiveData(void)
|
||||
*函数功能:获得US2CON3中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:接收的数据
|
||||
*****************************************************/
|
||||
uint8_t USCI2_TWI_ReceiveData(void)
|
||||
{
|
||||
return US2CON3;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void USCI2_UART_Init(uint32_t UARTFsys, uint32_t BaudRate, USCI2_UART_Mode_TypeDef Mode, USCI2_UART_RX_TypeDef RxMode)
|
||||
*函数功能:UART初始化配置函数
|
||||
*入口参数:
|
||||
uint32_t:UARTFsys:系统时钟频率
|
||||
uint32_t:BaudRate:波特率
|
||||
USCI2_UART_Mode_TypeDef:Mode:UART1工作模式
|
||||
USCI2_UART_RX_TypeDef:RxMode:接收允许选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void USCI2_UART_Init(uint32_t UARTFsys, uint32_t BaudRate, USCI2_UART_Mode_TypeDef Mode,
|
||||
USCI2_UART_RX_TypeDef RxMode)
|
||||
{
|
||||
TMCON |= 0xC0;
|
||||
US2CON0 = US2CON0 & 0X0F | Mode | RxMode;
|
||||
|
||||
if (Mode == USCI2_UART_Mode_8B)
|
||||
{
|
||||
if (BaudRate == USCI2_UART_BaudRate_FsysDIV12)
|
||||
{
|
||||
US2CON0 &= 0XDF;
|
||||
}
|
||||
else if (BaudRate == USCI2_UART_BaudRate_FsysDIV4)
|
||||
{
|
||||
US2CON0 |= 0X20;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
US2CON2 = UARTFsys / BaudRate / 256;
|
||||
US2CON1 = UARTFsys / BaudRate % 256;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI2_UART_SendData8(uint8_t Data)
|
||||
*函数功能:USCI2 UART1发送8位数据
|
||||
*入口参数:
|
||||
uint8_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI2_UART_SendData8(uint8_t Data)
|
||||
{
|
||||
US2CON3 = Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint8_t USCI2_UART_ReceiveData8(void)
|
||||
*函数功能:获得US2CON3中的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint8_t:接收的数据
|
||||
*****************************************************/
|
||||
uint8_t USCI2_UART_ReceiveData8(void)
|
||||
{
|
||||
return US2CON3;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI2_UART_SendData9(uint16_t Data)
|
||||
*函数功能:UART发送9位数据
|
||||
*入口参数:
|
||||
uint16_t:Data:发送的数据
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI2_UART_SendData9(uint16_t Data)
|
||||
{
|
||||
uint8_t Data_9Bit;
|
||||
Data_9Bit = (Data >> 8);
|
||||
|
||||
if (Data_9Bit)
|
||||
{
|
||||
US2CON0 |= 0x08;
|
||||
}
|
||||
else
|
||||
{
|
||||
US2CON0 &= 0xf7;
|
||||
}
|
||||
|
||||
US2CON3 = (uint8_t)Data;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:uint16_t USCI2_UART_ReceiveData9(void)
|
||||
*函数功能:获得US2CON3中的值及第九位的值
|
||||
*入口参数:void
|
||||
*出口参数:
|
||||
uint16_t:接收的数据
|
||||
*****************************************************/
|
||||
uint16_t USCI2_UART_ReceiveData9(void)
|
||||
{
|
||||
uint16_t Data9;
|
||||
Data9 = US2CON3 + ((uint16_t)(US2CON0 & 0X04) << 6);
|
||||
return Data9;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI2_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:USCI2中断初始化
|
||||
*入口参数:
|
||||
FunctionalState:NewState:中断使能/关闭选择
|
||||
PriorityStatus:Priority:中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI2_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
IE2 |= 0x02;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE2 &= 0xFD;
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
if (Priority != LOW)
|
||||
{
|
||||
IP2 |= 0x02;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP2 &= 0xFD;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus USCI2_GetFlagStatus(USCI2_Flag_TypeDef USCI2_FLAG)
|
||||
*函数功能:获得USCI2标志状态
|
||||
*入口参数:
|
||||
USCI2_Flag_Typedef:USCI2_Flag:所需获取的标志位
|
||||
*出口参数:
|
||||
FlagStatus:USCI2标志状态
|
||||
*****************************************************/
|
||||
FlagStatus USCI2_GetFlagStatus(USCI2_Flag_TypeDef USCI2_FLAG)
|
||||
{
|
||||
FlagStatus bitstatus = RESET;
|
||||
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
|
||||
if ((USCI2_FLAG == USCI2_SPI_FLAG_SPIF) || (USCI2_FLAG == USCI2_SPI_FLAG_WCOL))
|
||||
#endif
|
||||
{
|
||||
if ((USCI2_FLAG & US2CON1) != (uint8_t)RESET)
|
||||
{
|
||||
bitstatus = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
bitstatus = RESET;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((USCI2_FLAG & US2CON0) != (uint8_t)RESET)
|
||||
{
|
||||
bitstatus = SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
bitstatus = RESET;
|
||||
}
|
||||
}
|
||||
|
||||
return bitstatus;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void USCI2_ClearFlag(USCI2_Flag_TypeDef USCI2_FLAG)
|
||||
*函数功能:清除USCI2标志状态
|
||||
*入口参数:
|
||||
USCI2_Flag_TypeDef:USCI2_FLAG:所需清除的标志位
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void USCI2_ClearFlag(USCI2_Flag_TypeDef USCI2_FLAG)
|
||||
{
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
if ((USCI2_FLAG == USCI2_SPI_FLAG_SPIF) || (USCI2_FLAG == USCI2_SPI_FLAG_WCOL) || (USCI2_FLAG == USCI2_TWI_FLAG_TXRXnE))
|
||||
#endif
|
||||
{
|
||||
US2CON1 &= (~USCI2_FLAG); //操作寄存器US2CON1
|
||||
}
|
||||
else if ((USCI2_FLAG == USCI2_UART_FLAG_TI) || (USCI2_FLAG == USCI2_UART_FLAG_RI))
|
||||
{
|
||||
#if defined(SC92L853x) || defined(SC92L753x)
|
||||
US2CON0 = US2CON0 & 0xFC | USCI2_FLAG; //写1清零
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
US2CON0 &= (~USCI2_FLAG); //操作寄存器US2CON0
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
/******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
//************************************************************
|
||||
// Copyright (c) 深圳市赛元微电子有限公司
|
||||
// 文件名称: sc92f_wdt.c
|
||||
// 作者:
|
||||
// 模块功能: WDT固件库函数C文件
|
||||
// 最后更正日期: 2022年3月23日
|
||||
// 版本: V1.10002
|
||||
// 说明:
|
||||
//*************************************************************
|
||||
|
||||
#include "sc92f_wdt.h"
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void WDT_DeInit(void)
|
||||
*函数功能:WDT相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void WDT_DeInit(void)
|
||||
{
|
||||
WDTCON = 0X00;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void WDT_Init(WDT_OverflowTime_TypeDef OverflowTime)
|
||||
*函数功能:WDT初始化配置函数
|
||||
*入口参数:
|
||||
WDT_OverflowTime_TypeDef:OverflowTime:WDT溢出时间选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void WDT_Init(WDT_OverflowTime_TypeDef
|
||||
OverflowTime)
|
||||
{
|
||||
WDTCON = (WDTCON & 0XF8) | OverflowTime;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void WDT_Cmd(FunctionalState NewState)
|
||||
*函数功能:WDT功能开关函数
|
||||
*入口参数:
|
||||
FunctionalState:NewState:功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void WDT_Cmd(FunctionalState NewState)
|
||||
{
|
||||
OPINX = 0XC1;
|
||||
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
OPREG &= 0X7F;
|
||||
}
|
||||
else
|
||||
{
|
||||
OPREG |= 0X80;
|
||||
}
|
||||
}
|
||||
|
||||
/******************* (C) COPYRIGHT 2021 SinOne Microelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,284 @@
|
|||
C51 COMPILER V9.01 SC_INIT 09/11/2020 09:48:38 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.01, COMPILATION OF MODULE SC_INIT
|
||||
OBJECT MODULE PLACED IN ..\Output\SC_Init.obj
|
||||
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE ..\User\SC_Init.c OMF2 BROWSE INCDIR(..\FWLib\SC92F_Lib\inc;..\User) DEBUG
|
||||
-PRINT(..\List\SC_Init.lst) OBJECT(..\Output\SC_Init.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 //************************************************************
|
||||
2 // Copyright (c) 深圳市赛元微电子有限公司
|
||||
3 // 文件名称 : SC_Init.c
|
||||
4 // 模块功能 : MCU初始化函数C文件
|
||||
5 // 说明 :
|
||||
6 //*************************************************************
|
||||
7
|
||||
8 #include "SC_Init.h" //MCU初始化头文件,包含固件库所有头文件
|
||||
9
|
||||
10 /*****************************************************
|
||||
11 *函数名称: SC_Init
|
||||
12 *函数功能: MCU初始化函数
|
||||
13 *入口参数:void
|
||||
14 *出口参数:void
|
||||
15 *****************************************************/
|
||||
16 void SC_Init(void)
|
||||
17 {
|
||||
18 1 /*write initial function here*/
|
||||
19 1
|
||||
20 1 EA = 1;
|
||||
21 1 }
|
||||
22
|
||||
23 /*****************************************************
|
||||
24 *函数名称: SC_OPTION_Init
|
||||
25 *函数功能: OPTION配置初始化函数
|
||||
26 *入口参数:void
|
||||
27 *出口参数:void
|
||||
28 *****************************************************/
|
||||
29 void SC_OPTION_Init(void)
|
||||
30 {
|
||||
31 1 /*OPTION_Init write here*/
|
||||
32 1 }
|
||||
33
|
||||
34 /*****************************************************
|
||||
35 *函数名称: SC_GPIO_Init
|
||||
36 *函数功能: GPIO初始化函数
|
||||
37 *入口参数:void
|
||||
38 *出口参数:void
|
||||
39 *****************************************************/
|
||||
40 void SC_GPIO_Init(void)
|
||||
41 {
|
||||
42 1 /*GPIO_Init write here*/
|
||||
43 1 }
|
||||
44 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (
|
||||
-SC92F84Ax_2) || defined (SC92F74Ax_2)|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined
|
||||
-(SC92F736xB) || defined (SC92F8003)||defined (SC92F84Ax) || defined (SC92F74Ax)||defined (SC92F83Ax) || defined (SC92F
|
||||
-73Ax)
|
||||
45 /*****************************************************
|
||||
46 *函数名称: SC_UART0_Init
|
||||
47 *函数功能: UART0初始化函数
|
||||
48 *入口参数:void
|
||||
49 *出口参数:void
|
||||
50 *****************************************************/
|
||||
51 void SC_UART0_Init(void)
|
||||
C51 COMPILER V9.01 SC_INIT 09/11/2020 09:48:38 PAGE 2
|
||||
|
||||
52 {
|
||||
53 1 /*UART0_Init write here*/
|
||||
54 1 }
|
||||
55 #endif
|
||||
56 /*****************************************************
|
||||
57 *函数名称: SC_TIM0_Init
|
||||
58 *函数功能: TIMER0初始化函数
|
||||
59 *入口参数:void
|
||||
60 *出口参数:void
|
||||
61 *****************************************************/
|
||||
62 void SC_TIM0_Init(void)
|
||||
63 {
|
||||
64 1 /*TIM0_Init write here*/
|
||||
65 1 }
|
||||
66
|
||||
67 /*****************************************************
|
||||
68 *函数名称: SC_TIM1_Init
|
||||
69 *函数功能: TIMER1初始化函数
|
||||
70 *入口参数:void
|
||||
71 *出口参数:void
|
||||
72 *****************************************************/
|
||||
73 void SC_TIM1_Init(void)
|
||||
74 {
|
||||
75 1 /*TIM1_Init write here*/
|
||||
76 1 }
|
||||
77
|
||||
78 /*****************************************************
|
||||
79 *函数名称: SC_TIM2_Init
|
||||
80 *函数功能: TIMER2初始化函数
|
||||
81 *入口参数:void
|
||||
82 *出口参数:void
|
||||
83 *****************************************************/
|
||||
84 void SC_TIM2_Init(void)
|
||||
85 {
|
||||
86 1 /*TIM2_Init write here*/
|
||||
87 1 }
|
||||
88
|
||||
89
|
||||
90 /*****************************************************
|
||||
91 *函数名称: SC_PWM_Init
|
||||
92 *函数功能: PWM初始化函数
|
||||
93 *入口参数:void
|
||||
94 *出口参数:void
|
||||
95 *****************************************************/
|
||||
96 void SC_PWM_Init(void)
|
||||
97 {
|
||||
98 1 /*PWM_Init write here*/
|
||||
99 1 }
|
||||
100
|
||||
101 /*****************************************************
|
||||
102 *函数名称: SC_INT_Init
|
||||
103 *函数功能: INT初始化函数
|
||||
104 *入口参数:void
|
||||
105 *出口参数:void
|
||||
106 *****************************************************/
|
||||
107 void SC_INT_Init(void)
|
||||
108 {
|
||||
109 1 /*INT_Init write here*/
|
||||
110 1 }
|
||||
111
|
||||
112 /*****************************************************
|
||||
113 *函数名称: SC_ADC_Init
|
||||
C51 COMPILER V9.01 SC_INIT 09/11/2020 09:48:38 PAGE 3
|
||||
|
||||
114 *函数功能: ADC初始化函数
|
||||
115 *入口参数:void
|
||||
116 *出口参数:void
|
||||
117 *****************************************************/
|
||||
118 void SC_ADC_Init(void)
|
||||
119 {
|
||||
120 1 /*ADC_Init write here*/
|
||||
121 1 }
|
||||
122
|
||||
123 /*****************************************************
|
||||
124 *函数名称: SC_IAP_Init
|
||||
125 *函数功能: IAP初始化函数
|
||||
126 *入口参数:void
|
||||
127 *出口参数:void
|
||||
128 *****************************************************/
|
||||
129 void SC_IAP_Init(void)
|
||||
130 {
|
||||
131 1 /*IAP_Init write here*/
|
||||
132 1 }
|
||||
133 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (
|
||||
-SC92F84Ax_2) || defined (SC92F74Ax_2)|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined
|
||||
-(SC92F736xB) || defined (SC92F8003)||defined (SC92F84Ax) || defined (SC92F74Ax)||defined (SC92F83Ax) || defined (SC92F
|
||||
-73Ax)
|
||||
134 /*****************************************************
|
||||
135 *函数名称: SC_SSI_Init
|
||||
136 *函数功能: SSI初始化函数
|
||||
137 *入口参数:void
|
||||
138 *出口参数:void
|
||||
139 *****************************************************/
|
||||
140 void SC_SSI_Init(void)
|
||||
141 {
|
||||
142 1 /*SSI_Init write here*/
|
||||
143 1 }
|
||||
144 #endif
|
||||
145 #if defined (SC92F742x)
|
||||
/*****************************************************
|
||||
*函数名称: SC_SSI0_Init
|
||||
*函数功能: SSI初始化函数
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SC_SSI0_Init(void)
|
||||
{
|
||||
/*SSI0_Init write here*/
|
||||
}
|
||||
/*****************************************************
|
||||
*函数名称: SC_SSI1_Init
|
||||
*函数功能: SSI初始化函数
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SC_SSI1_Init(void)
|
||||
{
|
||||
/*SSI1_Init write here*/
|
||||
}
|
||||
#endif
|
||||
167 /*****************************************************
|
||||
168 *函数名称: SC_BTM_Init
|
||||
169 *函数功能: 低频时钟定时器初始化函数
|
||||
170 *入口参数:void
|
||||
171 *出口参数:void
|
||||
172 *****************************************************/
|
||||
C51 COMPILER V9.01 SC_INIT 09/11/2020 09:48:38 PAGE 4
|
||||
|
||||
173 void SC_BTM_Init(void)
|
||||
174 {
|
||||
175 1 /*BTM_Init write here*/
|
||||
176 1 }
|
||||
177
|
||||
178 /*****************************************************
|
||||
179 *函数名称: SC_CHKSUM_Init
|
||||
180 *函数功能: check sum 初始化函数
|
||||
181 *入口参数:void
|
||||
182 *出口参数:void
|
||||
183 *****************************************************/
|
||||
184 void SC_CHKSUM_Init(void)
|
||||
185 {
|
||||
186 1 /*CHKSUM_Init write here*/
|
||||
187 1 }
|
||||
188
|
||||
189 /*****************************************************
|
||||
190 *函数名称: SC_WDT_Init
|
||||
191 *函数功能: 看门狗初始化函数
|
||||
192 *入口参数:void
|
||||
193 *出口参数:void
|
||||
194 *****************************************************/
|
||||
195 void SC_WDT_Init(void)
|
||||
196 {
|
||||
197 1 /*WDT_Init write here*/
|
||||
198 1 }
|
||||
199
|
||||
200 /*****************************************************
|
||||
201 *函数名称: SC_PWR_Init
|
||||
202 *函数功能: 电源/功耗控制初始化函数
|
||||
203 *入口参数:void
|
||||
204 *出口参数:void
|
||||
205 *****************************************************/
|
||||
206 void SC_PWR_Init(void)
|
||||
207 {
|
||||
208 1 /*PWR_Init write here*/
|
||||
209 1 }
|
||||
210 /*****************************************************
|
||||
211 *函数名称: SC_DDIC_Init
|
||||
212 *函数功能: 显示控制初始化函数
|
||||
213 *入口参数:void
|
||||
214 *出口参数:void
|
||||
215 *****************************************************/
|
||||
216 void SC_DDIC_Init(void)
|
||||
217 {
|
||||
218 1 /*DDIC_Init write here*/
|
||||
219 1 }
|
||||
220 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (
|
||||
-SC92F84Ax_2) || defined (SC92F74Ax_2)
|
||||
/*****************************************************
|
||||
*函数名称: SC_ACMP_Init
|
||||
*函数功能: 运放初始化函数
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void SC_ACMP_Init(void)
|
||||
{
|
||||
/*ACMP_Init write here*/
|
||||
}
|
||||
#endif
|
||||
232 /*****************************************************
|
||||
233 *函数名称: SC_MDU_Init
|
||||
C51 COMPILER V9.01 SC_INIT 09/11/2020 09:48:38 PAGE 5
|
||||
|
||||
234 *函数功能: 乘除法器初始化函数
|
||||
235 *入口参数:void
|
||||
236 *出口参数:void
|
||||
237 *****************************************************/
|
||||
238 void SC_MDU_Init(void)
|
||||
239 {
|
||||
240 1 /*MDU_Init write here*/
|
||||
241 1 }
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 20 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
C51 COMPILER V9.01 SC_IT 09/11/2020 09:48:38 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.01, COMPILATION OF MODULE SC_IT
|
||||
OBJECT MODULE PLACED IN ..\Output\SC_it.obj
|
||||
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE ..\User\SC_it.c OMF2 BROWSE INCDIR(..\FWLib\SC92F_Lib\inc;..\User) DEBUG PR
|
||||
-INT(..\List\SC_it.lst) OBJECT(..\Output\SC_it.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 //************************************************************
|
||||
2 // Copyright (c) 深圳市赛元微电子有限公司
|
||||
3 // 文件名称 : SC_it.c
|
||||
4 // 作者 :
|
||||
5 // 模块功能 : sc92f 中断服务程序
|
||||
6 // 局部函数列表:
|
||||
7 // 最后更正日期: 2020/8/18
|
||||
8 // 版本 : V1.0
|
||||
9 //*************************************************************
|
||||
10 #include "SC_it.h"
|
||||
11 #include "..\Drivers\SCDriver_List.h"
|
||||
12 void INT0Interrupt() interrupt 0
|
||||
13 {
|
||||
14 1 TCON &= 0XFD;//清中断标志位
|
||||
15 1 /*INT0_it write here*/
|
||||
16 1
|
||||
17 1 }
|
||||
18
|
||||
19 void Timer0Interrupt() interrupt 1
|
||||
20 {
|
||||
21 1 /*TIM0_it write here*/
|
||||
22 1 }
|
||||
23
|
||||
24 void INT1Interrupt() interrupt 2
|
||||
25 {
|
||||
26 1 TCON &= 0XF7;//清中断标志位
|
||||
27 1 /*INT1_it write here*/
|
||||
28 1
|
||||
29 1 }
|
||||
30
|
||||
31 void Timer1Interrupt() interrupt 3
|
||||
32 {
|
||||
33 1 /*TIM1_it write here*/
|
||||
34 1 }
|
||||
35 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (
|
||||
-SC92F84Ax_2) || defined (SC92F74Ax_2)|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined
|
||||
-(SC92F736xB) || defined (SC92F8003)||defined (SC92F84Ax) || defined (SC92F74Ax)||defined (SC92F83Ax) || defined (SC92F
|
||||
-73Ax)
|
||||
36 void UART0Interrupt() interrupt 4
|
||||
37 {
|
||||
38 1 /*UART0_it write here*/
|
||||
39 1 }
|
||||
40 #endif
|
||||
41 #if defined(SC92F742x)
|
||||
void SSI0Interrupt() interrupt 4
|
||||
{
|
||||
/*SSI0_it write here*/
|
||||
}
|
||||
#endif
|
||||
47 void Timer2Interrupt() interrupt 5
|
||||
48 {
|
||||
49 1 /*TIM2_it write here*/
|
||||
50 1 }
|
||||
51
|
||||
C51 COMPILER V9.01 SC_IT 09/11/2020 09:48:38 PAGE 2
|
||||
|
||||
52 void ADCInterrupt() interrupt 6
|
||||
53 {
|
||||
54 1 /*ADC_it write here*/
|
||||
55 1 }
|
||||
56 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (
|
||||
-SC92F84Ax_2) || defined (SC92F74Ax_2)|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined
|
||||
-(SC92F736xB) || defined (SC92F8003)||defined (SC92F84Ax) || defined (SC92F74Ax)||defined (SC92F83Ax) || defined (SC92F
|
||||
-73Ax)
|
||||
57 void SSIInterrupt() interrupt 7
|
||||
58 {
|
||||
59 1 /*SSI_it write here*/
|
||||
60 1 }
|
||||
61 #endif
|
||||
62 #if defined (SC92F742x)
|
||||
void SSI1Interrupt() interrupt 7
|
||||
{
|
||||
/*SSI1_it write here*/
|
||||
}
|
||||
#endif
|
||||
68 void PWMInterrupt() interrupt 8
|
||||
69 {
|
||||
70 1 /*PWM_it write here*/
|
||||
71 1 }
|
||||
72
|
||||
73 void BTMInterrupt() interrupt 9
|
||||
74 {
|
||||
75 1 /*BTM_it write here*/
|
||||
76 1 }
|
||||
77
|
||||
78 void INT2Interrupt() interrupt 10
|
||||
79 {
|
||||
80 1 /*INT2_it write here*/
|
||||
81 1 }
|
||||
82 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (
|
||||
-SC92F84Ax_2) || defined (SC92F74Ax_2)
|
||||
void ACMPInterrupt() interrupt 12
|
||||
{
|
||||
/*ACMP_it write here*/
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 50 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
|
|
@ -0,0 +1,254 @@
|
|||
A51 MACRO ASSEMBLER STARTUP 09/11/2020 09:13:24 PAGE 1
|
||||
|
||||
|
||||
MACRO ASSEMBLER A51 V8.02
|
||||
OBJECT MODULE PLACED IN ..\Output\STARTUP.obj
|
||||
ASSEMBLER INVOKED BY: E:\Keil\C51\BIN\A51.EXE STARTUP.A51 SET(SMALL) DEBUG PRINT(..\List\STARTUP.lst) OBJECT(..\Output\S
|
||||
TARTUP.obj) EP
|
||||
|
||||
LOC OBJ LINE SOURCE
|
||||
|
||||
1 $nomod51
|
||||
2 ;------------------------------------------------------------------------------
|
||||
3 ; This file is part of the C51 Compiler package
|
||||
4 ; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
|
||||
5 ; Version 8.01
|
||||
6 ;
|
||||
7 ; *** <<< Use Configuration Wizard in Context Menu >>> ***
|
||||
8 ;------------------------------------------------------------------------------
|
||||
9 ; STARTUP.A51: This code is executed after processor reset.
|
||||
10 ;
|
||||
11 ; To translate this file use A51 with the following invocation:
|
||||
12 ;
|
||||
13 ; A51 STARTUP.A51
|
||||
14 ;
|
||||
15 ; To link the modified STARTUP.OBJ file to your application use the following
|
||||
16 ; Lx51 invocation:
|
||||
17 ;
|
||||
18 ; Lx51 your object file list, STARTUP.OBJ controls
|
||||
19 ;
|
||||
20 ;------------------------------------------------------------------------------
|
||||
21 ;
|
||||
22 ; User-defined <h> Power-On Initialization of Memory
|
||||
23 ;
|
||||
24 ; With the following EQU statements the initialization of memory
|
||||
25 ; at processor reset can be defined:
|
||||
26 ;
|
||||
27 ; <o> IDATALEN: IDATA memory size <0x0-0x100>
|
||||
28 ; <i> Note: The absolute start-address of IDATA memory is always 0
|
||||
29 ; <i> The IDATA space overlaps physically the DATA and BIT areas.
|
||||
0100 30 IDATALEN EQU 100H
|
||||
31 ;
|
||||
32 ; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>
|
||||
33 ; <i> The absolute start address of XDATA memory
|
||||
0000 34 XDATASTART EQU 0
|
||||
35 ;
|
||||
36 ; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>
|
||||
37 ; <i> The length of XDATA memory in bytes.
|
||||
0100 38 XDATALEN EQU 100H
|
||||
39 ;
|
||||
40 ; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>
|
||||
41 ; <i> The absolute start address of PDATA memory
|
||||
0000 42 PDATASTART EQU 0H
|
||||
43 ;
|
||||
44 ; <o> PDATALEN: PDATA memory size <0x0-0xFF>
|
||||
45 ; <i> The length of PDATA memory in bytes.
|
||||
0000 46 PDATALEN EQU 0H
|
||||
47 ;
|
||||
48 ;</h>
|
||||
49 ;------------------------------------------------------------------------------
|
||||
50 ;
|
||||
51 ;<h> Reentrant Stack Initialization
|
||||
52 ;
|
||||
53 ; The following EQU statements define the stack pointer for reentrant
|
||||
54 ; functions and initialized it:
|
||||
55 ;
|
||||
56 ; <h> Stack Space for reentrant functions in the SMALL model.
|
||||
57 ; <q> IBPSTACK: Enable SMALL model reentrant stack
|
||||
A51 MACRO ASSEMBLER STARTUP 09/11/2020 09:13:24 PAGE 2
|
||||
|
||||
58 ; <i> Stack space for reentrant functions in the SMALL model.
|
||||
0000 59 IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
|
||||
60 ; <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
|
||||
61 ; <i> Set the top of the stack to the highest location.
|
||||
0100 62 IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
63 ; </h>
|
||||
64 ;
|
||||
65 ; <h> Stack Space for reentrant functions in the LARGE model.
|
||||
66 ; <q> XBPSTACK: Enable LARGE model reentrant stack
|
||||
67 ; <i> Stack space for reentrant functions in the LARGE model.
|
||||
0000 68 XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
|
||||
69 ; <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
|
||||
70 ; <i> Set the top of the stack to the highest location.
|
||||
0000 71 XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1
|
||||
72 ; </h>
|
||||
73 ;
|
||||
74 ; <h> Stack Space for reentrant functions in the COMPACT model.
|
||||
75 ; <q> PBPSTACK: Enable COMPACT model reentrant stack
|
||||
76 ; <i> Stack space for reentrant functions in the COMPACT model.
|
||||
0000 77 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
|
||||
78 ;
|
||||
79 ; <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
|
||||
80 ; <i> Set the top of the stack to the highest location.
|
||||
0100 81 PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
82 ; </h>
|
||||
83 ;</h>
|
||||
84 ;------------------------------------------------------------------------------
|
||||
85 ;
|
||||
86 ; Memory Page for Using the Compact Model with 64 KByte xdata RAM
|
||||
87 ; <e>Compact Model Page Definition
|
||||
88 ;
|
||||
89 ; <i>Define the XDATA page used for PDATA variables.
|
||||
90 ; <i>PPAGE must conform with the PPAGE set in the linker invocation.
|
||||
91 ;
|
||||
92 ; Enable pdata memory page initalization
|
||||
0000 93 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
|
||||
94 ;
|
||||
95 ; <o> PPAGE number <0x0-0xFF>
|
||||
96 ; <i> uppermost 256-byte address of the page used for PDATA variables.
|
||||
0000 97 PPAGE EQU 0
|
||||
98 ;
|
||||
99 ; <o> SFR address which supplies uppermost address byte <0x0-0xFF>
|
||||
100 ; <i> most 8051 variants use P2 as uppermost address byte
|
||||
00A0 101 PPAGE_SFR DATA 0A0H
|
||||
102 ;
|
||||
103 ; </e>
|
||||
104 ;------------------------------------------------------------------------------
|
||||
105
|
||||
106 ; Standard SFR Symbols
|
||||
00E0 107 ACC DATA 0E0H
|
||||
00F0 108 B DATA 0F0H
|
||||
0081 109 SP DATA 81H
|
||||
0082 110 DPL DATA 82H
|
||||
0083 111 DPH DATA 83H
|
||||
112
|
||||
113 NAME ?C_STARTUP
|
||||
114
|
||||
115
|
||||
116 ?C_C51STARTUP SEGMENT CODE
|
||||
117 ?STACK SEGMENT IDATA
|
||||
118
|
||||
---- 119 RSEG ?STACK
|
||||
0000 120 DS 1
|
||||
121
|
||||
122 EXTRN CODE (?C_START)
|
||||
123 PUBLIC ?C_STARTUP
|
||||
A51 MACRO ASSEMBLER STARTUP 09/11/2020 09:13:24 PAGE 3
|
||||
|
||||
124
|
||||
---- 125 CSEG AT 0
|
||||
0000 020000 F 126 ?C_STARTUP: LJMP STARTUP1
|
||||
127
|
||||
---- 128 RSEG ?C_C51STARTUP
|
||||
129
|
||||
0000 130 STARTUP1:
|
||||
131
|
||||
132 IF IDATALEN <> 0
|
||||
0000 78FF 133 MOV R0,#IDATALEN - 1
|
||||
0002 E4 134 CLR A
|
||||
0003 F6 135 IDATALOOP: MOV @R0,A
|
||||
0004 D8FD 136 DJNZ R0,IDATALOOP
|
||||
137 ENDIF
|
||||
138
|
||||
139 IF XDATALEN <> 0
|
||||
0006 900000 140 MOV DPTR,#XDATASTART
|
||||
0009 7F00 141 MOV R7,#LOW (XDATALEN)
|
||||
142 IF (LOW (XDATALEN)) <> 0
|
||||
MOV R6,#(HIGH (XDATALEN)) +1
|
||||
ELSE
|
||||
000B 7E01 145 MOV R6,#HIGH (XDATALEN)
|
||||
146 ENDIF
|
||||
000D E4 147 CLR A
|
||||
000E F0 148 XDATALOOP: MOVX @DPTR,A
|
||||
000F A3 149 INC DPTR
|
||||
0010 DFFC 150 DJNZ R7,XDATALOOP
|
||||
0012 DEFA 151 DJNZ R6,XDATALOOP
|
||||
152 ENDIF
|
||||
153
|
||||
154 IF PPAGEENABLE <> 0
|
||||
MOV PPAGE_SFR,#PPAGE
|
||||
ENDIF
|
||||
157
|
||||
158 IF PDATALEN <> 0
|
||||
MOV R0,#LOW (PDATASTART)
|
||||
MOV R7,#LOW (PDATALEN)
|
||||
CLR A
|
||||
PDATALOOP: MOVX @R0,A
|
||||
INC R0
|
||||
DJNZ R7,PDATALOOP
|
||||
ENDIF
|
||||
166
|
||||
167 IF IBPSTACK <> 0
|
||||
EXTRN DATA (?C_IBP)
|
||||
|
||||
MOV ?C_IBP,#LOW IBPSTACKTOP
|
||||
ENDIF
|
||||
172
|
||||
173 IF XBPSTACK <> 0
|
||||
EXTRN DATA (?C_XBP)
|
||||
|
||||
MOV ?C_XBP,#HIGH XBPSTACKTOP
|
||||
MOV ?C_XBP+1,#LOW XBPSTACKTOP
|
||||
ENDIF
|
||||
179
|
||||
180 IF PBPSTACK <> 0
|
||||
EXTRN DATA (?C_PBP)
|
||||
MOV ?C_PBP,#LOW PBPSTACKTOP
|
||||
ENDIF
|
||||
184
|
||||
0014 758100 F 185 MOV SP,#?STACK-1
|
||||
186
|
||||
187 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
|
||||
188 ;<h> Code Banking
|
||||
189 ; <q> Select Bank 0 for L51_BANK.A51 Mode 4
|
||||
A51 MACRO ASSEMBLER STARTUP 09/11/2020 09:13:24 PAGE 4
|
||||
|
||||
190
|
||||
|
||||
|
||||
|
||||
|
||||
195 ;</h>
|
||||
0017 020000 F 196 LJMP ?C_START
|
||||
197
|
||||
198 END
|
||||
A51 MACRO ASSEMBLER STARTUP 09/11/2020 09:13:24 PAGE 5
|
||||
|
||||
SYMBOL TABLE LISTING
|
||||
------ ----- -------
|
||||
|
||||
|
||||
N A M E T Y P E V A L U E ATTRIBUTES
|
||||
|
||||
?C_C51STARTUP. . . C SEG 001AH REL=UNIT
|
||||
?C_START . . . . . C ADDR ----- EXT
|
||||
?C_STARTUP . . . . C ADDR 0000H A
|
||||
?STACK . . . . . . I SEG 0001H REL=UNIT
|
||||
ACC. . . . . . . . D ADDR 00E0H A
|
||||
B. . . . . . . . . D ADDR 00F0H A
|
||||
DPH. . . . . . . . D ADDR 0083H A
|
||||
DPL. . . . . . . . D ADDR 0082H A
|
||||
IBPSTACK . . . . . N NUMB 0000H A
|
||||
IBPSTACKTOP. . . . N NUMB 0100H A
|
||||
IDATALEN . . . . . N NUMB 0100H A
|
||||
IDATALOOP. . . . . C ADDR 0003H R SEG=?C_C51STARTUP
|
||||
PBPSTACK . . . . . N NUMB 0000H A
|
||||
PBPSTACKTOP. . . . N NUMB 0100H A
|
||||
PDATALEN . . . . . N NUMB 0000H A
|
||||
PDATASTART . . . . N NUMB 0000H A
|
||||
PPAGE. . . . . . . N NUMB 0000H A
|
||||
PPAGEENABLE. . . . N NUMB 0000H A
|
||||
PPAGE_SFR. . . . . D ADDR 00A0H A
|
||||
SP . . . . . . . . D ADDR 0081H A
|
||||
STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP
|
||||
XBPSTACK . . . . . N NUMB 0000H A
|
||||
XBPSTACKTOP. . . . N NUMB 0000H A
|
||||
XDATALEN . . . . . N NUMB 0100H A
|
||||
XDATALOOP. . . . . C ADDR 000EH R SEG=?C_C51STARTUP
|
||||
XDATASTART . . . . N NUMB 0000H A
|
||||
|
||||
|
||||
REGISTER BANK(S) USED: 0
|
||||
|
||||
|
||||
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
C51 COMPILER V9.01 MAIN 09/11/2020 09:48:37 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.01, COMPILATION OF MODULE MAIN
|
||||
OBJECT MODULE PLACED IN ..\Output\main.obj
|
||||
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE ..\User\main.c OMF2 BROWSE INCDIR(..\FWLib\SC92F_Lib\inc;..\User) DEBUG PRI
|
||||
-NT(..\List\main.lst) OBJECT(..\Output\main.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 //************************************************************
|
||||
2 // Copyright (c) 深圳市赛元微电子有限公司
|
||||
3 // 文件名称 : main.c
|
||||
4 // 模块功能 : 主函数
|
||||
5 // 说明 : 包含MCU初始化函数及其头文件
|
||||
6 //************************************************************
|
||||
7
|
||||
8 #include "SC_Init.h" //MCU初始化头文件,包含固件库所有头文件
|
||||
9 #include "SC_it.h"
|
||||
10 #include "..\Drivers\SCDriver_List.h"
|
||||
11
|
||||
12 int main(void)
|
||||
13 {
|
||||
14 1
|
||||
15 1 /*** MCU初始化函数 ***/
|
||||
16 1 SC_Init();
|
||||
17 1 while(1)
|
||||
18 1 {
|
||||
19 2
|
||||
20 2 }
|
||||
21 1
|
||||
22 1 }
|
||||
23
|
||||
24
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 5 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
C51 COMPILER V9.01 SC92F_CHKSUM 09/11/2020 09:49:58 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.01, COMPILATION OF MODULE SC92F_CHKSUM
|
||||
OBJECT MODULE PLACED IN ..\Output\sc92f_chksum.obj
|
||||
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE ..\FWLib\SC92F_Lib\src\sc92f_chksum.c OMF2 BROWSE INCDIR(..\FWLib\SC92F_Lib
|
||||
-\inc;..\User) DEBUG PRINT(..\List\sc92f_chksum.lst) OBJECT(..\Output\sc92f_chksum.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 //************************************************************
|
||||
2 // Copyright (c) 深圳市赛元微电子有限公司
|
||||
3 // 文件名称 : sc92f_chksum.c
|
||||
4 // 作者 :
|
||||
5 // 模块功能 : CHKSUM固件库函数C文件
|
||||
6 // 局部函数列表:
|
||||
7 // 最后更正日期: 2020/8/18
|
||||
8 // 版本 : V1.0
|
||||
9 // 说明 :
|
||||
10 //*************************************************************
|
||||
11
|
||||
12 #include "sc92f_chksum.h"
|
||||
13
|
||||
14 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (
|
||||
-SC92F84Ax_2) || defined (SC92F74Ax_2)|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined
|
||||
-(SC92F736xB) || defined (SC92F8003)|| defined (SC92F742x)
|
||||
15 /**************************************************
|
||||
16 *函数名称:void CHKSUM_DeInit(void)
|
||||
17 *函数功能:CHKSUM相关寄存器复位至缺省值
|
||||
18 *入口参数:void
|
||||
19 *出口参数:void
|
||||
20 **************************************************/
|
||||
21 void CHKSUM_DeInit(void)
|
||||
22 {
|
||||
23 1 OPERCON &= 0XFE;
|
||||
24 1 CHKSUML = 0X00;
|
||||
25 1 CHKSUMH = 0X00;
|
||||
26 1 }
|
||||
27
|
||||
28 /**************************************************
|
||||
29 *函数名称:void CHKSUM_StartOperation(void)
|
||||
30 *函数功能:触发一次check sum计算
|
||||
31 *入口参数:void
|
||||
32 *出口参数:void
|
||||
33 **************************************************/
|
||||
34 void CHKSUM_StartOperation(void)
|
||||
35 {
|
||||
36 1 OPERCON |= 0X01;
|
||||
37 1 while(OPERCON & 0x01);
|
||||
38 1 }
|
||||
39
|
||||
40 /**************************************************
|
||||
41 *函数名称:uint16_t CHKSUM_GetCheckValue(void)
|
||||
42 *函数功能:获取一次check sum计算值
|
||||
43 *入口参数:void
|
||||
44 *出口参数:uint16_t check sum计算值
|
||||
45 **************************************************/
|
||||
46 uint16_t CHKSUM_GetCheckValue(void)
|
||||
47 {
|
||||
48 1 uint16_t checktemp;
|
||||
49 1
|
||||
50 1 checktemp = (uint16_t)(CHKSUMH << 8)+ (uint16_t)CHKSUML;
|
||||
51 1 return checktemp;
|
||||
52 1 }
|
||||
C51 COMPILER V9.01 SC92F_CHKSUM 09/11/2020 09:49:58 PAGE 2
|
||||
|
||||
53 #endif
|
||||
54 /******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 33 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
|
|
@ -0,0 +1,433 @@
|
|||
C51 COMPILER V9.01 SC92F_GPIO 09/11/2020 09:48:38 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.01, COMPILATION OF MODULE SC92F_GPIO
|
||||
OBJECT MODULE PLACED IN ..\Output\sc92f_gpio.obj
|
||||
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE ..\FWLib\SC92F_Lib\src\sc92f_gpio.c OMF2 BROWSE INCDIR(..\FWLib\SC92F_Lib\i
|
||||
-nc;..\User) DEBUG PRINT(..\List\sc92f_gpio.lst) OBJECT(..\Output\sc92f_gpio.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 //************************************************************
|
||||
2 // Copyright (c) 深圳市赛元微电子有限公司
|
||||
3 // 文件名称 : sc92f_gpio.c
|
||||
4 // 作者 :
|
||||
5 // 模块功能 : GPIO固件库函数C文件
|
||||
6 // 局部函数列表:
|
||||
7 // 最后更正日期: 2020/4/20
|
||||
8 // 版本 : V1.0
|
||||
9 // 说明 : 本文件仅适用于赛元92F系列单片机
|
||||
10 //*************************************************************
|
||||
11
|
||||
12
|
||||
13 #include "sc92f_gpio.h"
|
||||
14
|
||||
15 /**************************************************
|
||||
16 *函数名称:void GPIO_DeInit(void)
|
||||
17 *函数功能:GPIO相关寄存器复位至缺省值
|
||||
18 *入口参数:void
|
||||
19 *出口参数:void
|
||||
20 **************************************************/
|
||||
21 void GPIO_DeInit(void)
|
||||
22 {
|
||||
23 1 P0CON = 0x00;
|
||||
24 1 P1CON = 0x00;
|
||||
25 1 P2CON = 0x00;
|
||||
26 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)
|
||||
P3CON = 0x00;
|
||||
P4CON = 0x00;
|
||||
#endif
|
||||
30 1 P0PH = 0x00;
|
||||
31 1 P1PH = 0x00;
|
||||
32 1 P2PH = 0x00;
|
||||
33 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)
|
||||
P3PH = 0x00;
|
||||
P4PH = 0x00;
|
||||
#endif
|
||||
37 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined
|
||||
- (SC92F736xB)
|
||||
P5CON = 0x00;
|
||||
P5PH = 0x00;
|
||||
P5 = 0;
|
||||
#endif
|
||||
42 1 P0=0;
|
||||
43 1 P1=0;
|
||||
44 1 P2=0;
|
||||
45 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)
|
||||
P3=0;
|
||||
P4=0;
|
||||
#endif
|
||||
49 1
|
||||
C51 COMPILER V9.01 SC92F_GPIO 09/11/2020 09:48:38 PAGE 2
|
||||
|
||||
50 1 }
|
||||
51
|
||||
52 /**************************************************
|
||||
53 *函数名称:void GPIO_Init(GPIO_TypeDef GPIOx, uint8_t PortPins, GPIO_Mode_TypeDef GPIO_Mode)
|
||||
54 *函数功能:GPIO口模式配置初始化
|
||||
55 *入口参数:GPIOx 选择操作的GPIO口
|
||||
56 PortPins 选择GPIO管脚Pxy
|
||||
57 GPIO_Mode 选择GPIO口模式(高阻输入、上拉输入、推挽输出)
|
||||
58 *出口参数:void
|
||||
59 **************************************************/
|
||||
60 void GPIO_Init(GPIO_TypeDef GPIOx, uint8_t PortPins, GPIO_Mode_TypeDef GPIO_Mode)
|
||||
61 {
|
||||
62 1 if(GPIOx == GPIO0)
|
||||
63 1 {
|
||||
64 2 if(GPIO_Mode == GPIO_MODE_IN_HI)
|
||||
65 2 {
|
||||
66 3 P0CON &= ~PortPins;
|
||||
67 3 P0PH &= ~PortPins;
|
||||
68 3 }
|
||||
69 2 if(GPIO_Mode == GPIO_MODE_IN_PU)
|
||||
70 2 {
|
||||
71 3 P0CON &= ~PortPins;
|
||||
72 3 P0PH |= PortPins;
|
||||
73 3 }
|
||||
74 2 if(GPIO_Mode == GPIO_MODE_OUT_PP)
|
||||
75 2 {
|
||||
76 3 P0CON |= PortPins;
|
||||
77 3 }
|
||||
78 2 }
|
||||
79 1 else if(GPIOx == GPIO1)
|
||||
80 1 {
|
||||
81 2 if(GPIO_Mode == GPIO_MODE_IN_HI)
|
||||
82 2 {
|
||||
83 3 P1CON &= ~PortPins;
|
||||
84 3 P1PH &= ~PortPins;
|
||||
85 3 }
|
||||
86 2 if(GPIO_Mode == GPIO_MODE_IN_PU)
|
||||
87 2 {
|
||||
88 3 P1CON &= ~PortPins;
|
||||
89 3 P1PH |= PortPins;
|
||||
90 3 }
|
||||
91 2 if(GPIO_Mode == GPIO_MODE_OUT_PP)
|
||||
92 2 {
|
||||
93 3 P1CON |= PortPins;
|
||||
94 3 }
|
||||
95 2 }
|
||||
96 1
|
||||
97 1 else if(GPIOx == GPIO2)
|
||||
98 1 {
|
||||
99 2 if(GPIO_Mode == GPIO_MODE_IN_HI)
|
||||
100 2 {
|
||||
101 3 P2CON &= ~PortPins;
|
||||
102 3 P2PH &= ~PortPins;
|
||||
103 3 }
|
||||
104 2 if(GPIO_Mode == GPIO_MODE_IN_PU)
|
||||
105 2 {
|
||||
106 3 P2CON &= ~PortPins;
|
||||
107 3 P2PH |= PortPins;
|
||||
108 3 }
|
||||
109 2 if(GPIO_Mode == GPIO_MODE_OUT_PP)
|
||||
110 2 {
|
||||
111 3 P2CON |= PortPins;
|
||||
C51 COMPILER V9.01 SC92F_GPIO 09/11/2020 09:48:38 PAGE 3
|
||||
|
||||
112 3 }
|
||||
113 2 }
|
||||
114 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)
|
||||
else if(GPIOx == GPIO3)
|
||||
{
|
||||
if(GPIO_Mode == GPIO_MODE_IN_HI)
|
||||
{
|
||||
P3CON &= ~PortPins;
|
||||
P3PH &= ~PortPins;
|
||||
}
|
||||
if(GPIO_Mode == GPIO_MODE_IN_PU)
|
||||
{
|
||||
P3CON &= ~PortPins;
|
||||
P3PH |= PortPins;
|
||||
}
|
||||
if(GPIO_Mode == GPIO_MODE_OUT_PP)
|
||||
{
|
||||
P3CON |= PortPins;
|
||||
}
|
||||
}
|
||||
else if(GPIOx == GPIO4)
|
||||
{
|
||||
if(GPIO_Mode == GPIO_MODE_IN_HI)
|
||||
{
|
||||
P4CON &= ~PortPins;
|
||||
P4PH &= ~PortPins;
|
||||
}
|
||||
if(GPIO_Mode == GPIO_MODE_IN_PU)
|
||||
{
|
||||
P4CON &= ~PortPins;
|
||||
P4PH |= PortPins;
|
||||
}
|
||||
if(GPIO_Mode == GPIO_MODE_OUT_PP)
|
||||
{
|
||||
P4CON |= PortPins;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
150 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined
|
||||
- (SC92F736xB)
|
||||
else
|
||||
{
|
||||
if(GPIOx == GPIO5)
|
||||
{
|
||||
if(GPIO_Mode == GPIO_MODE_IN_HI)
|
||||
{
|
||||
P5CON &= ~PortPins;
|
||||
P5PH &= ~PortPins;
|
||||
}
|
||||
if(GPIO_Mode == GPIO_MODE_IN_PU)
|
||||
{
|
||||
P5CON &= ~PortPins;
|
||||
P5PH |= PortPins;
|
||||
}
|
||||
if(GPIO_Mode == GPIO_MODE_OUT_PP)
|
||||
{
|
||||
P5CON |= PortPins;
|
||||
}
|
||||
}
|
||||
}
|
||||
C51 COMPILER V9.01 SC92F_GPIO 09/11/2020 09:48:38 PAGE 4
|
||||
|
||||
#endif
|
||||
172 1 }
|
||||
173
|
||||
174 /**************************************************
|
||||
175 *函数名称:void GPIO_Write(GPIO_TypeDef GPIOx, uint8_t PortVal)
|
||||
176 *函数功能:GPIO口赋值
|
||||
177 *入口参数:GPIOx 选择操作的GPIO口
|
||||
178 PortVal GPIO口的值
|
||||
179 *出口参数:void
|
||||
180 **************************************************/
|
||||
181 void GPIO_Write(GPIO_TypeDef GPIOx, uint8_t PortVal)
|
||||
182 {
|
||||
183 1 if(GPIOx == GPIO0)
|
||||
184 1 {
|
||||
185 2 P0 = PortVal;
|
||||
186 2 }
|
||||
187 1 if(GPIOx == GPIO1)
|
||||
188 1 {
|
||||
189 2 P1 = PortVal;
|
||||
190 2 }
|
||||
191 1 if(GPIOx == GPIO2)
|
||||
192 1 {
|
||||
193 2 P2 = PortVal;
|
||||
194 2 }
|
||||
195 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)
|
||||
if(GPIOx == GPIO3)
|
||||
{
|
||||
P3 = PortVal;
|
||||
}
|
||||
if(GPIOx == GPIO4)
|
||||
{
|
||||
P4 = PortVal;
|
||||
}
|
||||
#endif
|
||||
205 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined
|
||||
- (SC92F736xB)
|
||||
if(GPIOx == GPIO5)
|
||||
{
|
||||
P5 = PortVal;
|
||||
}
|
||||
#endif
|
||||
211 1 }
|
||||
212
|
||||
213 /**************************************************
|
||||
214 *函数名称:void GPIO_WriteHigh(GPIO_TypeDef GPIOx, uint8_t PortPins)
|
||||
215 *函数功能:GPIO口管脚Pxy置位
|
||||
216 *入口参数:GPIOx 选择操作的GPIO口
|
||||
217 PortPins 选择GPIO口管脚Pxy
|
||||
218 *出口参数:void
|
||||
219 **************************************************/
|
||||
220 void GPIO_WriteHigh(GPIO_TypeDef GPIOx, uint8_t PortPins)
|
||||
221 {
|
||||
222 1 if(GPIOx == GPIO0)
|
||||
223 1 {
|
||||
224 2 P0 |= PortPins;
|
||||
225 2 }
|
||||
226 1 if(GPIOx == GPIO1)
|
||||
227 1 {
|
||||
228 2 P1 |= PortPins;
|
||||
229 2 }
|
||||
C51 COMPILER V9.01 SC92F_GPIO 09/11/2020 09:48:38 PAGE 5
|
||||
|
||||
230 1 if(GPIOx == GPIO2)
|
||||
231 1 {
|
||||
232 2 P2 |= PortPins;
|
||||
233 2 }
|
||||
234 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)
|
||||
if(GPIOx == GPIO3)
|
||||
{
|
||||
P3 |= PortPins;
|
||||
}
|
||||
if(GPIOx == GPIO4)
|
||||
{
|
||||
P4 |= PortPins;
|
||||
}
|
||||
#endif
|
||||
244 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined
|
||||
- (SC92F736xB)
|
||||
if(GPIOx == GPIO5)
|
||||
{
|
||||
P5 |= PortPins;
|
||||
}
|
||||
#endif
|
||||
250 1 }
|
||||
251
|
||||
252 /**************************************************
|
||||
253 *函数名称:void GPIO_WriteLow(GPIO_TypeDef GPIOx, uint8_t PortPins)
|
||||
254 *函数功能:GPIO口管脚Pxy复位
|
||||
255 *入口参数:GPIOx 选择操作的GPIO口
|
||||
256 PortPins 选择GPIO口管脚Pxy
|
||||
257 *出口参数:void
|
||||
258 **************************************************/
|
||||
259 void GPIO_WriteLow(GPIO_TypeDef GPIOx, uint8_t PortPins)
|
||||
260 {
|
||||
261 1 if(GPIOx == GPIO0)
|
||||
262 1 {
|
||||
263 2 P0 &= ~PortPins;
|
||||
264 2 }
|
||||
265 1 if(GPIOx == GPIO1)
|
||||
266 1 {
|
||||
267 2 P1 &= ~PortPins;
|
||||
268 2 }
|
||||
269 1 if(GPIOx == GPIO2)
|
||||
270 1 {
|
||||
271 2 P2 &= ~PortPins;
|
||||
272 2 }
|
||||
273 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)
|
||||
if(GPIOx == GPIO3)
|
||||
{
|
||||
P3 &= ~PortPins;
|
||||
}
|
||||
if(GPIOx == GPIO4)
|
||||
{
|
||||
P4 &= ~PortPins;
|
||||
}
|
||||
#endif
|
||||
283 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined
|
||||
- (SC92F736xB)
|
||||
if(GPIOx == GPIO5)
|
||||
{
|
||||
C51 COMPILER V9.01 SC92F_GPIO 09/11/2020 09:48:38 PAGE 6
|
||||
|
||||
P5 &= ~PortPins;
|
||||
}
|
||||
#endif
|
||||
289 1 }
|
||||
290
|
||||
291 /**************************************************
|
||||
292 *函数名称:uint8_t GPIO_ReadPort(GPIO_TypeDef GPIOx)
|
||||
293 *函数功能:读GPIO口Px的值
|
||||
294 *入口参数:GPIOx 选择操作的GPIO口
|
||||
295 *出口参数:uint8_t 返回Px的值
|
||||
296 **************************************************/
|
||||
297 uint8_t GPIO_ReadPort(GPIO_TypeDef GPIOx)
|
||||
298 {
|
||||
299 1 if(GPIOx == GPIO0)
|
||||
300 1 {
|
||||
301 2 return P0;
|
||||
302 2 }
|
||||
303 1 else if(GPIOx == GPIO1)
|
||||
304 1 {
|
||||
305 2 return P1;
|
||||
306 2 }
|
||||
307 1 else if(GPIOx == GPIO2)
|
||||
308 1 {
|
||||
309 2 return P2;
|
||||
310 2 }
|
||||
311 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)
|
||||
else if(GPIOx == GPIO3)
|
||||
{
|
||||
return P3;
|
||||
}
|
||||
else if(GPIOx == GPIO4)
|
||||
{
|
||||
return P4;
|
||||
}
|
||||
#endif
|
||||
321 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined
|
||||
- (SC92F736xB)
|
||||
else
|
||||
{
|
||||
return P5;
|
||||
}
|
||||
#endif
|
||||
327 1 return 0;
|
||||
328 1 }
|
||||
329
|
||||
330 /**************************************************
|
||||
331 *函数名称:BitStatus GPIO_ReadPin(GPIO_TypeDef GPIOx, uint8_t PortPins)
|
||||
332 *函数功能:读GPIO口管脚Pxy的值
|
||||
333 *入口参数:GPIOx 选择操作的GPIO口
|
||||
334 PortPins 选择GPIO口管脚Pxy
|
||||
335 *出口参数:BitStatus 返回Pxy的值
|
||||
336 **************************************************/
|
||||
337 BitStatus GPIO_ReadPin(GPIO_TypeDef GPIOx, uint8_t PortPins)
|
||||
338 {
|
||||
339 1 if(GPIOx == GPIO0)
|
||||
340 1 {
|
||||
341 2 return ((BitStatus)(P0 & PortPins));
|
||||
342 2 }
|
||||
343 1 else if(GPIOx == GPIO1)
|
||||
344 1 {
|
||||
C51 COMPILER V9.01 SC92F_GPIO 09/11/2020 09:48:38 PAGE 7
|
||||
|
||||
345 2 return ((BitStatus)(P1 & PortPins));
|
||||
346 2 }
|
||||
347 1 else if(GPIOx == GPIO2)
|
||||
348 1 {
|
||||
349 2 return ((BitStatus)(P2 & PortPins));
|
||||
350 2 }
|
||||
351 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)
|
||||
else if(GPIOx == GPIO3)
|
||||
{
|
||||
return ((BitStatus)(P3 & PortPins));
|
||||
}
|
||||
else if(GPIOx == GPIO4)
|
||||
{
|
||||
return ((BitStatus)(P4 & PortPins));
|
||||
}
|
||||
#endif
|
||||
361 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined
|
||||
-(SC92F84Ax_2) || defined (SC92F74Ax_2)|| defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined
|
||||
- (SC92F736xB)
|
||||
else if(GPIOx == GPIO5)
|
||||
{
|
||||
return ((BitStatus)(P5 & PortPins));
|
||||
}
|
||||
#endif
|
||||
367 1 return 0;
|
||||
368 1 }
|
||||
369
|
||||
370 /******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 220 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
|
|
@ -0,0 +1,187 @@
|
|||
C51 COMPILER V9.01 SC92F_OPTION 09/11/2020 09:48:38 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.01, COMPILATION OF MODULE SC92F_OPTION
|
||||
OBJECT MODULE PLACED IN ..\Output\sc92f_option.obj
|
||||
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE ..\FWLib\SC92F_Lib\src\sc92f_option.c OMF2 BROWSE INCDIR(..\FWLib\SC92F_Lib
|
||||
-\inc;..\User) DEBUG PRINT(..\List\sc92f_option.lst) OBJECT(..\Output\sc92f_option.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 //************************************************************
|
||||
2 // Copyright (c) 深圳市赛元微电子有限公司
|
||||
3 // 文件名称 : sc92f_option.c
|
||||
4 // 作者 :
|
||||
5 // 模块功能 : Customer Option寄存器配置C文件
|
||||
6 // 局部函数列表:
|
||||
7 // 最后更正日期: 2020/8/18
|
||||
8 // 版本 : V1.0
|
||||
9 // 说明 :
|
||||
10 //*************************************************************
|
||||
11
|
||||
12 #include "sc92f_option.h"
|
||||
13
|
||||
14 /*****************************************************
|
||||
15 *函数名称:void OPTION_WDT_Cmd(FunctionalState NewState)
|
||||
16 *函数功能:WDT功能开关函数
|
||||
17 *入口参数:FunctionalState NewState 功能启动/关闭选择
|
||||
18 *出口参数:void
|
||||
19 *****************************************************/
|
||||
20 void OPTION_WDT_Cmd(FunctionalState NewState)
|
||||
21 {
|
||||
22 1 OPINX = 0XC1;
|
||||
23 1 if(NewState == DISABLE)
|
||||
24 1 {
|
||||
25 2 OPREG &= 0X7F;
|
||||
26 2 }
|
||||
27 1 else
|
||||
28 1 {
|
||||
29 2 OPREG |= 0X80;
|
||||
30 2 }
|
||||
31 1 }
|
||||
32
|
||||
33 /*****************************************************
|
||||
34 *函数名称:void OPTION_XTIPLL_Cmd(FunctionalState NewState)
|
||||
35 *函数功能:外部低频晶振使能
|
||||
36 *入口参数:FunctionalState NewState 启动/关闭选择
|
||||
37 *出口参数:void
|
||||
38 *****************************************************/
|
||||
39 void OPTION_XTIPLL_Cmd(FunctionalState NewState)
|
||||
40 {
|
||||
41 1 OPINX = 0XC1;
|
||||
42 1 if(NewState == DISABLE)
|
||||
43 1 {
|
||||
44 2 OPREG &= 0XBF;
|
||||
45 2 }
|
||||
46 1 else
|
||||
47 1 {
|
||||
48 2 OPREG |= 0X40;
|
||||
49 2 }
|
||||
50 1 }
|
||||
51
|
||||
52 /*****************************************************
|
||||
53 *函数名称:void OPTION_SYSCLK_Init(SYSCLK_PresSel_TypeDef SYSCLK_PresSel)
|
||||
54 *函数功能:系统时钟分频初始化
|
||||
C51 COMPILER V9.01 SC92F_OPTION 09/11/2020 09:48:38 PAGE 2
|
||||
|
||||
55 *入口参数:SYSCLK_PresSel 选择系统时钟分频
|
||||
56 *出口参数:void
|
||||
57 *****************************************************/
|
||||
58 void OPTION_SYSCLK_Init(SYSCLK_PresSel_TypeDef SYSCLK_PresSel)
|
||||
59 {
|
||||
60 1 OPINX = 0XC1;
|
||||
61 1 OPREG = OPREG & 0XCF | SYSCLK_PresSel;
|
||||
62 1 }
|
||||
63
|
||||
64 /*****************************************************
|
||||
65 *函数名称:void OPTION_RST_PIN_Cmd(FunctionalState NewState)
|
||||
66 *函数功能:外部复位管脚(P17)使能
|
||||
67 *入口参数:FunctionalState NewState 使能/关闭选择
|
||||
68 *出口参数:void
|
||||
69 *****************************************************/
|
||||
70 void OPTION_RST_PIN_Cmd(FunctionalState NewState)
|
||||
71 {
|
||||
72 1 OPINX = 0XC1;
|
||||
73 1 if(NewState == DISABLE)
|
||||
74 1 {
|
||||
75 2 OPREG |= 0X08;
|
||||
76 2 }
|
||||
77 1 else
|
||||
78 1 {
|
||||
79 2 OPREG &= 0XF7;
|
||||
80 2 }
|
||||
81 1 }
|
||||
82
|
||||
83 /*****************************************************
|
||||
84 *函数名称:void OPTION_LVR_Init(LVR_Config_TypeDef LVR_Config)
|
||||
85 *函数功能:LVR 电压选择
|
||||
86 *入口参数:LVR_Config 选择LVR电压
|
||||
87 *出口参数:void
|
||||
88 *****************************************************/
|
||||
89 void OPTION_LVR_Init(LVR_Config_TypeDef LVR_Config)
|
||||
90 {
|
||||
91 1 OPINX = 0XC1;
|
||||
92 1 OPREG = OPREG & 0XF8 | LVR_Config;
|
||||
93 1 }
|
||||
94
|
||||
95 /*****************************************************
|
||||
96 *函数名称:void OPTION_ADC_VrefConfig(ADC_Vref_TypeDef ADC_Vref)
|
||||
97 *函数功能:ADC 参考电压选择
|
||||
98 *入口参数:ADC_Vref 选择ADC参考电压
|
||||
99 *出口参数:void
|
||||
100 *****************************************************/
|
||||
101 void OPTION_ADC_VrefConfig(ADC_Vref_TypeDef ADC_Vref)
|
||||
102 {
|
||||
103 1 OPINX = 0xC2;
|
||||
104 1 OPREG = OPREG & 0X7F | ADC_Vref;
|
||||
105 1 }
|
||||
106
|
||||
107 /**************************************************
|
||||
108 *函数名称:void OPTION_IAP_SetOperateRange(IAP_OperateRange_TypeDef IAP_OperateRange)
|
||||
109 *函数功能:允许IAP操作的范围设置
|
||||
110 *入口参数:IAP_OperateRange IAP操作范围
|
||||
111 *出口参数:void
|
||||
112 **************************************************/
|
||||
113 void OPTION_IAP_SetOperateRange(IAP_OperateRange_TypeDef IAP_OperateRange)
|
||||
114 {
|
||||
115 1 OPINX = 0xC2;
|
||||
116 1 OPREG = (OPREG & 0xF3) | IAP_OperateRange;
|
||||
C51 COMPILER V9.01 SC92F_OPTION 09/11/2020 09:48:38 PAGE 3
|
||||
|
||||
117 1 }
|
||||
118
|
||||
119 #if defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined
|
||||
- (SC92F83Ax) || defined (SC92F73Ax)|| defined (SC92F84Ax) || defined (SC92F74Ax)|| defined (SC92F8003)|| defined (SC92F7
|
||||
-42x)
|
||||
120 /*****************************************************
|
||||
121 *函数名称:void OPTION_XTIPLL_SetRange(XTIPLL_Range_TypeDef XTIPLL_Range)
|
||||
122 *函数功能:外部高频晶振频率范围
|
||||
123 *入口参数:XTIPLL_Range 外部晶振频率选择
|
||||
124 *出口参数:void
|
||||
125 *****************************************************/
|
||||
126 void OPTION_XTIPLL_SetRange(XTIPLL_Range_TypeDef XTIPLL_Range)
|
||||
127 {
|
||||
128 1 OPINX = 0XC2;
|
||||
129 1 OPREG = OPREG & 0XBF | XTIPLL_Range;
|
||||
130 1 }
|
||||
131 #endif
|
||||
132
|
||||
133 #if defined (SC92F742x)||defined (SC92F83Ax) || defined (SC92F73Ax)|| defined (SC92F84Ax) || defined (SC92
|
||||
-F74Ax) ||defined (SC92F74Ax_2)||defined (SC92F84Ax_2)
|
||||
/**************************************************
|
||||
*函数名称:void OPTION_JTAG_Cmd(FunctionalState NewState)
|
||||
*函数功能:JTAG模式使能开关
|
||||
*入口参数:FunctionalState NewState 功能启动/关闭选择
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void OPTION_JTAG_Cmd(FunctionalState NewState)
|
||||
{
|
||||
OPINX = 0xC2;
|
||||
if(NewState == DISABLE)
|
||||
{
|
||||
OPREG |= 0X10; //1 JTAG无效
|
||||
}
|
||||
else
|
||||
{
|
||||
OPREG &= 0XEF; //0 JTAG有效
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 97 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
|
|
@ -0,0 +1,945 @@
|
|||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.01, COMPILATION OF MODULE SC92F_PWM
|
||||
OBJECT MODULE PLACED IN ..\Output\sc92f_pwm.obj
|
||||
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE ..\FWLib\SC92F_Lib\src\sc92f_pwm.c OMF2 BROWSE INCDIR(..\FWLib\SC92F_Lib\in
|
||||
-c;..\User) DEBUG PRINT(..\List\sc92f_pwm.lst) OBJECT(..\Output\sc92f_pwm.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 //************************************************************
|
||||
2 // Copyright (c) 深圳市赛元微电子有限公司
|
||||
3 // 文件名称 : sc92f_pwm.c
|
||||
4 // 作者 :
|
||||
5 // 模块功能 : PWM固件库函数C文件
|
||||
6 // 局部函数列表:
|
||||
7 // 最后更正日期: 2020/8/18
|
||||
8 // 版本 : V1.0
|
||||
9 // 说明 :本文件仅适用于赛元92F系列单片机
|
||||
10 //*************************************************************
|
||||
11
|
||||
12 #include "sc92f_pwm.h"
|
||||
13
|
||||
14 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (
|
||||
-SC92F84Ax_2) || defined (SC92F74Ax_2)
|
||||
uint16_t xdata PWMREG[8] _at_ 0x740; //PWM占空比调节寄存器
|
||||
uint16_t pwm_tmpreg[8] = {0,0,0,0,0,0,0,0}; //PWM占空比调节寄存器缓存数组
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_DeInit(void)
|
||||
*函数功能:PWM相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_DeInit(void)
|
||||
{
|
||||
static uint8_t i;
|
||||
PWMCFG = 0X00;
|
||||
PWMCON = 0X00;
|
||||
IE1 &= 0XFD;
|
||||
IP1 &= 0XFD;
|
||||
for(i=0;i<8;i++)
|
||||
{
|
||||
PWMREG[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_Init(PWM_PresSel_TypeDef PWM_PresSel, uint16_t PWM_Period)
|
||||
*函数功能:PWM初始化配置函数
|
||||
*入口参数:PWM_PresSel 预分频选择
|
||||
PWM_Period PWM周期配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_Init(PWM_PresSel_TypeDef PWM_PresSel, uint16_t PWM_Period)
|
||||
{
|
||||
PWM_Period -= 1;
|
||||
PWMCFG = (PWMCFG & 0XCF) | PWM_PresSel; //预分频
|
||||
PWMCFG = (PWMCFG & 0XF0) | (uint8_t)(PWM_Period / 256); //周期高4位
|
||||
PWMCON = (uint8_t)(PWM_Period & 0X00FF); //周期低8位
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_OutputStateConfig(uint8_t PWM_OutputPin, PWM_OutputState_TypeDef PWM_OutputState)
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 2
|
||||
|
||||
*函数功能:PWMx输出使能/失能配置函数
|
||||
*入口参数:PWM_OutputPin PWMx选择
|
||||
PWM_OutputState PWM输出状态配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_OutputStateConfig(uint8_t PWM_OutputPin, PWM_OutputState_TypeDef PWM_OutputState)
|
||||
{
|
||||
uint8_t i;
|
||||
for(i=0;i<8;i++)
|
||||
{
|
||||
if(PWM_OutputPin&(0x01<<i))
|
||||
{
|
||||
if(PWM_OutputState == PWM_OUTPUTSTATE_DISABLE)
|
||||
{
|
||||
pwm_tmpreg[i] &= 0X7FFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
pwm_tmpreg[i] |= 0X8000;
|
||||
}
|
||||
PWMREG[i] = pwm_tmpreg[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_PolarityConfig(uint8_t PWM_OutputPin, PWM_Polarity_TypeDef PWM_Polarity)
|
||||
*函数功能:PWMx正/反向输出配置函数
|
||||
*入口参数:PWM_OutputPin PWMx选择
|
||||
PWM_Polarity PWM输出正/反向配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_PolarityConfig(uint8_t PWM_OutputPin, PWM_Polarity_TypeDef PWM_Polarity)
|
||||
{
|
||||
uint8_t i;
|
||||
for(i=0;i<8;i++)
|
||||
{
|
||||
if(PWM_OutputPin&(0x01<<i))
|
||||
{
|
||||
if(PWM_Polarity == PWM_POLARITY_NON_INVERT)
|
||||
{
|
||||
pwm_tmpreg[i] &= 0XBFFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
pwm_tmpreg[i] |= 0X4000;
|
||||
}
|
||||
PWMREG[i] = pwm_tmpreg[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_IndependentModeConfig(PWM_OutputPin_TypeDef PWM_OutputPin, uint16_t PWM_DutyCycle)
|
||||
*函数功能:PWMx独立工作模式配置函数
|
||||
*入口参数:PWM_OutputPin PWMx独立通道选择
|
||||
PWM_DutyCycle PWM占空比配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_IndependentModeConfig(PWM_OutputPin_TypeDef PWM_OutputPin, uint16_t PWM_DutyCycle)
|
||||
{
|
||||
uint8_t i;
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 3
|
||||
|
||||
for(i=0;i<8;i++)
|
||||
{
|
||||
if(PWM_OutputPin&(0x01<<i))
|
||||
{
|
||||
pwm_tmpreg[i] = pwm_tmpreg[i] & 0XF000 | PWM_DutyCycle;
|
||||
PWMREG[i] = pwm_tmpreg[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void PWM_Cmd(FunctionalState NewState)
|
||||
*函数功能:PWM功能开关函数
|
||||
*入口参数:FunctionalState NewState 功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void PWM_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
PWMCFG |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
PWMCFG &= 0X7F;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void PWM_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:PWM中断初始化
|
||||
*入口参数:FunctionalState NewState 中断使能/关闭选择
|
||||
PriorityStatus Priority 中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void PWM_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
IE1 |= 0X02;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE1 &= 0XFD;
|
||||
}
|
||||
|
||||
if(Priority == LOW)
|
||||
{
|
||||
IP1 &= ~0X02;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP1 |= 0X02;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus PWM_GetFlagStatus(void)
|
||||
*函数功能:获得PWM中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:FlagStatus PWM中断标志状态
|
||||
*****************************************************/
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 4
|
||||
|
||||
FlagStatus PWM_GetFlagStatus(void)
|
||||
{
|
||||
return (FlagStatus)(PWMCFG & 0X40);
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void PWM_ClearFlag(void)
|
||||
*函数功能:清除PWM中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void PWM_ClearFlag(void)
|
||||
{
|
||||
PWMCFG &= 0XBF;
|
||||
}
|
||||
#endif
|
||||
194
|
||||
195 #if defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)|| defined
|
||||
- (SC92F83Ax) || defined (SC92F73Ax)|| defined (SC92F84Ax) || defined (SC92F74Ax)
|
||||
/**************************************************
|
||||
*函数名称:void PWM_DeInit(void)
|
||||
*函数功能:PWM相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_DeInit(void)
|
||||
{
|
||||
PWMCFG = 0X00;
|
||||
PWMCON = 0X00;
|
||||
PWMPRD = 0X00;
|
||||
PWMDTYA = 0X00;
|
||||
PWMDTY0 = 0X00;
|
||||
PWMDTY1 = 0X00;
|
||||
PWMDTY2 = 0X00;
|
||||
PWMDTYB = 0X00;
|
||||
PWMDTY3 = 0X00;
|
||||
PWMDTY4 = 0X00;
|
||||
PWMDTY5 = 0X00;
|
||||
IE1 &= ~0X02;
|
||||
IP1 &= ~0X02;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_Init(PWM_PresSel_TypeDef PWM_PresSel, uint16_t PWM_Period)
|
||||
*函数功能:PWM初始化配置函数
|
||||
*入口参数:PWM_PresSel 预分频选择
|
||||
PWM_Period PWM周期配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_Init(PWM_PresSel_TypeDef PWM_PresSel, uint16_t PWM_Period)
|
||||
{
|
||||
PWM_Period -= 1;
|
||||
PWMCFG = (PWMCFG & 0X3F) | (PWM_PresSel << 6); //预分频
|
||||
PWMDTYA = (PWMDTYA & 0X3F) | ((uint8_t)(PWM_Period % 4) << 6); //周期低两位
|
||||
PWMPRD = (uint8_t)(PWM_Period >> 2); //周期高八位
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_OutputStateConfig(uint8_t PWM_OutputPin, PWM_OutputState_TypeDef PWM_OutputState)
|
||||
*函数功能:PWMx输出使能/失能配置函数
|
||||
*入口参数:PWM_OutputPin PWMx选择
|
||||
PWM_OutputState PWM输出状态配置
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 5
|
||||
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_OutputStateConfig(uint8_t PWM_OutputPin, PWM_OutputState_TypeDef PWM_OutputState)
|
||||
{
|
||||
if(PWM_OutputState == PWM_OUTPUTSTATE_ENABLE)
|
||||
{
|
||||
PWMCON |= PWM_OutputPin;
|
||||
}
|
||||
else
|
||||
{
|
||||
PWMCON &= (~PWM_OutputPin);
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_PolarityConfig(uint8_t PWM_OutputPin, PWM_Polarity_TypeDef PWM_Polarity)
|
||||
*函数功能:PWMx正/反向输出配置函数
|
||||
*入口参数:PWM_OutputPin PWMx选择
|
||||
PWM_Polarity PWM输出正/反向配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_PolarityConfig(uint8_t PWM_OutputPin, PWM_Polarity_TypeDef PWM_Polarity)
|
||||
{
|
||||
if(PWM_Polarity == PWM_POLARITY_INVERT)
|
||||
{
|
||||
PWMCFG |= PWM_OutputPin;
|
||||
}
|
||||
else
|
||||
{
|
||||
PWMCFG &= (~PWM_OutputPin);
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_IndependentModeConfig(PWM_OutputPin_TypeDef PWM_OutputPin, uint16_t PWM_DutyCycle)
|
||||
*函数功能:PWMx独立工作模式配置函数
|
||||
*入口参数:PWM_OutputPin PWMx独立通道选择
|
||||
PWM_DutyCycle PWM占空比配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_IndependentModeConfig(PWM_OutputPin_TypeDef PWM_OutputPin, uint16_t PWM_DutyCycle)
|
||||
{
|
||||
PWMDTYB &= 0X7F; //设置PWM为独立模式
|
||||
switch(PWM_OutputPin) //设置占空比
|
||||
{
|
||||
case PWM0:
|
||||
PWMDTYA = PWMDTYA & 0xfc | (PWM_DutyCycle % 4);
|
||||
PWMDTY0 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
break;
|
||||
case PWM1:
|
||||
PWMDTYA = PWMDTYA & 0xf3 | ((PWM_DutyCycle % 4) << 2);
|
||||
PWMDTY1 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
break;
|
||||
case PWM2:
|
||||
PWMDTYA = PWMDTYA & 0xcf | ((PWM_DutyCycle % 4) << 4);
|
||||
PWMDTY2 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
break;
|
||||
case PWM3:
|
||||
PWMDTYB = PWMDTYB & 0xfc | (PWM_DutyCycle % 4);
|
||||
PWMDTY3 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
break;
|
||||
case PWM4:
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 6
|
||||
|
||||
PWMDTYB = PWMDTYB & 0xf3 | ((PWM_DutyCycle % 4) << 2);
|
||||
PWMDTY4 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
break;
|
||||
case PWM5:
|
||||
PWMDTYB = PWMDTYB & 0xcf | ((PWM_DutyCycle % 4) << 4);
|
||||
PWMDTY5 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_ComplementaryModeConfig(PWM_ComplementaryOutputPin_TypeDef PWM_ComplementaryOutputPin,
|
||||
- uint16_t PWM_DutyCycle)
|
||||
*函数功能:PWMxPWMy互补工作模式配置函数
|
||||
*入口参数:PWM_ComplementaryOutputPin PWMxPWMy互补通道选择
|
||||
PWM_DutyCycle PWM占空比配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_ComplementaryModeConfig(PWM_ComplementaryOutputPin_TypeDef PWM_ComplementaryOutputPin, uint16_t P
|
||||
-WM_DutyCycle)
|
||||
{
|
||||
PWMDTYB |= 0X80; //设置PWM为互补模式
|
||||
switch(PWM_ComplementaryOutputPin) //设置占空比
|
||||
{
|
||||
case PWM0PWM3:
|
||||
PWMDTYA = PWMDTYA & 0xfc | (PWM_DutyCycle % 4);
|
||||
PWMDTY0 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
break;
|
||||
case PWM1PWM4:
|
||||
PWMDTYA = PWMDTYA & 0xf3 | ((PWM_DutyCycle % 4) << 2);
|
||||
PWMDTY1 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
break;
|
||||
case PWM2PWM5:
|
||||
PWMDTYA = PWMDTYA & 0xcf | ((PWM_DutyCycle % 4) << 4);
|
||||
PWMDTY2 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_DeadTimeConfig(uint8_t PWM012_RisingDeadTime, uint8_t PWM345_fallingDeadTime)
|
||||
*函数功能:PWM互补工作模式下死区时间配置函数
|
||||
*入口参数:PWM012_RisingDeadTime PWM死区上升时间
|
||||
PWM345_fallingDeadTime PWM死区下降时间
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_DeadTimeConfig(uint8_t PWM012_RisingDeadTime, uint8_t PWM345_fallingDeadTime)
|
||||
{
|
||||
PWMDTY3 = (PWM012_RisingDeadTime | (PWM345_fallingDeadTime << 4));
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void PWM_Cmd(FunctionalState NewState)
|
||||
*函数功能:PWM功能开关函数
|
||||
*入口参数:FunctionalState NewState 功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void PWM_Cmd(FunctionalState NewState)
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 7
|
||||
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
PWMCON |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
PWMCON &= ~0X80;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void PWM_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:PWM中断初始化
|
||||
*入口参数:FunctionalState NewState 中断使能/关闭选择
|
||||
PriorityStatus Priority 中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void PWM_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
IE1 |= 0X02;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE1 &= 0XFD;
|
||||
}
|
||||
|
||||
if(Priority == LOW)
|
||||
{
|
||||
IP1 &= 0XFD;
|
||||
}
|
||||
else
|
||||
{
|
||||
IP1 |= 0X02;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus PWM_GetFlagStatus(void)
|
||||
*函数功能:获得PWM中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:FlagStatus PWM中断标志状态
|
||||
*****************************************************/
|
||||
FlagStatus PWM_GetFlagStatus(void)
|
||||
{
|
||||
return (FlagStatus)(PWMCON & 0X40);
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void PWM_ClearFlag(void)
|
||||
*函数功能:清除PWM中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void PWM_ClearFlag(void)
|
||||
{
|
||||
PWMCON &= 0XBF;
|
||||
}
|
||||
#endif
|
||||
422
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 8
|
||||
|
||||
423
|
||||
424
|
||||
425
|
||||
426
|
||||
427
|
||||
428
|
||||
429
|
||||
430
|
||||
431 #if defined (SC92F8003)
|
||||
432 /**************************************************
|
||||
433 *函数名称:void PWM_DeInit(void)
|
||||
434 *函数功能:PWM相关寄存器复位至缺省值
|
||||
435 *入口参数:void
|
||||
436 *出口参数:void
|
||||
437 **************************************************/
|
||||
438 void PWM_DeInit(void)
|
||||
439 {
|
||||
440 1 PWMCFG = 0X00;
|
||||
441 1 PWMCON0 = 0X00;
|
||||
442 1 PWMPRD = 0X00;
|
||||
443 1 PWMDTYA = 0X00;
|
||||
444 1 PWMDTY0 = 0X00;
|
||||
445 1 PWMDTY1 = 0X00;
|
||||
446 1 PWMDTY2 = 0X00;
|
||||
447 1 PWMCON1 = 0X00;
|
||||
448 1 PWMDTYB = 0X00;
|
||||
449 1 PWMDTY3 = 0X00;
|
||||
450 1 PWMDTY4 = 0X00;
|
||||
451 1 PWMDTY5 = 0X00;
|
||||
452 1 PWMDTY6 = 0X00;
|
||||
453 1 IE1 &= 0XFD;
|
||||
454 1 IP1 &= 0XFD;
|
||||
455 1 }
|
||||
456
|
||||
457 /**************************************************
|
||||
458 *函数名称:void PWM_Init(PWM_PresSel_TypeDef PWM_PresSel, uint16_t PWM_Period)
|
||||
459 *函数功能:PWM初始化配置函数
|
||||
460 *入口参数:PWM_PresSel 预分频选择
|
||||
461 PWM_Period PWM周期配置
|
||||
462 *出口参数:void
|
||||
463 **************************************************/
|
||||
464 void PWM_Init(PWM_PresSel_TypeDef PWM_PresSel, uint16_t PWM_Period)
|
||||
465 {
|
||||
466 1 PWM_Period -= 1;
|
||||
467 1 PWMCON0 = (PWMCON0 & 0XCC) | PWM_PresSel | (uint8_t)(PWM_Period & 0X0003); //预分频及周期的低2位
|
||||
468 1 PWMPRD = (uint8_t)(PWM_Period >> 2); //周期高八位
|
||||
469 1 }
|
||||
470
|
||||
471 /**************************************************
|
||||
472 *函数名称:void PWM_OutputStateConfig(uint8_t PWM_OutputPin, PWM_OutputState_TypeDef PWM_OutputState)
|
||||
473 *函数功能:PWMx输出使能/失能配置函数
|
||||
474 *入口参数:PWM_OutputPin PWMx选择
|
||||
475 PWM_OutputState PWM输出状态配置
|
||||
476 *出口参数:void
|
||||
477 **************************************************/
|
||||
478 void PWM_OutputStateConfig(uint8_t PWM_OutputPin, PWM_OutputState_TypeDef PWM_OutputState)
|
||||
479 {
|
||||
480 1 if(PWM_OutputState == PWM_OUTPUTSTATE_ENABLE)
|
||||
481 1 {
|
||||
482 2 PWMCON1 |= PWM_OutputPin;
|
||||
483 2 }
|
||||
484 1 else
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 9
|
||||
|
||||
485 1 {
|
||||
486 2 PWMCON1 &= (~PWM_OutputPin);
|
||||
487 2 }
|
||||
488 1 }
|
||||
489
|
||||
490 /**************************************************
|
||||
491 *函数名称:void PWM_PWM2Selection(PWM2_OutputPin_TypeDef PWM2_OutputPin)
|
||||
492 *函数功能:PWM2管脚选择函数
|
||||
493 *入口参数:PWM2_OutputPin PWM2管脚选择
|
||||
494 *出口参数:void
|
||||
495 **************************************************/
|
||||
496 void PWM_PWM2Selection(PWM2_OutputPin_TypeDef PWM2_OutputPin)
|
||||
497 {
|
||||
498 1 PWMCON0 = PWMCON0 & 0XFB | PWM2_OutputPin;
|
||||
499 1 }
|
||||
500
|
||||
501 /**************************************************
|
||||
502 *函数名称:void PWM_PWM5Selection(PWM5_OutputPin_TypeDef PWM5_OutputPin)
|
||||
503 *函数功能:PWM5管脚选择函数
|
||||
504 *入口参数:PWM5_OutputPin PWM5管脚选择
|
||||
505 *出口参数:void
|
||||
506 **************************************************/
|
||||
507 void PWM_PWM5Selection(PWM5_OutputPin_TypeDef PWM5_OutputPin)
|
||||
508 {
|
||||
509 1 PWMCON0 = PWMCON0 & 0XF7 | PWM5_OutputPin;
|
||||
510 1 }
|
||||
511
|
||||
512 /**************************************************
|
||||
513 *函数名称:void PWM_PolarityConfig(uint8_t PWM_OutputPin, PWM_Polarity_TypeDef PWM_Polarity)
|
||||
514 *函数功能:PWMx正/反向输出配置函数
|
||||
515 *入口参数:PWM_OutputPin PWMx选择
|
||||
516 PWM_Polarity PWM输出正/反向配置
|
||||
517 *出口参数:void
|
||||
518 **************************************************/
|
||||
519 void PWM_PolarityConfig(uint8_t PWM_OutputPin, PWM_Polarity_TypeDef PWM_Polarity)
|
||||
520 {
|
||||
521 1 if(PWM_Polarity == PWM_POLARITY_INVERT)
|
||||
522 1 {
|
||||
523 2 PWMCFG |= PWM_OutputPin;
|
||||
524 2 }
|
||||
525 1 else
|
||||
526 1 {
|
||||
527 2 PWMCFG &= (~PWM_OutputPin);
|
||||
528 2 }
|
||||
529 1 }
|
||||
530
|
||||
531 /**************************************************
|
||||
532 *函数名称:void PWM_IndependentModeConfig(PWM_OutputPin_TypeDef PWM_OutputPin, uint16_t PWM_DutyCycle)
|
||||
533 *函数功能:PWMx独立工作模式配置函数
|
||||
534 *入口参数:PWM_OutputPin PWMx独立通道选择
|
||||
535 PWM_DutyCycle PWM占空比配置
|
||||
536 *出口参数:void
|
||||
537 **************************************************/
|
||||
538 void PWM_IndependentModeConfig(PWM_OutputPin_TypeDef PWM_OutputPin, uint16_t PWM_DutyCycle)
|
||||
539 {
|
||||
540 1 if(PWM_OutputPin!=PWM6)
|
||||
541 1 {
|
||||
542 2 PWMCON1 &= 0X7F; //设置PWM为独立模式
|
||||
543 2 }
|
||||
544 1 switch(PWM_OutputPin) //设置占空比
|
||||
545 1 {
|
||||
546 2 case PWM0:
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 10
|
||||
|
||||
547 2 PWMDTYA = PWMDTYA & 0XFC | (PWM_DutyCycle % 4);
|
||||
548 2 PWMDTY0 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
549 2 break;
|
||||
550 2 case PWM1:
|
||||
551 2 PWMDTYA = PWMDTYA & 0XF3 | ((PWM_DutyCycle % 4) << 2);
|
||||
552 2 PWMDTY1 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
553 2 break;
|
||||
554 2 case PWM2:
|
||||
555 2 PWMDTYA = PWMDTYA & 0XCF | ((PWM_DutyCycle % 4) << 4);
|
||||
556 2 PWMDTY2 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
557 2 break;
|
||||
558 2 case PWM3:
|
||||
559 2 PWMDTYA = PWMDTYA & 0X3F | ((PWM_DutyCycle % 4) << 6);
|
||||
560 2 PWMDTY3 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
561 2 break;
|
||||
562 2 case PWM4:
|
||||
563 2 PWMDTYB = PWMDTYB & 0XFC | (PWM_DutyCycle % 4);
|
||||
564 2 PWMDTY4 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
565 2 break;
|
||||
566 2 case PWM5:
|
||||
567 2 PWMDTYB = PWMDTYB & 0XF3 | ((PWM_DutyCycle % 4) << 2);
|
||||
568 2 PWMDTY5 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
569 2 break;
|
||||
570 2 case PWM6:
|
||||
571 2 PWMDTYB = PWMDTYB & 0XCF | ((PWM_DutyCycle % 4) << 4);
|
||||
572 2 PWMDTY6 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
573 2 break;
|
||||
574 2 default:
|
||||
575 2 break;
|
||||
576 2 }
|
||||
577 1 }
|
||||
578
|
||||
579 /**************************************************
|
||||
580 *函数名称:void PWM_ComplementaryModeConfig(PWM_ComplementaryOutputPin_TypeDef PWM_ComplementaryOutputPin,
|
||||
- uint16_t PWM_DutyCycle)
|
||||
581 *函数功能:PWMxPWMy互补工作模式配置函数
|
||||
582 *入口参数:PWM_ComplementaryOutputPin PWMxPWMy互补通道选择
|
||||
583 PWM_DutyCycle PWM占空比配置
|
||||
584 *出口参数:void
|
||||
585 **************************************************/
|
||||
586 void PWM_ComplementaryModeConfig(PWM_ComplementaryOutputPin_TypeDef PWM_ComplementaryOutputPin, uint16_t P
|
||||
-WM_DutyCycle)
|
||||
587 {
|
||||
588 1 PWMCON1 |= 0X80; //设置PWM为互补模式
|
||||
589 1 switch(PWM_ComplementaryOutputPin) //设置占空比
|
||||
590 1 {
|
||||
591 2 case PWM0PWM3:
|
||||
592 2 PWMDTYA = PWMDTYA & 0XFC | (PWM_DutyCycle % 4);
|
||||
593 2 PWMDTY0 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
594 2 break;
|
||||
595 2 case PWM1PWM4:
|
||||
596 2 PWMDTYA = PWMDTYA & 0XF3 | ((PWM_DutyCycle % 4) << 2);
|
||||
597 2 PWMDTY1 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
598 2 break;
|
||||
599 2 case PWM2PWM5:
|
||||
600 2 PWMDTYA = PWMDTYA & 0XCF | ((PWM_DutyCycle % 4) << 4);
|
||||
601 2 PWMDTY2 = (uint8_t)(PWM_DutyCycle >> 2);
|
||||
602 2 break;
|
||||
603 2 default:
|
||||
604 2 break;
|
||||
605 2 }
|
||||
606 1 }
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 11
|
||||
|
||||
607
|
||||
608 /**************************************************
|
||||
609 *函数名称:void PWM_DeadTimeConfig(uint8_t PWM012_RisingDeadTime, uint8_t PWM345_fallingDeadTime)
|
||||
610 *函数功能:PWM互补工作模式下死区时间配置函数
|
||||
611 *入口参数:PWM012_RisingDeadTime PWM死区上升时间
|
||||
612 PWM345_fallingDeadTime PWM死区下降时间
|
||||
613 *出口参数:void
|
||||
614 **************************************************/
|
||||
615 void PWM_DeadTimeConfig(uint8_t PWM012_RisingDeadTime, uint8_t PWM345_fallingDeadTime)
|
||||
616 {
|
||||
617 1 PWMDTY3 = (PWM012_RisingDeadTime | (PWM345_fallingDeadTime << 4));
|
||||
618 1 }
|
||||
619
|
||||
620 /*****************************************************
|
||||
621 *函数名称:void PWM_Cmd(FunctionalState NewState)
|
||||
622 *函数功能:PWM功能开关函数
|
||||
623 *入口参数:FunctionalState NewState 功能启动/关闭选择
|
||||
624 *出口参数:void
|
||||
625 *****************************************************/
|
||||
626 void PWM_Cmd(FunctionalState NewState)
|
||||
627 {
|
||||
628 1 if (NewState != DISABLE)
|
||||
629 1 {
|
||||
630 2 PWMCON0 |= 0X80;
|
||||
631 2 }
|
||||
632 1 else
|
||||
633 1 {
|
||||
634 2 PWMCON0 &= ~0X80;
|
||||
635 2 }
|
||||
636 1 }
|
||||
637
|
||||
638 /*****************************************************
|
||||
639 *函数名称:void PWM_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
640 *函数功能:PWM中断初始化
|
||||
641 *入口参数:FunctionalState NewState 中断使能/关闭选择
|
||||
642 PriorityStatus Priority 中断优先级选择
|
||||
643 *出口参数:void
|
||||
644 *****************************************************/
|
||||
645 void PWM_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
646 {
|
||||
647 1 if (NewState != DISABLE)
|
||||
648 1 {
|
||||
649 2 IE1 |= 0X02;
|
||||
650 2 }
|
||||
651 1 else
|
||||
652 1 {
|
||||
653 2 IE1 &= 0XFD;
|
||||
654 2 }
|
||||
655 1
|
||||
656 1 if(Priority == LOW)
|
||||
657 1 {
|
||||
658 2 IP1 &= 0XFD;
|
||||
659 2 }
|
||||
660 1 else
|
||||
661 1 {
|
||||
662 2 IP1 |= 0X02;
|
||||
663 2 }
|
||||
664 1 }
|
||||
665
|
||||
666 /*****************************************************
|
||||
667 *函数名称:FlagStatus PWM_GetFlagStatus(void)
|
||||
668 *函数功能:获得PWM中断标志状态
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 12
|
||||
|
||||
669 *入口参数:void
|
||||
670 *出口参数:FlagStatus PWM中断标志状态
|
||||
671 *****************************************************/
|
||||
672 FlagStatus PWM_GetFlagStatus(void)
|
||||
673 {
|
||||
674 1 return (FlagStatus)(PWMCON0 & 0X40);
|
||||
675 1 }
|
||||
676
|
||||
677 /*****************************************************
|
||||
678 *函数名称:void PWM_ClearFlag(void)
|
||||
679 *函数功能:清除PWM中断标志状态
|
||||
680 *入口参数:void
|
||||
681 *出口参数:void
|
||||
682 *****************************************************/
|
||||
683 void PWM_ClearFlag(void)
|
||||
684 {
|
||||
685 1 PWMCON0 &= 0XBF;
|
||||
686 1 }
|
||||
687 #endif
|
||||
688
|
||||
689
|
||||
690
|
||||
691
|
||||
692
|
||||
693
|
||||
694
|
||||
695
|
||||
696
|
||||
697
|
||||
698
|
||||
699
|
||||
700 #if defined (SC92F742x)
|
||||
/**************************************************
|
||||
*函数名称:void PWM_DeInit(void)
|
||||
*函数功能:PWM相关寄存器复位至缺省值
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_DeInit(void)
|
||||
{
|
||||
PWMCFG0 = 0X00;
|
||||
PWMCON = 0X00;
|
||||
PWMPRD = 0X00;
|
||||
PWMCFG1 = 0X00;
|
||||
PWMDTY0 = 0X00;
|
||||
PWMDTY1 = 0X00;
|
||||
PWMDTY2 = 0X00;
|
||||
PWMDTY3 = 0X00;
|
||||
PWMDTY4 = 0X00;
|
||||
PWMDTY5 = 0X00;
|
||||
IE1 &= ~0X02;
|
||||
IP1 &= ~0X02;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_Init(PWM_PresSel_TypeDef PWM_PresSel, uint16_t PWM_Period)
|
||||
*函数功能:PWM初始化配置函数
|
||||
*入口参数:PWM_PresSel 预分频选择
|
||||
PWM_Period PWM周期配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_Init(PWM_PresSel_TypeDef PWM_PresSel, uint16_t PWM_Period)
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 13
|
||||
|
||||
{
|
||||
PWM_Period -= 1;
|
||||
PWMCON = (PWMCON & 0XF8) | PWM_PresSel; //预分频
|
||||
PWMPRD = PWM_Period; //周期配置
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_OutputStateConfig(PWM_OutputPin_TypeDef PWM_OutputPin, PWM_OutputState_TypeDef PWM_Out
|
||||
-putState)
|
||||
*函数功能:PWMx输出使能/失能配置函数
|
||||
*入口参数:PWM_OutputPin PWMx选择
|
||||
PWM_OutputState PWM输出状态配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_OutputStateConfig(uint8_t PWM_OutputPin, PWM_OutputState_TypeDef PWM_OutputState)
|
||||
{
|
||||
if(PWM_OutputState==PWM_OUTPUTSTATE_DISABLE)
|
||||
{
|
||||
PWMCON = PWMCON & (~(PWM_OutputPin&0x38));
|
||||
PWMCFG0 = PWMCFG0 & (~(PWM_OutputPin&0x07));
|
||||
}
|
||||
else
|
||||
{
|
||||
PWMCON = PWMCON | (PWM_OutputPin&0x38);
|
||||
PWMCFG0 = PWMCFG0 |(PWM_OutputPin&0x07);
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_PolarityConfig(PWM_OutputPin_TypeDef PWM_OutputPin, PWM_Polarity_TypeDef PWM_Polarity)
|
||||
*函数功能:PWMx正/反向输出配置函数
|
||||
*入口参数:PWM_OutputPin PWMx选择
|
||||
PWM_Polarity PWM输出正/反向配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_PolarityConfig(uint8_t PWM_OutputPin, PWM_Polarity_TypeDef PWM_Polarity)
|
||||
{
|
||||
if(PWM_Polarity==PWM_POLARITY_NON_INVERT)
|
||||
{
|
||||
PWMCFG0 = PWMCFG0 & (~(PWM_OutputPin&0x38));
|
||||
PWMCFG1 = PWMCFG1 & (~((PWM_OutputPin<<3)&0x38));
|
||||
}
|
||||
else
|
||||
{
|
||||
PWMCFG0 = PWMCFG0 | (PWM_OutputPin&0x38);
|
||||
PWMCFG1 = PWMCFG1 |((PWM_OutputPin<<3)&0x38);
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*函数名称:void PWM_IndependentModeConfig(PWM_OutputPin_TypeDef PWM_OutputPin, uint16_t PWM_DutyCycle)
|
||||
*函数功能:PWMx独立工作模式配置函数
|
||||
*入口参数:PWM_OutputPin PWMx独立通道选择
|
||||
PWM_DutyCycle PWM占空比配置
|
||||
*出口参数:void
|
||||
**************************************************/
|
||||
void PWM_IndependentModeConfig(PWM_OutputPin_TypeDef PWM_OutputPin, uint16_t PWM_DutyCycle)
|
||||
{
|
||||
switch(PWM_OutputPin) //设置占空比
|
||||
{
|
||||
case PWM0:
|
||||
PWMDTY0 = PWM_DutyCycle;
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 14
|
||||
|
||||
break;
|
||||
case PWM1:
|
||||
PWMDTY1 = PWM_DutyCycle;
|
||||
break;
|
||||
case PWM2:
|
||||
PWMDTY2 = PWM_DutyCycle;
|
||||
break;
|
||||
case PWM3:
|
||||
PWMDTY3 = PWM_DutyCycle;
|
||||
break;
|
||||
case PWM4:
|
||||
PWMDTY4 = PWM_DutyCycle;
|
||||
break;
|
||||
case PWM5:
|
||||
PWMDTY5 = PWM_DutyCycle;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void PWM_Cmd(FunctionalState NewState)
|
||||
*函数功能:PWM功能开关函数
|
||||
*入口参数:FunctionalState NewState 功能启动/关闭选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void PWM_Cmd(FunctionalState NewState)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
PWMCON |= 0X80;
|
||||
}
|
||||
else
|
||||
{
|
||||
PWMCON &= ~0X80;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void PWM_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
*函数功能:PWM中断初始化
|
||||
*入口参数:FunctionalState NewState 中断使能/关闭选择
|
||||
PriorityStatus Priority 中断优先级选择
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void PWM_ITConfig(FunctionalState NewState, PriorityStatus Priority)
|
||||
{
|
||||
if (NewState != DISABLE)
|
||||
{
|
||||
IE1 |= 0X02;
|
||||
}
|
||||
else
|
||||
{
|
||||
IE1 &= ~0X02;
|
||||
}
|
||||
|
||||
if(Priority == LOW)
|
||||
{
|
||||
IP1 &= ~0X02;
|
||||
}
|
||||
else
|
||||
C51 COMPILER V9.01 SC92F_PWM 09/11/2020 09:48:38 PAGE 15
|
||||
|
||||
{
|
||||
IP1 |= 0X02;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:FlagStatus PWM_GetFlagStatus(void)
|
||||
*函数功能:获得PWM中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:FlagStatus PWM中断标志状态
|
||||
*****************************************************/
|
||||
FlagStatus PWM_GetFlagStatus(void)
|
||||
{
|
||||
return (FlagStatus)(PWMCON & 0X40);
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
*函数名称:void PWM_ClearFlag(void)
|
||||
*函数功能:清除PWM中断标志状态
|
||||
*入口参数:void
|
||||
*出口参数:void
|
||||
*****************************************************/
|
||||
void PWM_ClearFlag(void)
|
||||
{
|
||||
PWMCON &= 0XBF;
|
||||
}
|
||||
#endif
|
||||
881
|
||||
882 /******************* (C) COPYRIGHT 2020 SinOne Microelectronics *****END OF FILE****/
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 504 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue