4419|4

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

为何单步调试时正确,但是直接执行(点go)时错误呢? [复制链接]

郁闷啊……一天又结束了……
单步时我用串口调试助手向430发1时执行while里边的语句,p2.0输出为高,p1.0和p1.1上的发光二极管的状态也变了,但是直接运行时就错了,也就是发送1时没有上面的现象,这是为啥呢?
谢谢
程序如下:
#include "msp430x16x.h"
void Init_Clock() {
unsigned char i;
BCSCTL1=0x00;//XT2--ON
do {
IFG1&=~OFIFG;
for(i=0;i<2;i++);
}while((IFG1&OFIFG)==OFIFG);
BCSCTL2=SELM1+SELS;//XT2--SMCLK,XT2--MCLK
}

void Init_Port() {
P1SEL=0;
P2SEL=0;
P2DIR=BIT0;
P2OUT&=~BIT0;
P5DIR=BIT5; //配置LED
P5OUT=BIT5;
P1DIR=BIT0+BIT1;
P1OUT&=~BIT0;
P1OUT|=BIT1;
}

void Init_Urat1() {
U1BR0=0x22;//4M--SMCLK 波特率115200
U1BR1=0x00;
U1MCTL=0xed;
U1CTL=CHAR;//数据宽度8bit
U1TCTL=SSEL1;
ME2=URXE1+UTXE1;//使能接收与发送
P3SEL=BIT6+BIT7;//使能TXD与RXD引脚
P3DIR=BIT6;//TXD输出
}

void Send(int val) {
U1TXBUF=val;//写数据
while(!(IFG2&UTXIFG1));//等待发送完毕
//P1OUT^=0x03;
}

int Get_Char() {
while(!(IFG2&URXIFG1));//等待数据接收
return U1RXBUF;
}

void Init_System() {
WDTCTL=WDTPW+WDTHOLD;//关闭WDT
Init_Clock();//初始化系统时钟
Init_Port();//初始化端口
Init_Urat1();//初始化串口
}

void main()
{
int mm,qq;
int nn;
nn=1;
while(1){
Init_System();
mm=Get_Char();
Send(mm);
Send(nn);
qq=mm-nn;
Send(qq);
while(qq==0)
{
P1OUT|=BIT0;
P1OUT&=~BIT1;
P2OUT|=BIT0;
break;
}
}
}

最新回复

是的,是初始化有问题,谢谢了  详情 回复 发表于 2009-7-21 20:15
 
点赞 关注

回复
举报

59

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
串口数据怎么都用int?
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
啊  串口不能用int吗  是不是只能用char?
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

4
 
你的初始化有问题,把它放到while循环外边看看啊
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
是的,是初始化有问题,谢谢了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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