Assembly ARM UART0输入输出。LPC2138我做错了什么。
我做错了什么?我的动机是创建一个例程来接收角色并使用UART0在屏幕上显示它。谁能帮我查一下密码吗Assembly ARM UART0输入输出。LPC2138我做错了什么。,assembly,input,arm,output,Assembly,Input,Arm,Output,我做错了什么?我的动机是创建一个例程来接收角色并使用UART0在屏幕上显示它。谁能帮我查一下密码吗 read_character LDR r0, =0xE000C014 LDRB r1, [r0] BIC r1, r1, #0xFFFFFFF0 CMP r1, 0 BEQ read_character LDR r6, =r1 LDR r2, [r6] output_character LDR r0, =0xE000C014
read_character
LDR r0, =0xE000C014
LDRB r1, [r0]
BIC r1, r1, #0xFFFFFFF0
CMP r1, 0
BEQ read_character
LDR r6, =r1
LDR r2, [r6]
output_character
LDR r0, =0xE000C014
LDRB r1, [r0]
ORR r1, r1, #0x00000010
MOV r1, r1, LSR #1
CMP r1, 0
BEQ output_character
LDR r6, =r1
STR r2, [r6]
BIC保留位3:0不变,因此如果设置了RDR、OE、PE或FE,则读取一个字符
也许相反,对1执行AND或TST,并比较是否设置了RDR位
同样,在读取LSR时,如果设置了0x10,则发送一个字符,否则循环并重试?您编写的代码将始终在r1中设置0x10位,然后将其右移1,以便始终设置0x08,然后将其与0进行比较,这将始终失败,因为至少始终设置了一位,所以您是否看到无限循环?使用您的发送代码?否。该代码似乎不是无限循环。它只是没有通过uart在屏幕上显示任何内容。我不知道我做错了什么。我描述了你做错了什么。你明白我描述的吗?
read_character
LDR r0, =0xE000C014
LDRB r1, [r0]
BIC r1, r1, #0xFFFFFFF0
CMP r1, 0
BEQ read_character
LDR r6, =r1
LDR r2, [r6]