باسلام :nerd:
من این کد نمونه برای راه اندازی eeprom پیدا کردم ولی کلا نمی دونم این برنامه چطور کار می کنه تو توضیحاتش گفته که عددی را از کیبورد تایپ و بعد از نمایش برروی سون سگمنت ان را بر روی eeprom نوشته و بعد می خوانیم و بر روی سگمنت نمایش می دهیم .. اگر ممکن است از دوستان...... :angry: :angry:
با تشکر
من این کد نمونه برای راه اندازی eeprom پیدا کردم ولی کلا نمی دونم این برنامه چطور کار می کنه تو توضیحاتش گفته که عددی را از کیبورد تایپ و بعد از نمایش برروی سون سگمنت ان را بر روی eeprom نوشته و بعد می خوانیم و بر روی سگمنت نمایش می دهیم .. اگر ممکن است از دوستان...... :angry: :angry:
با تشکر
کد:
#include "avr_compiler.h"
#include "twi_master_driver.h"
#include "KEY_7SEG.h"
#define SLAVE_ADDRESS 0x50
#define CPU_SPEED 2000000
#define BAUDRATE 100000
#define TWI_BAUDSETTING TWI_BAUD(CPU_SPEED, BAUDRATE)
TWI_Master_t twiMaster; /*!< TWI master module. */
unsigned char EEPROM_Address_Data[8]={0,0,0,0,0,0,0,0};
void main(void)
{
unsigned char key_code=nokey_code;
unsigned char old_key_code=nokey_code;
unsigned char DIGITS[6]={0,0,0,0,0,0};
unsigned char i=0,j;
/* Initialize TWI master. */
TWI_MasterInit(&twiMaster,&TWIC,TWI_MASTER_INTLVL_LO_gc,TWI_BAUDSETTING);
init_7seg();
init_key();
__enable_interrupt();
TWI_MasterWriteRead(&twiMaster,SLAVE_ADDRESS,&EEPROM_Address_Data[0],2,0);
while (twiMaster.status != TWIM_STATUS_READY);
TWI_MasterWriteRead(&twiMaster,SLAVE_ADDRESS,&DIGITS[0],0,6);
while (twiMaster.status != TWIM_STATUS_READY);
for(j=0;j<6;j++)DIGITS[j]=twiMaster.readData[j];
show_7seg(DIGITS,0x00,0x00);
while(1)
{
key_code=get_key();
if (key_code!= old_key_code)
{
old_key_code=key_code;
if (key_code!=nokey_code)
{
if (key_code==10)
{
TWI_MasterWriteRead(&twiMaster,SLAVE_ADDRESS,&EEPROM_Address_Data[0],2,0);
while (twiMaster.status != TWIM_STATUS_READY);
TWI_MasterWriteRead(&twiMaster,SLAVE_ADDRESS,&DIGITS[0],0,6);
while (twiMaster.status != TWIM_STATUS_READY);
for(j=0;j<6;j++)DIGITS[j]=twiMaster.readData[j];
show_7seg(DIGITS,0x00,0x00);
}
else if (key_code==11)
{
for(j=0;j<6;j++)EEPROM_Address_Data[j+2]=DIGITS[j];
TWI_MasterWriteRead(&twiMaster,SLAVE_ADDRESS,&EEPROM_Address_Data[0],8,0);
while (twiMaster.status != TWIM_STATUS_READY);
}
else
{
DIGITS[i]=key_code;
i++;
if (i==6) i=0;
show_7seg(DIGITS,0x00,0x00);
}
}
}
}
}
/*! TWIC Master Interrupt vector. */
ISR(TWIC_TWIM_vect)
{
TWI_MasterInterruptHandler(&twiMaster);
}







دیدگاه