Общение

russian-robots@conference.jabber.ru - Чат, в котором можно поболтать об электронике, создании роботов и программировании.
Как мне зайти в чат?

 Обсуждение

Не стесняйтесь оставлять комментарии, мне интересно и важно ваше мнение!
  • Wadimka: Подскажу где взять недорого строчники, идете/едите в любую контору которая ...
  • Vladimir: Об этом датчике я тоже знаю, хотелось с чегото начать изучать МК, а не слеп ...
  • Vladimir: Спсиба
  • Евгений: Стоит поставить инфракрасный датчик движения и не городить ничего :) Литера ...
  • Vladimir: Добрый день Евгений. Это мне для дома в кладовку. При входе на двери стоит ...
  • Евгений: Фотобарьер? По подробнее расскажите.
  • Vladimir: Добрый день. Прошу вас помочь в реализации пректа фотобарер на Tiny45, со с ...
  • Евгений: С таким кодом даже http://caxapa.ru/codebook/?search=BLSH ничего не находит ...
  • Пример работы с eeprom типа 24CXXX

    17th Июнь 2010 | Метки:

    Пример работы с
    энергонезависимой памятью типа 24CXXX в Code Vision AVR:

    #include<mega16.h>
    #include<delay.h>
    #define TWINT 128
    #define TWSTA 32
    #define TWSTO 16
    #define TWEN 4
    #define TWEA 64
    #define EEPROM_BUS_ADDRESS 0xa0
     
    //Fuctions' prototypes
    char ee_read(unsigned int);
    char twi_read(char);
    void twi_write(char);
    void twi_start(void);
    void twi_stop(void);
     
    char twi_read(char ACK)
    {
    if(ACK) TWCR=TWINT|TWEA|TWEN;
    else TWCR=TWINT|TWEN;
    while(!(TWCR&(TWINT)));
    return TWDR;
    }
    void twi_write(char data)
    {
    TWDR=data;
    TWCR=TWINT|TWEN;
    while(!(TWCR&(TWINT)));
    }
    void twi_start(void)
    {
    TWCR=TWINT|TWSTA|TWEN;
    while(!(TWCR&(TWINT)));
    }
    void twi_stop(void)
    {
    TWCR=TWINT|TWEN|TWSTO;
    }
    char ee_read(unsigned int adress)
    {
    char data;
    twi_start();
    twi_write(EEPROM_BUS_ADDRESS);
    twi_write((unsigned char)(adress));
    twi_start();
    twi_write(EEPROM_BUS_ADDRESS|1);
    data=twi_read(0);
    twi_stop();
    return data;
    }
    void ee_write(unsigned int adress, unsigned char data)
    {
    twi_start();
    twi_write(EEPROM_BUS_ADDRESS);
    twi_write(adress);
    twi_write(data);
    twi_stop();
    delay_ms(10);
    }
     
    void main(void)
     
    {
     
    //настраиваем TWI, частота пеедачи 333.333kHz
     
    TWSR=0x00;
    TWBR=0x04;
    TWAR=0x00;
    TWCR=0x04;
    //led
    DDRD.4 = 0xFF;
     
    ee_write(2,'6'); //записываем в ячейку 2 цифру 6
    get = ee_read(2); //читаем данные из ячейки 2
    if(get=='6') //если там 6
    PORTD.4 = 0xFF; //включаем светодиод
    else
    PORTD.4 = 0x00; //иначе выключаем его
    while(1); //здесь висим до бесконечности
     
    }
    //пример для Code Vision AVR
     
    #include<mega16.h>

    Понравилась статья? Нажмите на любую из кнопок:

    0
    Пока комментариев нет.

    :D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: