|  | 
| 下面是我写的注释: //这里其实把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();
 }
 }
 | 
 |