发新话题
打印

[资料整理]TLC2543驱动

本主题由 YYLT 于 2008-8-15 20:30 解除置顶

[资料整理]TLC2543驱动

//TLC2543驱动程序
#define P_IOA_Data     (volatile unsigned int *)0x7000   
#define P_IOA_Buffer    (volatile unsigned int *)0x7001
#define P_IOA_Dir     (volatile unsigned int *)0x7002
#define P_IOA_Attrib    (volatile unsigned int *)0x7003
#define P_IOA_Latch    (volatile unsigned int *)0x7004
//............................................
#define P_IOB_Data    (volatile unsigned int *)0x7005  
#define P_IOB_Buffer   (volatile unsigned int *)0x7006   
#define P_IOB_Dir    (volatile unsigned int *)0x7007   
#define P_IOB_Attrib   (volatile unsigned int *)0x7008   
#define P_IO_Dir   *P_IOB_Dir
#define P_IO_Att   *P_IOB_Attrib
#define P_IO_Buf   *P_IOB_Buffer
#define Data_Out  0x8000
#define Data_In   0x4000
#define CS        0x2001
#define IO_CLK    0x1000
#define EOC       0x0800   //没用
void delay(unsigned  int N)  
  {
     int i;
     for(i=0;i<N;i++);
  }
//////////////////////////////////////////////////////////////////////////////////
void TLC2543_init()
{
       P_IO_Dir|=(Data_In+CS+IO_CLK);
       P_IO_Dir&=(~Data_Out);
       P_IO_Att|=(Data_In+CS+IO_CLK);
       P_IO_Att&=(~Data_Out);
}
unsigned int read2543(unsigned char CON_WORD)//Timing for 12-Clock Transfer Not Using CS With MSB First
{
       unsigned int ad=0,i;
       CON_WORD<<=4;     //0000 0000  1001 0000
       P_IO_Buf&=(~IO_CLK);    //I/O CLOCK=0
       P_IO_Buf&=(~CS);    //CS=0
       for(i=0;i<12;i++)
       {
              if(P_IO_Buf&Data_Out) ad|=0x01;   //读输出值,dataout的值,如果为高则为1,否则ad左移补零.共选择十二位.
              if((CON_WORD&0x80)!=0)   P_IO_Buf|=Data_In;//daatainput=1;
              else P_IO_Buf&=(~Data_In);//datainput =0;
              P_IO_Buf|=IO_CLK;  //I/O CLOCK=1//送数
              delay(7);
              P_IO_Buf&=(~IO_CLK); //I/O CLOCK=0
              delay(7);
              CON_WORD<<=1;
              ad<<=1;
       }
       P_IO_Buf|=CS;   //CS=1
       ad>>=1;
       return(ad);
}

注:非原创,只是自己修改的,增强其可读性和可移植性
我是个好男人啊 嫁给我吧 我们村很好的 我还有几亩地,家里有一头牛,2个猪 还有很多 够你吃的了
佛曰:人脸是一个苦字,苦今生,修来世!
我的博客:http://hi.baidu.com/murufy

TOP

发新话题
版块跳转