led实验
1.看原理图
看设备工作的原理(可能需要阅读芯片手册),看设备与cpu的连接关系

GPIO具有输入输出功能。
输入:cpu想知道io引脚是高电平还是低电平那么就是输入方式
输出:cpu想控制io引脚为高电平还是低电平那么就是输出方式
跟电流的方向没有任何关系

2. cpu的相关章节
GPJ2CON control是配置这个引脚是什么功能
GPJ2有8个引脚,每个引脚由con寄存器中的4个位进行配置

GPJ2DAT 如果cpu要输出高电平或者低电平,就需要设置该寄存器,只有8位有效
When the port is configured as input port, the corresponding
bit is the pin state. When the port is configured as output
port, the pin state is the same as the corresponding bit.
When the port is configured as functional pin, the undefined
value will be read.
当配置为输入模式的时候,dat寄存器中的某一位的值由引脚设置,引脚是高电平是,对应的位为1,引脚为低电平时,对应的位为0
当配置为输出模式的时候,dat寄存器中的某一位控制引脚的电平,对应的位为1时,对应的引脚输出高电平,对应的位为0时,对应的引脚输出为低电平
其他功能模式时,读到的值是未定义的。

@gec210 light first led
.globl _start
_start:
ldr r0,=0xe0200280
mov r1,#1<<4
str r1,[r0] @config pin0 output mode

