157 lines
3.1 KiB
C
157 lines
3.1 KiB
C
|
#include "H/Function_Init.H"
|
|||
|
|
|||
|
void Uart_Init(uint Freq,unsigned long int baud);
|
|||
|
long Cclt_Power(uchar a, long b);
|
|||
|
|
|||
|
bit UartSendFlag = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ
|
|||
|
bit UartReceiveFlag = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ
|
|||
|
|
|||
|
//<2F>˷<EFBFBD>a<EFBFBD>ݣ<EFBFBD>b<EFBFBD><62>
|
|||
|
long Cclt_Power(uchar a, long b)
|
|||
|
{
|
|||
|
uchar i;
|
|||
|
long temp;
|
|||
|
|
|||
|
temp = 1;
|
|||
|
for(i=0;i<a;i++)
|
|||
|
temp = temp*b;
|
|||
|
return temp;
|
|||
|
}
|
|||
|
|
|||
|
/*****************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>void Uart_Test(void)
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>Uart<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void
|
|||
|
*****************************************************/
|
|||
|
void Uart_Test(void)
|
|||
|
{
|
|||
|
Uart_Init(32,9600);
|
|||
|
}
|
|||
|
/*****************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>void Uart_Init(uint Freq,unsigned long int baud)
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>Uart<EFBFBD>жϳ<EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Freq-<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>baud-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void
|
|||
|
*****************************************************/
|
|||
|
void Uart_Init(uint Freq,unsigned long int baud) //ѡ<><D1A1>Timer1<72><31>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źŷ<C5BA><C5B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
P2CON &= 0xFC; //TX/RX<52><58><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
P2PH |= 0x03;
|
|||
|
SCON |= 0X50; //<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD>ŷ<EFBFBD>ʽΪģʽһ<CABD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
TXCON |= 0X03; //UART0ʱ<30><CAB1><EFBFBD><EFBFBD>ԴΪ<D4B4><CEAA>ʱ<EFBFBD><CAB1>1
|
|||
|
TH1 = (Freq*1000000/baud)>>8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪT1<54><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣻
|
|||
|
TL1 = Freq*1000000/baud;
|
|||
|
TR1 = 0; //SC95F761xBϵ<42><CFB5>UARTOʹ<4F>ö<EFBFBD>ʱ<EFBFBD><CAB1>1<EFBFBD><31>Ϊʱ<CEAA><CAB1>Դ<EFBFBD><D4B4>TR1Ϊ0
|
|||
|
ET1 = 0;
|
|||
|
EUART = 1; //<2F><><EFBFBD><EFBFBD>Uart<72>ж<EFBFBD>
|
|||
|
EA = 1;
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
void Uart_Init(uint Freq,unsigned long int baud) //ѡ<><D1A1>Timer2<72><32>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źŷ<C5BA><C5B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
P2CON &= 0xFC; //TX/RX<52><58><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
P2PH |= 0x03;
|
|||
|
|
|||
|
SCON |= 0X50; //<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD>ŷ<EFBFBD>ʽΪģʽһ<CABD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
TXINX = 0x02;
|
|||
|
TMCON |= 0X04;
|
|||
|
TXMOD = 0X00;
|
|||
|
TXCON = 0X30;
|
|||
|
RCAPXH = Freq*1000000/baud/256;
|
|||
|
RCAPXL = Freq*1000000/baud%256;
|
|||
|
TRX = 0;
|
|||
|
ET2 = 0;
|
|||
|
EUART = 1; //<2F><><EFBFBD><EFBFBD>Uart<72>ж<EFBFBD>
|
|||
|
EA = 1;
|
|||
|
}
|
|||
|
*/
|
|||
|
|
|||
|
/*****************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>void UartInt(void) interrupt 4
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>Uart<EFBFBD>жϺ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void
|
|||
|
*****************************************************/
|
|||
|
void UartInt(void) interrupt 4
|
|||
|
{
|
|||
|
if(TI) //UART0<54><30><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
{
|
|||
|
TI = 0;
|
|||
|
UartSendFlag = 1;
|
|||
|
}
|
|||
|
if(RI) //UART0<54><30><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
{
|
|||
|
RI = 0;
|
|||
|
UartReceiveFlag = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void UART_SendByte(uchar Byte)//<2F>ֽڷ<D6BD><DAB7><EFBFBD>
|
|||
|
{
|
|||
|
SBUF = Byte;
|
|||
|
while(!UartSendFlag);
|
|||
|
UartSendFlag = 0;
|
|||
|
}
|
|||
|
|
|||
|
void UART_SendLong(long Dat)//32λ<32>Ӹߵ<D3B8><DFB5>ͷ<EFBFBD><CDB7><EFBFBD>
|
|||
|
{
|
|||
|
uchar i;
|
|||
|
uchar temp[4];
|
|||
|
temp[0] = (Dat >> 24) & 0xFF;
|
|||
|
temp[1] = (Dat >> 16) & 0xFF;
|
|||
|
temp[2] = (Dat >> 8) & 0xFF;
|
|||
|
temp[3] = Dat & 0xFF;
|
|||
|
for(i=0;i<4;i++)
|
|||
|
{
|
|||
|
UART_SendByte(temp[i]);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void UART_Send_VOFA(long uart_buff)
|
|||
|
{
|
|||
|
uchar j;
|
|||
|
uchar buff;
|
|||
|
uchar vofa_buff[8];
|
|||
|
bit negative=0;
|
|||
|
|
|||
|
if(uart_buff<0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תԴ<D7AA><D4B4>
|
|||
|
{
|
|||
|
uart_buff=~uart_buff+1;
|
|||
|
negative = 1;
|
|||
|
|
|||
|
}
|
|||
|
for(j=0;j<8;j++)
|
|||
|
{
|
|||
|
vofa_buff[j] = (uart_buff % Cclt_Power(j+1,10)) / Cclt_Power(j,10);//16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת10<31><30><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>˷<EFBFBD><CBB7>棬<EFBFBD><E6A3AC>λ<EFBFBD>ڵ<EFBFBD><DAB5>ֽ<EFBFBD>
|
|||
|
}
|
|||
|
if(negative)
|
|||
|
UART_SendByte(45);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
for(j=0;j<8;j++)
|
|||
|
{
|
|||
|
buff = vofa_buff[7-j]+48;//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>λ
|
|||
|
UART_SendByte(buff);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void UART_SendAll(long* Dat)//4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
uchar i,j;
|
|||
|
uchar temp[4];
|
|||
|
|
|||
|
for(j=0;j<4;j++)
|
|||
|
{
|
|||
|
temp[0] = (Dat[j] >> 24) & 0xFF;
|
|||
|
temp[1] = (Dat[j] >> 16) & 0xFF;
|
|||
|
temp[2] = (Dat[j] >> 8) & 0xFF;
|
|||
|
temp[3] = Dat[j] & 0xFF;
|
|||
|
for(i=0;i<4;i++)
|
|||
|
{
|
|||
|
UART_SendByte(temp[i]);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|