Professional Documents
Culture Documents
DDRD |= 1<<7
DDRD &=~ 1<<2
DDRD &=~ 1<<5
PORTD |= 1<<2
PORTD |= 1<<5
switch(c){
case 0: PORTC|=0b00111111; break;
case 1: PORTC|=0b00000110; break;
case 2: PORTC|=~0b10100100; break;
case 3: PORTC|=~0b10110000; break;
case 4: PORTC|=~0b10011001; break;
case 5: PORTC|=~0b10010010; break;
case 6: PORTC|=~0b10000010; break;
case 7: PORTC|=~0b11111000; break;
case 8: PORTC|=~0b10000000; break;
case 9: PORTC|=~0b10010000; break;
}
switch(p){
case 1: PORTA|=0b00000001; break;
case 2: PORTA|=0b00000010; break;
case 3: PORTA|=0b00000100; break;
case 4: PORTA|=0b00001000; break;
}
// Delay_ms(1); // #include <util/delay.h>
}
void init_adc()
{
ADMUX = 0b01000000;
ADCSRA= 0b10000111;
}
void init_timer()
{
TCCR0 = 0b00001011;
TCNT0 = 0;
OCR0 = 125;
TIMSK|= 0b00000010; //activeaza intreruperea de Output Compare Match
(comparare la iesire)
}
void init_PWM(){
TCCR2 = 0b01101001;
OCR2 = 128; //factor de umplere 50%
}
//ISR
void ISR_Timer0() iv IVT_ADDR_TIMER0_COMP ics ICS_AUTO {
poz++;
switch(poz){
case 1: display(1,value%10);break;
case 2: display(2,(value/10)%10);break;
case 3: display(3,(value/100)%10);break;
case 4: display(4,(value/1000)%10); poz=0;break;
}
if (ms==100){
value = (adc(6)/4);
OCR2 = value;
ms=0;
}
else ms++;
}
void main(){
DDRA = 0b00001111; //seteaza pinii de iesire
DDRC = 0b01111111;
DDRD |=1<<7; //PD7 - output
init_adc();
init_timer();
init_PWM();
SREG |= 1<<7; //set enable interrupt - activeaza intreruperile
for(;;){
}
}
int s,poz;
void init_adc(){
ADMUX = 0b01000000;
ADCSRA= 0b10000111;
}
void main()
{
DDRA|=0b00001111;
DDRC|=0b11111111;
DDRD&=~(1<<2);
TCCR0=0b00000011;
TCNT0=0;
TIMSK|=1<<1;
s=0;
init_timer1();
for(;;)
{
if(PINB&(1<<0))
{
TCNT0=0;
s=0;
}
}
if(ms==1000){
s--;
if(s=0){
s=60
m--}
ms=0
}
else ms++;