mov r1,#0
str r1,[r0,#4] @output low level

b . @same as while(1);

arm-linux-gcc -c led.S -o led.o //编译不链接
arm-linux-ld -Ttext 0x30008000 led.o -o led.elf //链接指定代码段起始位置
arm-linux-objcopy -O binary led.elf led.bin //生成二进制执行文件
arm-linux-objdump -D led.elf > led.dis //生成反汇编代码

uboot的几个常用命令
printenv 打印显示环境变量

ipaddr=192.168.1.4 //开发板的ip
serverip=192.168.1.2 //tftp服务器的ip

设置为各自的ip,只是设置到内存,掉电就没有
setenv ipaddr 192.168.1.x
setenv serverip 192.168.1.x

saveenv //保存到flash中,再次启动后为刚刚设置的值

ping //单向的,只能从开发板ping电脑
alive表示网络是通的,not alive表示网络不通

tftp 30008000 led.bin //下载二进制文件到内存0x30008000地址
go 30008000 //跳转到0x30008000运行程序

@gec210 light first led
.globl _start
_start:
ldr r0,=0xe0200280
ldr r1,=(1<<0 | 1<<4 | 1<<8 | 1<<12)
str r1,[r0] @config pin0-pin3 output mode

mov r1,#0
str r1,[r0,#4] @output low level

b . @same as while(1);

简单的makefile
APP=led

$(APP).bin:$(APP).o
arm-linux-ld -Ttext 0x30008000 $^ -o $(APP).elf
arm-linux-objcopy -O binary $(APP).elf $@
arm-linux-objdump -D $(APP).elf > $(APP).dis
cp $@ /home/gec/tftp/

%.o:%.s
arm-linux-gcc $^ -c -o $@

%.o:%.S
arm-linux-gcc $^ -c -o $@

%.o:%.c
arm-linux-gcc $^ -c -o $@

clean:
@rm -f $(APP).bin $(APP).elf $(APP).dis *.o

四个灯同时点亮或者同时熄灭
循环闪烁
@gec210 light first led
.globl _start
_start:
ldr r0,=0xe0200280
ldr r1,=(1<<0 | 1<<4 | 1<<8 | 1<<12)
str r1,[r0] @config pin0-pin3 output mode

loop:
mov r1,#0
str r1,[r0,#4] @output low level

bl delay

mov r1,#0xf
str r1,[r0,#4]

bl delay

b loop

b . @same as while(1);

delay:
mov r4,#0xff00000
delay1:
subs r4,r4,#1
bne delay1
mov pc,lr

#define GPJ2CON (unsigned long *)0xe0200280

unsigned long *p = (unsigned long *)0xe0200280;
p

练习:
第1个灯到第4个灯依次点亮,第4个灯到第1个灯依次熄灭,循环。

.globl _start
_start:
ldr r0,=0xe0200280
ldr r1,=0x1111
str r1,[r0] @config pin0 output mode

loop:
mov r1,#0xe
str r1,[r0,#4]
bl delay

mov r1,#0xc
str r1,[r0,#4]
bl delay

mov r1,#0x8
str r1,[r0,#4]
bl delay

mov r1,#0
str r1,[r0,#4]
bl delay

mov r1,#0x8
str r1,[r0,#4]
bl delay

mov r1,#0xc
str r1,[r0,#4]
bl delay

mov r1,#0xe
str r1,[r0,#4]
bl delay

mov r1,#0xf
str r1,[r0,#4]
bl delay

b loop

b . @same as while(1);

delay:
mov r4,#0xff00000
delay1:
subs r4,r4,#1
bne delay1
mov pc,lr

汇编语言实现led灯的跑马灯的更多相关文章

  1. ABB 机器人 流水灯and跑马灯

    MODULE MainModule VAR signaldi signaldi14; PROC main() //di14_test 数字输入信号 WHILE di14_test = DO ycld; ...

  2. 【雕爷学编程】Arduino动手做(56)---8路LED跑马灯模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  3. ARM开发(1) 基于STM32的LED跑马灯

    一 跑马灯原理:  1.1 本实验实现2个led的跑马灯效果,即2个led交替闪烁.  1.2 实验思路:根据电路图原理,给led相关引脚赋予高低电平,实现电路的导通,使led灯发光.  1.3 开发 ...

  4. (二)重拾单片机 第一天 LED灯

    由图知道 低电平 亮,高电平 灭 控制第一个 LED1 亮灭程序代码,如下 #include<reg52.h> #define uchar8 unsigned char #define u ...

  5. 用LED灯和按键来模拟工业自动化设备的运动控制

    开场白: 前面三节讲了独立按键控制跑马灯的各种状态,这一节我们要做一个机械手控制程序,这个机械手可以左右移动,最左边有一个开关感应器,最右边也有一个开关感应器.它也可以上下移动,最下面有一个开关感应器 ...

  6. Tiny4412之蜂鸣器驱动与led灯驱动

    一:LED驱动编写 要编写LED驱动,首先的知道开发板的构造:开发板分为核心板与底板:编写驱动的第一步就是要看开发板,找到LED灯在开发板上的位置及所对应的名字:第一步就要查看核心板电路图,以及底板电 ...

  7. (一)stm32f103~~GPIO基本操作一(led灯)

    GPIO基本操作,如果更换IO口只需要更换端口设置即可 led.h文件 #ifndef __LED_H #ifndef __LED_H #define __LED_H #include "s ...

  8. 51单片机学习笔记(郭天祥版)(1)——单片机基础和点亮LED灯

    关于单片机型号的介绍: STC89C52RC40C-PDIP 0721CV4336..... STC:STC公司 89:89系列 C:COMS 52(还有51,54,55,58,516,):2表示存储 ...

  9. 第7章 使用寄存器点亮LED灯

    第7章     使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

随机推荐

  1. Android蓝牙传感应用(转)

    源:http://www.cnblogs.com/xiaochao1234/p/3753538.html Android手机一般以客户端的角色主动连接SPP协议设备(接上蓝牙模块的数字传感器),连接流 ...

  2. Rails (堆栈)<数据结构>

    题意:<看图片> 解题思路:栈的简单应用: #include<iostream> #include<stack> #include<algorithm> ...

  3. initWithNibName与viewDidLoad的执行关系以及顺序

    转载自:http://www.java123.net/v/380331.html 一个ViewController,一般通过init或initWithNibName来加载.二者没有什么不同,init最 ...

  4. Android PopupWindow的使用技巧(转)

    Android PopupWindow的使用技巧 PopupWindow是Android上自定义弹出窗口,使用起来很方便. PopupWindow的构造函数为 public PopupWindow(V ...

  5. Python3基础 定义无参数无返回值函数 调用会输出hello world的函数

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  6. PAT1010

    Given a pair of positive integers, for example, 6 and 110, 给出一对正整数,例如6和110 can this equation 6 = 110 ...

  7. hdu1915

    对于图的东西总是一筹莫展,没办法,还是翻出以前的基础题来看看,然后慢慢分析吧.路漫漫其修远兮,吾将上下而求索…… void bfs(int x,int y){ for(int k=0;k<8;k ...

  8. highcharts 去掉打印和链接

    1)去掉或更改图片右下角的链接 在highcharts.js文件中搜索credits字符串,找到如下的字符串, enabled:设置是否显示链接 text:设置链接显示的名称 href:设置链接的ur ...

  9. JAVA调用c/c++代码

    JNI是Java Native Interface的缩写,中文为JAVA本地调用.使用JNI可以很方便的用我们的Java程序调用C/C++程序.很多时候,某些功能用Java无法实现,比如说涉及到底层驱 ...

  10. Ubuntu安装MongoDB和PHP扩展

    MongoDB是一个可伸缩的,高性能的开源NoSQL 文档数据库.主要用C++开发完成.面向文档存储,全索引支持,可复制和高可用性,自动分片等特征.其在非关系型数据库中是功能最丰富,最像关系型数据库 ...