Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #include <avr/interrupt.h>
- const unsigned char simboli[] = {
- 0x0c, 0xa4, 0x27, 0xc4
- }; //look-up tabela sa simbolima A,b,C,d
- unsigned char DISP_BAFER[4] = {
- 0xfe, 0xfe, 0xfe, 0xfe
- }; //bafer displeja
- unsigned long millis;
- unsigned char disp = 3;
- unsigned char digitToDisp(int digit)
- {
- switch(digit)
- {
- case 0:
- return 0x05;
- case 1:
- return 0xdd;
- case 2:
- return 0x46;
- case 3:
- return 0x54;
- case 4:
- return 0x9c;
- case 5:
- return 0x34;
- case 6:
- return 0x24;
- case 7:
- return 0x5d;
- case 8:
- return 0x04;
- case 9:
- return 0x14;
- }
- }
- void numToBuffer(int num, unsigned char *buf)
- {
- buf[3] = digitToDisp(num % 10);
- num /= 10;
- //bez vodecih nula
- buf[2] = (num % 10) ? digitToDisp(num % 10) : 0xff;
- num /= 10;
- buf[1] = (num % 10) ? digitToDisp(num % 10) : 0xff;
- num /= 10;
- buf[0] = (num % 10) ? digitToDisp(num % 10) : 0xff;
- }
- ISR(TIMER0_COMPA_vect)
- {
- //prekid tajmera 0 usled dostizanja vrednosti registra OCR0A
- if (++disp > 3)
- disp = 0;
- //if(!(millis % 1000))
- PORTB = ~(1 << (3-disp)); //ukljucenje tranzistora
- PORTD = DISP_BAFER[disp]; //ispis na trenutno aktivan displej
- millis++; //sistemsko vreme
- }
- int main()
- {
- unsigned long t0;
- unsigned char i;
- //inicijalizacija portova:
- DDRB = 0x0f; //PB3-PB0 -> izlazi
- DDRD = 0xff; //port D -> izlaz
- //inicijalizacija tajmera 0:
- TCCR0A = 0x02; //tajmer 0: CTC mod
- TCCR0B = 0x03; //tajmer 0: fclk = fosc/64
- OCR0A = 249; //perioda tajmera 0: 250 Tclk (OCR0A + 1 = 250)
- TIMSK0 = 0x02; //dozvola prekida tajmera 0
- //usled dostizanja vrednosti registra OCR0A
- sei(); //I = 1 (dozvola prekida)
- int number = 0;
- while(1)
- {
- t0 = millis;
- while ((millis - t0) < 1000); //pauza 1000ms
- //for (i = 0; i < 4; i++)
- //DISP_BAFER[i] = simboli[i];
- numToBuffer(number, DISP_BAFER);
- ++number;
- //t0 = millis;
- /*while ((millis - t0) < 500); //pauza 500ms
- for (i = 0; i < 4; i++)
- DISP_BAFER[i] = 0xfe;*/
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment