Advertisement
The_K2_Ninja

MPS_Lab6_G2_Zad1

Dec 7th, 2016
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.96 KB | None | 0 0
  1. // keypad
  2. char keypadPort at PORTD;
  3.  
  4. //  LCD
  5. sbit LCD_RS at RB4_bit;
  6. sbit LCD_EN at RB5_bit;
  7. sbit LCD_D4 at RB0_bit;
  8. sbit LCD_D5 at RB1_bit;
  9. sbit LCD_D6 at RB2_bit;
  10. sbit LCD_D7 at RB3_bit;
  11. sbit LCD_RS_Direction at TRISB4_bit;
  12. sbit LCD_EN_Direction at TRISB5_bit;
  13. sbit LCD_D4_Direction at TRISB0_bit;
  14. sbit LCD_D5_Direction at TRISB1_bit;
  15. sbit LCD_D6_Direction at TRISB2_bit;
  16. sbit LCD_D7_Direction at TRISB3_bit;
  17.  
  18.  
  19.  
  20. void main() {
  21.  
  22. int repeatCounter = 0;
  23. int ostatok = 0;
  24. int counter = 0;
  25. int cifra;
  26. int broj;
  27. char kp;
  28. char text1[16];
  29.  
  30. ansel = 0x20;
  31. anselh  = 0x00;
  32. trise = 0x01;
  33. trisb = 0x00;
  34. Keypad_Init();
  35. Lcd_Init();
  36. delay_ms(200);
  37. Lcd_Cmd(_LCD_CURSOR_OFF);
  38. Lcd_Cmd(_LCD_CLEAR);ostatok = ADC_Read(5);
  39. ostatok %= 100;
  40. eeprom_write(0x00,ostatok);
  41.  
  42.  do{
  43.    do{
  44.     kp = 0;
  45.     do{
  46.      kp = Keypad_Key_Click();
  47.     }while(!kp);
  48.     switch (kp)
  49.     {
  50.       case 1: cifra = 1; break;
  51.       case 2: cifra = 4; break;
  52.       case 3: cifra = 7; break;
  53.       case 4: cifra = 0; break;
  54.       case 5: cifra = 2; break;
  55.       case 6: cifra = 5; break;
  56.       case 7: cifra = 8; break;
  57.       case 8: cifra = 0; break; // cifrata 0
  58.       case 9: cifra = 3; break;
  59.       case 10: cifra = 6; break;
  60.       case 11: cifra = 9; break;
  61.       case 12: cifra = 0; break;
  62.       case 13: cifra = 0; break;
  63.       case 14: cifra = 0; break;
  64.       case 15: cifra = 0; break;
  65.       case 16: cifra = 0; break;
  66.   }
  67.    if(counter<1){
  68.     broj = cifra * 10;
  69.    }else{
  70.     broj += cifra;
  71.    }
  72.    counter ++;
  73.    }while(counter < 2);
  74.  
  75.    ostatok = eeprom_Read(0x00);
  76.    if(ostatok == broj){
  77.     LCD_CMD(_LCD_CLEAR);
  78.     LCD_OUT(1,1,"Tocna shifra!");
  79.     repeatCounter = 2;
  80.  
  81.    }else if(repeatCounter == 0){
  82.     IntToStr(abs(ostatok - broj),text1);
  83.     LCD_CMD(_LCD_CLEAR);
  84.     LCD_OUT(1,1,text1);
  85.     repeatCounter++;
  86.    }else{
  87.     LCD_CMD(_LCD_CLEAR);
  88.     LCD_OUT(1,1,"Greshka");
  89.     repeatCounter = 2;
  90.    }
  91.    counter = 0;
  92.  }while(repeatCounter < 2);
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement