سلام دوستان من یک شمارنده دور برای ماشین درست کردم که تو پروتئوس تو دور های پایین سرعتو نشون میده اما تو دورهای بالا سرعتو نشون نمیده
سیستم به این صورته که تو هر یک دهم ثانیه مقدار کانتر یکو میخونه بعد از اعمال ریاضی اونو با سون سگمنت نشون میده اینم برنامش
لطفا بگین کجای کارم ایراد داره
[#include <mega32.h>
char c1,c2,c3,c4;
int a,c,b;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0x3D;
c=a*600/58;
TCNT1L=0;
TCNT1H=0;
}
void main(void)
{
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0xFF;
TCCR0=0x05;
TCNT0=0x3D;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x07;
TCNT1H=0x00;
TCNT1L=0x00;
TIMSK=0x01;
ACSR=0x80;
#asm("sei"
while (1)
{
a=TCNT1H<<8|TCNT1L;
b=c;
c1=b%10;
b=b/10;
c2=b%10;
b=b/10;
c3=b%10;
b=b/10;
c4=b;
PORTC=c2<<4|c1;
PORTD=c4<<4|c3;
}
}
سیستم به این صورته که تو هر یک دهم ثانیه مقدار کانتر یکو میخونه بعد از اعمال ریاضی اونو با سون سگمنت نشون میده اینم برنامش
لطفا بگین کجای کارم ایراد داره
[#include <mega32.h>
char c1,c2,c3,c4;
int a,c,b;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0x3D;
c=a*600/58;
TCNT1L=0;
TCNT1H=0;
}
void main(void)
{
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0xFF;
TCCR0=0x05;
TCNT0=0x3D;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x07;
TCNT1H=0x00;
TCNT1L=0x00;
TIMSK=0x01;
ACSR=0x80;
#asm("sei"

while (1)
{
a=TCNT1H<<8|TCNT1L;
b=c;
c1=b%10;
b=b/10;
c2=b%10;
b=b/10;
c3=b%10;
b=b/10;
c4=b;
PORTC=c2<<4|c1;
PORTD=c4<<4|c3;
}
}
دیدگاه