باسلام :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); }
دیدگاه