×

8051单片机的UART0串口初始化资料下载

消耗积分:0 | 格式:pdf | 大小:71.58KB | 2021-04-12

分享资料个

1、C8051f的UART0是异步、全双工串口。其波特率发生器规定由定时器1定时器提供。可配置为8位UART或9位UART(多机通讯第九位用于片选作用)。SYSCLK=24.5MHZ(我的板子采用内部晶振频率作为系统时钟) BAUDRATE=115200(波特率)2、初值TH1 Tl1配置由上述公式可计算初值:TH1 = 256-(SYSCLK/BAUDRATE/2)而程序内是TH1 = -(SYSCLK/BAUDRATE/2),这两种是相同的。第一种是以正数的二进制形式保存在计算机内。第二种是负数,取反加1求得补码保存在计算机中。结果是相同的。每当TL1中的值溢出后 TH1存储的重装载值装载到TL1中开始计数。3、初始化程序(以后使用可直接调用此初始化函数)。SYSCLK与BAUDRATE参数修改即可void UART0_Init (void){SCON0 = 0x10; // SCON0: 8-bit variable bit rate// level of STOP bit is// 使能RX接收// ninth bits are zeros// 清除接收和发送中断if (SYSCLK/BAUDRATE/2/256 《 1) {TH1 = -(SYSCLK/BAUDRATE/2);CKCON |= 0x10; // T1M = 1; SCA1:0 = xx} else if (SYSCLK/BAUDRATE/2/256 《 4) {TH1 = -(SYSCLK/BAUDRATE/2/4);CKCON |= 0x01; // T1M = 0; SCA1:0 = 01CKCON &= ~0x12;} else if (SYSCLK/BAUDRATE/2/256 《 12) {TH1 = -(SYSCLK/BAUDRATE/2/12);CKCON &= ~0x13; // T1M = 0; SCA1:0 = 00} else {TH1 = -(SYSCLK/BAUDRATE/2/48);CKCON |= 0x02; // T1M = 0; SCA1:0 = 10CKCON &= ~0x11;}TL1 = 0xff; // 定时器1加1 TL1溢出 此时TH1中的重装载值加载 //到TL1中TMOD |= 0x20; //定时器1设置为8位自动重装载模式TMOD &= ~0xD0;TR1 = 1; //开启定时器1TI0 = 1; // 发送结束 此发送中断位置1}(mbbeetchina)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !