This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

atmel89s8252 problem to display in lcd

the problem i ask yesterday hv solved, the now i'm facing another prob. which is the velocity value cant display in LCD once i reach "START==0 AND STOP==0" it will display 255 for the velocity value, could anyone help me with that, thanks alot

#include <AT898252.H>
#include <stdio.h>
#include "LCD.c"
unsigned char pulse_low=0,pulse_high=0;
unsigned int overflow_count=0,int_count=1,pulse=0,time=0;
unsigned int velocity=0;
unsigned long int pulse_width=0;
unsigned char b;
sbit START=P1^0;
sbit STOP=P1^1;
char buf[16];
void main(){
        lcd_init();
        lcd_puts("The Speed Is");
        msdelay(1000);
        TMOD=0x90;
        TF1=0;
        IT1=1;
        IE=0x8c;
        while(1){
                unsigned char a;
        //      unsigned char x;
                if(START==0&&STOP==1){
                        a=0;
                }
                else if(START==1&&STOP==0){
                        a=2;
                }
                else if(START==1&&STOP==1){
                        a=3;
                }
                else if (START==0&&STOP==0){
                        a=1;
                }

                switch(a){
                        case 0:{
                                TR1=1;
                                break;
                        }

                        case 1:{
                                pulse_low=TL1;
                                pulse_high=TH1;
                                pulse=(TH1<<8)+TL1;
                                pulse_width=(overflow_count)*65536+pulse;
                                time=pulse_width/13921583;
                                velocity=(180/time);
                                lcd_gotoxy(0,1);
                                lcd_putchar(' ');
                                sprintf(buf,"%u",v);
                                lcd_puts(buf);
                                break;
                        }
                        case 2:{
                                TR1=0;
                                TH1=0x00;
                                TL1=0x00;
                                overflow_count=0;
                                break;
                        }
                        default:{
                                break;

                        }
                }
        }
}
void timer1_int()interrupt 3
{
 overflow_count++;
}

Parents Reply Children
  • this is the the actual coding

    #include <AT898252.H>
    #include <stdio.h>
    #include "LCD.c"
    unsigned char pulse_low=0,pulse_high=0;
    unsigned int overflow_count=0,int_count=1,pulse=0,time=0;
    unsigned int velocity=0;
    unsigned long int pulse_width=0;
    unsigned char b;
    sbit START=P1^0;
    sbit STOP=P1^1;
    char buf[16];
    void main(){
            lcd_init();
            lcd_puts("The Speed Is");
            msdelay(1000);
            TMOD=0x90;
            TF1=0;
            IT1=1;
            IE=0x8c;
            while(1){
                    unsigned char a;
            //      unsigned char x;
                    if(START==0&&STOP==1){
                            a=0;
                    }
                    else if(START==1&&STOP==0){
                            a=2;
                    }
                    else if(START==1&&STOP==1){
                            a=3;
                    }
                    else if (START==0&&STOP==0){
                            a=1;
                    }
    
                    switch(a){
                            case 0:{
                                    TR1=1;
                                    break;
                            }
    
                            case 1:{
                                    pulse_low=TL1;
                                    pulse_high=TH1;
                                    pulse=(TH1<<8)+TL1;
                                    pulse_width=(overflow_count)*65536+pulse;
                                    time=pulse_width/13921583;
                                    velocity=(180/time);
                                    lcd_gotoxy(0,1);
                                    lcd_putchar(' ');
                                    sprintf(buf,"%u",velocity);
                                    lcd_puts(buf);
                                    break;
                            }
                            case 2:{
                                    TR1=0;
                                    TH1=0x00;
                                    TL1=0x00;
                                    overflow_count=0;
                                    break;
                            }
                            default:{
                                    break;
    
                            }
                    }
            }
    }
    void timer1_int()interrupt 3
    {
     overflow_count++;
    }
    
    
    

  • this is the the actual coding

    You are insulting code by naming your scribbles so.

    Of course, if your attitude is that those willing to help you for free can just spend their time figuring it out, after all it is not your valuable time, then you can hope that some sucker will help you.

    Erik

  • As suggested earlier, "Providing clear, descriptive comments would help you as much as anyone else!"