C8051F330串口UART0示例程序

来源:本站
导读:目前正在解读《C8051F330串口UART0示例程序》的相关信息,《C8051F330串口UART0示例程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《C8051F330串口UART0示例程序》的详细说明。
简介:本文给大家分享了C8051F330串口UART0示例程序。

//****************************************************************************// 功能:C8051F330串口UART0示例程序//****************************************************************************//使用F330,串口为P0.4(TX0),P0.5(RX0);//-----------------------------------------------------------------------------// UART0.c//-----------------------------------------------------------------------------//-----------------------------------------------------------------------------// 所包含的头文件//------------------------------------------------------------------------#include//#include//-----------------------------------------------------------------------------// 常量定义//-----------------------------------------------------------------------------// 系统工作频率#define SYSCLK 24500000// 串口工作波特率#define BAUDRATE 9600//-----------------------------------------------------------------------------// 功能函数//-----------------------------------------------------------------------------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();    // 初始化系统时钟    UART0_Init();    // 串口初始化    EA=1 ;    ES0=1 ;    while(1)    {        delay_ms(1000);        sendstr("Welcome to July's Hut!n");        //Uart0_Transmit(0x00);    }}//-----------------------------------------------------------------------------// 端口初始化//-----------------------------------------------------------------------------//// 配置交叉开关和通用IO//// P0.4 - UART TX0// P0.5 - UART RX0void PORT_Init(void){    P0MDOUT|=0x10 ;    // 使能 UTX 为推挽输出    XBR0=0x01 ;    // 使能 UART0 占用 P0.4(TXD) 和 P0.5(RXD)    XBR1=0x40 ;    //使能交叉开关}//-----------------------------------------------------------------------------// 系统时钟初始化//-----------------------------------------------------------------------------void SYSCLK_Init(void){    OSCICN|=0x03 ;    // 配置内部振荡器的的最大频率    RSTSRC=0x04 ;    // 使能始终丢失检测寄存器}//-----------------------------------------------------------------------------// 串口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中断//-----------------------------------------------------------//中断向量0x0023void UATR0_ISR(void)interrupt 4{    //Rx、Tx共用中断    //接收中断    if(!TI0)    {        RI0=0 ;        temp=SBUF0 ;        Uart0_Transmit(temp);    }    //发送中断    else TI0=0 ;}//-----------------------------------------------------------// 串口UART0发送//-----------------------------------------------------------void Uart0_Transmit(unsigned char tmp){    ES0=0 ;    //关UART0中断    EA=0 ;    //关全局中断    SBUF0=tmp ;    while(TI0==0);    //TI0=0 ;    ES0=1 ;    //开UART0中断    EA=1 ;    //开全局中断   }//-----------------------------------------------------------// 发送字符串//-----------------------------------------------------------void sendstr(unsigned char*tmp){    while(*tmp)    {        Uart0_Transmit(*tmp++);    }} 

提醒:《C8051F330串口UART0示例程序》最后刷新时间 2024-03-14 00:57:58,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《C8051F330串口UART0示例程序》该内容的真实性请自行鉴别。