• 大小: 0.04M
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2024-04-20
  • 语言: C/C++
  • 标签: 00  串口  

资源简介

N76E003串口收发

资源截图

代码片段和文件信息

/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Nuvoton Technoledge Corp. 
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//  Date   : Apr/21/2016
//***********************************************************************************************************

#include “N76E003.h“
#include “Common.h“
#include “Delay.h“
#include “SFR_Macro.h“
#include “Function_define.h“

//----------------------------------------------------------------------------------
// UART0 baud rate initial setting 
//----------------------------------------------------------------------------------
void InitialUART0_Timer1(UINT32 u32Baudrate)    //T1M = 1 SMOD = 1
{
P06_Quasi_Mode; //Setting UART pin as Quasi mode for transmit
P07_Quasi_Mode; //Setting UART pin as Quasi mode for transmit

    SCON = 0x50;      //UART0 Mode1REN=1TI=1
    TMOD |= 0x20;     //Timer1 Mode1
    
    set_SMOD;         //UART0 Double Rate Enable
    set_T1M;
    clr_BRCK;         //Serial port 0 baud rate clock source = Timer1
 
#ifdef FOSC_160000
    TH1 = 256 - (1000000/u32Baudrate+1);               /*16 MHz */
#endif    
#ifdef FOSC_166000
    TH1 = 256 - (1037500/u32Baudrate);               /*16.6 MHz */
#endif
    set_TR1;
set_TI; //For printf function must setting TI = 1
}
//---------------------------------------------------------------
void InitialUART0_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator
{
P06_Quasi_Mode; //Setting UART pin as Quasi mode for transmit
P07_Quasi_Mode; //Setting UART pin as Quasi mode for transmit

    SCON = 0x50;     //UART0 Mode1REN=1TI=1
    set_SMOD;        //UART0 Double Rate Enable
    T3CON &= 0xF8;   //T3PS2=0T3PS1=0T3PS0=0(Prescale=1)
    set_BRCK;        //UART0 baud rate clock source = Timer3

#ifdef FOSC_160000
RH3    = HIBYTE(65536 - (1000000/u32Baudrate)-1);   /*16 MHz */
RL3    = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */
#endif
#ifdef FOSC_166000
    RH3    = HIBYTE(65536 - (1037500/u32Baudrate));  /*16.6 MHz */
    RL3    = LOBYTE(65536 - (1037500/u32Baudrate));  /*16.6 MHz */
#endif
    set_TR3;         //Trigger Timer3
set_TI;  //For printf function must setting TI = 1
}

UINT8 Receive_Data_From_UART0(void)
{
    UINT8 c;
    while (!RI);
    c = SBUF;
    RI = 0;
    retu

评论

共有 条评论