Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- char keypadPort at PORTD;
- sbit LCD_RS at RA4_bit;
- sbit LCD_EN at RA5_bit;
- sbit LCD_D4 at RA0_bit;
- sbit LCD_D5 at RA1_bit;
- sbit LCD_D6 at RA2_bit;
- sbit LCD_D7 at RA3_bit;
- sbit LCD_RS_Direction at TRISA4_bit;
- sbit LCD_EN_Direction at TRISA5_bit;
- sbit LCD_D4_Direction at TRISA0_bit;
- sbit LCD_D5_Direction at TRISA1_bit;
- sbit LCD_D6_Direction at TRISA2_bit;
- sbit LCD_D7_Direction at TRISA3_bit;
- int flag;
- int k;
- int kp;
- int countPom = 0;
- int nizaPom[3];
- char uart_rd;
- char pp[4];
- char print[15];
- char print2[15];
- int niza[6];
- int niza2[40];
- int pom = 14;
- int trocifren;
- int value, count = 0;
- int isStarted = 0;
- int brojach = 0;
- int brojach2 = 0;
- int broj;
- int Dvocifren(int a){
- if(a >= 10 && a <= 99)
- return 1;
- else
- return 0;
- }
- int makeTrocifren(int niza3[3]){
- trocifren = niza3[0] * 100 + niza3[1] * 10 + niza3[2];
- return trocifren;
- }
- void main() {
- Keypad_Init(); // initialize the keypad
- ANSEL = 0;
- ANSELH = 0; // AN pins are configured as digital
- ANSELH.B4 = 1;
- TRISB.B0 = 1;
- Lcd_Init(); // initialize the LCD
- Lcd_Cmd(_LCD_CLEAR); // clear the screen
- Lcd_Cmd(_LCD_CURSOR_OFF);
- C1ON_bit = 0; // comparators are disabled
- C2ON_bit = 0;
- UART1_Init(9600); // Initialization of UART on 9600 bps
- Delay_ms(100);
- do
- {
- kp = 0;
- do
- kp = Keypad_Key_Click();
- while (!kp);
- switch (kp)
- {
- case 1: kp = -1; break;
- case 2: kp = 1; break;
- case 3: kp = -1; break;
- case 4: kp = -1; break;
- case 5: kp = 2; break;
- case 6: kp = 3; break;
- case 7: kp = -1; break;
- case 8: kp = -1; break;
- case 9: kp = 4; break;
- case 10: kp = 5; break;
- case 11: kp = -1; break;
- case 12: kp = -1; break;
- case 13: kp = -1; break;
- case 14: kp = 6; break;
- case 15: kp = -1; break;
- case 16: kp = -1; break;
- }
- if(kp == 2){
- isStarted = 1;
- Lcd_Cmd(_LCD_CLEAR);
- LCD_Out(1,1, "Reading");
- while(count < 6){
- value = ADC_Read(12);
- if(Dvocifren(value) == 1)
- {
- niza[count] = value;
- count++;
- }
- Delay_ms(25);
- }
- count = 0;
- Lcd_Cmd(_LCD_CLEAR);
- while(count < 6){
- print[count * 2] = niza[count] / 10 + 48;
- print[count * 2 + 1] = niza[count] % 10 + 48;
- count++;
- }
- LCD_Out(1,1,print);
- Lcd_Cmd(_LCD_CLEAR);
- while(1){
- flag = 0;
- brojach = 0;
- brojach2 = 0;
- while(1){
- if (UART1_Data_Ready()) {
- uart_rd = UART1_Read();
- LCD_Chr(1,1,uart_rd);
- Delay_ms(15);
- Lcd_Cmd(_LCD_CLEAR);
- if(isdigit(uart_rd)){
- nizaPom[brojach] = uart_rd - 48;
- brojach++;
- LCD_Out(2,1, "IS DIGIT");
- }
- else if (uart_rd == '-'){
- if(brojach != 3){
- flag = 1;
- LCD_Out(1,1,"FIRST ONE");
- Lcd_Cmd(_LCD_CLEAR);
- break;
- }
- else{
- brojach = 0;
- broj = MakeTrocifren(nizaPom);
- niza2[brojach2] = broj;
- brojach2++;
- IntToStr(brojach2, pp);
- LCD_Out(2,1, pp);
- }
- }
- else if( uart_rd == '$'){
- if(brojach2 != 3){
- LCD_Out(1,1,"SECOND ONE");
- Lcd_Cmd(_LCD_CLEAR);
- flag = 1;
- }
- break;
- }
- else{
- flag = 1;
- LCD_Out(1,1,"THIRD ONE");
- Lcd_Cmd(_LCD_CLEAR);
- break;
- }
- }
- }
- if(flag == 1){
- Lcd_Cmd(_LCD_CLEAR);
- LCD_Out(1,1, "Error");
- }
- else if (flag == 0){
- brojach2 = 0;
- //Lcd_Cmd(_LCD_CLEAR);
- LCD_Out(1,1, "IT'S OKAY");
- while(brojach2 < 4){
- k = niza2[brojach2] / 100 - 48;
- print2[brojach2 * 3] = k;
- print2[brojach2 * 3 + 1] = ((niza2[brojach2] / 10) % 10) - 48;
- print2[brojach2 * 3 + 2] = niza2[brojach2] % 100 - 48;
- }
- LCD_Out(1,1,print2);
- Delay_ms(20);
- break;
- }
- }
- if(isStarted){
- }
- }
- }
- while(1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement