سلام
یه برنامه برای میکرو اتمگا 16 نوشته شده که قفل رمز هست یه مشکل داره اونم اینه که رمزش رو که میخوام تغییر بدم و عدد رو وارد میکنم و دکمه # رو میزنم در متغییر pass ذخیره نمیشه و همش طبق رمز قبلی کار میکنه. لطفا راهنمایی کنید ببینید مشکلش کجاست تو برنامه
یه برنامه برای میکرو اتمگا 16 نوشته شده که قفل رمز هست یه مشکل داره اونم اینه که رمزش رو که میخوام تغییر بدم و عدد رو وارد میکنم و دکمه # رو میزنم در متغییر pass ذخیره نمیشه و همش طبق رمز قبلی کار میکنه. لطفا راهنمایی کنید ببینید مشکلش کجاست تو برنامه
کد:
[CPP] /******************************************************* Project : lock 2 Date : 09/30/2017 Chip type : ATmega16 AVR Core Clock frequency: 1.000000 MHz *******************************************************/ [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <mega16.h> [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <delay.h> [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <stdlib.h> [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <string.h> // Alphanumeric LCD functions [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <alcd.h> unsigned char data,co1[20],co2[20]; eeprom long int pass=120; long int a; flash unsigned char c0[]="0"; flash unsigned char c1[]="1"; flash unsigned char c2[]="2"; flash unsigned char c3[]="3"; flash unsigned char c4[]="4"; flash unsigned char c5[]="5"; flash unsigned char c6[]="6"; flash unsigned char c7[]="7"; flash unsigned char c8[]="8"; flash unsigned char c9[]="9"; void coding(unsigned char data){ switch (data) { case 1: *strcatf(co1,c1); break; //****************** case 2: *strcatf(co1,c2); break; //****************** case 3: *strcatf(co1,c3); break; //****************** case 4: *strcatf(co1,c4); break; //****************** case 5: *strcatf(co1,c5); break; //****************** case 6: *strcatf(co1,c6); break; //****************** case 7: *strcatf(co1,c7); break; //****************** case 8: *strcatf(co1,c8); break; //****************** case 9: *strcatf(co1,c9); break; //****************** case 10: *strcatf(co1,c0); break; //****************** } } void ref_key(void){ DDRC=0x0f; //****************************** PORTC=0xff; PORTC.0=0; delay_ms(15); if(PINC.4==0)data=1; if(PINC.5==0)data=2; if(PINC.6==0)data=3; //******************************* PORTC=0xff; PORTC.1=0; delay_ms(15); if(PINC.4==0)data=4; if(PINC.5==0)data=5; if(PINC.6==0)data=6; //**************************** PORTC=0xff; PORTC.2=0; delay_ms(15); if(PINC.4==0)data=7; if(PINC.5==0)data=8; if(PINC.6==0)data=9; //**************************** PORTC=0xff; PORTC.3=0; delay_ms(15); if(PINC.4==0)data=20; if(PINC.5==0)data=10; if(PINC.6==0)data=21; //**************************** } void chek_pass(void) { ref_key(); if(a==pass) { if(data==20){ lcd_clear(); PORTD.0=1; lcd_gotoxy(0,0); lcd_putsf("pass correct"); } } else if(a!=pass) { if(data==20) { lcd_clear(); PORTD.0=0; lcd_gotoxy(0,0); lcd_putsf("pass invalid"); } } } void change_pass(void) { if(data==21 && a==pass ) { strcpy(co1,co2); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("pass new:"); if(data==20) { ref_key(); coding(data); pass=atol(co1); chek_pass(); } } } void main(void) { eeprom; ref_key(); DDRD.0=1; DDRC=0x0f; lcd_init(16); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("please pass :"); while(1){ chek_pass(); change_pass(); coding(data); a=atol(co1); lcd_gotoxy(0,1); lcd_puts(co1); data=0; delay_ms(200); } }[/CPP]
دیدگاه