⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 74165.c

📁 msp430f149读HC165(4片串联)。兼有串口发送程序
💻 C
字号:
 
 /*msp430f149            hc165
p23       --->         第一个165的DS位
p24       --->         4个165的P/L位
P25       --->          4个165的CLK
P26       --->         4个165的CE
p27       --->         第四个165的Q7位   */
#include <msp430x14x.h>

#define DSINPUT() (P2OUT |= BIT3)
#define CP_SET()  (P2OUT |= BIT5)               //时钟高电平;
#define CP_CLR()  (P2OUT &= ~BIT5)              
#define PL_SET()  (P2OUT |= BIT4)               //串行移位控制;
#define PL_CLR()  (P2OUT &= ~BIT4)              //并行读入寄存器
//#define CE_SET()  (P2OUT |= BIT6)               
#define CE_CLR()  (P2OUT &= ~BIT6)              //CE为低
#define out165    (P2IN & BIT7)>>7

unsigned char readbyte[4];

unsigned char  shift_byte(void);
void Init165(void);
void Flip165(void);
void InitializeUSART0(void);
void USART0Send(unsigned char ch) ;

void main(void)
{     
     // unsigned  int i;
      
      WDTCTL = WDTPW + WDTHOLD;
      InitializeUSART0();
      Init165();  
      P1SEL = 0;
      P1DIR = 0Xff;
      P6DIR = 0XFF;                
      while(1)
      {     
            P6OUT = 0XFF;                             
           // Flip165();
            USART0Send(0xaa);
             USART0Send(0xbb);
              USART0Send(0xcc);
               USART0Send(0xdd);
            /*  for ( i = 0 ; i < 4 ; i ++ ) 
            {
                 readbyte[i] = shift_byte();
             } 
            
            for ( i = 0 ; i < 4 ; i ++ ) 
            {
            
            USART0Send(readbyte[i]);
            }  */
            
	}
}
    
unsigned char  shift_byte(void)           //读入一个字节
{     
      unsigned char CH,i;
      CH = out165<<7;
      for ( i = 1 ; i < 8 ; i ++ )
      {          
            CP_CLR(); 
            CP_SET();         
            CH += out165<<(7-i);
      }
      CP_CLR();
      CP_SET();
      return CH;
}

void Init165(void)                  //初始化设置P2口
{
      P2SEL = 0;
      P2DIR |= BIT4;
      P2DIR |= BIT5;
      P2DIR |= BIT6;
      P2DIR &= ~BIT7;
      
      CE_CLR();
      PL_SET();
      CP_CLR();
}

void Flip165(void)                  //并行读入数据
{
       PL_CLR();
       PL_SET();
}
      
void InitializeUSART0(void)
{    
     // BCSCTL1   &= ~XTS; 
    //BCSCTL1  &= ~XT2OFF;
    //BCSCTL2  = SELS + DIVS_0;
    UCTL0  &= ~SWRST;
    UCTL0  = CHAR;
    UTCTL0 =    SSEL0   ;       // ACLK=32768
     
    ME1 |= URXE0+UTXE0;
    IE1 |= URXIE0;
    
    UBR00 = 0x03;
    UBR10 = 0x00;
    UMCTL0 = 0x4A;
    
    P3SEL |= BIT4;
    P3SEL |= BIT5;
    P3SEL &~ BIT3; 
    P3SEL &~ BIT2;
    P3DIR |= BIT3;
    P3DIR |= BIT2;
    P3OUT |= BIT3;
    P3OUT &~ BIT2;
    P3DIR |= BIT4;
    P3DIR &= ~BIT5;
}

void USART0Send(unsigned char ch)     
{
    TXBUF0 = ch;
    while ((UTCTL0&0x01) == 0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -