با سلام دوستان
این یه برنامس که قراره بدونه تابع delay نوشته بشه از دوستان خاهش میکنم ببینن مشکل این برنامه چیه که سگمنتاش پرش داره
کریستال 1 مگ داخلی هست و تایمر هر یک میلی ثانیه سر ریز میشه
این یه برنامس که قراره بدونه تابع delay نوشته بشه از دوستان خاهش میکنم ببینن مشکل این برنامه چیه که سگمنتاش پرش داره
کریستال 1 مگ داخلی هست و تایمر هر یک میلی ثانیه سر ریز میشه
کد:
#include <mega16.h> flash unsigned char seg []={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; volatile unsigned char dig[4],sec=5,min=18,hor=9; interrupt [TIM0_COMP] void timer0_comp_isr(void) { static unsigned char sel=0; static int x1000; PORTB&=~(15);//3 pin aval halate avalie hastan hastan PORTD=seg[dig[sel]]; if(x1000<=500 & sel==2)PORTD&=0x7f; PORTB=1<<sel; if(++sel==4)sel=0; if(++x1000==1000){ x1000=0; if(++sec==60){ sec=0; min++; } if(min==60){ min=0; hor++; } if(hor==24){ hor=0; } } } // Declare your global variables here void main(void) { PORTD=0xFF; DDRD=0xFF; DDRB=0xff; TCCR0=0x0A; TCNT0=0x00; OCR0=0x7C; TIMSK=0x02; #asm("sei") while (1) { dig[0]=min%10; dig[1]=min/10; dig[2]=hor%10; dig[3]=hor/10; } }
دیدگاه