tlc549.c

来自「tlc549的c语言51驱动程序」· C语言 代码 · 共 96 行

C
96
字号
/****************************************************************
 * 文件名:TLC549.c
 * 文件描述: 
 * 
 * **************************************************************/
 
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "TLC549.h"

static alt_u8 out=0xff;

/**************************************************************
 * 注意:由于在FPGA和TLC549之间接了一片反相器,所以对芯片引脚的设置都将相
 * 反。
 * 例如:TLC549_SET_CLK()函数,实际上FPGA输出低电平。
 * ***********************************************************/
 
 /*******************************
  * 说明:设置TLC549芯片clk脚高电平
  ******************************/
void TLC549_SET_CLK(void)
{
   out = out & 0xFE;
   IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADC_OUT_BASE, out);
}

/********************************
 * 说明:设置TLC549芯片clk脚低电平
 *******************************/
void TLC549_CLR_CLK(void)
{
    out = out | 0x01;
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADC_OUT_BASE, out);
}

/*********************************
 * 说明:设置TLC549芯片ce脚高电平
 * ******************************/
void TLC549_SET_CE(void)
{
    out = out & 0xFD;
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADC_OUT_BASE, out);
}

/***********************************
 * 说明:设置TLC549芯片ce脚低电平
 * ********************************/
void TLC549_CLR_CE(void)
{
    out = out | 0x02;
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADC_OUT_BASE, out);
}

void TLC549_delay(alt_u16 time)
{
    alt_u16 i;
    for(i=0; i<time; i++);
}

/**************************************
 * 说明:  AD读函数,从TLC594读取A/D转换值
 *return: 8bit AD转换值
 * ***********************************/
alt_u8 TLC549_get_AD(void)
{
    alt_u8 i;
    alt_u8 rt=0;
    
    TLC549_CLR_CLK();
    TLC549_CLR_CE();
    TLC549_delay(20);
    if(IORD_ALTERA_AVALON_PIO_DATA(PIO_ADC_IN_BASE) & 0x01)
        rt=rt | 0x80;
    TLC549_SET_CLK();
    TLC549_delay(20);
    TLC549_CLR_CLK();
    TLC549_delay(20);
    
    for(i=6; i>0; i--)
    {
        TLC549_SET_CLK();
        TLC549_delay(20);
        if(IORD_ALTERA_AVALON_PIO_DATA(PIO_ADC_IN_BASE) & 0x01)
            rt = rt | (1<<i);
        TLC549_CLR_CLK();
        TLC549_delay(20);
    }
    
    TLC549_SET_CLK();
    TLC549_SET_CE();
    
    return(rt);
}

⌨️ 快捷键说明

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