您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 44 一个小程序编写_UART例子
SunplusSPCE061A微控制器单一功能模块UART程序编写举例说明讲解目的串行通信应用广泛,举例说明SPCE061A与PC机实现串行收发数据结合例子巩固对SPCE061A单一模块编程思路。数据通讯在自动化测量和控制系统中,各台仪表之间需要不断进行各种信息的交换和传输,这种信息的交换和传输是通过仪表的通讯接口,按照一定的协议进行的。通讯接口的主要类型通讯接口主要有五种类型:异步串行通信接口并行通讯接口USB接口现场总线接口以太网接口串行通讯接口串行通信与并行通信相比节省成本,尤其远距离传输时,优势更加明显。现在串行通讯应用越来越广泛。串行数据接口标准:RS-232、RS-422、RS485RS-232标准RS-232是异步串行通信中应用最早,也是目前应用最广泛的串行总线接口之一。RS-232采用负逻辑电平,在干扰小的情况下,一般只采用发送数据、接收数据、地线三根信号线。传输率(波特率)所谓传输率就是指每秒传输多少位,传输率也常叫波特率。国际上规定了一个标准波特率系列为1200、1800、2400、4800、9600、19200、38400、56000、57600、115200bps任务的提出前面介绍了关于串口通讯的基本知识,现在就通过实例介绍应用SPCE061A实现与PC机数据的接收与发送,同时巩固如何对单一模块程序设计。分析SPCE061A可以使用的硬件资源UART模块SPCE061A的UART模块提供了一个全双工标准接口,用于完成SPCE061A与外设之间的串行通讯。借助于IOB口的特殊功能可以完成UART接口的接收发送数据的过程。SPCE061A的UART的数据桢格式startD0D1D2D3D4D5D6stopparityD7启动位停止位奇偶校验位8位数据位U1HIN232CP12345678910111213141516C1+V+C1-C2+C2-V-DOUT2RIN2ROUT2DIN2DIN1ROUT1RIN1DOUT1GNDVCCXTXD1+C30.1uV3VB1SUB-D9594837261+C40.1u+C100.1uXRXD1+C110.1uC5104硬件电路连接图根据硬件电路分析任务硬件电路采用接收数据、发送数据、地线三根信号线实现通讯,可以采用查询的方式实现数据的接收与发送。数据格式的确定,为简单起见采用一位启动位、8位数据位、无奇偶校验位、结束位波特率为115200bpsUART模块寄存器的设置P_UART_Command1寄存器与本次设计所采用的查询无奇偶校验方法无关,写入00H即可P_UART_Command2寄存器设置b7、b6脚为1,允许接收与发送P_UART_BaudScalarLow(写0x00C0)与P_UART_BaudScalarHigh(写0x0000)联合设置波特率,采用115200bps复习单一模块编程共性共性一:程序结构每个单一模块的编程,基本的程序结构是:1、初始状态的设置。2、主循环中检测状态和进行分析。3、清看门狗。初始化模块的状态查询模块的状态处理清看门狗共性初始化IO口、波特率实例可以发送数据?是否接受过数据?发送数据是否有数据接收?接收数据YNYNYN各功能模块汇编程序基本模板与实例比较.definexxxxxxx.public_main;_main:…〔xxx〕=Rx…Loop:……Jmploop.PUBLIC_main;_main:L_UART_INIT:intoff;r1=0x0000[G_RecFlag]=r1;r1=0x0000;[P_INT_Ctrl]=r1;r1=0x0480;[P_IOB_Attrib]=r1;r1=0x0400;[P_IOB_Dir]=r1;r1=0x0000;[P_IOB_Data]=r1;.definexxxxxxx.public_main;_main:…〔xxx〕=Rx…Loop:……Jmploopr1=0x006b;[P_UART_BaudScalarLow]=r1;r1=0x0000;[P_UART_BaudScalarHigh]=r1;r1=0x0000;r4=0x00C0;[P_UART_Command1]=r1;[P_UART_Command2]=r4;.definexxxxxxx.public_main;_main:…〔xxx〕=Rx…Loop:…[P_Watchdog_Clear]=r1Jmploop模版与实例程序对比L_ReSendData:L_Check_TxRDY:r2=[P_UART_Command2];r2&=0x0040;jzL_Check_RxRDY;r1=[G_RecFlag]cmpr1,0x0000jzL_Check_RxRDY;[P_UART_Data]=r4;r1=0x0000[G_RecFlag]=r1;.definexxxxxxx.public_main;_main:…〔xxx〕=Rx…Loop:…[P_Watchdog_Clear]=r1JmploopL_Check_RxRDY:r1=0x0001[P_Watchdog_Clear]=r1r2=[P_UART_Command2];r2&=0x0080;JZL_Check_RxRDY;r4=[P_UART_Data];r1=0x0001[G_RecFlag]=r1;jmpL_ReSendData;模版与实例程序对比总结通过两个实例的讲解,我们对不带中断模块的编程应该比较熟悉了,请大家根据我们提供的程序,自己完成AD、DA、定时器等模块的学习,接下来将讲解带中断模块的编程。凌阳科技教育推广中心竭诚为您服务凌阳科技大学计划网站:凌阳科技大学计划邮箱:E_mail:unsp@sunplus.com.cn凌阳科技大学计划客服中心:Tel:010-62981668-2911凌阳科技大学计划技术支持中心:Tel:010-62981668-2919
本文标题:44 一个小程序编写_UART例子
链接地址:https://www.777doc.com/doc-23420 .html