Solved Task 3.1
This commit is contained in:
+79
-1
@@ -32,7 +32,11 @@ ADDR_LCD_RED EQU 0x60000340
|
||||
ADDR_LCD_GREEN EQU 0x60000342
|
||||
ADDR_LCD_BLUE EQU 0x60000344
|
||||
LCD_BACKLIGHT_FULL EQU 0xffff
|
||||
LCD_BACKLIGHT_OFF EQU 0x0000
|
||||
LCD_BACKLIGHT_OFF EQU 0x0000
|
||||
|
||||
MASK_LOW_NIBBLE EQU 0xf
|
||||
FACTOR_10 EQU 0xa
|
||||
BITMASK_KEY_T0 EQU 0x01
|
||||
|
||||
; ------------------------------------------------------------------
|
||||
; -- myCode
|
||||
@@ -46,8 +50,82 @@ main PROC
|
||||
|
||||
; STUDENTS: To be programmed
|
||||
|
||||
LDR R2, =MASK_LOW_NIBBLE
|
||||
|
||||
; Load BCD Tens in R0
|
||||
LDR R0, =ADDR_DIP_SWITCH_15_8
|
||||
LDRB R0, [R0]
|
||||
ANDS R0, R0, R2
|
||||
|
||||
; Load BCD Ones in R1
|
||||
LDR R1, =ADDR_DIP_SWITCH_7_0
|
||||
LDRB R1, [R1]
|
||||
ANDS R1, R1, R2
|
||||
|
||||
; Check if T0 is pressed. If pressed goto CalcByMult
|
||||
LDR R3, =ADDR_BUTTONS ; load base address of keys
|
||||
LDR R4, =BITMASK_KEY_T0 ; load key mask T0
|
||||
LDRB R2, [R3] ; load key values
|
||||
TST R2, R4 ; check, if key T0 is pressed
|
||||
BEQ CalcByMult ; goto CalcByMult
|
||||
|
||||
|
||||
CalcByBitShift
|
||||
; set the LCD background to red
|
||||
LDR R2, =ADDR_LCD_RED
|
||||
LDR R3, =0xffff
|
||||
STRH R3, [R2]
|
||||
LDR R2, =ADDR_LCD_BLUE
|
||||
LDR R3, =0x0
|
||||
STRH R3, [R2]
|
||||
|
||||
; Calculate Bin Value to R2 by Bit Shifting
|
||||
; R2 = R0 * 10
|
||||
LSLS R2, R0, #3
|
||||
LSLS R3, R0, #1
|
||||
ADDS R2, R2, R3
|
||||
ADDS R2, R2, R1
|
||||
|
||||
EndCalcByBitShift
|
||||
|
||||
; goto EndCalcByMult
|
||||
B EndCalcByMult
|
||||
|
||||
CalcByMult
|
||||
|
||||
; set the LCD background to blue
|
||||
LDR R2, =ADDR_LCD_RED
|
||||
LDR R3, =0x0
|
||||
STRH R3, [R2]
|
||||
LDR R2, =ADDR_LCD_BLUE
|
||||
LDR R3, =0xffff
|
||||
STRH R3, [R2]
|
||||
|
||||
; Calculate Bin Value to R2 by Multiplication
|
||||
; R2 = R0 * 10
|
||||
LDR R2, =FACTOR_10
|
||||
MULS R2, R0, R2
|
||||
ADDS R2, R2, R1
|
||||
|
||||
EndCalcByMult
|
||||
|
||||
; Shift BCD Tens in high Nibble in R0
|
||||
; Add BCD Ones in low Nibble in R0
|
||||
LSLS R0, R0, #4
|
||||
ORRS R0, R0, R1
|
||||
|
||||
; Add Bin Value in higher Byte in R0
|
||||
LSLS R2, R2, #8
|
||||
ORRS R0, R0, R2
|
||||
|
||||
|
||||
; Show R0 on LEDs
|
||||
LDR R2, =ADDR_LED_15_0
|
||||
STRH R0, [R2]
|
||||
|
||||
; Show R0 on 7-Segment
|
||||
LDR R2, =ADDR_7_SEG_BIN_DS3_0
|
||||
STRH R0, [R2]
|
||||
|
||||
; END: To be programmed
|
||||
|
||||
|
||||
Reference in New Issue
Block a user