查看: 2517|回复: 1

求助 MSP430 G2553

[复制链接]

该用户从未签到

发表于 2015-11-13 12:17:58 | 显示全部楼层 |阅读模式
分享到:
#include <msp430.h>

void GPIO_Init();
void clk_init(void);
void usart_txd(char udata);
char usart_rxd(void);
void usart_proc(void);

char time_flag = 0;
char sec=0,min=0,hour=0;
char sec_l,sec_h,min_l,min_h,hour_l,hour_h;


int main(void) {
    WDTCTL = WDTPW | WDTHOLD;        // Stop watchdog timer
    GPIO_Init();
    clk_init();

    _bis_SR_register(LPM0_bits+GIE);
    while(1)
            {
              if(time_flag == 1)
              {
                     time_flag = 0;
                 usart_proc();
              }
            }
}

void GPIO_Init()
{
        P1DIR |= BIT0+BIT6;                                                        //设定P1.0和P1.6的输出初始值
        P1OUT |= BIT0+BIT6;

        P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
        P1SEL2 = BIT1 + BIT2 ;                    // P1.1 = RXD, P1.2=TXD
}

#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer_A(void)
{
        P1OUT ^=0X41;
        time_flag = 1;                   //1秒时间到
                sec++;
                if(sec > 59)
                {
                        sec = 0;
                        min++;
                        if(min > 59)                    //1小时时间到
                        {
                                min = 0;
                                hour++;
                                if(hour > 23)              //24小时时间到
                         hour = 0;
                        }
                }
}

void clk_init(void)
{
            // 初始化timer
            TACTL = TASSEL_1 + ID_0 + MC_1;                        // ACLK/1, UP MODE
            CCTL0 |= CCIE;
            CCR0 = 32768;
            // 初始化usart
                  UCA0CTL1 |= UCSSEL_1;                // CLK = ACLK
                  UCA0BR0 = 0x03;                           // 32kHz/9600 = 3.41
                  UCA0BR1 = 0x00;
                  UCA0MCTL = UCBRS1 + UCBRS0;     // Modulation UCBRSx = 3
                  UCA0CTL1 &= ~UCSWRST;
}


void usart_txd(char udata)
{
        while (!(IFG2 & UCA0TXIFG));
        UCA0TXBUF = udata;

}

char usart_rxd(void)
{
        if(IFG2 & UCA0RXIFG)
        {
                return UCA0RXBUF;
        }
        else
                return 0;
}

void usart_proc(void)
{
        usart_txd((hour / 10) + 0x30);          //发送时十位
        usart_txd((hour % 10) + 0x30);          //发送时个位
        usart_txd(':');                    //发送冒号
        usart_txd((min / 10) + 0x30);           //发送分十位
        usart_txd((min % 10) + 0x30);           //发送分个位
        usart_txd(':');                    //发送冒号
        usart_txd((sec / 10) + 0x30);           //发送秒十位
        usart_txd((sec % 10) + 0x30);           //发送秒个位
        usart_txd(0x0D);                   //发送回车
        usart_txd(0X0A);                   //发送
}

利用定时器和USart写的一个发送时分秒的程序,问什么在超级终端上没显示(其他USART可以显示),求大神解决啊!



回复

使用道具 举报

  • TA的每日心情
    奋斗
    2018-2-11 23:50
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2017-1-4 00:54:57 | 显示全部楼层
    看看论坛里这个链接里5#的回复,看看有没有帮助。
    https://www.cirmall.com/bbs/thread-49021-1-1.html
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-5-20 08:59 , Processed in 0.112058 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.