2025-02-06 07:35:32 +00:00
|
|
|
|
/********************************************************************************
|
|
|
|
|
Copyright (C), Sinowealth Electronic. Ltd.
|
|
|
|
|
Author: Sino
|
|
|
|
|
Version: V0.0
|
|
|
|
|
Date: 2020/04/26
|
|
|
|
|
History:
|
|
|
|
|
V2.0 2020/04/26 Preliminary
|
|
|
|
|
********************************************************************************/
|
|
|
|
|
#include "Main.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if (UART0_DEFINE != 0)
|
|
|
|
|
/*************************************************************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: UART0Init
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Bps: UARTͨѶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>UART0ģ<EFBFBD><EFBFBD>
|
|
|
|
|
*************************************************************************************************/
|
|
|
|
|
void UART0Init(void)
|
|
|
|
|
{
|
|
|
|
|
#if UART0_DEFINE == 1
|
|
|
|
|
UART0CR = 0x32;
|
|
|
|
|
#elif UART0_DEFINE == 2
|
|
|
|
|
UART0CR = 0x42;
|
|
|
|
|
#elif UART0_DEFINE == 3
|
|
|
|
|
UART0CR = 0x52;
|
|
|
|
|
#elif UART0_DEFINE == 4
|
|
|
|
|
UART0CR = 0x02;
|
|
|
|
|
#elif UART0_DEFINE == 5
|
|
|
|
|
UART0CR = 0x12;
|
|
|
|
|
#elif UART0_DEFINE == 6
|
|
|
|
|
UART0CR = 0x23;
|
|
|
|
|
#elif UART0_DEFINE == 7
|
|
|
|
|
UART0CR = 0x43;
|
|
|
|
|
#elif UART0_DEFINE == 8
|
|
|
|
|
UART0CR = 0x53;
|
|
|
|
|
#elif UART0_DEFINE == 9
|
|
|
|
|
UART0CR = 0x03;
|
|
|
|
|
#elif UART0_DEFINE == 10
|
|
|
|
|
UART0CR = 0x13;
|
|
|
|
|
#elif UART0_DEFINE == 11
|
|
|
|
|
UART0CR = 0x24;
|
|
|
|
|
#elif UART0_DEFINE == 12
|
|
|
|
|
UART0CR = 0x34;
|
|
|
|
|
#elif UART0_DEFINE == 13
|
|
|
|
|
UART0CR = 0x54;
|
|
|
|
|
#elif UART0_DEFINE == 14
|
|
|
|
|
UART0CR = 0x04;
|
|
|
|
|
#elif UART0_DEFINE == 15
|
|
|
|
|
UART0CR = 0x14;
|
|
|
|
|
#elif UART0_DEFINE == 16
|
|
|
|
|
UART0CR = 0x25;
|
|
|
|
|
#elif UART0_DEFINE == 17
|
|
|
|
|
UART0CR = 0x35;
|
|
|
|
|
#elif UART0_DEFINE == 18
|
|
|
|
|
UART0CR = 0x45;
|
|
|
|
|
#elif UART0_DEFINE == 19
|
|
|
|
|
UART0CR = 0x05;
|
|
|
|
|
#elif UART0_DEFINE == 20
|
|
|
|
|
UART0CR = 0x15;
|
|
|
|
|
#elif UART0_DEFINE == 21
|
|
|
|
|
UART0CR = 0x30;
|
|
|
|
|
#elif UART0_DEFINE == 22
|
|
|
|
|
UART0CR = 0x40;
|
|
|
|
|
#elif UART0_DEFINE == 23
|
|
|
|
|
UART0CR = 0x50;
|
|
|
|
|
#elif UART0_DEFINE == 24
|
|
|
|
|
UART0CR = 0x20;
|
|
|
|
|
#elif UART0_DEFINE == 25
|
|
|
|
|
UART0CR = 0x10;
|
|
|
|
|
#elif UART0_DEFINE == 26
|
|
|
|
|
UART0CR = 0x31;
|
|
|
|
|
#elif UART0_DEFINE == 27
|
|
|
|
|
UART0CR = 0x41;
|
|
|
|
|
#elif UART0_DEFINE == 28
|
|
|
|
|
UART0CR = 0x51;
|
|
|
|
|
#elif UART0_DEFINE == 29
|
|
|
|
|
UART0CR = 0x01;
|
|
|
|
|
#elif UART0_DEFINE == 30
|
|
|
|
|
UART0CR = 0x21;
|
|
|
|
|
#else
|
|
|
|
|
#Error: "UART0_DEFINE ERROR"
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
U16 TempVal;
|
|
|
|
|
PCON = 0x00;
|
|
|
|
|
SCON = 0x50; //<2F><><EFBFBD><EFBFBD>Uart<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ1
|
|
|
|
|
// SBRTH = UART_BPS_H;
|
|
|
|
|
// SBRTL = UART_BPS_L;
|
|
|
|
|
// SFINE = UART_BPS_F;
|
|
|
|
|
|
|
|
|
|
TempVal = 32768 - (U16)(8000000 / 16 / 9600); //<2F><><EFBFBD>㹫ʽ<E3B9AB><CABD>(int)X=FSY/(16*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) ; SBRT=32768-X ; SFINE=<3D><>FSY/<2F><><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>-16*X FSY=24M
|
|
|
|
|
SBRTH = TempVal / 256;
|
|
|
|
|
SBRTL = TempVal % 256;
|
|
|
|
|
SFINE = (float)8000000 / 9600 - (16 * (32768 - TempVal));
|
|
|
|
|
|
|
|
|
|
SBRTH |= 0x80; //ʹ<>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
SADDR = UART_SLAVE_SADDR; //UART<52><54>ַ<EFBFBD><D6B7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ0x0A
|
|
|
|
|
SADEN = 0xFF;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: InterruptUART0
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: UART0<EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*************************************************************************************************/
|
|
|
|
|
void InterruptUART0(void) interrupt 4
|
|
|
|
|
{
|
|
|
|
|
U8 xdata RxData;
|
|
|
|
|
|
|
|
|
|
_push_(INSCON);
|
|
|
|
|
McuBank0Sel();
|
|
|
|
|
|
|
|
|
|
if(RI) //RT1 interrupt means MCU recept data though UART
|
|
|
|
|
{
|
|
|
|
|
RI = 0;
|
|
|
|
|
RxData = SBUF;
|
2025-02-08 07:27:19 +00:00
|
|
|
|
InterruptUart0AppRx(RxData); //<2F><>ӱЭ<D3B1><D0AD>
|
2025-02-06 07:35:32 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(TI)
|
|
|
|
|
{
|
2025-02-07 03:00:30 +00:00
|
|
|
|
TI = 0;
|
|
|
|
|
InterruptUart0AppTx(); //<2F><>ӱЭ<D3B1><D0AD>
|
2025-02-06 07:35:32 +00:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_pop_(INSCON);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if (UART1_DEFINE != 0)
|
|
|
|
|
/*************************************************************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: UART1Init
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Bps: UARTͨѶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>UART1ģ<EFBFBD><EFBFBD>
|
|
|
|
|
*************************************************************************************************/
|
|
|
|
|
void UART1Init(void)
|
|
|
|
|
{
|
|
|
|
|
// U16 TempVal;
|
|
|
|
|
|
|
|
|
|
_push_(INSCON);
|
|
|
|
|
McuBank0Sel();
|
|
|
|
|
#if UART1_DEFINE == 1
|
|
|
|
|
UART1CR = 0x10;
|
|
|
|
|
#elif UART1_DEFINE == 2
|
|
|
|
|
UART1CR = 0x40;
|
|
|
|
|
#elif UART1_DEFINE == 3
|
|
|
|
|
UART1CR = 0x50;
|
|
|
|
|
#elif UART1_DEFINE == 4
|
|
|
|
|
UART1CR = 0x20;
|
|
|
|
|
#elif UART1_DEFINE == 5
|
|
|
|
|
UART1CR = 0x30;
|
|
|
|
|
#elif UART1_DEFINE == 6
|
|
|
|
|
UART1CR = 0x01;
|
|
|
|
|
#elif UART1_DEFINE == 7
|
|
|
|
|
UART1CR = 0x41;
|
|
|
|
|
#elif UART1_DEFINE == 8
|
|
|
|
|
UART1CR = 0x51;
|
|
|
|
|
#elif UART1_DEFINE == 9
|
|
|
|
|
UART1CR = 0x21;
|
|
|
|
|
#elif UART1_DEFINE == 10
|
|
|
|
|
UART1CR = 0x31;
|
|
|
|
|
#elif UART1_DEFINE == 11
|
|
|
|
|
UART1CR = 0x04;
|
|
|
|
|
#elif UART1_DEFINE == 12
|
|
|
|
|
UART1CR = 0x14;
|
|
|
|
|
#elif UART1_DEFINE == 13
|
|
|
|
|
UART1CR = 0x54;
|
|
|
|
|
#elif UART1_DEFINE == 14
|
|
|
|
|
UART1CR = 0x24;
|
|
|
|
|
#elif UART1_DEFINE == 15
|
|
|
|
|
UART1CR = 0x34;
|
|
|
|
|
#elif UART1_DEFINE == 16
|
|
|
|
|
UART1CR = 0x05;
|
|
|
|
|
#elif UART1_DEFINE == 17
|
|
|
|
|
UART1CR = 0x15;
|
|
|
|
|
#elif UART1_DEFINE == 18
|
|
|
|
|
UART1CR = 0x45;
|
|
|
|
|
#elif UART1_DEFINE == 19
|
|
|
|
|
UART1CR = 0x25;
|
|
|
|
|
#elif UART1_DEFINE == 20
|
|
|
|
|
UART1CR = 0x35;
|
|
|
|
|
#elif UART1_DEFINE == 21
|
|
|
|
|
UART1CR = 0x02;
|
|
|
|
|
#elif UART1_DEFINE == 22
|
|
|
|
|
UART1CR = 0x12;
|
|
|
|
|
#elif UART1_DEFINE == 23
|
|
|
|
|
UART1CR = 0x42;
|
|
|
|
|
#elif UART1_DEFINE == 24
|
|
|
|
|
UART1CR = 0x52;
|
|
|
|
|
#elif UART1_DEFINE == 25
|
|
|
|
|
UART1CR = 0x32;
|
|
|
|
|
#elif UART1_DEFINE == 26
|
|
|
|
|
UART1CR = 0x03;
|
|
|
|
|
#elif UART1_DEFINE == 27
|
|
|
|
|
UART1CR = 0x13;
|
|
|
|
|
#elif UART1_DEFINE == 28
|
|
|
|
|
UART1CR = 0x43;
|
|
|
|
|
#elif UART1_DEFINE == 29
|
|
|
|
|
UART1CR = 0x53;
|
|
|
|
|
#elif UART1_DEFINE == 30
|
|
|
|
|
UART1CR = 0x23;
|
|
|
|
|
#else
|
|
|
|
|
#Error: "UART1_DEFINE ERROR"
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
McuBank1Sel();
|
|
|
|
|
PCON1 = 0x00;
|
|
|
|
|
SCON1 = 0x50; //<2F><><EFBFBD><EFBFBD>Uart<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ1
|
|
|
|
|
SBRTH1 = UART_BPS_H;
|
|
|
|
|
SBRTL1 = UART_BPS_L;
|
|
|
|
|
SFINE1 = UART_BPS_F;
|
|
|
|
|
SBRTH1 |= 0x80; //ʹ<>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
SADDR1 = UART_SLAVE_SADDR; //UART<52><54>ַ<EFBFBD><D6B7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ0x0A
|
|
|
|
|
SADEN1 = 0xFF;
|
|
|
|
|
McuBank0Sel();
|
|
|
|
|
}
|
|
|
|
|
_pop_(INSCON);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: InterruptUart1
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: UART1<EFBFBD><EFBFBD><EFBFBD>պͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
InterruptUart1AppRx(RxData)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>APP<EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
InterruptUart1AppTx()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>APP<EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*************************************************************************************************/
|
|
|
|
|
void InterruptUart1(void) interrupt 15
|
|
|
|
|
{
|
|
|
|
|
U8 xdata RxData;
|
|
|
|
|
|
|
|
|
|
_push_(INSCON);
|
|
|
|
|
McuBank1Sel();
|
|
|
|
|
|
|
|
|
|
if(RI1)
|
|
|
|
|
{
|
|
|
|
|
RI1 = 0;
|
|
|
|
|
RxData = SBUF1;
|
|
|
|
|
McuBank0Sel(); //<2F><><EFBFBD><EFBFBD>APP<50><50><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD>BANK0
|
|
|
|
|
InterruptUart1AppRx(RxData);
|
|
|
|
|
}
|
|
|
|
|
McuBank1Sel();
|
|
|
|
|
if(TI1)
|
|
|
|
|
{
|
|
|
|
|
TI1 = 0;
|
|
|
|
|
McuBank0Sel(); //<2F><><EFBFBD><EFBFBD>APP<50><50><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD>BANK0
|
|
|
|
|
InterruptUart1AppTx();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_pop_(INSCON);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if (UART2_DEFINE != 0)
|
|
|
|
|
/*************************************************************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: UART2Init
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Bps: UARTͨѶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>UART2ģ<EFBFBD><EFBFBD>
|
|
|
|
|
*************************************************************************************************/
|
|
|
|
|
void UART2Init(void)
|
|
|
|
|
{
|
|
|
|
|
{
|
|
|
|
|
McuBank1Sel();
|
|
|
|
|
PCON2 = 0x00;
|
|
|
|
|
SCON2 = 0x50; //<2F><><EFBFBD><EFBFBD>Uart<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ1
|
|
|
|
|
SBRTH2 = UART_BPS_H;
|
|
|
|
|
SBRTL2 = UART_BPS_L;
|
|
|
|
|
SFINE2 = UART_BPS_F;
|
|
|
|
|
SBRTH2 |= 0x80; //ʹ<>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
SADDR2 = UART_SLAVE_SADDR; //UART<52><54>ַ<EFBFBD><D6B7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ0x0A
|
|
|
|
|
SADEN2 = 0xFF;
|
|
|
|
|
McuBank0Sel();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: InterruptUart2
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: UART2<EFBFBD><EFBFBD><EFBFBD>պͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
InterruptUart2AppRx(RxData)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>APP<EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
InterruptUart2AppTx()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>APP<EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*************************************************************************************************/
|
|
|
|
|
void InterruptUart2(void) interrupt 16
|
|
|
|
|
{
|
|
|
|
|
U8 xdata RxData;
|
|
|
|
|
|
|
|
|
|
_push_(INSCON);
|
|
|
|
|
McuBank1Sel();
|
|
|
|
|
|
|
|
|
|
if(RI2)
|
|
|
|
|
{
|
|
|
|
|
RI2 = 0;
|
|
|
|
|
RxData = SBUF2;
|
|
|
|
|
McuBank0Sel(); //<2F><><EFBFBD><EFBFBD>APP<50><50><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD>BANK0
|
|
|
|
|
InterruptUart2AppRx(RxData);
|
|
|
|
|
}
|
|
|
|
|
McuBank1Sel();
|
|
|
|
|
if(TI2)
|
|
|
|
|
{
|
|
|
|
|
TI2 = 0;
|
|
|
|
|
McuBank0Sel(); //<2F><><EFBFBD><EFBFBD>APP<50><50><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD>BANK0
|
|
|
|
|
InterruptUart2AppTx();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_pop_(INSCON);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|