当前位置: 首页 > 技术资料 > AVR单片机I/O口读74HC165接口程序

AVR单片机I/O口读74HC165接口程序

QooIC.com 新闻出处:电子市场 | 发布时间:2011/6/15 16:24:43

  AVR单片机I/O口读74HC165接口程序


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


  #include<avr/io.h>


  #define SER_IN PD3


  #define SER_CK PB2


  #define SER_SL PB3


  uint16_t SerIn(void)


  {


  uint16_t ret=0,i;


  //数据锁存,在shift/load输入一脉冲


  PIO_CTL_PORT&=~_BV(SER_SL);


  __asm__ volatile("nop");


  __asm__ volatile("nop");


  PIO_CTL_PORT|=_BV(SER_SL);


  __asm__ volatile("nop");


  __asm__ volatile("nop");


  //读数据


  for(i=0;i<16;i++)


  {


  ret《=1;


  if(PIND & _BV(SER_IN))


  ret|=1;


  PIO_CTL_PORT&=~_BV(SER_CK);


  __asm__ volatile("nop");


  PIO_CTL_PORT&=~_BV(SER_CK);


  PIO_CTL_PORT|=_BV(SER_CK);


  __asm__ volatile("nop");


  PIO_CTL_PORT&=~_BV(SER_CK);


  }


  PIO_CTL_PORT&=~_BV(SER_CK);


  return ret;


  }


  //IO初始化


  void IoInit(void)


  {


  //输入口初始化成高阻态


  DDRD&=~_BV(SER_IN);


  PORTD&=~_BV(SER_IN);


  //两个控制口初始化


  PORTB |= _BV(SER_SL);


  DDRB |= _BV(SER_CK)|_BV(SER_SL);


  //…其它初始化操作…


  }