Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <at91sam7x128.h>
- int main (void){
- *AT91C_PMC_PCER = 1 << AT91C_ID_PIOB;
- // PIOB 1 i 18 su ulazni
- *AT91C_PIOB_ODR = (1<<18) | (1<<1);
- *AT91C_PIOB_PER = (1<<18) | (1<<1);
- *AT91C_PIOB_IFDR = (1<<18) | (1<<1);
- // PIOB 4-11 su izlazni
- *AT91C_PIOB_OER = 0XFF<<4;
- *AT91C_PIOB_PER = 0XFF<<4;
- //ne pise da moramo neko inicijalno stanje postaviti...
- while(1){
- if(*AT91C_PIOB_PDSR & (1<<18)){
- int tmp = *AT91C_PIOB_PDSR;
- tmp = ~tmp; // invertiranje bitova
- *AT91C_PIOB_CODR = 0XFF << 4; // zelimo trenutno stanje na tom pinu pobrisati tako da mozemo napraviti toggle
- *AT91C_PIOB_SODR = tmp & (0xFF<<4);
- }
- else{
- if(*AT91C_PIOB_PDSR & 1<<1){
- *AT91C_PIOB_ASR = 0XFF << 4; // multipleksor bira A izlaz
- *AT91C_PIOB_PDR = 0XFF << 4; // multipleksor bira nulti ulaz za izlaz, tako da proslijedi izlaz iz perif. A
- }
- else{
- *AT91C_PIOB_BSR = 0XFF << 4; // multipleksor bira A izlaz
- *AT91C_PIOB_PDR = 0XFF << 4; // multipleksor bira nulti ulaz za izlaz, tako da proslijedi izlaz iz perif. A
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement