在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            C8051F330串口UART0示例程序

            作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏

            //****************************************************************************
            // 功能:C8051F330串口UART0示例程序
            //****************************************************************************
            //使用F330,串口為P0.4(TX0),P0.5(RX0);
            //-----------------------------------------------------------------------------
            // UART0.c
            //-----------------------------------------------------------------------------

            本文引用地址:http://www.biyoush.com/article/201611/320381.htm

            //-----------------------------------------------------------------------------
            // 所包含的頭文件
            //------------------------------------------------------------------------
            #include
            //#include

            //-----------------------------------------------------------------------------
            // 常量定義
            //-----------------------------------------------------------------------------
            // 系統(tǒng)工作頻率
            #define SYSCLK 24500000
            // 串口工作波特率
            #define BAUDRATE 9600

            //-----------------------------------------------------------------------------
            // 功能函數(shù)
            //-----------------------------------------------------------------------------
            void SYSCLK_Init(void);
            void PORT_Init(void);
            void UART0_Init(void);
            void Uart0_Transmit(unsigned char tmp);
            void sendstr(unsigned char*tmp);
            unsigned char temp ;
            void delay_1ms()
            {
            unsigned int j ;
            for(j=3060;j>0;j--);
            }
            void delay_ms(unsigned int i)
            {
            for(;i>0;i--)delay_1ms();
            }
            //-----------------------------------------------------------------------------
            // 主程序
            //-----------------------------------------------------------------------------

            void main(void)
            {
            PCA0MD&=~0x40 ;
            // 禁止看門狗
            PORT_Init();
            // 初始化端口I/O
            SYSCLK_Init();
            // 初始化系統(tǒng)時(shí)鐘
            UART0_Init();
            // 串口初始化
            EA=1 ;
            ES0=1 ;
            while(1)
            {
            delay_ms(1000);
            sendstr("Welcome to Julys Hut!");
            //Uart0_Transmit(0x00);
            }
            }

            //-----------------------------------------------------------------------------
            // 端口初始化
            //-----------------------------------------------------------------------------
            //
            // 配置交叉開關(guān)和通用IO
            //
            // P0.4 - UART TX0
            // P0.5 - UART RX0

            void PORT_Init(void)
            {
            P0MDOUT|=0x10 ;
            // 使能 UTX 為推挽輸出
            XBR0=0x01 ;
            // 使能 UART0 占用 P0.4(TXD) 和 P0.5(RXD)
            XBR1=0x40 ;
            //使能交叉開關(guān)
            }

            //-----------------------------------------------------------------------------
            // 系統(tǒng)時(shí)鐘初始化
            //-----------------------------------------------------------------------------
            void SYSCLK_Init(void)
            {
            OSCICN|=0x03 ;
            // 配置內(nèi)部振蕩器的的最大頻率
            RSTSRC=0x04 ;
            // 使能始終丟失檢測(cè)寄存器
            }

            //-----------------------------------------------------------------------------
            // 串口UART0初始化
            //-----------------------------------------------------------------------------
            void UART0_Init(void)
            {
            SCON0=0x10 ;
            if(SYSCLK/BAUDRATE/2/256<1)
            {
            TH1=-(SYSCLK/BAUDRATE/2);
            CKCON&=~0x0B ;
            CKCON|=0x08 ;
            }
            else if(SYSCLK/BAUDRATE/2/256<4)
            {
            TH1=-(SYSCLK/BAUDRATE/2/4);
            CKCON&=~0x0B ;
            CKCON|=0x09 ;
            }
            else if(SYSCLK/BAUDRATE/2/256<12)
            {
            TH1=-(SYSCLK/BAUDRATE/2/12);
            CKCON&=~0x0B ;
            }
            else
            {
            TH1=-(SYSCLK/BAUDRATE/2/48);
            CKCON&=~0x0B ;
            CKCON|=0x02 ;
            }

            TL1=TH1 ;
            TMOD&=~0xf0 ;
            TMOD|=0x20 ;
            TR1=1 ;
            // TI0 = 1;
            }
            //-----------------------------------------------------------
            // 串口UART0中斷
            //-----------------------------------------------------------
            //中斷向量0x0023
            void UATR0_ISR(void)interrupt 4
            {
            //Rx、Tx共用中斷
            //接收中斷
            if(!TI0)
            {
            RI0=0 ;
            temp=SBUF0 ;
            Uart0_Transmit(temp);
            }
            //發(fā)送中斷
            else TI0=0 ;
            }
            //-----------------------------------------------------------
            // 串口UART0發(fā)送
            //-----------------------------------------------------------
            void Uart0_Transmit(unsigned char tmp)
            {
            ES0=0 ;
            //關(guān)UART0中斷
            EA=0 ;
            //關(guān)全局中斷
            SBUF0=tmp ;
            while(TI0==0);
            //TI0=0 ;
            ES0=1 ;
            //開UART0中斷
            EA=1 ;
            //開全局中斷

            }
            //-----------------------------------------------------------
            // 發(fā)送字符串
            //-----------------------------------------------------------
            void sendstr(unsigned char*tmp)
            {
            while(*tmp)
            {
            Uart0_Transmit(*tmp++);
            }
            }



            關(guān)鍵詞: C8051F330串口UART

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