一步步点亮LED5_汇编编写延时函数并实现LED闪烁效果
来源:互联网 发布:js 数组循环 编辑:程序博客网 时间:2024/05/23 01:25
《朱老师物联网大讲堂》学习笔记
上一节课,我们实现了可以自由选择的复杂点亮,下面是上一节的代码
#define GPJ0CON0xE0200240 #define GPJ0DAT0xE0200244.global _start_start:ldr r0, =0x11111111ldr r1, =GPJ0CONstr r0, [r1]ldr r0, =( (1<<3) | (0<<4) | (1<<5) )ldr r1, =GPJ0DATstr r0, [r1]b.
LED闪烁效果的实现,其实就是
亮 + 延时 + 灭 + 延时 + 亮 。。。
延时实现
用一些没有效果,没有目的代码消耗时间,达到延时的效果。
需要注意的是,不能把函数写到主体代码里面,就好像c语言中,子函数不能写进main函数里面,而是要写成独立的函数。
下面是具体代码的实现
#define GPJ0CON0xE0200240 #define GPJ0DAT0xE0200244.global _start_start:ldr r0, =0x11111111ldr r1, =GPJ0CONstr r0, [r1]ldr r0, =( (0<<3) | (0<<4) | (0<<5) )ldr r1, =GPJ0DATstr r0, [r1]bl delay这句执行的同时,就已经将返回地址写进lr里面了ldr r0, =( (1<<3) | (1<<4) | (1<<5) )ldr r1, =GPJ0DATstr r0, [r1]bl delayldr r0, =( (0<<3) | (0<<4) | (0<<5) )ldr r1, =GPJ0DATstr r0, [r1]bl delayldr r0, =( (1<<3) | (1<<4) | (1<<5) )ldr r1, =GPJ0DATstr r0, [r1]flag:b flagdelay:ldr r2, =10000000ldr r3, =0x0delay_loop:sub r2, r2, #1cmp r2, r3比较之后会,如果计算结果为0,自动置位CPSR中Z标志位如果r2等于r3,Z会等于1,下一句中的eq就会成立bne delay_loopmov pc, lr 函数调用返回
汇编中调用函数用bl指令,子函数中最后用mov pc, lr来返回,这里和C语言中不同,准确说是C语言帮我们实现了。
这样实现的循环,有一种手动的感觉,如何实现像c中的循环呢?
在第一次亮的那段代码前加一个标号flash,然后在最后一次灭的后面加一个bl flash
0 0
- 一步步点亮LED5_汇编编写延时函数并实现LED闪烁效果
- 一步步点亮LED3_从零开始手写汇编点亮LED
- x210 一步步点亮LED
- 一步步点亮LED
- 延时程序实现的Led灯闪砾效果
- 第二节:delay()延时实现LED灯的闪烁。
- STM8S精确延时+LED闪烁
- 1.点亮一盏LED(ARM汇编实现)
- ok210汇编点亮LED灯
- 点亮LED——汇编
- 流水灯实例,点亮发光管LED并闪烁(查表操作)
- TQ2440上LED灯闪烁效果的驱动程序实现
- 使用汇编代码点亮一个LED灯
- mini2440之汇编点亮一个led
- mini2440第一课《汇编点亮LED》
- .net micro framework的入门例程-点灯神话-6.使用定时器代替延时函数闪烁LED
- stm32 ucos LED灯延时闪烁+按键闪烁+串口输出
- 嵌入式驱动编写-点亮LED驱动程序
- Hadoop的调度器总结
- 七层协议详解
- Android 自定义控件之第三讲:obtainStyledAttributes 系列函数详解
- 【有毒的设计模式】单一指责原则、开放-封闭原则、依赖倒转原则、里氏代换原则
- Quartz任务调度(1)概念例析快速入门
- 一步步点亮LED5_汇编编写延时函数并实现LED闪烁效果
- 179.Largest Number
- poj-2255-Tree Recovery
- HDU 1394 线段树
- TCP三次握手四次挥手blog.csdn.net/whuslei
- 雪碧图-初识
- 《Linux操作系统分析》之分析系统调用system_call的处理过程
- 最简单最快的实现底部标签导航(仿闲鱼样式)
- 国内上谷歌搜索方法之谷粉搜搜