在IAR调试窗口里面一切正常,在发送缓冲区里的数据也正常,但是用串口调试助手显示出来的数据却都是00
这是怎么回事???
/******************************************************************************
*******************************************************************************/
#include<msp430x14x.h>
#include"24C08.h"
#include"RS232.h"
#include"ds1302.h"
#include"gdata.h"
typedef unsigned char uchar;
typedef unsigned int uint;
uchar time=0;
uchar ye=0,addr=0x00;
uchar Sdata[7];
main()
{
P1DIR=0xff;P1OUT=0xff;
P2DIR=0xff;P2OUT=0xff;
P3DIR=0xff;P3OUT=0xff;
P4DIR=0xff;P4OUT=0xff;
P5DIR=0xff;P5OUT=0xff;
P6DIR=0xff;P6OUT=0xff;
WDTCTL=WDTPW+WDTHOLD;
BCSCTL1&=~XT2OFF;//打开外部晶体振荡器XT2
do
{
for(uchar i=0;i<0xff;i++) _NOP();//等待至少50us,等外部晶体震荡器正常工作
IFG1 &= ~OFIFG;//清除晶体震荡器失效标志OFIFG标志
}while(IFG1 & OFIFG);//检测晶体震荡器失效标志OFIFG
BCSCTL2|=SELM_2+SELS;//Smclk=Mclk
CCR0=60000;//60ms
CCTL0=CCIE;
TACTL=TASSEL_2+ID_3+MC_1+TACLR+TAIE;//定时器A时钟为smclk,8分频,增计数模式,TAR清零,溢出中断允许
//向存储块内写入数据
//读一个数据
//发送一个数据
//清除一个数据
init_EEPROM();//初始化I2C端口
Uart_Init();//串口初始化
Reset_DS1302();//时钟复位
_EINT();//
LPM0;//
while(1)
{
;
}
}
void execution()
{
BurstRead1302(rdata);
for(uchar i=0;i<7;i++)
{
write_add(ye,addr,rdata[i]);
addr++;
if(addr==0xff)//存储块分4页,当前页写满之后,写入下一页
{
ye++;
if(ye>=3)//共4页:0,1,2,3
ye=0;
}
}
if(ye==0)
{
ye=0;addr=0x00;
for(uchar i=0;i<7;i++)
{
Sdata[i]=read_add(ye,addr);//读出指定地址的数据
write_add(ye,addr,0x00);//发送完之后立即清除
addr++;
}
PutData(Sdata);
}
}
#pragma vector=TIMERA0_VECTOR
__interrupt void timerA_ISR()
{
time++;
if(time>=10)
{
// LPM0_EXIT;
execution();
time=0;
}
}
下边是RS232.c
/***************************************
向PC机发送字符串
****************************************/
void PutString (uchar *str)
{
while(*str != '\0')
{
while(!(IFG1 & UTXIFG0));//检测缓冲区是否空闲
TXBUF0 = *str++;//将要发送的字符存入缓冲区发送数据
}while(!(IFG1 & UTXIFG0));
TXBUF0='\n';//回车换行
}
/***************************************
向PC机必送数据
****************************************/
void PutData(uchar *data)
{
for(uchar i=0;i<7;i++)
{
while(!(IFG1&UTXIFG0));
TXBUF0=data[i];
}
}
/***************************************
串口初始化
****************************************/
void Uart_Init()
{
P3SEL |= 0x30;//P3.4 P3.5为Uart的TXD RXD
ME1 |= URXE0 + UTXE0;//使能UART的TXD RXD
UCTL0 |= CHAR;//数据传输8位
UTCTL0 = SSEL1;//
UBR00 = 0x00;
UBR10 = 0x6D;//波特率9600,串口时钟为32K,误差为3.41
UMCTL0 = 0x03;
UCTL0 &= ~SWRST;
}
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |