在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;
}
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |
我要赚赏金打赏帖 |
|
|---|---|
| Chaos-nano:专为低资源单片机设计的轻量级协作式异步操作系统(ATMEGA328P轻量级操作系统)—— 详细介绍被打赏¥16元 | |
| FPGA配置被打赏¥10元 | |
| Chaos-nano协作式异步操作系统:赋能MicrochipAVR8位单片机的革新之路被打赏¥15元 | |
| 基于esp32开发时串口工具的注意点被打赏¥24元 | |
| 基于FireBeetle2ESP32-C5开发板的舵机控制被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】MAX78000开发板制作的电子相册被打赏¥32元 | |
| 基于FireBeetle2ESP32-C5开发板的超声波测距及显示被打赏¥21元 | |
| FireBeetle2ESP32-C5上RTC电子时钟的实现被打赏¥25元 | |
| 【分享开发笔记,赚取电动螺丝刀】MAX78000开发板读取SD卡被打赏¥23元 | |
| 【S32K3XX】Standby RAM 重启后数据异常问题调查被打赏¥38元 | |