Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * startup.c
- *
- */
- void startup(void) __attribute__((naked)) __attribute__((section (".start_section")) );
- void startup ( void )
- {
- __asm volatile(
- " LDR R0,=0x2001C000\n" /* set stack */
- " MOV SP,R0\n"
- " BL main\n" /* call main */
- ".L1: B .L1\n" /* never return */
- ) ;
- }
- void app_init(void) {
- * ( (unsigned int *) 0x40020C00 ) = 0x55005555;
- * ( (unsigned char *) 0x40020C05 ) = 0x0;
- * ( (unsigned short *) 0x40020C0E ) = 0x00AA;
- }
- void activateRow( int row ){
- unsigned char bits = 0;
- switch (row){
- case 1: bits = 0x10;
- break;
- case 2: bits = 0x20;
- break;
- case 3: bits = 0x40;
- break;
- case 4: bits = 0x80;
- break;
- }
- *((unsigned char*) 0x40020C15) = bits;
- }
- //läser in inport
- unsigned char readColumn( void){
- unsigned char bits = 0;
- unsigned char column = 0;
- bits = *((unsigned char*) 0x40020C11);
- switch(bits){
- case 1:
- column = 1;
- break;
- case 2:
- column = 2;
- break;
- case 4:
- column = 3;
- break;
- case 8:
- column = 4;
- break;
- }
- return column;
- }
- unsigned char keyb(void){
- unsigned char keyMatrix[16] = {1,2,3,10,
- 4,5,6,11,
- 7,8,9,12,
- 14,0,15,13};
- unsigned int index;
- unsigned char column;
- unsigned char keyValue = 0xFF;
- int row = 1;
- while(row <=4){
- activateRow(row);
- column = readColumn();
- if( column != 0){
- index = (row-1)*4 + (column-1);
- keyValue = keyMatrix[index];
- }
- row++;
- }
- return keyValue;
- }
- void out7seg( unsigned char key){
- unsigned char hexMatrix[16] = {0x3F, 0x06, 0x5B, 0x4F,
- 0x66, 0x6D, 0x7D, 0x07,
- 0x7F, 0x67, 0x77, 0x7F,
- 0x39, 0x3F, 0x79, 0x71 };
- unsigned char hex = 0x00;
- unsigned int index = 0;
- if (key != 0xFF) {
- index = (unsigned int) (key & 0x0F);
- hex = hexMatrix[index];
- }
- *((unsigned char*) 0x40020C14) = hex;
- }
- void main(void)
- {
- unsigned char c;
- app_init();
- while(1){
- out7seg( keyb() );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement