Solved Task 3.1

This commit is contained in:
Schrom01
2022-10-28 09:22:16 +02:00
parent 22c387214b
commit 6f4740e719
45 changed files with 11542 additions and 4 deletions
+79 -1
View File
@@ -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