ARM9蜂鸣器汇编实验

来源:互联网 发布:go并发编程实战 pdf 编辑:程序博客网 时间:2024/04/27 16:26

参照飞凌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有时候不能打开工程。

0 0
原创粉丝点击