MSP430_SPI_Master_Read_Write

2020-07-01来源: eefocus关键字:MSP430_SPI_Master_Read_Write

/******************************************************************

**                                                       

**  File : SPI.c     | Master Send Receive Interrupt |                                    

**  Version : 1.0     

** Description : SPI interface TLC549                                                                       

**  Author : LightWu                              

**  Date : 2013-4-16                                                       

**                                                   

*******************************************************************/



#include "MSP430x24x.h"



#define uint unsigned int

#define uchar unsigned char



/***设置数码管显示****/



#define L1_OFF   P4OUT|=BIT0 //关L1

#define L1_NO    P4OUT&=~BIT0 //点亮L1

#define L2_OFF   P4OUT|=BIT1 //关L2

#define L2_NO    P4OUT&=~BIT1 //点亮L2

#define L3_OFF   P4OUT|=BIT2 //关L3

#define L3_NO    P4OUT&=~BIT2 //点亮L3





uchar const Segment1[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; //不带小数点编码

uchar const Segment2[]={0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10}; //带小数点编码



uchar AdcFlag = 0;



uchar TempNum1;

uchar TempNum2;

uchar TempNum3;



unsigned char Data1;



void Display( uchar num1, uchar num2, uchar num3 );



void Delay(void)

{

  uint m;

  for(m=1000;m>0;m--);

}



void SpiInit(void)

{

    P3SEL |= 0x0E;                            // P3.3,2,1 USCI_B0 option select,注意管脚配置

    P3DIR |= 0x01;                            // P3.0 output direction

    UCB0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC;       // 3-pin, 8-bit SPI mstr, MSB 1st

    UCB0CTL1 |= UCSSEL_2;                     // SMCLK

    UCB0BR0 = 0x02;

    UCB0BR1 = 0;

    UCB0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**

    

    IE2 |= UCB0RXIE;            // 打开接收中断

}



unsigned char TLC549Read(void)

{

    unsigned char Data;

    

    P3OUT &= ~0x01;                         // Enable TLC549, /CS reset

    

    UCB0TXBUF = 0x55;                       // Dummy write to start SPI

    while (!(IFG2 & UCB0TXIFG));            // 发送完成

     

     

    while (!(IFG2 & UCB0RXIFG));            // USCI_B0 RX buffer ready?



    Data = UCB0RXBUF;                       // data = 00|DATA



    P3OUT |= 0x01;                          // Disable TLC549, /CS set



    return(Data);

}







void main(void)

{

        // Stop watchdog timer to prevent time out reset

        WDTCTL = WDTPW + WDTHOLD;       //关狗

  

        P4DIR = 0XFF;         //P4设置为输出,位码控制

        P4SEL = 0;

        

        P5DIR = 0XFF;         //P5设置为输出,断码控制

        P5SEL = 0;

        

        P4OUT = 0XFF;         //关闭数码管,共阳极数码管

        

        SpiInit();

        

     

        while(1)

        {

                //Data1 = TLC549Read();

            

                

                P3OUT &= ~0x01;                         // Enable TLC549, /CS reset

            

                UCB0TXBUF = 0x55;                     // Transmit first character



                _BIS_SR(LPM0_bits + GIE);                 // CPU off, enable interrupts

            

            

                TempNum1 = Data1/100;        //百位

                TempNum2 = Data1/10%10;      //十位

                TempNum3 = Data1%10;         //个位

               

                Display(TempNum1,TempNum2,TempNum3);    //显示转换值

        }

        



}





#pragma vector=USCIAB0RX_VECTOR

__interrupt void USCIA0RX_ISR (void)

{

        Data1 = UCB0RXBUF;                       // data = 00|DATA

        

        P3OUT |= 0x01;                          // Disable TLC549, /CS set

        

        __bic_SR_register_on_exit(LPM0_bits);        // Exit LPM0

}   





void Display( uchar num1, uchar num2, uchar num3 )

{

    P5OUT = Segment1[ num1 ];//

    L1_NO;

    Delay();

    L1_OFF;

    

    P5OUT = Segment1[ num2 ];//

    L2_NO;

    Delay();

    L2_OFF;

    

    P5OUT = Segment1[ num3 ];//

    L3_NO;

    Delay();

    L3_OFF;

}

关键字:MSP430_SPI_Master_Read_Write 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic501801.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于MSP430之间的SPI通信
下一篇:MSP430主系统时钟以及430的低功耗设置

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430_SPI_Master_Read_Write
/********************************************************************                                                       **  File : SPI.c     | Master Send
发表于 2017-11-25
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved