اطلاعیه

Collapse
No announcement yet.

برنامه نویسی

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

    برنامه نویسی

    میخوام از طریق ارتباط spi دوتا میکرو با هم در ارتباط باشن و از طریق lcd که متصل به یکی از این میکرو ها اطلاعات تبادل شده را نمایش دهم اما به مشکل خوردم عمل نمی کنه مدارم میتونین کمکم کنین؟
    برنامه master:
    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V2.05.0 Advanced
    Automatic Program Generator
    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 02/26/2015
    Author : www.Eca.ir *** www.Webkade.ir
    Company :
    Comments:


    Chip type : ATmega16
    Program type : Application
    AVR Core Clock frequency: 8.001000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 256
    ************************************************** ***/

    #include <mega16.h>
    #include <delay.h>
    #include <stdio.h>
    #include <spi.h>
    #define _ALTERNATE_PUTCHAR_
    #pragma used+
    void putchar(char c)
    {
    spi(c);
    }
    #pragma used-
    // eclare your global variables here

    void main(void)
    {
    char str[40];
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A 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
    PORTA=0x00;
    DDRA=0x00;

    // Port B 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
    PORTB=0x00;
    DDRB=0xFF;

    // 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=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
    PORTD=0x00;
    DDRD=0x00;

    // 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 Type: Master
    // SPI Clock Rate: 500.063 kHz
    // SPI Clock Phase: Cycle Half
    // SPI Clock Polarity: Low
    // SPI Data Order: MSB First
    SPCR=0x55;
    SPSR=0x00;

    // TWI initialization
    // TWI disabled
    TWCR=0x00;

    while (1)
    {
    // Place your code here
    delay_ms(100);
    sprintf(str,"#PORTA=%03u PORTC=%03u PORTD=%3u",PINA,PINC,PIND);
    puts(str);
    };
    };
    برنامه slave :

    #include <mega16.h>
    #include <delay.h>
    #include <spi.h>
    #asm
    .equ_lcd_port=0x15
    #endasm
    #include <alcd.h>
    bit senddata=0;
    #include <stdio.h>

    // SPI interrupt service routine
    char buffer[32],wr_index=0;
    interrupt [SPI_STC] void spi_isr(void)
    {
    unsigned char data;
    data=SPDR;
    #asm ("sei"
    if (data=='#&#039
    {
    buffer[0]=data;
    wr_index=1;
    }
    else if (wr_index>=1 && data!='\r&#039
    {
    buffer[wr_index]=data;
    wr_index++;
    }
    else if(data=='\r&#039
    {senddata=1;
    }else
    wr_index=0;
    }

    // Declare your global variables here

    void main(void)
    {
    char str[32];
    #asm("sei&quot
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A initialization
    // Func7=In Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=0 State5=T State4=T State3=T State2=T State1=T State0=T
    PORTA=0x00;
    DDRA=0x40;

    // Port B initialization
    // Func7=In Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=0 State5=T State4=T State3=T State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0x40;

    // Port C 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
    PORTC=0x00;
    DDRC=0xFF;

    // Port D 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
    PORTD=0x00;
    DDRD=0x00;

    // 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 Type: Slave
    // SPI Clock Phase: Cycle Half
    // SPI Clock Polarity: Low
    // SPI Data Order: MSB First
    SPCR=0xC5;
    SPSR=0x00;

    // Clear the SPI interrupt flag
    #asm
    in r30,spsr
    in r30,spdr
    #endasm

    // TWI initialization
    // TWI disabled
    TWCR=0x00;

    // Alphanumeric LCD initialization
    // Connections specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTC Bit 0
    // RD - PORTC Bit 1
    // EN - PORTC Bit 2
    // D4 - PORTC Bit 4
    // D5 - PORTC Bit 5
    // D6 - PORTC Bit 6
    // D7 - PORTC Bit 7
    // Characters/line: 16
    lcd_init(16);

    // Global enable interrupts
    #asm("sei&quot

    while (1)
    {
    if(senddata)
    {
    lcd_clear();
    lcd_gotoxy(0,0);
    sprintf(str,"%s",buffer);
    lcd_puts(str);
    senddata=0;
    // Place your code here

    }
    };
    }
    :nerd:
لطفا صبر کنید...
X