Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <built_in.h>
- char keypadPort at PORTD;
- sbit LCD_RS at RB4_bit;
- sbit LCD_EN at RB5_bit;
- sbit LCD_D4 at RB0_bit;
- sbit LCD_D5 at RB1_bit;
- sbit LCD_D6 at RB2_bit;
- sbit LCD_D7 at RB3_bit;
- sbit LCD_RS_Direction at TRISB4_bit;
- sbit LCD_EN_Direction at TRISB5_bit;
- sbit LCD_D4_Direction at TRISB0_bit;
- sbit LCD_D5_Direction at TRISB1_bit;
- sbit LCD_D6_Direction at TRISB2_bit;
- sbit LCD_D7_Direction at TRISB3_bit;
- unsigned timer = 0, masa_flag = 0, masa_popust[10];
- char masa[10][4]; //neka ima vk 10 masi vo restoranot, toa se 4 cifri(binarno)
- int masa_i = 0; //masa_i broj na masa po red kako doshla
- int mi = 0, pom = 0; //broi char za masata
- //primer
- // bukva0 bukva1 bukva2
- // masa0 0 0 1
- void interrupt() {
- if (TMR0IF_bit) {
- for(pom = 0; pom < masa_i; pom++){ // pom < masa_i prai popust za site postoechki mas shto chekaat, masata shto momentalno se usluzuva kje se chuva vo promenliva
- masa_popust[masa_i]+=10; //vajda ne mora da se incijalizira int e na int default mu e 0
- timer++;
- }
- TMR0IF_bit = 0;
- TMR0 = 245;
- }
- if(INTF_bit){
- while (1) {
- if (UART1_Data_Ready()) {
- uart_rd = UART1_Read();
- masa[masa_i][mi] = uart_rd;
- mi++;
- }
- }
- masa_i++; //ja prochtachtavme masa idi na sledna
- INTF_bit = 0;
- }
- }
- char uart_rd;
- void main() {
- char restoran[6] = {'D', 'A', 'L', 'G', 'A', '\0'}, promenliva[6] = {'n','e','s','h','t','o'};
- //id na sekoj kelner ke mu e j
- /*char kelneri[5][5] = {{'I', 'g', 'o', 'r'},{'A', 'n', 'a'}}, proba[5][5] = {{'a','a','a','a'},{'a','a','a'}};*/
- char kelner1[] = {'1', 'I', 'g', 'o', 'r', '\0'}, kelner2[] = {'2', 'A', 'n', 'a','\0','\0'};
- int i=0, j=0, keypadcount = 0, flag =0;
- char kp, potvrdi, cifri[20] = {' ', ' ', ' '};
- int cnt =0;
- ANSEL = 0;
- ANSELH = 0;
- TRISB = 0x00; //B da e izlezna
- C1ON_bit = 0;
- C2ON_bit = 0;
- UART1_Init(9600);
- Delay_ms(50);
- OPTION_REG = 0x84;
- ANSEL = 0;
- ANSELH = 0;
- C1ON_bit = 0;
- C2ON_bit = 0;
- //PORTB = 0xFF;
- TMR0 = 245;
- INTCON = 0xA0;
- Lcd_Init();
- Lcd_Cmd(_LCD_CURSOR_OFF);
- Lcd_Cmd(_LCD_CLEAR);
- Keypad_Init();
- Lcd_Out(1,1, "Nema za naplata");
- if(flag){
- }
- //Lcd_Out(2, 1, cifri);
- for(i=0; i<6; i++){
- EEPROM_Write(10+i, restoran[i]);
- //Delay_ms(10);
- //Lcd_Out(1,1, "");
- //Lcd_Out(1,1, "Prv for");
- }
- for(i=0; i<6; i++){
- EEPROM_Write(15+i, kelner1[i]);
- //Delay_ms(10);
- //Lcd_Out(1,1, "Vtor for");
- }
- for(i=0; i<6; i++){
- EEPROM_Write(20+i, kelner2[i]);
- //Delay_ms(10);
- //Lcd_Out(1,1, "Tret for");
- }
- //while(1){
- // se resetira kodot za pritisnatiot taster
- /* for(i=0; i<=15; i++){
- Lcd_Out(1,i," ");
- } */
- if(timer){
- masa_popust[i] = (float)timer/100;
- timer = 0;
- masa[masa_i] = '';
- if(masa == ''){
- TMR0 = 0;
- }
- }
- Lcd_Out(1,1, "Naplata: ");
- Lcd_Out(2,1, "Bakshish: ");
- while(1) {
- kp = 0;
- while(!kp){
- kp = Keypad_Key_Click();
- } //se cheka da se pritisne taster
- //Lcd_Out(2,1, " ");
- //Lcd_Out(2,1, "ok");
- /*switch(kp){
- case 1: cifri[cnt]='1'; //break; // 1
- case 2: cifri[cnt]='4'; //break; // 4
- case 3: cifri[cnt]='7'; //break; // 7
- case 4: cifri[cnt]=' '; //break;//DEL (BACK)
- case 5: cifri[cnt]='2'; //break;// 2
- case 6: cifri[cnt]='5'; //break; // 5
- case 7: cifri[cnt]='8'; //break; // 8
- case 8: cifri[cnt]='0'; //break; // 0
- case 9: cifri[cnt]='3'; //break; // 3
- case 10: cifri[cnt]='6'; //break; // 6
- case 11: cifri[cnt]='9'; //break; // 9
- case 12: kp = 6; break; //Acknowledgement (OK)
- }
- cnt++; */
- if(kp == 1){
- cifri[cnt] = '1';
- Lcd_Out(1, 9, cifri);
- cnt++;
- }
- if(kp == 2){
- cifri[cnt] = '4';
- Lcd_Out(1, 9, cifri);
- cnt++;
- }
- if(kp == 3){
- cifri[cnt] = '7';
- Lcd_Out(1, 9, cifri);
- cnt++;
- }
- if(kp == 5){
- cifri[cnt] = '2';
- Lcd_Out(1, 9, cifri);
- cnt++;
- }
- if(kp == 6){
- cifri[cnt] = '5';
- Lcd_Out(1, 9, cifri);
- cnt++;
- }
- if(kp == 7){
- cifri[cnt] = '8';
- Lcd_Out(1, 9, cifri);
- cnt++;
- }
- if(kp == 8){
- cifri[cnt] = '0';
- Lcd_Out(1, 9, cifri);
- cnt++;
- }
- if(kp == 9){
- cifri[cnt] = '3';
- Lcd_Out(1, 9, cifri);
- cnt++;
- }
- if(kp == 10){
- cifri[cnt] = '6';
- Lcd_Out(1, 9, cifri);
- cnt++;
- }
- if(kp == 11){
- cifri[cnt] = '9';
- Lcd_Out(1, 9, cifri);
- cnt++;
- }
- if(kp == 13){
- cifri[cnt-1] = ' ';
- cifri[cnt] = ' ';
- Lcd_Out(1, 9, cifri);
- cnt--;
- }
- if(kp == 12) //stegnal ACK i na LCD da se prikaze
- break;
- }
- for(i=0; i<sizeof(cifri); i++){
- cifri[i] = ' ';
- }
- cnt=0;
- while(1) {
- kp = 0;
- while(!kp){
- kp = Keypad_Key_Click();
- }
- if(kp == 1){
- cifri[cnt] = '1';
- Lcd_Out(2, 10, cifri);
- cnt++;
- }
- if(kp == 2){
- cifri[cnt] = '4';
- Lcd_Out(2, 10, cifri);
- cnt++;
- }
- if(kp == 3){
- cifri[cnt] = '7';
- Lcd_Out(2, 10, cifri);
- cnt++;
- }
- if(kp == 5){
- cifri[cnt] = '2';
- Lcd_Out(2, 10, cifri);
- cnt++;
- }
- if(kp == 6){
- cifri[cnt] = '5';
- Lcd_Out(2, 10, cifri);
- cnt++;
- }
- if(kp == 7){
- cifri[cnt] = '8';
- Lcd_Out(2, 10, cifri);
- cnt++;
- }
- if(kp == 8){
- cifri[cnt] = '0';
- Lcd_Out(2, 10, cifri);
- cnt++;
- }
- if(kp == 9){
- cifri[cnt] = '3';
- Lcd_Out(2, 10, cifri);
- cnt++;
- }
- if(kp == 10){
- cifri[cnt] = '6';
- Lcd_Out(2, 10, cifri);
- cnt++;
- }
- if(kp == 11){
- cifri[cnt] = '9';
- Lcd_Out(2, 10, cifri);
- cnt++;
- }
- if(kp == 13){
- cifri[cnt-1] = ' ';
- cifri[cnt] = ' ';
- Lcd_Out(2, 10, cifri);
- cnt--;
- }
- if(kp == 12) //stegnal ACK i na LCD da se prikaze
- break;
- }
- kp = 0;
- potvrdi = 0;
- while(!kp || !potvrdi){ // posle vneseni naplata i bakshish kelnerot si vnesuva id, OK
- kp = Keypad_Key_Click();
- potvrdi = Keypad_Key_Click();
- }
- if(kp == 1){
- //zapishi mu ja vo eeprom na igor
- }
- if(kp == 2){
- //zapish i ja vo eeprom na ana
- }
- /*if(kp != oldstate){ //ako pritisnatiot taster e razlichen od prethodniot
- keypadcount = 1;
- oldstate = kp;
- }
- else{
- keypadcount++;
- }*/
- //}
- /* PROVERKA DALI E ZACHUVAN RESTORANOT VO EEPROM
- for(i=0; i<6; i++){
- promenliva[i] = EEPROM_Read(10+i);
- }
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Out(1,1,promenliva);
- */
- /* //GRESHKA VO ZAPISHUVANJE VO EEPROM
- //for (i=0;i <5; i++){
- // for (j=0; j<5;j++){
- // EEPROM_Write(15+i, kelneri[i][j]);
- // Delay_ms(10);
- // }
- // }
- //for (i=0;i <5; i++){
- // for (j=0; j<5;j++){
- // proba[i][j] = EEPROM_Read(15+i);
- // }
- //}
- // Lcd_Cmd(_LCD_CLEAR);
- // Lcd_Out(1,1,proba);
- */
- //Ako nema RB0 prekin
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement