第一个ARM程序

;**************************************************************
;文件:program_5_1.s
;简介:ARM初始化程序
;**************************************************************
IMPORT Main ;伪操作IMPORT告诉编译器Main不是在该文件中定义的,而是在其他源文件中定义的符合,但在本源文件中可能要用到该符号
AREA Init,CODE,READONLY ;伪指令AREA定义段名为Init的段为只读的代码段
ENTRY ;指明了程序的入口点,接下来用汇编配置SYSCFG特殊功能寄存器
LDR R0, =0x3FF0000
LDR R1, =0xE7FFFF80 ;配置SYSCFG,片内16K Cache,16K SRAM
STR R1, [R0] ;将R1的保存在[R0]中
LDR SP, =0x3FE1000 ;4K SRAM的地址为0x3FE,0000~(0x3FE,1000-1),由于S3C2440的堆栈由高地址,
;所以SP指向4K SRAM的尾地址,堆栈向下生成
BL Main ;完成上述操作后,程序跳转到Main函数执行
B .
END
/**************************************************************************************/
/*文件:program_5_2.c */
/*简介:第一个ARM程序 嵌入式LED灯闪烁程序 */
/*************************************************************************************/
#define IOPMOD (*(volatile unsigned *)0x03FF5000) //IO port mode register
#define IOPDATA (*(volatile unsigned *)0x03FF5008) //IO port data register
void Delay(unsigned int);
int Main()
{
unsigned long LED;
IOPMOD=0xFFFFFFFF; //将IO口置为输出模式
IOPDATA=0x01;
for(;;){
LED=IOPDATA;
LED=(LED<<1);
IOPDATA=LED;为I/O数据寄存器赋初值0x1,通过将I/O数据寄存
;器的数值进行周期性的左移,实现使接在P0~P3
;口得LED登轮流被点亮
Delay(10);
if(!(IOPDATA&0x0F))
IOPDATA=0x01;
}
return(0);
}
void Delay(unsigned int x)
{
unsigned int i,j,k;
for(i=0;i<=x;i++)
for(j=0;j<0xff;j++)
for(k=0;k<0xff;k++);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值