文章
博客 网店

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



/********************************
  AVR单片机I/O口读74HC165接口程序 
  文件名:serin.c
  编译:WinAVR-20070525

  硬件:ATMEGA16  时钟:7372800 Hz

  此程序在硬件上调试通过!    
  
  芯艺设计室 2004-2007  版权所有 
  转载请保留本注释在内的全部内容
  WEB: http://www.chipart.cn
  Email: changfutong@sina.com
*******************************/

#include

#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);

  //....其它初始化操作....
}




芯艺工作室    蒙ICP备06005492号
Copyright© 2004-2023 ChipArt Studio All Rights Reserved