




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.C8051F340串口学习笔记UART0 是一个异步、全双工串口,它提供标准 8051 串行口的方式 1 和方式 3。UART0具有增强的波特率发生器电路,有多个时钟源可用于产生标准波特率。接收数据缓冲机制允许 UART0 在软件尚未读取前一个数据字节的情况下开始接收第二个输入数据字节。UART0 有两个相关的特殊功能寄存器:串行控制寄存器(SCON0)和串行数据缓冲器(SBUF0)。写 SBUF0时自动访问发送寄存器;读 SBUF0时自动访问接收寄存器,不可能从发送数据寄存器中读数据。如果 UART0 中断被允许,则每次发送完成TI0 位被置1或接收到数据字节RI0 位被置1时将产生中断。当 CPU转向中断服务程序时硬件不清除 UART0 中断标志。中断标志必须用软件清除。UART0 波特率由定时器 1 工作在8 位自动重装载方式产生,定时器 1 应被配置为方式 2,即 8 位自动重装载方式,定时器 1 的时钟可以在 6个时钟源中选择:SYSCLK、SYSCLK/4、SYSCLK/12、SYSCLK/48、外部振荡器时钟/8 和外部输入 T1。其中T1CLK是定时器 1 的时钟频率,T1H是定时器 1 的高字节(重载值)UART0 提供标准的异步、全双工通信,其工作方式(8 位或 9 位)通过 S0MODE来选择8 位 UART每个数据字节共使用 10 位:一个起始位、8 个数据位(LSB 在先)和一个停止位,软件向 SBUF0 寄存器写入一个字节时开始数据发送。在发送结束时中断标志 TI0被置1UART1(仅C8051F340/1/4/5有)UART1的使用与UART0基本大致相同,但是。UART1 包含一个由 16 位定时器和可编程预分频器构成的专用波特率发生器,能产生很宽范围的波特率,有多个时钟源可用于产生标准波特率。UART1 有六个相关的特殊功能寄存器。三个用于波特率发生器(SBCON1、SBRLH1 和SBRLL1),两个用于数据格式、控制和状态功能(SCON1 和 SMOD1),一个用于发送和接收数据(SBUF1)。使用 UART1 时,波特率发生器必须被使能。寄存器 SBRLH1 和 SBRLL1 保持该专用定时器的 16 位重载值,对于可靠的 UART 操作,建议不要将 UART 波特率配置为大于 SYSCLK/16。C8051F330串口UART0示例程序 /使用F340,串口为P0.4(TX0),P0.5(RX0);#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;j0;j-);void delay_ms(unsigned int i) for(;i0;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 Julys Hut!n); Uart0_Transmit(032); /发送空格 /-/ 端口初始化/-void PORT_Init(void) P0MDOUT | =0x10 ;/ 使能 UTX 为推挽输出 XBR0=0x01 ;/ 使能 UART0 占用 P0.4(TXD) 和 P0.5(RXD) XBR1=0x40 ;/使能交叉开关XBR2=0x00 ; /禁止UART1/-/ 系统时钟初始化/-void SYSCLK_Init(void) OSCICN|=0x03 ; / 配置内部振荡器的的最大频率 RSTSRC=0x04 ;/ 使能始终丢失检测寄存器/-/ 串口UART0初始化/-void UART0_Init(void) SCON0=0x10 ; if(SYSCLK/BAUDRATE/2/2561) TH1=-(SYSCLK/BAUDRATE/2); CKCON&=0x0B ; CKCON|=0x08 ; else if(SYSCLK/BAUDRATE/2/2564) TH1=-(SYSCLK/BAUDRATE/2/4); CKCON&=0x0B ; CKCON|=0x09 ; else if(SYSCLK/BAUDRATE/2/25612) 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+); 本程序是通过F340的uart0与PC进行串口通讯的例程,具体实现为当F340收到从PC传来的数据后将数据原样回发给PC机 ,端口为RXP0.5,TXP0.4#include#define uchar unsigned char#define uint unsigned int/*端口初始化函数*/void PORT_Init (void) XBR0 = 0x01; / I/O交叉开关寄存器0,UART TX0, RX0 连到端口引脚 P0.4 和P0.5 XBR1 = 0x40; /端口交叉开关使能 P0MDOUT = 0x10; /P0.4为推挽输出,其他的为漏极开路输出/*UART0初始化函数*/void UART0_Init (void) SCON0 |= 0x10; /方式0,8位的uart 接,收允许 CKCON = 0x01; /CKCON是时钟控制寄存器 TH1 = 0x64; /波特率为9600 TL1 = TH1; TMOD = 0x20; TR1 = 1; /定时器1运行控制,定时器1允许 TI0 = 1; /中断1类型选择,INT1为边沿触发 /*主函数*/void main() char g; PCA0MD&= 0x40;/关闭看门狗 OSCICN|= 0x03;/P126 内部高频振荡器控制寄存器停止运行 PORT_Init();/端口初始化 UART0_Init();/UART0初始化 while(1) while(RI0=0); /接收 g=SBUF0; RI0=0;/手动清零 if(g!=0) SBUF0=g; while(TI0=0); /发送 TI0=0; g=0; 另外附送发送和接受子函数void Sendchar(unsigned char x ) /发送字符的子函数 TI0=0; SBUF0=x; while(TI0=0); /发送void Getchar()RI0=0; buffer=SBUF0;while(RI0=0); /接收 /接收字符的子函数void sendstr(unsigned char*tmp) /发送字符串的子函数 while(*tmp) Uart0_Transmit(*tmp+); 注:本程序全部来自于互联网,非本人所写,严禁用于商业用途,本人不承担法律责任下面说一下本人经常使用的C8051F340端口、时钟、计数器、串口等配置的软件及方法使用Configuration Wizard进行串口的配置1、 选择C8051F340这个单片机,再依次选择外设串口进入以下界面我们配置串口0, 选择8位,Enable串口接收,再配置串口中断下面是我配置好的串口 子程序 时钟选用外部时钟11。0592MHz,UART0工作在 8位模式,8定时器自动重载,波特率,38400,并且使能串口中断,若上拉禁止#include C8051F340.h/ Peripheral specific initialization functions,/ Called from the Init_Device() functionvoid Timer_Init() TMOD = 0x20; CKCON = 0x08; TH1 = 0x70;void UART_Init() SCON0 = 0x10;void Port_IO_Init() / P0.0 - Unassigned, Open-Drain, Digital / P0.1 - Unassigned, Open-Drain, Digital / P0.2 - Unassigned, Open-Drain, Digital / P0.3 - Unassigned, Open-Drain, Digital / P0.4 - TX0 (UART0), Open-Drain, Digital / P0.5 - RX0 (UART0), Open-Drain, Digital / P0.6 - Skipped, Push-Pull, Analog / P0.7 - Skipped, Push-Pull, Analog / P1.0 - Unassigned, Open-Drain, Digital / P1.1 - Unassigned, Open-Drain, Digital / P1.2 - Unassigned, Open-Drain, Digital / P1.3 - Unassigned, Open-Drain, Digital / P1.4 - Unassigned, Open-Drain, Digital / P1.5 - Unassigned, Open-Drain, Digital / P1.6 - Unassigned, Open-Drain, Digital / P1.7 - Unassigned, Open-Drain, Digital / P2.0 - Unassigned, Open-Drain, Digital / P2.1 - Unassigned, Open-Drain, Digital / P2.2 - Unassigned, Open-Drain, Digital / P2.3 - Unassigned, Open-Drain, Digital / P2.4 - Unassigned, Open-Drain, Digital / P2.5 - Unassigned, Open-Drain, Digital / P2.6 - Unassigned, Open-Drain, Digital / P2.7 - Unassigned, Open-Drain, Digital / P3.0 - Unassigned, Open-Drain, Digital / P3.1 - Unassigned, Open-Drain, Digital / P3.2 - Unassigned, Open-Drain, Digital / P3.3 - Unassigned, Open-Drain, Digital / P3.4 - Unassigned, Open-Drain, Digital / P3.5 - Unassigned, Open-Drain, Digital / P3.6 - Unassigned, Open-Drain, Digital / P3.7 - Unassigned, Open-Drain, Digital P0MDIN = 0x3F; P0MDOUT = 0xC0; P0SKIP = 0xC0; XBR0 = 0x01; XBR1 = 0xC0;void Oscillator_Init() /使用外部晶振对其进行初始化 int i = 0; OSCXCN = 0x67; for (i = 0; i 3000; i+); / Wait 1ms fo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家庭医生巡诊工作总结
- 河南省许昌市禹州市2024-2025学年八年级英语学期6月份期末测试题(含答案无听力音频及原文)
- 北师大版四年级上册数学第五单元 方向与位置 检测题(无答案)
- 2025年甘肃省陇南市西和县中考物理一模试卷(含答案)
- 化妆品偏好调查
- 餐饮行业消费者需求变化与品牌定位研究
- 汉字书法课件模板附草书
- 2025届毕业生就业协议书签订注意事项
- 汉字书法课件楷书字
- 汇报课件模板
- 高值耗材点评制度
- 防台防汛培训课件教学
- 2024年施工员题库含完整答案(必刷)
- 道路施工流程讲解
- 有限合伙企业合伙协议
- 保险资管合规风险管理-深度研究
- 2022教师民族团结培训
- 《慢阻肺健康大课堂》课件
- 2024人教版英语七年级下册《Unit 3 Keep Fit How do we keep fit》大单元整体教学设计2022课标
- 中国高血压防治指南(2024年修订版)
- 中广核人才测评题库
评论
0/150
提交评论