Advertisement
Guest User

mnm

a guest
Feb 5th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.34 KB | None | 0 0
  1. #include <string.h>
  2.  
  3. char start[7],uart_rd[30];
  4. char promena[4] = "END";
  5. int smeniMod = 0;   //admin - 0 , korisnik - 1
  6. char user[5];
  7. char pass[5];
  8. int i=0,j=0;
  9. int len;
  10. int k = 1; // pocnuva od 1 zatoa so na 0 e admin
  11. int u,m,rot=0;
  12. int renew;
  13. char admin[5];
  14.  
  15. void main() {
  16. ANSEL = 0;
  17. ANSELH =0;
  18. UART1_Init(9600);
  19. Delay_ms(50);
  20.  
  21. strcpy(admin,"1000");
  22. //nie sami treba da si zapiseme  user i pass na ADMIN u EEPROM
  23. for(i = 0;i<5;i++){
  24.   eeprom_write(0x00 + i, admin[i]);
  25.   eeprom_write(0x00 + i + 5, admin[i]);
  26.   delay_ms(5); //pocekaj da se zapise
  27. }
  28.  
  29. //strcpy(start,"S ");     - za da znaeme kuga da pusteme seriski nesto
  30. //UART1_Write_text(start);
  31. while(1){
  32. while(!smeniMod){
  33.          while(!UART1_Data_Ready()){
  34.               UART1_Read_Text(uart_rd,"$",13); //citame seriski se do prvo pojavuvanje na $
  35.                                                //[vo najlos slucaj 5cifri-user 5-cifri pass
  36.                                                //treba da procitame 12 bajti]
  37.               // UART1_Write_Text(uart_rd); -> proverka dali e procitano toa sto treba
  38.  
  39.               smeniMod = strcmp(uart_rd,promena);     // 0 ako se isti  | proverka dali e isprateno END
  40.                                                       // za da se smeni vo korisnicki rezim
  41.              
  42.               if(!smeniMod){  //ako sme vo korisnicki rezim, postavi prekin za citanje seriski
  43.                  smeniMod = 1;
  44.                  //strcpy(uart_rd,"Korisnik");  - check
  45.                  //UART1_Write_Text(uart_rd);   - check
  46.               }
  47.               else {
  48.               smeniMod = 0;  //inaku
  49.  
  50.               i = 0;    //za sekoj nov vnes resetiraj brojac
  51.  
  52.               //oddeluvanje user i pass
  53.               len = strlen(uart_rd);
  54.               while(uart_rd[i] != ' '){
  55.               user[i] = uart_rd[i];
  56.               i++;
  57.               }
  58.               u = i;  //za zapisuvanje na user
  59.              
  60.               //check = atoi(user);   - check
  61.  
  62.               len = len - i +2;
  63.               i++;
  64.               for(j=0;j<len; j ++){
  65.                pass[j] = uart_rd[i];
  66.               i++;
  67.                }
  68.               rot = strlen(pass) - 1; //za zapisuvanje na pass
  69.  
  70.               //zapisuvanje i citanje od EEPROM   //citanjeto e posle kodot **
  71.               if(k<9){ //proverka dali veke imame vneseno 10 korisnici
  72.              
  73.               k= k*0x10;
  74.              
  75.               //ZAPISI *USER* VO EEPROM
  76.               m=0;                     //za sekoj nareden user reset brojac
  77.               //strcpy(uart_rd," Wu");   - kazi sega zapisuvas user vo EEPROM
  78.               // UArt1_write_text(uart_rd);
  79.               for(i=0;i<5;i++){
  80.                  if(m<u){                            //kolku bajti zafakja user
  81.                eeprom_write(0x00 + k + i, user[m]);
  82.                m++;
  83.                }
  84.                else {
  85.                eeprom_write(0x00 + k + i, 0x20); // ' ' - zapisi prazno mesto na ostanatite
  86.                }
  87.               }
  88.               delay_ms(20);                      // pocekaj da se zapise
  89.              
  90.               //ZAPISI *PASS* VO EEPROM
  91.               m=0;                        //za sekoj pass na nareden user reset brojac
  92.               //strcpy(uart_rd," Wp");      - kazi sega zapisuvas pass vo EEPROM
  93.               // UArt1_write_text(uart_rd);
  94.               for(i=0;i<5;i++){
  95.                if(m<= rot){                   //kolku bajti zafakja pass
  96.                eeprom_write(0x00 + k + i + 5, pass[m]);
  97.                m++;
  98.                }
  99.                else{
  100.                eeprom_write(0x00 + k + i +5, 0x20); // ' ' - zapisi prazno mesto na ostanatite
  101.                }
  102.               }
  103.               delay_ms(20);                     //pocekaj da se zapise
  104.              
  105.  
  106.               k++;  //zgolemi za nareden user
  107.               }
  108.  
  109.               //ovoa e za debug preku serisko   posle zapisuvanje i citanje,
  110.               //a i dali pravilno se oddeleni user i pass
  111.               //strcpy(uart_rd," user:");
  112.               //UArt1_write_text(uart_rd);
  113.               //UART1_Write_text(user);
  114.  
  115.               //strcpy(uart_rd," pass:");
  116.               //Uart1_write_text(uart_rd);
  117.               //UART1_Write_text(pass);
  118.               //strcpy(uart_rd,"next");
  119.               //UART1_Write_Text(uart_rd);
  120.  
  121.               }
  122.          }
  123.  
  124.  
  125.  
  126.  }
  127.  
  128.  //koga sme vo korisnicki mod ako se vnese sifrata
  129.  //i pass na admin
  130.  //programata pak preminuva vo administratorski
  131.  
  132.  
  133. }
  134.  
  135.  
  136. }
  137.  /*
  138.     //Citanje od EEPROM
  139.     [e sea najverojatno ke treba da se pretvore u int shifrata xxxxx, yyyyy sho ke se unese od KeyPad.
  140.     zatoa sho ne uspeah da vidam na drug nacin dali e toa toa sho sakame da procitame od EEPROM.
  141.     vadese nesto gjubre pri pecatenjeto ama ko se pretvore stringo u int so atoi e taa brojka sho ni treba :)]
  142.       ^_^
  143.      
  144.       if (tmp < 9){
  145.  
  146.               //CITANJE OD EEPROM
  147.               //reset user i pass pred da pocnes da citas
  148.               memset(user,' ',5);
  149.               memset(pass,' ',5);
  150.  
  151.               //renew = atoi(user);     - za proverka dali e resetirano
  152.               //renew = atoi(pass);
  153.  
  154.               //CITANJE *USER* OD EEPROM
  155.               m=0;                          //reset brojac
  156.               //strcpy(uart_rd," Ru ");      -  kazi deka ke citas user
  157.               // UArt1_write_text(uart_rd);
  158.               for(i=0;i<5;i++){
  159.                if(EEPROM_READ(0x00 + k + i) != ' '){
  160.                user[i] = EEprom_read(0x00 + k + i);
  161.                delay_ms(10);
  162.                }
  163.               }
  164.  
  165.               //renew = atoi(user);  - proverka dali e taa cifra
  166.                                      //** vadese nesto gjubre koga go pusteh seriski ama vaka gi dava
  167.                                      //tocnite broevi
  168.  
  169.               //CITANJE *PASS* OD EEPROM
  170.               m=0;                       //reset brojac
  171.               //strcpy(uart_rd," Rp ");      - kazi deka ke citas pass
  172.               // UArt1_write_text(uart_rd);
  173.               for(i=0;i<5;i++){
  174.                if(EepRom_read(0x00 + k + i + 5) != ' '){
  175.                pass[i] = EEprom_read(0x00 + k + i + 5);
  176.                   delay_ms(10);
  177.                  }
  178.               }
  179.  
  180.               //renew = atoi(pass);  - proverka dali e taa cifra [istoto od gore]
  181.  
  182.               tmp++;
  183.               }
  184.              
  185.               */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement