Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "AT91SAM9263.h"
- #include "AT91SAM9263-EK.h"
- #define PMC_PCER (volatile unsigned int * const) 0xFFFFFC10
- #define Q1 (1U<<29)
- #define Q2 (1U<<28)
- #define Q3 (1U<<30)
- #define E (1U<<20)
- #define D (1U<<21)
- #define C (1U<<22)
- #define DP (1U<<23)
- #define B (1U<<24)
- #define A (1U<<25)
- #define G (1U<<26)
- #define F (1U<<27)
- #define BATON1 (1<<5)
- #define S7 (A | B | C | D | E | F | G)
- const unsigned int num[10] =
- {
- A | B | C | D | E | F, //0
- B | C, //1
- A | B | G | E | D, //2
- A | B | G | C | D, //3
- F | G | C | B, //4
- A | F | G | C | D, //5
- A | F | E | G | C | D, //6
- A | B | C, //7
- A | B | C | D | E | F | G, //8
- A | F | B | G | C | D //9
- };
- void delay(int delay)
- {
- volatile unsigned int i = 0;
- for(i; i < delay; i++);
- }
- void wyswietl(int jednosci, int dziesiatki)
- {
- int i;
- volatile unsigned int temp;
- for(i = 0; i < 10; i++)
- {
- while(1)
- {
- AT91C_BASE_PIOB->PIO_SODR = Q2 | Q3;
- if(dziesiatki>0)
- {
- AT91C_BASE_PIOB->PIO_CODR = S7 | Q2;
- AT91C_BASE_PIOB->PIO_SODR = Q3 | num[dziesiatki];
- }
- delay(20000);
- AT91C_BASE_PIOB->PIO_CODR = S7 | Q3;
- AT91C_BASE_PIOB->PIO_SODR = Q2 | num[jednosci];
- delay(20000);
- if(AT91C_BASE_PITC->PITC_PISR & AT91C_PITC_PITS)
- {
- temp = AT91C_BASE_PITC->PITC_PIVR;
- break;
- }
- }
- }
- }
- void main(void)
- {
- //Q1 - jasnosc
- //Q2 - lewy tranzystor
- //Q3 - prawy tranzystor
- AT91C_BASE_PIOB->PIO_PER = S7 | Q1 | Q2 | Q3;
- AT91C_BASE_PIOB->PIO_OER = S7 | Q1 | Q2 | Q3;
- AT91C_BASE_PIOB->PIO_CODR = S7 | Q1 | Q3;
- AT91C_BASE_PIOB->PIO_SODR = Q2;
- //PRZYCISK
- *AT91C_PMC_PCER = 1<<4;
- AT91C_BASE_PIOC->PIO_PER = BATON1;
- AT91C_BASE_PIOC->PIO_ODR = BATON1;
- AT91C_BASE_PIOC->PIO_PPUER = BATON1;
- //PIT
- AT91C_BASE_PITC->PITC_PIMR = AT91C_PITC_PITEN | AT91C_PITC_PITIEN;
- AT91C_BASE_PITC->PITC_PIMR |= 624999;
- volatile int i = 0,j = -1;
- while(1)
- {
- if((AT91C_BASE_PIOC->PIO_PDSR & BATON1) == BATON1)
- j++;
- else
- j--;
- if(j>9)
- {
- i++;
- j=0;
- }
- if(i>9)
- {
- i=0;
- }
- if(j<0)
- {
- i--;
- j=9;
- }
- if(i<0)
- i=9;
- wyswietl(j,i);
- }
- }
- void dbgu_print_ascii(const char* string){};
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement