采用MSP430地址位多机协议通讯程序

发布者:bonbono最新更新时间:2021-06-15 来源: eepw关键字:MSP430  地址位 手机看文章 扫描二维码
随时随地手机看文章

/*
采用MSP430地址位多机协议通讯程序
微控论坛原创作品 作者:tianxy
各位同仁,响应版主号召,现就"爱好者"同志提出的<<关于UART的地址位多机通讯>>做出本人的见解.希望大家多多指点.
在 430串口发送格式中,我们可以看到.一个字节由1个起始位+7位或8位数据位+校验位+1位或2位停止组成.如果要使用
430的地址位多机协议.主要是将UxCTL寄存器中的MM位置1,同时将UxRCTL寄存器中的URXWIE置1.
例程如下:
上位机先用Mark校验方式.格式为:1个起始位+8位数据位+1位校验位+1位停止位.
发送5个字节:0x02(地址号) 0x05(命令字节) 0x00(预留字节) 0x07(累加和校验低字节) 0x00(累加和校验高字节)
单片机接收程序如下,同时将收到的数据再返回给上位机.
程序中所使用的变量.请自行定义.有标注说明.

Microcontrol CODE
*/
void COM_Init(void)
{
//---------------------------------串口初始化函数
U0CTL &= ~SWRST;
U0TCTL&=~TXWAKE;
U0CTL|=CHAR+MM;//8bit+地址位多机协议
IFG1&=~(URXIFG0+UTXIFG0);//接收,发送中断标志清零
ME1|=(UTXE0+URXE0); //使能接收和发送中断
U0TCTL|=SSEL0+SSEL1; //时钟选择--MCLK
UBR10=0x04;//6M/4800
UBR00=0xe2;
UMCTL0=0x00;//波特率调整控制
IE1|=URXIE0;//使能接收中断
URCTL0|=URXWIE;//只有收到地址字符时才永许中断
}

#pragma vector=USART0RX_VECTOR//接收中断处理
__interrupt void USART0RX(void)
{
// addr为本机地址号
unsigned char date,date1;
_EINT();
if((URCTL0&0x21)==BIT0)//RXERR
{
//出现错误且该错误非溢出引起
URCTL0=URXWIE;//只有收到地址字符时才允许中断
ought_receive=0;//应接收个数变量
mling_flag=0; //命令标志变量
order=0;//命令变量
date=RXBUF0;
}
else
{
date=RXBUF0;
URCTL0&=~RXERR;//接收错误清零
if(URCTL0&URXWIE)//接受到地址位否?
{
if(date==addr)
{
URCTL0&=~URXWIE;
jieshou_ljh=date;
}

order=0;
ought_receive=0;
mling_flag=0;
}
else//接受命令、数据
{
date1=date;
if((mling_flag&0x01)==0x00)
{
order=date;
jieshou_ljh+=date;//计算累加和
switch(date)
{
case 0x05://命令
ought_receive=3;//除命令字节外还要接收3个字节
fmaddr=0;
mling_flag|=0x01;//已收到命令字节,下一字节应为数据
break;

default:
URCTL0=URXWIE;
ought_receive=0;
order=0;
mling_flag=0;
jieshou_ljh=0;
P2OUT&=~BIT7;
break;
}
}
else
{
if(ought_receive==0)//接收出错
{
URCTL0|=URXWIE;//只有收到地址字符时才永许中断
date1=RXBUF0;
P2OUT&=~BIT7;//RS485 控制信号
jieshou_ljh=0;
order=0;
mling_flag=0;
}
else
{
if(ought_receive==2)//收到累加和的低位
{
ought_receive=1;
txy=date;
}
else if(ought_receive==1)//收到累加和的高位,表示接收完毕,可以处理并发送数据
{
P2OUT|=BIT7;//RS485 控制信号
ought_receive=0;
date1=(unsigned char)txy;//计算累加和.
txy=(unsigned int)date;
txy<<=8;
txy|=date1;
_NOP();
if(jieshou_ljh==txy)
{
IE1&=~URXIE0;//关闭接收中断
ME1|=UTXE0;//USART0允许发送数据
UTCTL0|=TXWAKE;//USART0发送地址位
ME1|=UTXE0;//USART0允许发送
IFG1&=~(UTXIFG0+URXIFG0);
TXBUF0=addr;//--------------------------------------------------------地址
while((UTCTL0&BIT0)==0);//当发送空时,TXEPT=1
TXBUF0=order;//--------------------------------------------------------命令
while((UTCTL0&BIT0)==0);//当发送空时,TXEPT=1
TXBUF0=0x00;//--------------------------------------------------------预留
while((UTCTL0&BIT0)==0);//当发送空时,TXEPT=1
TXBUF0=0x07;//--------------------------------------------------------累加和低
while((UTCTL0&BIT0)==0);//当发送空时,TXEPT=1
TXBUF0=0x00;//--------------------------------------------------------累加和高
while((UTCTL0&BIT0)==0);//当发送空时,TXEPT=1
ME1&=~UTXE0;//开始下一次数据帧接收
ME1|=URXE0;
IE1&=~(UTXIE0+URXIE0);
IFG1&=~(UTXIFG0+URXIFG0);
ought_receive=0;
jieshou_ljh=0;
URCTL0=URXWIE;
IE1|=URXIE0;
mling_flag=0;
P2OUT&=~BIT7;//转为收
}
}
else if(ought_receive>2)
{
ought_receive--;
jieshou_ljh+=date;//计算累加和.
receive_buf[fmaddr]=date;//数据存放数组
fmaddr++;
}
}
}
}
}
}

