اطلاعیه

Collapse
No announcement yet.

مشکل در نوشتن برنامه ماشین حساب ساده

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در نوشتن برنامه ماشین حساب ساده

    سلام من برنامه یه ماشین حساب ساده رو دارم مینویسم که گام اول میخوام 2 عدد یک کاراکتری ورودی رو بگیره و یکی از (4 عمل اصلی) رو روش انجام بده و خروجی رو نمایش بده

    این برنامه منه که با codevision نوشتم اما وقتی توی پروتئوس run میگیرم جوابم خیلی قاطی پاتیه!!!

    کد:
    /*****************************************************
    This program was produced by the
    CodeWizardAVR V2.05.0 Evaluation
    Automatic Program Generator
    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com
    
    Project : 
    Version : 
    Date  : 06/27/2013
    Author : Freeware, for evaluation and non-commercial use only
    Company : 
    Comments: 
    
    
    Chip type        : ATmega16
    Program type      : Application
    AVR Core Clock frequency: 1.000000 MHz
    Memory model      : Small
    External RAM size    : 0
    Data Stack size     : 256
    *****************************************************/
    
    #include <mega16.h>
     #include <delay.h>
     #include <stdlib.h>
     
    #include <math.h>
    // Alphanumeric LCD Module functions
    #include <alcd.h>
    
    // Declare your global variables here
     char a[10],op1,op2,op3,op4,op5,c[5],k,op;
     unsigned char i,m,n;
    void main(void)
    {
    // Declare your local variables here
    
    // Input/Output Ports initialization
    // Port A initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
    PORTA=0x00;
    DDRA=0xFF;
    
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTB=0x00;
    DDRB=0x00;
    
    // Port C initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTC=0x00;
    DDRC=0x00;
    
    // Port D initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In 
    // State7=0 State6=0 State5=0 State4=0 State3=P State2=P State1=P State0=P 
    PORTD=0x0F;
    DDRD=0xF0;
    
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=0xFF
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;
    
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=0xFF
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    
    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;
    
    // USART initialization
    // USART disabled
    UCSRB=0x00;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    // ADC initialization
    // ADC disabled
    ADCSRA=0x00;
    
    // SPI initialization
    // SPI disabled
    SPCR=0x00;
    
    // TWI initialization
    // TWI disabled
    TWCR=0x00;
    
    // Alphanumeric LCD initialization
    // Connections specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTA Bit 0
    // RD - PORTA Bit 1
    // EN - PORTA Bit 2
    // D4 - PORTA Bit 4
    // D5 - PORTA Bit 5
    // D6 - PORTA Bit 6
    // D7 - PORTA Bit 7
    // Characters/line: 16
    lcd_init(16);
    //_lcd_write_data(0xf);
    while (1)
       { 
        s1:
        //---ROW1---
        PORTD.4=0;
        delay_ms(2);
        if(PIND.0==0) {a[i]=7;i++;;lcd_putchar('7');while(PIND.0==0);}
        if(PIND.1==0) {a[i]=8;i++; lcd_putchar('8');while(PIND.1==0);}
        if(PIND.2==0) {a[i]=9;i++;lcd_putchar('9');while(PIND.2==0);}
        if(PIND.3==0) {op1=a[i]=13;i++;lcd_putchar('/');while(PIND.3==0);} 
       
        PORTD.4=1;
        //---ROW2---
        PORTD.5=0;
        delay_ms(2);
        if(PIND.0==0) {a[i]=4;i++;lcd_putchar('4');while(PIND.0==0);}
        if(PIND.1==0) {a[i]=5;i++;lcd_putchar('5');while(PIND.1==0);}
        if(PIND.2==0) {a[i]=6;i++;lcd_putchar('6');while(PIND.2==0);}
        if(PIND.3==0) {op2=a[i]=12;i++;lcd_putchar('*');while(PIND.3==0);}
        PORTD.5=1;
        //---ROW3---
        PORTD.6=0;
        delay_ms(2);
        if(PIND.0==0) {a[i]=1;i++;lcd_putchar('1');while(PIND.0==0);}
        if(PIND.1==0) {a[i]=2;i++;lcd_putchar('2');while(PIND.1==0);}
        if(PIND.2==0) {a[i]=3;i++;lcd_putchar('3');while(PIND.2==0);} 
        if(PIND.3==0) {op3=a[i]=11;i++;lcd_putchar('-');while(PIND.3==0);}
        PORTD.6=1;
        //---ROW4---
        PORTD.7=0;
       delay_ms(2);
       if(PIND.0==0) {lcd_clear();while(PIND.0==0);}
       if(PIND.1==0) {a[i]=0;i++;lcd_putchar('0');while(PIND.1==0);}
      // if(PIND.2==0) {op5=a[i]=15;i++; lcd_putchar('='); while(PIND.2==0);} 
       if(PIND.2==0) {op5=a[i]=15;i++;lcd_putchar('=');while(PIND.2==0);} 
       if(PIND.3==0) {op4=a[i]=10;i++;lcd_putchar('+'); while(PIND.3==0);}
        PORTD.7=1;
          
        if(a[i]==op5)
        {
        m=a[i-2];
        op=a[i-3];
        n=a[i-4]; 
        }  
        
        if(a[i-2]==op1) {k=m/n;ftoa(k,2,c); lcd_puts(c);}
        if(a[i-2]==op2) {k=m*n;ftoa(k,2,c); lcd_puts(c);}
        if(op==op3) {k=m-n;ftoa(k,2,c); lcd_puts(c);}
        if(op==op4) {k=m+n;ftoa(k,2,c); lcd_puts(c);}  
        goto s1; 
       // lcd_putchar(c)
       }        
       }

    ممکنه بگین مشکل کار من چیه؟
    من دنبال راهم...

    #2
    پاسخ : مشکل در نوشتن برنامه ماشین حساب ساده

    کسی نیست جواب من و بده!!!! :eek:
    من دنبال راهم...

    دیدگاه


      #3
      پاسخ : مشکل در نوشتن برنامه ماشین حساب ساده

      من جای شما باشم اول یه برنامه ماشین حساب میگیرم و خوب نگاش میکنم ببینم چیکار کرده و بعد شروع میکردم.

      دیدگاه


        #4
        پاسخ : مشکل در نوشتن برنامه ماشین حساب ساده

        با تشکر از دوستان من مشکل کارم و پیدا کردم حالا سوالم اینه

        من یه
        کد:
        char a[10];
        دارم که هر بار یه عددی توش ذخیره میشه

        میخوام این کار و انجام بدم



        هر جور برنامه رو تغییر میدم متوجه نمیشه به op(عملگر) که میرسه باید متوقف بشه

        کد:
        for(l=i-1;(a[i]==op1)||(a[i]==op2)||(a[i]==op3)||(a[i]==op4);l--)
        یااین فقط برای تقسیم
        کد:
         for(l=i-1;a[i]!=47;l--)
        کسی میتونه به من کمک کنه؟؟؟؟؟

        لطفااااااااااااااااااااااااااااااااااااااااااااااا ااااااااااااااااااااااااااااااااااااااااااااا
        من دنبال راهم...

        دیدگاه

        لطفا صبر کنید...
        X