首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
» [求助]单片机多机通讯问题
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
[求助]单片机多机通讯问题
发短消息
加为好友
夜舞火
当前离线
UID
139597
帖子
2
精华
0
积分
109
阅读权限
20
在线时间
0 小时
注册时间
2006-5-11
最后登录
2006-5-12
注册会员
UID
139597
性别
男
1
#
打印
字体大小:
t
T
夜舞火
发表于 2006-5-12 10:13
|
只看该作者
[求助]单片机多机通讯问题
单片机
,
通讯
,
求助
求助,多机通讯问题
现在我用两块msp4301471进行串口通讯,可是能检测到数据得发送,却接收不到,不知道是程序得原因还是电路得原因呢?
程序如下:
发送:#include <msp430x14x.h>
void Init(void) ; //声明UART初始化函数
char Data[8]={0x12,0x13,0x03,0x13,0x01,0x10,0x11,0x02};
unsigned char count=0;
void main(void)
{
unsigned int i;
WDTCTL=WDTPW+WDTHOLD; //关闭看门狗
Init(); //UART初始化
while(1)
{
UTCTL0 |=SSEL1;
TXBUF1=0X01; //向缓冲区写入地址字符
while ((UTCTL0&0x01)==0); //查询等待一次发送完毕
UTCTL0&=~TXWAKE;
for (i=0;i<=8;i++) //循环发送字符串
{
U0TXBUF=Data
;
while((UTCTL0&0x01)==0);
}
}
}
void Init(void)
{
UCTL0 =CHAR+PENA+SWRST+MM; //8位数据位,1位停止位,地址位模式
UBR00 =0X09;
UBR10 =0X00;
UMCTL0=0X4A;
UTCTL0=0X45; //8MHZ,bps is 115200
UCTL0 &= ~SWRST;
ME1 |=UTXE0 + URXE0 ; //UATT send ,接收允许
P3SEL |=0x30; //p3.4,p3.5由USART发送模块占用
P3DIR |=0x10; //p3.4输出
}
接收:
#include <msp430x14x.h>
#define ADRESS 0X01
#define USART_SEL P3SEL
#define UTXD0 BIT4
#define URXD0 BIT5
void Init(void); //声明UART初始化函数
unsigned char Data[20]; //数据缓冲区
unsigned char Buffer[20];
unsigned char i=0;
unsigned char j;
unsigned char count;
unsigned char flag=0;
void main(viod)
{
WDTCTL=WDTPW+WDTHOLD; //关闭看门狗
 
5DIR &= ~BIT5;
 
5DIR |= BIT0;
Init(); //UART初始化
_EINT(); //通用中断允许
while(1) ; //主循环
}
#pragma vector= UART0RX_VECTOR
__interrupt void Uart0rx()
{
if ((URCTL0 & URXWIE) ==URXWIE) //接收为地址方式时,等待正确地址出现
{
if (U0RXBUF==ADRESS) //地址正确,改变接收数据方式,准备接收
{
URCTL0 &=~URXWIE;
count=0;
}
else
{
URCTL0 |= URXWIE; //不是本机地址,则以后接收到数据不进入中断
}
}
else //接收为数据方式时
{
Data[count]=U0RXBUF; //数据存入Data数组中
if (Data[count++]==0) //是否到达末尾
{
URCTL0 |=URXWIE; //到达末尾,改变接收为地址方式
for(j=0;j<count;j++)Buffer[j]=Data[j]; //复制字符串
}
}
}
void Init (void)
{
USART_SEL |= UTXD0+URXD0; //设置管教为第二功能
UCTL0 =CHAR+PENA+SWRST+MM; //SWRST复位,USART允许
//8位数据位,1位停止位,地址位模式
URCTL0 |=URXWIE; //只有地址字符使URXIFG复位
UBR00=0X09;
UBR10=0X00;
UMCTL0=0X4A; //使用8Mhz晶振时,波特率为115200bps
UTCTL0=SSEL0; //选定ACLK为时钟源
UCTL0 &= ~SWRST;
ME1 |=UTXE0 +URXE0; //UART0发送及接收模块占用
IE1 |=URXIE0; //使能USART0 RX中断
 
3SEL |=0X30; //p3.4、p3.5被UART1发送模块占用
 
3DIR |=0X10; //p3.4输出,p3.5输入
}
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议