Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <c8051f340.h>
- #include "time.h"
- #include "uart.h"
- #define BR_KORISNIKA 5
- #define MAX 32
- #include <string.h>
- // tasteri i LED diode
- sbit K1 = P2^0;
- sbit K2 = P2^1;
- sbit D2 = P2^2;
- sbit D3 = P2^3;
- void OSCILLATOR_Init (void);
- void PORT_Init (void);
- char Keypad_Scan();
- char code korisnici[BR_KORISNIKA][MAX] =
- {
- "Sundjer Bob Kockalone",
- "Dijego Armando Maradona",
- "Bond. Dzejms bond.",
- "Zoran Kostic Cane",
- "Kim Dzong Un"
- };
- char korisnik[MAX];
- int i;
- int postoji;
- char code PIN[BR_KORISNIKA][5] =
- {
- "5346",
- "2133",
- "7445",
- "8756",
- "7435"
- };
- char taster_preth = 0;
- char taster = 0;
- char unos_pina[10];
- int k;
- void main(void)
- {
- bit dioda = 1; //pomocna promenljiva za selekciju aktivne diode
- PCA0MD &= ~0x40; // Watchdog tajmer iskljucen
- OSCILLATOR_Init(); // Inicijalizacija oscilatora (Fosc = 22.1184 MHz)
- TIME_Init(); // Inicijalizacija sistemskog vremena (koristi se prekid tajmera 2)
- PORT_Init(); // Inicijalizacija portova
- UART0_Init();
- D2 = D3 = 1;
- //test aplikacija:
- while (1)
- {
- postoji = 0;
- UART0_PutString("Unesi ime korisnika\n");
- while(UART0_Available() == 0);
- delay_ms(50);
- UART0_GetString(korisnik);
- UART0_PutString(korisnik);
- UART0_PutString("\n");
- for(i = 0;i < BR_KORISNIKA; i++)
- {
- if(strcmp(korisnik,korisnici[i]) == 0)
- {
- postoji = 1;
- break;
- }
- }
- if(postoji)
- {
- k = 0;
- UART0_PutString("Korisnik postoji u bazi,molimo unesite PIN\n");
- while(1)
- {
- taster_preth = taster;
- taster = Keypad_Scan();
- if(taster && !(taster_preth))
- {
- if(Keypad_Scan() == '#')
- {
- break;
- }
- UART0_PutChar(Keypad_Scan());
- unos_pina[k++] = Keypad_Scan();
- }
- }
- unos_pina[k] = '\0';
- if(strcmp(unos_pina,PIN[i]) == 0)
- {
- UART0_PutString("\n");
- UART0_PutString("Ispravan pin");
- UART0_PutString("\n");
- }
- else
- {
- UART0_PutString("\n");
- UART0_PutString("Neispravan pin");
- UART0_PutString("\n");
- }
- }
- else
- {
- UART0_PutString("Korisnik ne postoji u bazi\n");
- }
- }
- }
- void PORT_Init (void)
- {
- P2MDIN |= 0x0F; // 4 najniza bita porta P2 -> digitalni
- P2MDOUT = 0x0C; // Pinovi za LED -> push-pull izlazi
- // Crossbar inicijalizacija
- XBR1 = 0x40; // Dozvola crossbar-a i slabih pull-up otpornika
- }
- char Keypad_Scan()
- {
- unsigned char col;
- XBR1 = 0x40; //dozvola crossbar-a i pull-up otpornika
- P1MDOUT = 0x00; //svi pinovi su open-drain
- for(col = 0x01; col != 0x10; col <<= 1)
- {
- P1MDIN = col | 0xf0; //nule u masci su HiZ pinovi
- P1 = ~col; //adresiranje kolone
- delay_ms(2);
- //visi nibl predstavlja kolonu, a nizi stanja tastera:
- switch((col << 4) | ((~P1) >> 4))
- {
- //prva kolona:
- case 0x11:
- return '1';
- case 0x12:
- return '2';
- case 0x14:
- return '3';
- case 0x18:
- return 'A';
- //druga kolona:
- case 0x21:
- return '4';
- case 0x22:
- return '5';
- case 0x24:
- return '6';
- case 0x28:
- return 'B';
- //treca kolona:
- case 0x41:
- return '7';
- case 0x42:
- return '8';
- case 0x44:
- return '9';
- case 0x48:
- return 'C';
- //cetvrta kolona:
- case 0x81:
- return '*';
- case 0x82:
- return '0';
- case 0x84:
- return '#';
- case 0x88:
- return 'D';
- }
- }
- return 0; //nije detektovan nijedan taster
- }
Add Comment
Please, Sign In to add comment