您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机ATMEGA32使用TA8435H作为步进电机驱动板程序 正文
ATMEGA32使用TA8435H作为步进电机驱动板程序

ATMEGA32使用TA8435H作为步进电机驱动板程序

点击数:7127 次   录入时间:03-04 11:37:01   整理:http://www.55dianzi.com   AVR单片机
// 从MCU移出数据到AT24Cxx
{
    unsigned char i;
    uchar ack_bit;
   
    for(i = 0; i < 8; i++)        // 循环移入8个位
    {
        if(write_data & 0x80)
        {   
        SDA_on;
        DDRA=0XFF;
        _nop_();
        }
        else
        {
        SDA_off;
        DDRA=0XFF;
        _nop_();
        }
       
        SCL_on;
        DDRA=0XFF;
        _nop_();
        _nop_();
        SCL_off;
        DDRA=0XFF;
        write_data <<= 1;
    }
    SDA_on;
    DDRA=0XFF;            // 读取应答
    _nop_();
    _nop_();
    SCL_on;
    DDRA=0XFF;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    ack_bit = PINA&0X02;
    SCL_off;
    DDRA=0XFF;
    return ack_bit;            // 返回AT24Cxx应答位
}

void write_byte(unsigned char addr, unsigned char write_data)
// 在指定地址addr处写入数据write_data
{
    start();
    shout(OP_WRITE);
    shout(addr);
    shout(write_data);
    stop();
    delayms(10);        // 写入周期
}

void fill_byte(unsigned char fill_data)
// 填充数据fill_data到EEPROM内
{
    unsigned char i;
    for(i = 0; i < MAX_ADDR; i++)
    {
        write_byte(i, fill_data);
    }

}

unsigned char read_current()
// 在当前地址读取
{
    unsigned char read_data;
   
    start();
    shout(OP_READ);
   
    read_data = shin();
    stop();
    return read_data;
}

unsigned char read_random(unsigned char random_addr)
// 在指定地址读取
{
    start();
    shout(OP_WRITE);
    shout(random_addr);
    return(read_current());
}

void delayms(unsigned char ms)   
// 延时子程序
{
    unsigned char i;
    while(ms--)
    {
        for(i = 0; i < 120; i++);
    }
}



上一页  [1] [2] 


本文关键字:步进电机  程序  AVR单片机单片机-工控设备 - AVR单片机