lpc210X的IO操作

来源:互联网 发布:新疆云计算 编辑:程序博客网 时间:2024/05/21 00:17

#include <lpc210x.h>
#define uint32 unsigned int
#define uchar  unsigned char
#define DATA_INPUT 1<<23   /* P0.23 */
#define DATA_CLK    1<<22           /* P0.22 */


uchar disp[8]={0x01,0x02,0x04,0x08,
               0x80,0x40,0x20,0x10};

void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--)
      for(i=0; i<5000; i++);
}

//------------------------------------------------------------------------
// 函数名 : HC164_SendDat()
// 功  能 : 向74HC164发送一字节数据
//------------------------------------------------------------------------
void  HC164_SendDat(uchar data)
{  uchar  i;

   for(i=0; i<8; i++)     // 发送8位数据
   { 
      IOCLR = DATA_CLK;  // CLK = 0    
          // 设置DATA移位输出
      if((data&0x80)!=0)
        IOSET = DATA_INPUT ;
      else
         IOCLR = DATA_INPUT ;        
      data <<= 1;
      IOSET = DATA_CLK ;  // CLK = 1
   }
}  

/****************************************************************************
* 名称:main()
* 功能:初始化外部中断1(EINT1)为向量中断,并设置为下降沿触发模式,然后等待外部中断。
* 说明:在STARTUP.S文件中使能IRQ中断(清零CPSR中的I位)。
****************************************************************************/
int  main(void)
{
    uchar i,j ;
    PINSEL1 = 0x00000000;
    IODIR=DATA_CLK|DATA_INPUT;
    while ( 1 )
    {
 for(j=0;j<8;j++){
     for(i=0;i<8;i++)
     {
        HC164_SendDat(disp[i]);
        DelayNS( 200 ) ;
  }
    }
  for(j=0;j<8;j++){
  for(i=0;i<8;i++)
     {
        HC164_SendDat((disp[i]^0xff));
        DelayNS( 400 ) ;
  }
    }


     }       

}

 

原创粉丝点击