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;
- char kp;
- int input;
- int numbers[6];
- int i, j, index;
- char text[16], txt[6], guessTxt[20], toBeTxt[20];
- int number;
- int serialNumbers[4];
- short flag;
- char ch;
- int position = 0;
- void main() {
- Keypad_Init();
- ANSEL = 0;
- ANSELH = 0b00010000;
- C1ON_bit = 0;
- C2ON_bit = 0;
- PORTB=0x00;
- TRISB=0x01;
- INTCON=0b10100000;
- Lcd_Init();
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Cmd(_LCD_CURSOR_OFF);
- while(1) {
- kp = 0;
- do
- kp = Keypad_Key_Click();
- while(!kp);
- switch (kp) {
- case 2:
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_out(1,1,"READING");
- i = 0;
- while(i<6) {
- Delay_ms(25);
- input = ADC_Read(12);
- if(input>=10 && input<=99) {
- numbers[i]=input;
- IntToStr(input,txt);
- guessTxt[2*i]=txt[4];
- guessTxt[2*i+1]=txt[5];
- i++;
- }
- }
- Lcd_Cmd(_LCD_CLEAR);
- guessTxt[12]='\0';
- Lcd_out(1,1,guessTxt);
- UART1_Init(9600);
- Delay_ms(50);
- flag=1;
- i = 0;
- while(flag) {
- if (UART1_Data_Ready()) {
- ch = UART1_Read();
- if(isdigit(ch)) number = number*10 + (ch-'0');
- if(ch=='-') {
- if(number>=100 && number<=999){
- serialNumbers[i] = number;
- EEPROM_write(0x00+i, number);
- i++;
- number = 0;
- if (i==4) flag = 0;
- } else {
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_out(1,1,"ERROR");
- i = 0;
- number = 0;
- while(UART1_Data_Ready()) {
- ch = UART1_Read();
- }
- }
- }
- if (ch=='$') {
- if(number>=100 && number<=999){
- serialNumbers[i] = number;
- EEPROM_Write(0x00+i, number);
- i++;
- number = 0;
- }
- if (i==4){
- flag = 0;
- } else {
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_out(1,1,"ERROR");
- i = 0;
- number = 0;
- while(UART1_Data_Ready()) {
- ch = UART1_Read();
- }
- }
- }
- }
- }
- for(i=0;i<4;i++){
- number = serialNumbers[i];
- IntToStr(number,txt);
- toBeTxt[i*3]=txt[3];
- toBeTxt[i*3+1]=txt[4];
- toBeTxt[i*3+2]=txt[5];
- }
- toBeTxt[12]='\0';
- Lcd_out(2,1,toBeTxt);
- Delay_ms(100);
- strcpy(text,"START ");
- Lcd_out(2,1,text);
- break; // START
- case 3:
- Lcd_Cmd(_LCD_CLEAR);
- j = 0;
- for(i=0;i<12;i++){
- if(guessTxt[i]!=toBeTxt[i]) j++;
- }
- IntToStr(j,text);
- Lcd_out(1,1,"ERRORS:");
- Lcd_out(2,1,text);
- Delay_ms(100);
- Lcd_Cmd(_LCD_CLEAR);
- break; // END
- case 5:
- if(position>0) position--;
- break; // <-
- case 6:
- ch = guessTxt[position];
- i = ch - '0';
- if(i<9) i++;
- guessTxt[position] = i + '0';
- Lcd_Out(1,1,guessTxt);
- break; // ++
- case 7:
- ch = guessTxt[position];
- i = ch - '0';
- if(i>0) i--;
- guessTxt[position] = i + '0';
- Lcd_Out(1,1,guessTxt);
- break; // --
- case 8:
- if(position<11) position++;
- break; // ->
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement