با سلام خدمت تمامی دوستان
من در حال یادگیری و کار با یک 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); }
دیدگاه