با سلام
من چند هفته ای میشه که دارم روی مدار ارتباط میکرو با این ایسی کار می کنم ولی هنوز جواب نمیده
کدی که تا حالا نوشتم پائین اومده
خواهش می کنم اگه کسی مشکل رو پیدا کرد کمک کنه
تشکر فراوان
#include <mega32.h>
#include <delay.h>
// SPI functions
#include <spi.h>
// Declare your global variables here
void rec(void)
{
delay_ms(1000);
if(PINA.0==1)
{
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0x20);
delay_ms(10);
PORTB.4=1;
delay_ms(1000);
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0x20);
delay_ms(10);
PORTB.4=1;
delay_ms(1000);
delay_ms(1000);
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0xa0);
delay_ms(10);
PORTB.4=1;
while(PINA.0==1);
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0x30);
delay_ms(10);
PORTB.4=1;
delay_ms(2000);
};
}
void play(void)
{
delay_ms(3000);
if(PINA.1==1)
{
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0x20);
delay_ms(10);
PORTB.4=1;
delay_ms(1000);
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0xE0);
delay_ms(10);
PORTB.4=1;
while(PINA.1==1);
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0x30);
delay_ms(10);
PORTB.4=1;
delay_ms(2000);
};
}
void main(void)
{
// 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=0x03;
DDRA=0x00;
// Port B initialization
// Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0xB0;
// 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=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 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: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// INT1: Off
// INT2: Off
GICR|=0x40;
MCUCR=0x01;
MCUCSR=0x00;
GIFR=0x40;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 62.500 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: LSB First
SPCR=0x71;
SPSR=0x00;
// Global enable interrupts
#asm("sei"
while (1)
{
PORTC=0xff;
delay_ms(1000);
PORTC=0x00;
delay_ms(1000);
// Place your code here
if(PINA.0==1)
rec();
if(PINA.1==1)
play();
};
}
من چند هفته ای میشه که دارم روی مدار ارتباط میکرو با این ایسی کار می کنم ولی هنوز جواب نمیده
کدی که تا حالا نوشتم پائین اومده
خواهش می کنم اگه کسی مشکل رو پیدا کرد کمک کنه
تشکر فراوان
#include <mega32.h>
#include <delay.h>
// SPI functions
#include <spi.h>
// Declare your global variables here
void rec(void)
{
delay_ms(1000);
if(PINA.0==1)
{
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0x20);
delay_ms(10);
PORTB.4=1;
delay_ms(1000);
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0x20);
delay_ms(10);
PORTB.4=1;
delay_ms(1000);
delay_ms(1000);
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0xa0);
delay_ms(10);
PORTB.4=1;
while(PINA.0==1);
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0x30);
delay_ms(10);
PORTB.4=1;
delay_ms(2000);
};
}
void play(void)
{
delay_ms(3000);
if(PINA.1==1)
{
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0x20);
delay_ms(10);
PORTB.4=1;
delay_ms(1000);
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0xE0);
delay_ms(10);
PORTB.4=1;
while(PINA.1==1);
PORTB.4=0;
spi(0x00);
spi(0x00);
spi(0x30);
delay_ms(10);
PORTB.4=1;
delay_ms(2000);
};
}
void main(void)
{
// 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=0x03;
DDRA=0x00;
// Port B initialization
// Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0xB0;
// 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=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 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: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// INT1: Off
// INT2: Off
GICR|=0x40;
MCUCR=0x01;
MCUCSR=0x00;
GIFR=0x40;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 62.500 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: LSB First
SPCR=0x71;
SPSR=0x00;
// Global enable interrupts
#asm("sei"

while (1)
{
PORTC=0xff;
delay_ms(1000);
PORTC=0x00;
delay_ms(1000);
// Place your code here
if(PINA.0==1)
rec();
if(PINA.1==1)
play();
};
}
دیدگاه