|
下面是我写的注释:
//这里其实把C的部分完全去掉,然后把汇编的部分的注释去掉效果是一样的!你可以试试!
WTCON EQU 0x53000000 //看门狗控制器的地址
GPBCON EQU 0x56000010 //POARTB的控制寄存器地址
GPBDAT EQU 0x56000014 //POARTB的寄存器地址
IMPORT main //相当于C语言中的引入全局变量extern
CODE32 //32位代码段
AREA Init,CODE,READONLY //定义一个代码段,ARM汇编中至少有一个代码段
;ENTRY //程序入口点
ldr r0,=WTCON //这个没什么好说的了,关闭看门狗自己可以看看手册
ldr r1,=0x00
str r1,[r0]
b main //跳转到main()
;ldr r0,=GPBCON
;ldr r1,=0x155500
;str r1,[r0]
;ldr r0,=GPBDAT
;loop
; ldr r1,=0x1c0
; str r1,[r0]
; bl delay
; ldr r1,=0x1a0
; str r1,[r0]
; bl delay
; ldr r1,=0x160
; str r1,[r0]
; bl delay
; ldr r1,=0xe0
; str r1,[r0]
; bl delay
; b loop
;delay
; ldr r2,=0x15400
;delay1
; subs r2,r2,#1
; bne delay1
; mov pc,lr
;
end
#include <stdio.h>
#define GPBCON (*(volatile unsigned *)0x56000010)
#define GPBDAT (*(volatile unsigned *)0x56000014)
void delay()
{
int i=90000;
for(i;i>=0;i--)
;
}
int main()
{
GPBCON=0x155500;
while(1)
{
GPBDAT=0x1c0;
delay();
GPBDAT=0x1a0;
delay();
GPBDAT=0x160;
delay();
GPBDAT=0xe0;
delay();
}
} |
|