关键字:MSP430  地址位 引用地址:采用MSP430地址位多机协议通讯程序

上一篇:关于MSP430单片机的大数组初始化
下一篇:MSP430 SPI接口(模式)通信

推荐阅读最新更新时间:2024-11-08 11:11

基于MSP430FW427的无磁水表设计方案
  1 MSP430FW42x单片机介绍   MSP430FW42x系列单片机是TI公司针对电子式流量与旋转运动检测最新开发的专用MCU芯片,它将超低功耗MCU、旋转扫描接口(SCAN IF)和液晶显示LCD驱动模块完美地结合在一起。该器件的超低功耗结构和流量检测模块不仅延长了电池的寿命,同时还提高了仪表的精度与性能。MSP430FW42x的典型应用包括热量仪表、热水和冷水仪表、气体仪表和工业流量计、风力计以及其他旋转检测应用。   2 流量测量的原理   2.1 基本原理   一个由叶轮或螺旋齿轮构成的机械装置把流体流动转换为转动,这种转换能够实现对流体流量的测量。   把一个谐振回路中的电感置于叶轮的上方可以检测到叶轮
[单片机]
基于<font color='red'>MSP430</font>FW427的无磁水表设计方案
MSP430单片的多功能复费率三相电能表
1 引言 随着国民经济的发展,企业和个人的用电量大幅提高。现在用户的用电时间比较集中,以致电力系统的负荷曲线变化很大。为了调整负荷曲线,充分利用发、供电设备容量,需要实现电价分时计费。复费率电能表就是按照高峰、低谷时间分别记录用电量,以便按不同的价格收取电费,鼓励用户主动采取避峰填谷的措施,以利于供电、用电双方。同时具有GPRS远程抄表、微机集中抄表、停电抄表、防盗电、计量有功无功电能和测量需量等功能的多功能电表可以代替几块表的功能,既节约了资金又减少了设备占用的面积,而且还降低了抄表的成本。本文基于TI公司的MSP430F449高性能单片机给出了一个多功能复费率三相电能表的解决方案。 2 系统总体结构和功能说明 整个系统分为两大
[单片机]
<font color='red'>MSP430</font>单片<font color='red'>机</font>的多功能复费率三相电能表
MSP430开发总结
1.#i nclude 指要在编辑器设定目录下,#i nclude 指的是在当前工程目录下。 2.要调用另一个文件中的函数,要把这个函数文件放到当前工程目录下,并且在工程中添加此文件。 3.命名中不能有-,比如:byq-ee会认为是错误的,要用下划线。 4.用IAR软件仿真时,可以加入变量,如果是查看I/O信息只需加入PXIN,PXOUT即可。 5.IAR在处理字符时,要注意,是字符处理结尾标志,他和其他编辑软件是不同的。比如我们长用字符处理回 自动在结尾处加,但IAR有些是不加的,这就要十分注意。 6.如果只用到LFX1的低速时钟,9600bit/s传输的话,接收会出现问题,原因是误差太大,可以设置到4800以下。 7.在写FLA
[单片机]
MSP430F5529/G2553单片频率设置程序
MSP430F5529/G2553单片机的频率设置c语言程序: #include "msp430F5529.h" #define P15_H (P1IN & BIT5); #define P15_L (P1OUT & (~BIT5)); int tt=0,temp,kk,i; void delay(int ns) { int kk; while(ns--) for(kk=0;kk 120;kk++); } //******A/D转换函数设置*****// void adc1() { P1SEL |=BIT6; //转换模拟信号从P1.6输入,内部集成了转换模块 ADC12CTL0 =
[单片机]
蓝牙和MSP430音频信宿设计
描述 TI 的蓝牙 + MSP430 音频散热器参考设计可供客户用于创建各种低端、低功耗音频解决方案的应用。一些可能的应用 - 玩具、低端蓝牙扬声器、音频播放配件。此参考设计是一种经济实惠的音频实施方案,通过参考其提供的完整设计文件,您可以将重心转移到应用和最终产品开发工作上。此参考设计支持的软件包括 Stonestreet One Bluetopia 蓝牙堆栈(经过认证且免专利费)。 特性 凭借最低成本、最低功耗的 MSP430F5229 实现蓝牙音频功能(SBC 编码/解码) 设计中将音频处理任务从 MCU 转移到蓝牙器件,从而实现低功耗音频 这种经济高效的低端无线音频解决方案,采用 4 层布局和 QFN 封装 此解决方案
[单片机]
蓝牙和<font color='red'>MSP430</font>音频信宿设计
一种太阳能报警器系统设计
引言 我国是世界上受自然灾害影响最为严重的国家之一,近年来由于滥砍滥伐严重,自然资源过度开采,造成地质灾害和自然灾害发生的频率增多,破坏程度也越来越严重,2008年的四川汶川大地震、2010年的贵州玉树地震都造成了严重的人员死亡和经济损失,还有各地频发的各种泥石流、山体滑坡和水灾等都造成了不同程度的破坏,随时威胁着人民的生命财产安全。每年国家在防灾、抗灾和救灾方面都要花费大量的人力物力。如果能在灾害监测和预警方面下大力气,做到准确预测灾害的来临,灾前做好充分的准备工作,可以将灾害所造成的人员伤亡和经济损失减到最低,也为国家节省大量的救灾资金。 太阳能防空防灾电声警报器为各自独立的功能部件用积木形式集成安装在可移动的防水机箱内外
[单片机]
一种太阳能报警器系统设计
MSP430矩阵式按钮驱动程序
#include msp430x14x.h unsigned char LineScan ={0xef,0xdf,0xbf,0x7f}; //列值列举 void ADD() { P4OUT+=1; } void SUB() { P4OUT-=1; } unsigned int key_check(void) //检测是否有按键按下 { unsigned char temp; P1DIR=0xf0; //定义P1.4~P1.7为输出 temp=P1IN & 0x0f; if(temp!=0x0f) return 1; else return 0; } unsig
[单片机]
MSP430系统应用结构设计与选型
   1 MSP430简介   MSP430是TI公司推出的16位单片机系列产品,在电池供电的低功耗应用中具有独特的优势。其工作电压为1.8~3.6 V,正常工作时功耗可控制在200μA左右,低功耗模式可实现2μA甚至O.1μA的低功耗。MSP430系列单片机作为性能优异的MCU在中国已经得到了广泛的应用。MSP430具有高集成度,通常在单个芯片上集成了12位的A/D转换器、比较器、多个定时器,以及片内USART、看门狗、片内DCO等。一般单片就可满足大多数的应用需要。   MSP430单片机的程序存储器是Flash存储器,并且支持JTAG在线编程,可以方便地实现程序的下载、仿真、调试和升级。   目前整合性最好的MSP43
[安防电子]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved