Advertisement
Guest User

Untitled

a guest
Apr 26th, 2015
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.10 KB | None | 0 0
  1. #include <stdio.h>  
  2. #include <at91sam7x128.h>
  3.  
  4. int main (void){
  5.   *AT91C_PMC_PCER = 1 << AT91C_ID_PIOB;
  6.    
  7.     // PIOB 1 i 18 su ulazni
  8.     *AT91C_PIOB_ODR = (1<<18) | (1<<1);
  9.     *AT91C_PIOB_PER = (1<<18) | (1<<1);
  10.     *AT91C_PIOB_IFDR = (1<<18) | (1<<1);
  11.    
  12.     // PIOB 4-11 su izlazni
  13.     *AT91C_PIOB_OER = 0XFF<<4;
  14.     *AT91C_PIOB_PER = 0XFF<<4;
  15.     //ne pise da moramo neko inicijalno stanje postaviti...
  16.    
  17.     while(1){
  18.         if(*AT91C_PIOB_PDSR & (1<<18)){
  19.             int tmp = *AT91C_PIOB_PDSR;
  20.             tmp = ~tmp; // invertiranje bitova
  21.             *AT91C_PIOB_CODR = 0XFF << 4; // zelimo trenutno stanje na tom pinu pobrisati tako da mozemo napraviti toggle
  22.             *AT91C_PIOB_SODR = tmp & (0xFF<<4);    
  23.         }
  24.                 else{
  25.             if(*AT91C_PIOB_PDSR & 1<<1){
  26.                 *AT91C_PIOB_ASR = 0XFF << 4; // multipleksor bira A izlaz
  27.                 *AT91C_PIOB_PDR = 0XFF << 4; // multipleksor bira nulti ulaz za izlaz, tako da proslijedi izlaz iz perif. A
  28.             }
  29.             else{
  30.                 *AT91C_PIOB_BSR = 0XFF << 4; // multipleksor bira A izlaz
  31.                 *AT91C_PIOB_PDR = 0XFF << 4; // multipleksor bira nulti ulaz za izlaz, tako da proslijedi izlaz iz perif. A        
  32.             }
  33.         }
  34.     }  
  35.    
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement