upD79F8513A(NEC)或upD78F0511A(NEC)之串口0中断发送和接收数据
来源:互联网 发布:宾得k3ii知乎 编辑:程序博客网 时间:2024/06/06 04:30
本篇博文最后修改时间:2017年10月10日 18:49。
一、简介
本文以upD79F8513A(NEC)或upD78F0511A(NEC)编程为例,介绍upD79F8513A(NEC)或upD78F0511A(NEC)之串口0接收发送数据。
二、实验平台
电脑平台:Windows7 64位旗舰
编译软件:IAR
硬件平台:upD79F8513A(NEC)或upD78F0511A(NEC)
三、版权声明
博主:_懵懂
声明:此博客仅供参考不做任何商业用途,最终解释权归原博主所有。
原文地址:http://blog.csdn.NET/qq_18842031
QQ:951795235
E-mail :951795235@qq.com
懵懂之MCU交流群:136384801
四、实验前提
1、在进行本文步骤前,请先安装IAR4.70.1.50025版本;准备好upD79F8513A(NEC)或upD78F0511A(NEC)硬件平台。
五、基础知识
暂无
六、源码地址
暂无
七、关联文章
系统时钟链接:http://blog.csdn.net/qq_18842031/article/details/77984026
电源检测链接:http://blog.csdn.net/qq_18842031/article/details/78185589
八、实验内容
1.初始化串口0
/********************************************************************** @fn Init_Uart0()** @brief 初始化串口 偶校验 8位 停止位 1 起始位 1 ASIM0=0x1D; 波特率:4800 BRGC0=0xDA 波特率:9600 BRGC0=0xCD ** @param None.** @return None.********************************************************************/void Init_Uart0(void){ PM1 |= 0x02; P1 |= 0x01; PM1 &= ~0x01; ASIM0 = 0x01; BRGC0 = 0xCD; // K 4.9152M 16 0xD0 \ 8M 26 0xDA ASIM0 = 0x05; // 无校验位 8位 停止1位 POWER0= 1; //允许内部时钟操作 W5NOP();W5NOP();W5NOP();W5NOP();W5NOP(); STIF0 = 0; TXE0 = 1; //允许发送 SRIF0 = 0; RXE0 = 1; //允许接收 SRMK0 = 0; //中断屏蔽标志 1:屏蔽中断,0:允许中断 STMK0 = 1; W5NOP();}
2.单字节发送函数
/********************************************************************** @fn Send_UartByte0()** @brief 串口0中断发送数据位** @param data.** @return None.********************************************************************/static void Send_UartByte0(uint8 data){ TXS0 = data; //}
3.中断发送函数
/********************************************************************** @fn Set_InterruptUart0Str()** @brief 串口中断发送** @param data len.** @return None.********************************************************************/void Set_InterruptUart0Str(unsigned char *data,unsigned char len){ uint8 i; TxdLen0 = len; //记录发送数据长度 for(i = 0; i < len; i++) //记录数据 { TxdData0[i] = data[1+i]; } RXE0 = 0; //禁止接收数据 SRMK0 = 1; TXE0 = 1; //允许发送数据 STMK0 = 0; P1 |= 0x01; //发送引脚拉高电频 DeleyMs(1); TXS0 = data[0]; //发送一个数据头 启动发送}
4.编写主函数
#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个空指令*/unsigned char TxdData0[200];unsigned char TxdLen0;void main(void){ Init_OST(); /*初始化系统时钟*/ Init_LVI(); /*低电压检测*/ Init_Uart0(); /*初始化串口0*/ Send_UartByte0(5);/*查询发送*/ Set_InterruptUart0Str("Hi",2);/*中断发送*/ while(1) { WDTE = 0xAC; /*clear and start watchdog timer */ }}
5.编写中断发送服务
/********************************************************************** @fn INT_ST0()** @brief 串口0发送中断** @param 隐输入.** @return None.********************************************************************/#pragma vector=INTST0_vect__interrupt void INT_ST0(void){ static uint8 count; Send_UartByte0(TxdData0[count++]); if(count > TxdLen0) //发送数据的长度和需要发送数据的长度相等 就关闭发送中断 { count = 0; VOID memset(TxdData0,0,TxdLen0); TxdLen0 = 0; RXE0 = 1; SRMK0 = 0; TXE0 = 0; //禁止 发送 STMK0 = 1; P1 &= ~0x01; } return; }
6.编写中断接收服务函数
/********************************************************************** @fn INT_SR0()** @brief 串口0接收中断** @param None.** @return 隐输出.********************************************************************/#pragma vector=INTSR0_vect__interrupt void INT_SR0(void){ uint8 byte;//当次数据 if(ASIS0 != 0) byte = ASIS0; byte = RXB0;}
阅读全文
0 0
- upD79F8513A(NEC)或upD78F0511A(NEC)之串口0中断发送和接收数据
- upD79F8513A(NEC)或upD78F0511A(NEC)之串口6
- upD79F8513A(NEC)或upD78F0511A(NEC)之定时器H0
- upD79F8513A(NEC)或upD78F0511A(NEC)之定时器TM50
- upD79F8513A(NEC)或upD78F0511A(NEC)之电源电压检测
- upD79F8513A(NEC)或upD78F0511A(NEC)之AD采样
- upD79F8513A(NEC)或upD78F0511A(NEC)之初始化外部8M晶振做系统时钟
- NEC
- STM32串口中断接收和中断发送
- C51串口中断接收和发送程序
- 红外协议之NEC协议
- 红外协议之NEC协议
- 红外协议之NEC协议
- STM8S003F使用IO口模拟串口(三)使用中断方式发送和接收数据
- dsPIC33F串口通讯中断接收发送数据-UART
- Stm32RS232串口通信——中断接收发送数据
- Stm32RS485串口通信——中断接收发送数据
- Stm32RS232串口通信——中断接收发送数据
- 动画
- NOI2005 维护数列
- yeoman一键生成前端项目代码
- 更新hosts,sudo:无法解析主机,rcnscd: command not found
- Cookie类基本的使用
- upD79F8513A(NEC)或upD78F0511A(NEC)之串口0中断发送和接收数据
- this关键字
- C++ 学习笔记
- 算法竞赛入门经典学习笔记
- Java异常Error和Exception的区别
- 右键菜单栏添加notepad++选项
- LeetCode75 Sort Colors
- hdu1130 How Many Trees?(Catalan+高精)
- 数据结构|创建学生成绩的间接寻址(实验2.5)