📄 74165.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 + -