24.11.2024 в 08:18
Таймер на семисегментном индикаторе
Схема в Протеусе такая:
Код в CodeVisionAVR такой:
Код
#include <io.h>
#include <delay.h>
static flash unsigned char digit[] =
{
(0b11000000), //0
(0b11111001), //1
(0b10100100), //2
(0b10110000), //3
(0b10011001), //4
(0b10010010), //5
(0b10000010), //6
(0b11111000), //7
(0b10000000), //8
(0b10010000) //9
};
static flash unsigned char razryad[] =
{
(1), //0
(2), //1
(4), //2
(8), //3
};
void main(void)
{
int i,j,k,m;
PORTD=0x00;
DDRD=0b11111111;
PORTC=0xFF;
DDRC=0b11111111;
while (1)
{
for(i=0;i<10;i++)
{
for(k=0;k<10;k++)
{
m=k;
for(j=0;j<50;j++)
{
PORTD=digit[i];
PORTC=razryad[2];
delay_ms(10);
PORTD=digit[m];
PORTC=razryad[3];
delay_ms(10);
}
}
}
}
}
"В реале" работает чётко, в Протеусе же с такой частотой обновления семисегментика реалтайм не получается
Просмотров: 3244. Комментариев: 0 | |