《2022年串口通信主机程序与从机程序 .pdf》由会员分享,可在线阅读,更多相关《2022年串口通信主机程序与从机程序 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、串口通信主机程序与从机程序串口通信主机程序:#include "config.h" #define UART_BPS 115200 / 定义通讯波特率uint8 const SEND_STRING = "Hello World!" /* * 名称:DelayNS() * 功能:长软件延时* 入口参数: dly 延时参数,值越大,延时越久* 出口参数:无*/ void DelayNS(uint32 dly) uint32 i; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
2、 - - - - - - 第 1 页,共 9 页 - - - - - - - - - for(; dly>0; dly-) for(i=0; i<5000; i+); /* * 名称:UART0_Ini() * 功能:初始化串口0。设置为 8 位数据位, 1 位停止位,无奇偶校验,波特率为115200 * 入口参数:无* 出口参数:无*/ void UART0_Init(void) uint16 Fdiv; U0LCR = 0 x83; / DLAB = 1,可设置波特率Fdiv = (Fpclk / 16) / UART_BPS; / 设置波特率名师资料总结 - - -精品资料欢
3、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - U0DLM = Fdiv / 256; U0DLL = Fdiv % 256; U0LCR = 0 x03; /* * 名称:UART0_SendByte() * 功能:向串口发送字节数据,并等待发送完毕。* 入口参数: data 要发送的数据* 出口参数:无*/ void UART0_SendByte(uint8 data) U0THR = data; / 发送数据while( (U0LSR&0 x40)
4、=0 ); / 等待数据发送完毕 /* * 名称:UART0_SendStr() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - * 功能:向串口发送一字符串* 入口参数: srt 要发送的字符串的指针* 出口参数:无*/ void UART0_SendStr(uint8 const *str) while(1) if( *str = '0' ) break; UART0_SendByte(*str+); / 发
5、送数据 /* * 名称:main() * 功能:向串口 UART0发送字符串 "Hello World!" */ int main(void) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - PINSEL0 = 0 x00000005; / 设置 I/O 连接到 UART0 UART0_Init(); UART0_SendByte('Y'); if( 0 x04=(U0IIR&0 x0
6、F) ) rcv_new = 1; while(U0RBR!='Y'); while(1) UART0_SendStr(SEND_STRING); DelayNS(10); if( 0 x04=(U0IIR&0 x0F) ) rcv_new = 1; while(U0RBR!='T'); return(0); 从机程序#include "config.h" #include "strings.h" 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师
7、精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - uint8 rcv_buf13; / UART0数据接收缓冲区uint8 strings=''Hello World!" volatile uint8 rcv_new; / 接收新数据标志/* * * 名称:Rev_UART0() * 功能:串口 UART0接收。* 入口参数:无* 出口参数:无*/ void Rev_UART0(void) uint8 i; if( 0 x04=(U0IIR&0 x0F) ) rcv_new = 1; / 设置接收到新的数据标名师
8、资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - 志for(i=0; i<13; i+) rcv_bufi = U0RBR; / 读取数据 /* * 名称:SendByte() * 功能:向串口 UART0发送字节数据。* 入口参数: data 要发送的数据* 出口参数:无*/ void SendByte(uint8 data) U0THR = data; / 发送数据 /* * 名称:UART0_Ini() 名师资料总结 -
9、- -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - * 功能:初始化串口0。设置为 8 位数据位, 1 位停止位,无奇偶校验,波特率为115200 * 入口参数:无* 出口参数:无*/ void UART0_Init(void) uint16 Fdiv; U0LCR = 0 x83; / DLAB = 1,可设置波特率Fdiv = (Fpclk / 16) / UART_BPS; / 设置波特率U0DLM = Fdiv / 256; U0DLL =
10、Fdiv % 256; U0LCR = 0 x03; main(void) PINSEL0 = 0 x00000005; / 设置 I/O 连接到 UART0 UART0_Init(); while( 0 x04=(U0IIR&0 x0F) ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - if(U0RBR='Y') UART0_SendByte('Y'); else UART0_SendByte('N'); while(1) Rev_UART0(); if(strcmp(strings,rcv_buf) UART0_SendByte('T'); else UART0_SendByte('F'); rcv_buf=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -