سلام بر همه مهندسین
دوستان من یه برنامه ای نوشتم که کدشو براتون میزارم تو این برنامه می خواستم که سون سگمنت مالتی پلکس کاتد مشترک من از 0 تا 59 رو بشماره و و خروجی پورت B به ترتیب به سگمنت وصل شده باشه منتها وقتی من این میکرو رو به سگمنت تو پروتوئوس وصل میکنم عدد روی سگمنت روی صفر میمونه تقریبا یه هفته ای دارم فکر میکنم به جایی نرسیدم کسی میتونه منو راهنمایی کنه؟
اصول کار هم اینه که تایمرم به ازای هر بار overflow در وقفه یکی به m اضافه میکنه و اگه مقدار m =4 بشه ( 4*256ms) حدود یک ثانیه یدونه به سگمنت اضافه میکنه و....
دوستان من یه برنامه ای نوشتم که کدشو براتون میزارم تو این برنامه می خواستم که سون سگمنت مالتی پلکس کاتد مشترک من از 0 تا 59 رو بشماره و و خروجی پورت B به ترتیب به سگمنت وصل شده باشه منتها وقتی من این میکرو رو به سگمنت تو پروتوئوس وصل میکنم عدد روی سگمنت روی صفر میمونه تقریبا یه هفته ای دارم فکر میکنم به جایی نرسیدم کسی میتونه منو راهنمایی کنه؟
اصول کار هم اینه که تایمرم به ازای هر بار overflow در وقفه یکی به m اضافه میکنه و اگه مقدار m =4 بشه ( 4*256ms) حدود یک ثانیه یدونه به سگمنت اضافه میکنه و....
کد:
#include <mega8.h> #include <delay.h> int m ; int n ; int R ; flash unsigned char S[]={0x3f,0x30,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ; void main(void) { DDRB=0xFF; DDRD=(1<<DDD0 )| (1<<DDD1) ; TCCR0=0x05; TCNT0=0x00; TIMSK=1<<TOIE0; #asm("sei") while (1) { PORTD =0x02 ; PORTB=S[n] ; delay_ms(12); } } //////////////////////// interrupt [10] void timer0_ovf_isr(void) { m = m++ ; if ( m==4){ n=n++; if(n==10){ n=0; } R=R++; if(R==60){ R=0 ; } } }
دیدگاه