;*********************************************************************
;学习ARM7的第一个程序。加油!
;*********************************************************************
;File: LED.S
;功能: LED闪烁控制.对发光二极管LED进行控制,采用软件延时方法
; 使用I/O口直接控制LED,采用灌电流方式
;*********************************************************************
LEDCON EQU 0x00002000 ;P0.13引脚控制LED,低电平点亮
PINSEL0 EQU 0xE002C000
PINSEL1 EQU 0xE002C004
IODIR EQU 0xE0028008
IOSET EQU 0xE0028004
IOCLR EQU 0xE002800C
AREA LEDCONC,CODE,READONLY ;声明程序代码块
ENTRY ;程序入口
STARTC LDR R0,=PINSEL0 ;装载寄存器地址,PINSEL0
MOV R1,#0x00000000 ;设置数据,即设置引脚连接GPIO
STR R1,[R0]
LDR R0,=PINSEL1
STR R1,[R0]
LDR R0,=IODIR
LDR R1,=LEDCON
STR R1,[R0] ;设置LED控制口为输出
MAIN_LOOP LDR R1,=LEDCON ;设置控制参数
LEDSET LDR R0,=IOSET ;GPIO置位控制
STR R1,[R0]
BL DELAYS
LEDCLR LDR R0,=IOCLR ;GPIO清零控制
STR R1,[R0]
BL DELAYS
B MAIN_LOOP ;无条件跳转
;*********************************************************************
;名称:DELAYS
;功能: 软件延时
;入口参数:无
;出口参数: 无
;占用资源: R7
;*********************************************************************
DELAYS
MOV R7,#0x000ff000 ;延时参数
DELAYS_L1 SUBS R7,R7,#1 ;R7 = R7 - 1
BNE DELAYS_L1 ;判断R7 - 1 的结果是否为零,不为零则跳转
MOV PC,LR ;返回
ALIGN ;数据字对齐
LTORG ;声明文字池
END
阅读(1556) | 评论(0) | 转发(0) |