با سلام خدمت تمامی دوستان
من در حال یادگیری و کار با یک MMC هستم
من دو تا INTERRUPT هم نوشتم واسه خواندن روی MMC و نوشتن روی آن
کدش را نوشتم و یک SAMPLE کد هم دیدم که تونستم با اون برنامه را به درستی RUN کنم
ولی مشکل ااصلی من بخش تایمر و کانتر اون بود که چرا باید در MAIN برنامه از کانتر و تایمر استفاده کنه
چون زمانی که بخش تایمر و کانترش را به صورت کامنت میکنم کلا دیگه برنامه تعطیل میشه
میخواستم از دوستان بنده را راهنمایی کنند
منتظر راهنمایی هاتون هستم
کد:
#include <mega32.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
#include <spi.h>
#include <lcd.h>
#include "mmc_lib.h"
#define CS PORTB.0
char str[1];
unsigned char buf_mmc[512];
unsigned char gholi_mmc[512];
unsigned long sector_num;
unsigned int i,j;
#asm
.equ __lcd_port=0x15;
#endasm
// External Interrupt 0 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
#asm ("cli")
PORTA.0=0;
PORTB=0Xff;
mmc_init();
for(i=0;i<512;i++)
{
buf_mmc[i]=i;
}
CS=0;
mmc_read(sector_num,buf_mmc);
CS=1;
for (j=0;j<85;j++)
{
delay_ms(100);
itoa(buf_mmc [i+5*j],str);
lcd_gotoxy(3*i,0);
lcd_puts(str);
}
delay_ms(500);
lcd_clear();
lcd_gotoxy(0,0);
}
PORTA.0=1;
#asm("sei")
}
// External Interrupt 1 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
#asm("cli");
PORTA.0=0;
PORTB=0xff;
mmc_init();
for(i=0;i<512;i++)
{
buf_mmc[i]=i;
}
CS=0;
mmc_write(sector_num,buf_mmc);
lcd_clear();
lcd_gotoxy(0,0);
//lcd_putchar(gholi_mmc[1]);
itoa(gholi_mmc[1],str);
lcd_puts(str);
delay_ms(500);
CS=1;
delay_ms(500);
PORTA.0=1;
#asm("sei")
}
void main(void)
{
PORTA=0xff;
DDRA=0xff;
/////////
PORTB=0xFF;
DDRB=0XB1;
PORTC=0X00;
DDRC=0X00;
PORTD=0XFF;
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=0X0A;
MCUCSR=0X00;
GIFR=0XC0;
TIMSK=0X00;
ACSR=0X80;
SFIOR=0X00;
SPCR=0X50;
SPSR=0X00;
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("mmc read/write");
#asm("sei")
sector_num=50;
while(1);
}





دیدگاه