اطلاعیه

Collapse
No announcement yet.

سلام کمک برای برنامه نویسی با زبان c

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

    سلام کمک برای برنامه نویسی با زبان c

    باسلام خدمت دوستان عزیز
    ببخشید بنده پروژه دانشگام چراغ راهنمایی ورانندگی هوشمند است با مادون قرمز وحالا تا این مرحله از بنامه نویسی پیش اومدم ولی بقیه اش را نمیتونم
    که اگر مثلا این طرف چهارراه 15تا ماشین عبور کرد واون طرف چهار راه 10 تا حالا میکرو تشخیص دهد با مادون قرمز و حالا اون طرف چهارراه که تعداد بیشتری ماشین عبور کرده ثانیه شمار سبزش را بیشتر وقرمزش را کمتر وبالعکس
    خداییش اگر کسی میتونه کمک کنه بدجور تواین قسمتش گیر کردم برای تعداد شمارش آخه تازه کار هستم.
    [code=c]
    [#include <mega16.h
    #include <delay.h>
    #include <stdio.h>
    #include <stdlib.h>
    #asm
    .equ __lcd_port=0x15 ;PORTC
    #endasm
    #include <lcd.h>
    int i,j,m;
    char r[6];
    char y[6];
    char g[6];
    interrupt [EXT_INT0] void ext_int0_isr(void)این جا تایمر صفر بوده که اگر در عمل یک شد (همون سنسور مادون قرمز )این عمل را انجام یعنی یک بار دوباره مثل برنامه اصلی بشمارد وبعد تعداد ثانیه ها را اضافه کند تا اینجاشو میدونم ولی نمیدونم اگر بخوام چند تا بشماره وبعد با تایمر یک مقایسه کنه باید چیکار کنم
    {
    if(PIND.2==1)
    {
    lcd_clear();
    PORTB.0=1;
    PORTB.5=1;
    for(i=15;i>=0;i--)
    {
    sprintf(r,"r=%u",i);
    lcd_gotoxy(0,0);
    lcd_puts(r);
    sprintf(g,"g=%u",i);
    lcd_gotoxy(10,1);
    lcd_puts(g);
    delay_ms(20);
    };
    PORTB.0=0;
    PORTB.5=0;
    PORTB.1=1;
    PORTB.4=1;
    for(j=3;j>=0;j--)
    {
    sprintf(y,"y=%u",j);
    lcd_gotoxy(5,0);
    lcd_puts(y);
    sprintf(y,"y=%u",j);
    lcd_gotoxy(5,1);
    lcd_puts(y);
    delay_ms(20);
    };
    PORTB.1=0;
    PORTB.4=0;
    PORTB.3=1;
    PORTB.2=1;
    for(m=15;m>=0;m--)
    {
    sprintf(g,"g=%u",m);
    lcd_gotoxy(10,0);
    lcd_puts(g);
    sprintf(r,"r=%u",m);
    lcd_gotoxy(0,1);
    lcd_puts(r);
    delay_ms(20);
    };
    PORTB.2=0;
    PORTB.3=0;
    PORTB.0=1;
    PORTB.5=1;
    for(i=20;i>=0;i--)
    {
    sprintf(r,"r=%u",i);
    lcd_gotoxy(0,0);
    lcd_puts(r);
    sprintf(g,"g=%u",i);
    lcd_gotoxy(10,1);
    lcd_puts(g);
    delay_ms(20);
    };
    PORTB.0=0;
    PORTB.5=0;
    PORTB.1=1;
    PORTB.4=1;
    for(j=3;j>=0;j--)
    {
    sprintf(y,"y=%u",j);
    lcd_gotoxy(5,0);
    lcd_puts(y);
    sprintf(y,"y=%u",j);
    lcd_gotoxy(5,1);
    lcd_puts(y);
    delay_ms(20);
    };
    PORTB.1=0;
    PORTB.4=0;
    PORTB.3=1;
    PORTB.2=1;
    for(m=10;m>=0;m--)
    {
    sprintf(g,"g=%u",m);
    lcd_gotoxy(10,0);
    lcd_puts(g);
    sprintf(r,"r=%u",m);
    lcd_gotoxy(0,1);
    lcd_puts(r);
    delay_ms(20);
    };
    PORTB.2=0;
    PORTB.3=0;
    }
    }
    interrupt [EXT_INT1] void ext_int1_isr(void)
    {
    if(PIND.3==1)
    {
    lcd_clear();
    PORTB.0=1;
    PORTB.5=1;
    for(i=15;i>=0;i--)
    {
    sprintf(r,"r=%u",i);
    lcd_gotoxy(0,0);
    lcd_puts(r);
    sprintf(g,"g=%u",i);
    lcd_gotoxy(10,1);
    lcd_puts(g);
    delay_ms(20);
    };
    PORTB.0=0;
    PORTB.5=0;
    PORTB.1=1;
    PORTB.4=1;
    for(j=3;j>=0;j--)
    {
    sprintf(y,"y=%u",j);
    lcd_gotoxy(5,0);
    lcd_puts(y);
    sprintf(y,"y=%u",j);
    lcd_gotoxy(5,1);
    lcd_puts(y);
    delay_ms(20);
    };
    PORTB.1=0;
    PORTB.4=0;
    PORTB.3=1;
    PORTB.2=1;
    for(m=15;m>=0;m--)
    {
    sprintf(g,"g=%u",m);
    lcd_gotoxy(10,0);
    lcd_puts(g);
    sprintf(r,"r=%u",m);
    lcd_gotoxy(0,1);
    lcd_puts(r);
    delay_ms(20);
    };
    PORTB.2=0;
    PORTB.3=0;
    PORTB.0=1;
    PORTB.5=1;
    for(i=10;i>=0;i--)
    {
    sprintf(r,"r=%u",i);
    lcd_gotoxy(0,0);
    lcd_puts(r);
    sprintf(g,"g=%u",i);
    lcd_gotoxy(10,1);
    lcd_puts(g);
    delay_ms(20);
    };
    PORTB.0=0;
    PORTB.5=0;
    PORTB.1=1;
    PORTB.4=1;
    for(j=3;j>=0;j--)
    {
    sprintf(y,"y=%u",j);
    lcd_gotoxy(5,0);
    lcd_puts(y);
    sprintf(y,"y=%u",j);
    lcd_gotoxy(5,1);
    lcd_puts(y);
    delay_ms(20);
    };
    PORTB.1=0;
    PORTB.4=0;
    PORTB.3=1;
    PORTB.2=1;
    for(m=20;m>=0;m--)
    {
    sprintf(g,"g=%u",m);
    lcd_gotoxy(10,0);
    lcd_puts(g);
    sprintf(r,"r=%u",m);
    lcd_gotoxy(0,1);
    lcd_puts(r);
    delay_ms(20);
    };
    PORTB.2=0;
    PORTB.3=0;
    }
    }
    void main(void)
    {
    PORTA=0x00;
    DDRA=0x00;

    PORTB=0x00;
    DDRB=0xFF;
    PORTC=0x00;
    DDRC=0x00;
    PORTD=0x0C;
    DDRD=0x00;
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    GICR|=0xC0;
    MCUCR=0x0F;
    MCUCSR=0x00;
    GIFR=0xC0;
    TIMSK=0x00;
    ACSR=0x80;
    SFIOR=0x00;
    lcd_init(16);
    #asm("sei&quot
    if(PIND.2!=1/PIND.3!=1)
    {
    while (1)
    {
    PORTB.0=1;
    PORTB.5=1;
    for(i=15;i>=0;i--)
    {
    sprintf(r,"r=%u",i);
    lcd_gotoxy(0,0);
    lcd_puts(r);
    sprintf(g,"g=%u",i);
    lcd_gotoxy(10,1);
    lcd_puts(g);
    delay_ms(20);
    };
    PORTB.0=0;
    PORTB.5=0;
    PORTB.1=1;
    PORTB.4=1;
    for(j=3;j>=0;j--)
    {
    sprintf(y,"y=%u",j);
    lcd_gotoxy(5,0);
    lcd_puts(y);
    sprintf(y,"y=%u",j);
    lcd_gotoxy(5,1);
    lcd_puts(y);
    delay_ms(20);
    };
    PORTB.1=0;
    PORTB.4=0;
    PORTB.3=1;
    PORTB.2=1;
    for(m=15;m>=0;m--)
    {
    sprintf(g,"g=%u",m);
    lcd_gotoxy(10,0);
    lcd_puts(g);
    sprintf(r,"r=%u",m);
    lcd_gotoxy(0,1);
    lcd_puts(r);
    delay_ms(20);
    };
    PORTB.2=0;
    PORTB.3=0;
    }
    };
    }[/code]


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