📄 lcm_old.s
字号:
.equ PORTA_MUX, 0x09000000.equ PORTA_DATA, 0x09001600.equ PORTA_DIR, 0x09001604.equ PORTB_MUX, 0x09000004.equ PORTB_DIR, 0x0900160c.equ PORTB_DATA, 0x09001608.equ PORT7_MUX, 0x09000020.equ PORT7_DIR, 0x09001644.equ PORT7_DATA, 0x09001640.equ PORT9_MUX, 0x09000028.equ PORT9_DIR, 0x09001654.equ PORT9_DATA, 0x09001650.set LCM_WR_1, 0x00000010.set LCM_WR_0, 0xffffffef.set LCM_RS_1, 0x00000020.set LCM_RS_0, 0x000000df @temp.set LCM_E_1, 0x00000020.set LCM_E_0, 0xffffffdf.set LCM_FUNC_SET, 0x00000038.set LCM_DISP_ON, 0x0000000e.set LCM_DISP_OFF, 0x00000008.set LCM_DISP_CLEAR, 0x00000001.set LCM_ENTRY_SET, 0x00000006.text.global _start.code 32_start:start: ldr r0, =PORTA_MUX @for debug ldr r1, =0x3fff str r1, [r0] ldr r5, =PORTA_DIR mov r1, #0 str r1, [r5, #0] ldr r0, =PORTB_DIR @PORTB setup@ ldr r1, =0xffffff00 ldr r1, =0x00000000 str r1, [r0] ldr r0, =PORTB_DATA ldr r1, =0x00000000 str r1, [r0] ldr r0, =PORTB_MUX ldr r1, =0x00000faa str r1, [r0] @ ldr r0, =PORT7_DIR @PORT7 setup@ ldr r1, =0xffffffdf@ str r1, [r0] @ ldr r0, =PORT7_MUX@ ldr r1, =0x000000a0@ str r1, [r0] ldr r0, =PORT9_DIR @PORT9 setup@ ldr r1, =0xffffffcf ldr r1, =0x00000000 str r1, [r0] ldr r0, =PORT9_DATA ldr r1, =0x00000000 str r1, [r0] ldr r0, =PORT9_MUX ldr r1, =0x00000140 str r1, [r0] ldr r9, =PORTA_DATA @for debug mov r10, #0xfe str r10, [r9] bl lcm_init ldr r9, =PORTA_DATA @for debug sub r10, r10, #1 str r10, [r9] adr r6, string_hello mov r2, #6 display_loop: ldrb r5, [r6] bl lcm_display add r6, r6, #1 subs r2, r2, #1 bne display_loopend_loop: b end_loop lcm_init: mov r7, lr mov r1, #0 @lcm function set mov r3, #0 ldr r9, =PORTA_DATA @for debug sub r10, r10, #1 str r10, [r9] ldr r0, =PORT7_DATA ldr r1, =LCM_RS_0 str r1, [r0] ldr r9, =PORTA_DATA @for debug sub r10, r10, #1 str r10, [r9] ldr r0, =PORT9_DATA ldr r4, =LCM_WR_0 and r3, r3, r4 str r3, [r0] ldr r9, =PORTA_DATA @for debug sub r10, r10, #1 str r10, [r9] ldr r0, =0x1fff bl delay ldr r9, =PORTA_DATA @for debug sub r10, r10, #1 str r10, [r9] ldr r0, =PORT9_DATA ldr r4, =LCM_E_1 orr r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORTB_DATA ldr r5, =LCM_FUNC_SET str r5, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORT9_DATA ldr r4, =LCM_E_0 and r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay mov r1, #0 @lcm display off mov r3, #0 ldr r0, =PORT7_DATA ldr r1, =LCM_RS_0 str r1, [r0] ldr r0, =PORT9_DATA ldr r4, =LCM_WR_0 and r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORT9_DATA ldr r4, =LCM_E_1 orr r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORTB_DATA ldr r5, =LCM_DISP_OFF str r5, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORT9_DATA ldr r4, =LCM_E_0 and r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay mov r1, #0 @lcm display clear mov r3, #0 ldr r0, =PORT7_DATA ldr r1, =LCM_RS_0 str r1, [r0] ldr r0, =PORT9_DATA ldr r4, =LCM_WR_0 and r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORT9_DATA ldr r4, =LCM_E_1 orr r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORTB_DATA ldr r5, =LCM_DISP_CLEAR str r5, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORT9_DATA ldr r4, =LCM_E_0 and r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay mov r1, #0 @lcm display on mov r3, #0 ldr r0, =PORT7_DATA ldr r1, =LCM_RS_0 str r1, [r0] ldr r0, =PORT9_DATA ldr r4, =LCM_WR_0 and r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORT9_DATA ldr r4, =LCM_E_1 orr r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORTB_DATA ldr r5, =LCM_DISP_ON str r5, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORT9_DATA ldr r4, =LCM_E_0 and r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay mov r1, #0 @lcm entry mode set mov r3, #0 ldr r0, =PORT7_DATA ldr r1, =LCM_RS_0 str r1, [r0] ldr r0, =PORT9_DATA ldr r4, =LCM_WR_0 and r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORT9_DATA ldr r4, =LCM_E_1 orr r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORTB_DATA ldr r5, =LCM_ENTRY_SET str r5, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORT9_DATA ldr r4, =LCM_E_0 and r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay mov lr, r7 mov pc, lrlcm_display: mov r7, lr mov r1, #0 @lcm write data mov r3, #0 ldr r0, =PORT7_DATA ldr r1, =LCM_RS_1 str r1, [r0] ldr r0, =PORT9_DATA ldr r4, =LCM_WR_0 and r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORT9_DATA ldr r4, =LCM_E_1 orr r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORTB_DATA str r5, [r0] ldr r0, =0x1fff bl delay ldr r0, =PORT9_DATA ldr r4, =LCM_E_0 and r3, r3, r4 str r3, [r0] ldr r0, =0x1fff bl delay mov lr, r7 mov pc, lr delay: subs r0, r0, #1 bne delay mov pc, lrstring_hello:.ascii "Hello!"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -