Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. /*
  2. * startup.c
  3. *
  4. */
  5. void startup(void) __attribute__((naked)) __attribute__((section (".start_section")) );
  6.  
  7. void startup ( void )
  8. {
  9. __asm volatile(
  10. " LDR R0,=0x2001C000\n" /* set stack */
  11. " MOV SP,R0\n"
  12. " BL main\n" /* call main */
  13. ".L1: B .L1\n" /* never return */
  14. ) ;
  15. }
  16.  
  17. void app_init(void) {
  18. * ( (unsigned int *) 0x40020C00 ) = 0x55005555;
  19. * ( (unsigned char *) 0x40020C05 ) = 0x0;
  20. * ( (unsigned short *) 0x40020C0E ) = 0x00AA;
  21.  
  22. }
  23.  
  24. void activateRow( int row ){
  25. unsigned char bits = 0;
  26. switch (row){
  27. case 1: bits = 0x10;
  28. break;
  29. case 2: bits = 0x20;
  30. break;
  31. case 3: bits = 0x40;
  32. break;
  33. case 4: bits = 0x80;
  34. break;
  35. }
  36. *((unsigned char*) 0x40020C15) = bits;
  37. }
  38.  
  39. //läser in inport
  40. unsigned char readColumn( void){
  41. unsigned char bits = 0;
  42. unsigned char column = 0;
  43.  
  44. bits = *((unsigned char*) 0x40020C11);
  45.  
  46. switch(bits){
  47. case 1:
  48. column = 1;
  49. break;
  50. case 2:
  51. column = 2;
  52. break;
  53. case 4:
  54. column = 3;
  55. break;
  56. case 8:
  57. column = 4;
  58. break;
  59. }
  60.  
  61. return column;
  62. }
  63.  
  64. unsigned char keyb(void){
  65. unsigned char keyMatrix[16] = {1,2,3,10,
  66. 4,5,6,11,
  67. 7,8,9,12,
  68. 14,0,15,13};
  69. unsigned int index;
  70. unsigned char column;
  71. unsigned char keyValue = 0xFF;
  72. int row = 1;
  73. while(row <=4){
  74. activateRow(row);
  75. column = readColumn();
  76.  
  77.  
  78. if( column != 0){
  79. index = (row-1)*4 + (column-1);
  80. keyValue = keyMatrix[index];
  81. }
  82. row++;
  83. }
  84. return keyValue;
  85. }
  86.  
  87. void out7seg( unsigned char key){
  88. unsigned char hexMatrix[16] = {0x3F, 0x06, 0x5B, 0x4F,
  89. 0x66, 0x6D, 0x7D, 0x07,
  90. 0x7F, 0x67, 0x77, 0x7F,
  91. 0x39, 0x3F, 0x79, 0x71 };
  92.  
  93. unsigned char hex = 0x00;
  94. unsigned int index = 0;
  95.  
  96. if (key != 0xFF) {
  97. index = (unsigned int) (key & 0x0F);
  98. hex = hexMatrix[index];
  99. }
  100. *((unsigned char*) 0x40020C14) = hex;
  101.  
  102. }
  103.  
  104.  
  105.  
  106. void main(void)
  107. {
  108. unsigned char c;
  109. app_init();
  110.  
  111. while(1){
  112. out7seg( keyb() );
  113.  
  114. }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement