基于s3c2440用汇编实现点灯体验

第一步,查芯片手册,了解控制寄存器的地址

于第F组的F4引脚为例

查看引脚控制地址
基于s3c2440用汇编实现点灯体验_第1张图片

查看控制对应位分引脚高低电平即1,0。对应位即是F4引脚就控制[4]位
基于s3c2440用汇编实现点灯体验_第2张图片
查看F4的配置输入或输出,在[9:8]位
在这里插入图片描述

几条必须又常用的汇编命令

ldr r0, =0x12345678   @ 此处 ldr 是伪指令, ldr 还可以是读内存的指令
mov r1 , r2		@把r2的值赋给r1,,r2 = r1    如mov r1, #0x40000000
str r0, [r1]                  @ 先把r0 中的数据写到r1指向的地址中,也是4字节
ldr r2, [r1]          @ 读取 r1 指向的地址中的数据,读取 4 个字节
B				跳转


代码展示





/*.
.text .global 是arm-gcc编译器的关键词。
.text 指定了后续编译出来的内容放在代码段【来可执行】;
.global 告诉编译器后续跟的是一个全局可见的名字【可能是变量,源也可以是函数名】;
在本例中,_start是一个函数的起始地址,也是编译、链接后程序的起始地址。由于程序是过加载器来加载的,必须要找知到 
_start名字的函数,因此_start必须定义成全局的,以便存在于编译后的全局符合表中,供道其它程序【如加载器】寻找到。
*/



.text
.global _start

_start:




/**
 *
 *设置GPF4为输出引脚
 *把0x100写入到地址0x56000050
 *
 */


    ldr r1, = 0x56000050

    ldr,r0,= 0x100  ##mov r0, = #0x100

    str r0, [r1]



/**
 *
 *设置GPF4输出低电平
 *把0写入到地址0x56000054
 *
 */
    
    ldr r1, = 0x56000054

    ldr,r0,= 0  ##mov r0, = #0x100

    str r0, [r1]



/**
 * 死循环
 *
 */
halt:       

    b halt

注意

汇编不一定要全部了解,只要把最常用的首熟悉使用就行

借鉴该大神博主文章部分内容:https://www.cnblogs.com/electronic/p/11019914.html

补充(更新…)

ldmia

先读后增, (不存)

stdmdb

先减后存 (存入)

你可能感兴趣的:(嵌入式)