;汇编指令实验<br />;定义端口E 寄存器预定义<br />rGPFCON EQU 0x56000040<br />rGPFDAT EQU 0x56000044<br />rGPFUP EQU 0x56000048<br /><br /> AREA Init, CODE, READONLY ;该伪指令定义了一个代码段,段名为Init,属性只读<br /> ENTRY ;程序的入口点标识<br /><br />ResetEntry<br /> ;下面这三条语句,主要是用来设置I/O 口GPE7 为输出属性<br /> ldr r0,=rGPFCON ;将寄存器rPCONE 的地址存放到寄存器r0 中<br /> ldr r1,=0x4000 ;二进制 100 0000 0000 0000 即15、14位为 10<br /> str r1,[r0] ;将r1 中的数据存放到寄存器rPCONE 中<br /><br /> ;下面这三条语句,主要是禁止GPE 端口的上拉电阻<br /> ldr r0,=rGPFUP<br /> ldr r1,=0xffff<br /> str r1,[r0]<br /> <br /> ldr r2,=rGPFDAT ;将数据端口E 的数据寄存器的地址附给寄存器r2<br /><br />ledloop<br /> ldr r1,=0x1ffff<br /> str r1,[r2] ;使GPE7 输出高电平,D14 灯会灭<br /> bl delay ;调用延迟子程序<br /> ldr r1,=0x0<br /> str r1,[r2] ;使GPE7 输出低电平,D14 灯亮<br /> bl delay ;调用延迟<br /> b ledloop ;不断的循环,D14 将不停的闪烁<br /><br />;下面是延迟子程序<br />delay<br /> ldr r3,=0x1ffff ;设置延迟的时间<br />delay1<br /> sub r3,r3,#1 ;r3=r3-1<br /> cmp r3,#0x0 ;将r3 的值与0 相比较<br /> bne delay1 ;比较的结果不为0(r3 不为0),继续调用delay1,否则执行下一条语句<br /> mov pc,lr ;返回<br /> END ;程序结束符 |
|