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

📄 msp430f149-

📁 MSP430F149实验板实验代码
💻
字号:

#include  <MSP430X14X.h>
#define   uchar   unsigned char
#define   uint    unsigned int
#define t_3ms5  2300
#define t_1ms   666
uchar get_code[4] = {0};
uchar dat_code=0;
uint  timer;

#include "msp430.c"
#include "disp_4led.c"

void delay(uint time)    //10ms--10000
{
 while(time--);
}

void dat_high()
{P1DIR |= BIT6;
 P1OUT |= BIT6;
}
void dat_low()
{P1DIR |= BIT6;
 P1OUT &= ~BIT6;
}
uchar rd_dat()
{ uchar stat;
  P1DIR |= BIT6;
  P1OUT |= BIT6;
  P1DIR &= ~BIT6;
  stat = P1IN;
  return (stat);
}

uchar get_num()
{ uchar i,j,rd,dat=0;
  _DINT();             //关闭中断
  for(j=0;j<4;j++)
  { for(i=8;i>0;i--)
     {dat>>=1; 
      do
       rd=rd_dat();
      while(!(rd & BIT6));	//	wait high
      set_timer_b0();		   //检测高电平时间
      do
      rd=rd_dat();
      while(rd & BIT6);	//	wait low
      timer=TBR;
      stop_timer_b0();
	  if(timer>t_1ms)dat=dat|0x80;
      else dat=dat&0x7f;  	  
      }
   get_code[j]=dat;
   }
 _EINT(); 
return(get_code[2]);    
}

void main( void )
{ uchar rd;
  WDTCTL = WDTPW + WDTHOLD; 
  dat_high();
  set_timer_a0();
judge: 
  do	  
  rd=rd_dat();
  while(rd & BIT6); 	//wait low
  delay(100); 
  rd=rd_dat();
  if(rd & BIT6)goto judge; //xiao dou 
  do
  rd=rd_dat();
  while(!(rd & BIT6));	 //wait high
  set_timer_b0();
  do
   rd=rd_dat();
  while(rd & BIT6);	 //wait low
  timer=TBR;
  stop_timer_b0(); 
  if(timer<t_3ms5){delay(1000);goto judge;}//连续按下,重复标志
  dat_code=get_num();
  goto judge; 
}

⌨️ 快捷键说明

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