Advertisement
Mary_99

counter 1-9

Nov 13th, 2020 (edited)
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.93 KB | None | 0 0
  1. #include <stdint.h>
  2. #include <stdbool.h>
  3.  
  4. #define PIOB_PER (volatile unsigned int * const) 0xFFFFF400 ///setting IO port in IO mode//PIO ENABLE REGISTER
  5. #define PIOB_OER (volatile unsigned int * const) 0xFFFFF410 //setting the direction of IO port
  6. #define PIOB_CODR (volatile unsigned int * const) 0xFFFFF434 //clean output data register
  7. #define PIOB_SODR (volatile unsigned int * const) 0xFFFFF430 // forcing the required state on port output // Controller Set Output Data Register//write only
  8. #define PIOB_ODSR (volatile unsigned int*) 0xFFFFF438 // output data status register
  9.  
  10. #define A (1<<25)  //processor pin PB25
  11. #define B (1<<24) //processor pin  PB24
  12. #define C (1<<22) //processor pin PB22
  13. #define D (1<<21) //processor pin PB21
  14. #define E (1<<20) //processor pin PB20
  15. #define F (1<<27) //processor pin  PB27
  16. #define G (1<<26) //processor pin PB26
  17.  
  18. #define PB28 (1<<28) //turn on left led
  19. #define PB30 (1<<30) // turn on right led
  20.  
  21. #define DELAY 1000
  22.  
  23. uint32_t ledDecode (uint8_t digit)
  24. {
  25.     int number[10] = {};
  26.     number[0] = A|B|C|D|E|F;
  27.     number[1] = B|C;
  28.     number[2] = A|B|D|E|G;
  29.     number[3] = A|B|C|G|G|D;
  30.     number[4] = F|B|G|C;
  31.     number[5] = A|F|G|C|D;
  32.     number[6] = A|F|G|E|D|C;
  33.     number[7] = A|B|C;
  34.     number[8] = A|B|C|D|E|F|G;
  35.     number[9] = A|B|F|G|C|D;
  36.     return number[digit];
  37. }
  38.  
  39. void delayMs (volatile unsigned int delay)
  40. {
  41.   volatile int time;
  42.   for(time = 0; time < 80000*delay; time++);
  43. }
  44.  
  45. void ledInit(void)
  46. {
  47.     *PIOB_PER = (PB28|PB30|A|B|C|D|E|F|G);
  48.     *PIOB_OER = (PB28|PB30|A|B|C|D|E|F|G);
  49.     *PIOB_CODR  = (PB28|PB30|A|B|C|D|E|F|G);
  50. }
  51.  
  52. void ledDisplayDigit(uint8_t digit)
  53. {
  54.         *PIOB_CODR=(A|B|C|D|E|F|G);
  55.         *PIOB_SODR=ledDecode(digit);
  56.         *PIOB_CODR= PB28;
  57.         *PIOB_SODR= PB30;
  58. }
  59.  
  60. int main(void)
  61. {
  62.     int iterrator;
  63.     iterrator = 0;
  64.   ledInit();
  65.   while(true)
  66.   {
  67.         ledDisplayDigit(iterrator);
  68.         iterrator++;
  69.         delayMs(DELAY);
  70.         if(iterrator == 10)
  71.         {
  72.             iterrator= 0;
  73.         }
  74.   }
  75.  
  76.   return 0;
  77. }
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement