; UART0 registers U0RBR EQU 0xE000C000 U0THR EQU 0xE000C000 U0IER EQU 0xE000C004 U0IIR EQU 0xE000C008 U0FCR EQU 0xE000C008 U0LCR EQU 0xE000C00C U0LSR EQU 0xE000C014 U0SCR EQU 0xE000C01C U0DLL EQU 0xE000C000 U0DLM EQU 0xE000C004 PINSEL0 EQU 0xE002C000 ; User Initial Stack & Heap AREA |.text|, CODE, READONLY EXPORT __main __main BL iuart0 loop MOV R0, #'H' BL writec MOV R0, #'e' BL writec MOV R0, #'l' BL writec MOV R0, #'l' BL writec MOV R0, #'o' BL writec MOV R0, #' ' BL writec MOV R0, #'w' BL writec MOV R0, #'o' BL writec MOV R0, #'r' BL writec MOV R0, #'l' BL writec MOV R0, #'d' BL writec MOV R0, #'\n' BL writec B loop iuart0 MOV R1, #0x5 ; PINSEL0 = 0x5 LDR R0, =PINSEL0 STR R1, [R0] MOV R1, #0x7 ; U0FCR = 0x7 LDR R0, =U0FCR STRB R1,[R0] MOV R1, #0x83 ; U0LCR = 0x83 LDR R0, =U0LCR STRB R1,[R0] MOV R1, #0x0f ; U0DLL = 0x0f LDR R0, =U0DLL STRB R1,[R0] MOV R1, #0x00 ; U0DLM = 0x0 LDR R0, =U0DLM STRB R1,[R0] MOV R1, #0x03 ; U0LCR = 0x03 LDR R0, =U0LCR STRB R1,[R0] BX R14 ; return from subroutine writec LDR R1, =U0LSR LDRB R1, [R1] TST R1, #0x40 BEQ writec LDR R1, =U0THR STRB R0, [R1] BX R14 ; return from subroutine END