Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- char start[7],uart_rd[30];
- char promena[4] = "END";
- int smeniMod = 0; //admin - 0 , korisnik - 1
- char user[5];
- char pass[5];
- int i=0,j=0;
- int len;
- int k = 1; // pocnuva od 1 zatoa so na 0 e admin
- int u,m,rot=0;
- int renew;
- char admin[5];
- void main() {
- ANSEL = 0;
- ANSELH =0;
- UART1_Init(9600);
- Delay_ms(50);
- strcpy(admin,"1000");
- //nie sami treba da si zapiseme user i pass na ADMIN u EEPROM
- for(i = 0;i<5;i++){
- eeprom_write(0x00 + i, admin[i]);
- eeprom_write(0x00 + i + 5, admin[i]);
- delay_ms(5); //pocekaj da se zapise
- }
- //strcpy(start,"S "); - za da znaeme kuga da pusteme seriski nesto
- //UART1_Write_text(start);
- while(1){
- while(!smeniMod){
- while(!UART1_Data_Ready()){
- UART1_Read_Text(uart_rd,"$",13); //citame seriski se do prvo pojavuvanje na $
- //[vo najlos slucaj 5cifri-user 5-cifri pass
- //treba da procitame 12 bajti]
- // UART1_Write_Text(uart_rd); -> proverka dali e procitano toa sto treba
- smeniMod = strcmp(uart_rd,promena); // 0 ako se isti | proverka dali e isprateno END
- // za da se smeni vo korisnicki rezim
- if(!smeniMod){ //ako sme vo korisnicki rezim, postavi prekin za citanje seriski
- smeniMod = 1;
- //strcpy(uart_rd,"Korisnik"); - check
- //UART1_Write_Text(uart_rd); - check
- }
- else {
- smeniMod = 0; //inaku
- i = 0; //za sekoj nov vnes resetiraj brojac
- //oddeluvanje user i pass
- len = strlen(uart_rd);
- while(uart_rd[i] != ' '){
- user[i] = uart_rd[i];
- i++;
- }
- u = i; //za zapisuvanje na user
- //check = atoi(user); - check
- len = len - i +2;
- i++;
- for(j=0;j<len; j ++){
- pass[j] = uart_rd[i];
- i++;
- }
- rot = strlen(pass) - 1; //za zapisuvanje na pass
- //zapisuvanje i citanje od EEPROM //citanjeto e posle kodot **
- if(k<9){ //proverka dali veke imame vneseno 10 korisnici
- k= k*0x10;
- //ZAPISI *USER* VO EEPROM
- m=0; //za sekoj nareden user reset brojac
- //strcpy(uart_rd," Wu"); - kazi sega zapisuvas user vo EEPROM
- // UArt1_write_text(uart_rd);
- for(i=0;i<5;i++){
- if(m<u){ //kolku bajti zafakja user
- eeprom_write(0x00 + k + i, user[m]);
- m++;
- }
- else {
- eeprom_write(0x00 + k + i, 0x20); // ' ' - zapisi prazno mesto na ostanatite
- }
- }
- delay_ms(20); // pocekaj da se zapise
- //ZAPISI *PASS* VO EEPROM
- m=0; //za sekoj pass na nareden user reset brojac
- //strcpy(uart_rd," Wp"); - kazi sega zapisuvas pass vo EEPROM
- // UArt1_write_text(uart_rd);
- for(i=0;i<5;i++){
- if(m<= rot){ //kolku bajti zafakja pass
- eeprom_write(0x00 + k + i + 5, pass[m]);
- m++;
- }
- else{
- eeprom_write(0x00 + k + i +5, 0x20); // ' ' - zapisi prazno mesto na ostanatite
- }
- }
- delay_ms(20); //pocekaj da se zapise
- k++; //zgolemi za nareden user
- }
- //ovoa e za debug preku serisko posle zapisuvanje i citanje,
- //a i dali pravilno se oddeleni user i pass
- //strcpy(uart_rd," user:");
- //UArt1_write_text(uart_rd);
- //UART1_Write_text(user);
- //strcpy(uart_rd," pass:");
- //Uart1_write_text(uart_rd);
- //UART1_Write_text(pass);
- //strcpy(uart_rd,"next");
- //UART1_Write_Text(uart_rd);
- }
- }
- }
- //koga sme vo korisnicki mod ako se vnese sifrata
- //i pass na admin
- //programata pak preminuva vo administratorski
- }
- }
- /*
- //Citanje od EEPROM
- [e sea najverojatno ke treba da se pretvore u int shifrata xxxxx, yyyyy sho ke se unese od KeyPad.
- zatoa sho ne uspeah da vidam na drug nacin dali e toa toa sho sakame da procitame od EEPROM.
- vadese nesto gjubre pri pecatenjeto ama ko se pretvore stringo u int so atoi e taa brojka sho ni treba :)]
- ^_^
- if (tmp < 9){
- //CITANJE OD EEPROM
- //reset user i pass pred da pocnes da citas
- memset(user,' ',5);
- memset(pass,' ',5);
- //renew = atoi(user); - za proverka dali e resetirano
- //renew = atoi(pass);
- //CITANJE *USER* OD EEPROM
- m=0; //reset brojac
- //strcpy(uart_rd," Ru "); - kazi deka ke citas user
- // UArt1_write_text(uart_rd);
- for(i=0;i<5;i++){
- if(EEPROM_READ(0x00 + k + i) != ' '){
- user[i] = EEprom_read(0x00 + k + i);
- delay_ms(10);
- }
- }
- //renew = atoi(user); - proverka dali e taa cifra
- //** vadese nesto gjubre koga go pusteh seriski ama vaka gi dava
- //tocnite broevi
- //CITANJE *PASS* OD EEPROM
- m=0; //reset brojac
- //strcpy(uart_rd," Rp "); - kazi deka ke citas pass
- // UArt1_write_text(uart_rd);
- for(i=0;i<5;i++){
- if(EepRom_read(0x00 + k + i + 5) != ' '){
- pass[i] = EEprom_read(0x00 + k + i + 5);
- delay_ms(10);
- }
- }
- //renew = atoi(pass); - proverka dali e taa cifra [istoto od gore]
- tmp++;
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement