Код
#include <mega16.h>
#include <delay.h>
#define digit1 PORTD.6
#define digit2 PORTD.5
flash char digits[] = {
0b11000000, //0
0b11111001, //1
0b10100100, //2
0b10110000, //3
0b10011001, //4
0b10010010, //5
0b10000010, //6
0b11111000, //7
0b10000000, //8
0b10010000, //9
0b10111111, //-
0b11111111 //пусто
};
char digit_out[2], cur_dig;
char tik;
unsigned int indication;
void recoding(void) {
if (indication<100) {
digit_out[0]=indication%10;
indication=indication/10;
digit_out[1]=indication%10;
}
}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
switch (cur_dig){
case 0:{digit2=1;digit1=0;break;};
case 1:{digit1=1;digit2=0;break;};
}
PORTA=digits[digit_out[cur_dig]];
cur_dig++;
if (cur_dig==2) cur_dig=0;
}
void main(void)
{
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
#asm("sei")
while (1)
if(!PIND.1){
delay_ms(100);
tik++;
indication=tik;
if(indication>100) indication=100;
recoding();
}
if(!PIND.2){
delay_ms(100);
tik--;
indication=tik;
if(indication<0) indication=0;
recoding();
}
}
}
#include <delay.h>
#define digit1 PORTD.6
#define digit2 PORTD.5
flash char digits[] = {
0b11000000, //0
0b11111001, //1
0b10100100, //2
0b10110000, //3
0b10011001, //4
0b10010010, //5
0b10000010, //6
0b11111000, //7
0b10000000, //8
0b10010000, //9
0b10111111, //-
0b11111111 //пусто
};
char digit_out[2], cur_dig;
char tik;
unsigned int indication;
void recoding(void) {
if (indication<100) {
digit_out[0]=indication%10;
indication=indication/10;
digit_out[1]=indication%10;
}
}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
switch (cur_dig){
case 0:{digit2=1;digit1=0;break;};
case 1:{digit1=1;digit2=0;break;};
}
PORTA=digits[digit_out[cur_dig]];
cur_dig++;
if (cur_dig==2) cur_dig=0;
}
void main(void)
{
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
#asm("sei")
while (1)
if(!PIND.1){
delay_ms(100);
tik++;
indication=tik;
if(indication>100) indication=100;
recoding();
}
if(!PIND.2){
delay_ms(100);
tik--;
indication=tik;
if(indication<0) indication=0;
recoding();
}
}
}