当前位置: 首页 > news >正文

第二期: 第四节, 裸机编程 LED 汇编代码。

1 首先是 关于汇编代码的解释。

来看看原理图:

再来看看 GPL2_0 的寄存器地址。

来看看代码:

.globl _start
.arm
_start:
// 这是 GPL2_0 的 CON 寄存器的地址。LDR R0,=0x11000100    LDR R1,[R0]//首先是清零,最后4位BIC R1,R1,#0x0000000f//然后是将 最后4位设置成 1  , 也就是 输出模式。ORR R1,R1,#0x00000001//然后写回。STR R1,[R0]
loop://这是 GPL_0 的data寄存器的地址。LDR R0,=0x11000004LDR R1,[R0]//首先是 将 第一位 置一, 也就是输出高电平ORR R1,R1,#0x1STR R1,[R0]
//然后跳到 延时函数。BL delay
//接下来就是  将最后 一位置0 也就是 输出低电平。
//这是在实现闪烁功能。LDR R1,[R0]BIC R1,R1,#0x1STR R1,[R0]BL delay
// 然后是循环的闪烁B loop
delay:LDR R2,=0xfffffff
loop1:
// 这是一个延时函数, 就是从 fffff 不断向下减1, 直到减到0 为止。SUB R2,R2,#0x1CMP R2,#0x0BNE loop1MOV PC,LR
.end

2 然后是关于 关于 makefile 的编写。

TARGET=led
all:arm-none-linux-gnueabi-gcc -O0 -g -c -o $(TARGET).o $(TARGET).sarm-none-linux-gnueabi-ld               $(TARGET).o -Ttext 0x40008000 -N -o $(TARGET).elfarm-none-linux-gnueabi-objcopy -O binary -S $(TARGET).elf $(TARGET).bin
clean:rm -rf *.o *.elf *.dis *.bin

3 然后就是 编译+烧写+测试。

烧写 ,编译, 程序在板子上的运行都是正常的。


http://www.mrgr.cn/news/25542.html

相关文章:

  • 质量小议45 - 粒度
  • 2024.9.12
  • 企业数字化转型、建设和升级面临的主要难题和解决之道(2)
  • 书接上文,介绍下Quartz Java体系结构
  • 【自用25.1】C++-智能交友系统项目
  • Java【内部类】
  • 【在Linux世界中追寻伟大的One Piece】五种IO模型和阻塞IO
  • DRW的公式推导及代码解析
  • 维护左右边第一个小的值(滑动窗口)
  • 多态的概念
  • 终端文件管理神器 !!!【送源码】
  • Keras中MinMaxNorm约束的具体计算逻辑和方法解密
  • mysql学习教程,从入门到精通,SQL AND OR 运算符(12)
  • 【C++ Primer Plus习题】15.4
  • 二叉树--
  • 【阿一网络安全】如何让你的密码更安全?(三) - 散列函数
  • Linux系统:chgrp命令
  • 大二上学期详细学习计划
  • 表观遗传系列1:DNA 甲基化以及组蛋白修饰
  • 爬虫