本篇博文最后修改时间:2017年10月09日 18:40。
一、简介
本文以upD79F8513A(NEC)或upD78F0511A(NEC)编程为例,介绍upD79F8513A(NEC)或upD78F0511A(NEC)之串口6接收发送数据。
二、实验平台
电脑平台:Windows7 64位旗舰
编译软件:IAR
硬件平台:upD79F8513A(NEC)或upD78F0511A(NEC)
三、版权声明
博主:_懵懂
声明:此博客仅供参考不做任何商业用途,最终解释权归原博主所有。
原文地址:http://blog.csdn.NET/qq_18842031
懵懂之MCU交流群:136384801
四、实验前提
1、在进行本文步骤前,请先安装IAR4.70.1.50025版本;准备好upD79F8513A(NEC)或upD78F0511A(NEC)硬件平台。
五、基础知识
暂无
六、源码地址
暂无
七、关联文章
系统时钟链接:http://blog.youkuaiyun.com/qq_18842031/article/details/77984026
电源检测链接:http://blog.youkuaiyun.com/qq_18842031/article/details/78185589
八、实验内容
1.初始化串口6
/*********************************************************************
* @fn Init_Uart6()
*
* @brief 初始化串口 偶校验 8位 停止位 1 起始位 1 ASIM0=0x1D; 波特率:2400 BRGC6=26 CKSR6=6
*
* @param None.
*
* @return None.
********************************************************************/
void Init_Uart6(void)
{
PM1 |= 0x10;
P1 |= 0x08;
PM1 &= ~0x08;
ASIM6=0x01; //if erro do INTSR6
BRGC6=26; //
CKSR6=0x06; //fx 1/2^6=1/64
ASIM6=0x05; //if erro do INTSR6 0x1D
ASICL6=0x02; //02
POWER6=1;
W5NOP();W5NOP();W5NOP();W5NOP();W5NOP();
STIF6=0;
TXE6 =1;
SRIF6=0;
RXE6 =1;
SRMK6=0;
STMK6=1;
W5NOP();W5NOP();W5NOP();W5NOP();W5NOP();/* wait 5us 等待 2个 BRGC6时钟 */
}
2.编写主函数
#include <io78f0511_44.h>
#include <intrinsics.h>
#define DI() __disable_interrupt() /*关中断*/
#define EI() __enable_interrupt() /*开中断*/
#define NOP() __no_operation() /*空指令*/
#define W5NOP() NOP();NOP();NOP();NOP();NOP() /*5个空指令*/
void main(void)
{
Init_OST(); /*初始化系统时钟*/
Init_LVI(); /*低电压检测*/
Init_Uart6(); /*初始化串口6*/
while(1)
{
WDTE = 0xAC; /*clear and start watchdog timer */
}
}
3.编写中断服务函数实现回环
#pragma vector=INTSR6_vect
__interrupt void INT_SR6(void)
{
uint8 rxb6 = 0;
rxb6 = RXB6;
TXS6 = rxb6;
}