- #include <mega32.h>
- #include <delay.h>
- #include <stdbool.h>
- #define ddigit_B DDRB
- #define digit_B PORTB
- #define ddigit_C DDRC
- #define digit_C PORTC
- const unsigned char digit[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- void main(void)
- {
- char a = 0;
- int ta = 0;
- int ti = 0;
- int timernum = 0;
- int timer = 0;
- bool start = 0 ;
- ddigit_B = 0xff;
- ddigit_C = 0xff;
- DDRA = 0xFF ;
- DDRD = 0x04;
- PORTD = 0x03;
- while (1)
- {
- if(ta > 50){
- PORTA = a;
- a >>= 1;
- if(a==0)
- a = 0b10000000;
- }
- if( (PIND & 1) == 0 && start == 0 && ti > 500){
- timernum ++ ;
- ti = 0;
- }
- if((PIND & 2) == 0 && start != 1 && ti > 500){
- start = 1;
- ti = 0;
- }
- else if((PIND & 2) == 0 && start && timernum == 0){
- start = 0;
- PORTD = 0b00000011;
- }
- if(start && timernum && timer > 50) {
- timernum --;
- timer = 0;
- }
- if(timernum == 0 && start){
- PORTD = 0x07;
- }
- digit_B = digit[timernum/10];
- digit_C = digit[timernum%10];
- delay_ms(1);
- ta ++ ;
- ti ++;
- timer ++;
- }
- }
Recent Pastes