#define seg_data portb
#define seg_data_dir trisb
#define seg1_en portc.f0
#define seg1_en_dir trisc.f0
#define seg2_en portc.f1
#define seg2_en_dir trisc.f1
#define input 1
#define output 0
#define pressed 1
#define on 1
#define off 0
#define active 0
#define not_active 1
///////////////////////////////////////////////////
char segment[]={63,6,91,79,102,109,125,7,127,111};
signed char number=0, temp,x;
void init() { seg1_en_dir=output;
seg2_en_dir=output;
seg_data=off;
seg_data_dir=output;}
//////////////////////////////////////////////////
show_number() { seg1_en=active;seg2_en=not_active;
seg_data=segment[temp/10]; delay_ms(2); seg_data=off;
seg2_en=active;seg1_en=not_active;
seg_data=segment[temp%10]; delay_ms(2); seg_data=off;}
//////////////////////////////////////////////////
void main(){
PORTA=1;TRISA=0xff;
init(); while(1){
show_number();
x=ADC_READ(0);
EEPROM_Write (0x00,x);
temp = EEPROM_read (0x00)/10 ;
}}
السلام عليكم
أولا البرنامج منقول من الشباب ووضعت تعديل من أجل المدخل التماثلي
ثانيا العمل بعد void main
قيمة المدخل وضعتها في x وبعدها وضعتها في خانة eeprom
lمن أجل مراقبة قيمة eeprom على البروتوس
وبالفعل تتغير القمن من 00إلى ffأي 255