参照飞凌FL2440的官方汇编程序,按自己的习惯写了一下。程序如下:
AREA SAMPLE,CODE,READONLY;声明代码段
ENTRY ;入口
LDR R1,=0x56000018 ;GPBUP B口上拉禁止
LDR R2,=0xFFF
STR R2,[R1]
LDR R1,=0x56000010 ;GPBCON B0口输出
LDR R2,=0xFFFFD ;不要写错位
STR R2,[R1]
LDR R1,=0x56000014 ;GPBDAT B0输出低
LDR R2,=0xFFE
STR R2,[R1]
;B端口初始化完毕
LDR R1,=0x56000058 ;GPFUP F口上拉禁止
MOV R2,#0xFF ;MOV是单字节指令
STR R2,[R1]
LDR R1,=0x56000050 ;GPFCON F0,2,3,4口为输入
LDR R2,=0xFC0C
STR R2,[R1]
;LDR R1,=0x56000054 ;GPFDA F0,2,3,4 置0
;LDR R2,=0xE2 ;when set input,this operation can not work
;STR R2,[R1]
;F端口初始化完毕
START //标号要顶格写
LDR R1,=0x56000014 ;R1->GPBDAT ->代表指向,R1存放地址值,不是指向地址的内容
LDR R2,=0x56000054 ;R2->GPFDAT
;设定寄存器指向 ;can not set the place out of START,if not ,can not link to processor
LDR R3,[R1] ;取出地址中的值
LDR R4,[R2] ;取出地址中的值
ORR R4,R4,#0xE2 ;must have ,other then,it will buzzer all the time,清空与按键相关的位
CMP R4,#0xFF
BEQ BuzzerDown
B BuzzerUp
BuzzerUp
LDR R3,=0xFFF
STR R3,[R1]
B START
BuzzerDown
LDR R3,=0xFFE
STR R3,[R1]
B START
END
自己还在百度中收集了一些条件转移指令
条件转移指令所依据的转移条件主要有:全零(Z)、正负号(N)、进位(C)、溢出(V)及它们的组合等。主要条件转移指令有:
BEQ 等于零转移
BNEQ 不等于零转移
BLS 小于转移
BGT 大于转移
BLEQ 小于等于转移,或不大于转移
BGEQ 大于等于转移,或不小于转移
BLSU 不带符号小于转移
BGTU 不带符号大于转移
BLEQU 不带符号小于等于转移,或不带符号不大于转移
BGEQU 不带符号大于等于转移,或不带符号不小于转移
BCC 没有进位转移
BCS 有进位转移
BVC 没有溢出转移
BVS 有溢出转移
还发现一个问题,工程目录名太长,codewarrior有时候不能打开工程。