ARM 学习笔记之二 LED点亮程序设计

第一步,先聊聊单片机 LED 点亮:

        单片机可操作单个位:sbit    led1    =    P1    ^    2;

通过控制 变量 led1 来控制灯 的 亮 与 灭;

  1. #include <reg52.h>
  2. sbit led1 = P1 ^ 2;
  3. void delay(unsigned int xx)//延时
  4. {
  5. int i = 0;
  6. while(xx--)
  7. {
  8. for(i = 0; i < 400; i++);
  9. }
  10. }
  11. int main()
  12. {
  13. while(1)
  14. {
  15. led1 = 1//灭
  16. delay(100);
  17. led1 = 0;//亮
  18. delay(100);
  19. }
  20. }

这是单片机的点灯实验,下面我们将它引入到 ARM 上:

ARM 中不能像单片机那样进行单个的位操作,必须是整体,但也很简单...

有这么几个步骤:

(1)分析电路(需要操作哪个灯,这是你要做的)

(2)分析驱动方式(查询寄存器的工作方式: 输入 / 输出 / ...)

(3)控制对应引脚(查询哪个引脚和该引脚是否拉高拉低)

不说了,直接上代码

  1. #include <S3C2440.h>
  2. #define LED_A_ON(i) GPADAT &= ~(0x1 << i) //A口i灯亮
  3. #define LED_B_ON(i) GPBDAT &= ~(0x1 << i) //B口i灯亮
  4. #define LED_A_OFF(i) GPADAT |= (0x1 << i) //A口i灯亮
  5. #define LED_B_OFF(i) GPBDAT |= (0x1 << i) //B口i灯亮
  6. void LED_INIT(void);//初始化控制灯
  7. void delay(unsigned int xx);//延时
  8. int main()
  9. {
  10. LED_INIT();
  11. while(1)//流水灯实验
  12. {
  13. LED_B_ON(5);
  14.     LED_B_OFF(6);
  15.     LED_A_OFF(25);
  16.     LED_A_OFF(26);
  17.     delay(100);
  18.     LED_B_ON(6);
  19.     LED_B_OFF(5);
  20.     LED_A_OFF(25);
  21.     LED_A_OFF(26);
  22.     delay(100);
  23.     LED_A_ON(25);
  24.     LED_B_OFF(5);
  25.     LED_B_OFF(6);
  26.     LED_A_OFF(26);
  27.     delay(100);
  28.     LED_A_ON(26);
  29.     LED_B_OFF(5);
  30.     LED_B_OFF(6);
  31.     LED_A_OFF(25);
  32.     delay(100);
  33. }
  34. }
  35. void LED_INIT()//初始化控制灯
  36. {
  37. GPBCON &= ~(0x03 << 10);//GPB5清零
  38. GPBCON |= (0x01 << 10); //置1
  39. GPACON &= ~(0x3 << 25);
  40. GPADAT |= (0x3 << 25);
  41. GPBDAT |= (0x3 << 5);
  42. delay(10000);
  43. }

自己比较吧,是不是也不太难呢。

来自为知笔记(Wiz)

时间: 2024-10-25 04:11:27

ARM 学习笔记之二 LED点亮程序设计的相关文章

Unix文件系统学习笔记之二: 文件描述符、inode和打开文件表

Unix文件系统学习笔记之二: 文件描述符.inode和打开文件表 系统盘上数据的布局 文件系统无非是关于数据在磁盘上的组织以及存储空间管理的,为此,首先需要知道磁盘上数据的总体布局方式.以Unix为例,最重要的一张表如下: Unix 进程管理中和用户文件.io 最相关的数据结构:usr 数据结构 The procstructure does not record information related to file access.  However the userstructure con

C++primer学习笔记(二)——Chapter 4

4.1  Fundamentals 1.Basic Concepts (1)操作符分为一元,二元或者三元操作符: (2)复杂的表达式中含有很多操作符时: 规则一:分为不同的级别,级别高的先运行: 规则二:相同级别的操作符有执行顺序的确定: (3)操作符可以改变操作数的类型 一般将级别低的转化成级别高的 (4)重载运算符 相同的运算符在对不同类型的对象进行操作的时候,会有不同的功能: (5)Lvalue和Rvalue 显而易见:Lvalue指的是Left value,Rvalue指的是Right

struts2学习笔记(二)—— 获取登录信息及计算在线人数

实现目的: 1.点击"Login"的超链接,进入登录页面 2.填写登录信息,提交表单,将用户信息保存进Session 3.显示用户名,并计算在线人数 4.点击"Logout"的超链接,在线人数减一,并使Session失效 Struts2实现: 1.配置web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:/

《语义网基础教程》学习笔记(二)

二.RDF概述(参考http://zh.transwiki.org/cn/rdfprimer.htm) 1.本体: 一个本体是一个概念体系(conceptualization)的显式的形式化规范. 一般来说,一个本体形式地刻画一个论域.一个典型的本体由有限个术语及它们之间的关系组成. ★在万维网这个环境中,本体提供了对给定领域的一种共识.这种共识对于消除术语差别是必要的. 通过把各自的术语差异映射到一个公共的本体之间的直接映射,可以消除这些术语差异. 不管采用哪种方案,本体都支持语义可共用性(s

《iOS应用逆向工程》学习笔记(二)iOS系统目录结构(部分)

首先下载个iFile,可以用来直观地查看iOS系统的目录结构. 下面记录一些关键的iOS目录结构: /var:"variable"的简写,存放一些经常更改的文件,例如日志.用户数据.临时文件等.其中/var/mobile/Applications下存放了所有App Store App. /Applications:存放所有的系统App和来自Cydia的App,不包括App Store App.越狱的过程把/Applications变成了一个符号链接,实际指向/var/stash/App

现代C++学习笔记之二入门篇2,数据转换

static_cast:    这种强制转换只会在编译时检查. 如果编译器检测到您尝试强制转换完全不兼容的类型,则static_cast会返回错误. 您还可以使用它在基类指针和派生类指针之间强制转换,但是,编译器在无法分辨此类转换在运行时是否是安全的. dynamic_cast: dynamic_cast在运行时检查基类指针和派生类指针之间的强制转换. dynamic_cast 是比 static_cast 更安全的强制类型转换,但运行时检查会带来一些开销. const_cast:    con

HTML5学习笔记(二)——表单1

表单一直是网页必不可少的一部分,一直以来,表单的作用被无限扩展,发展出了诸多新奇的用法,老版的HTML只支持很少的一部分常用表单,许多的新表单都需要借助CSS与JavaScript语言来进行构建,现在HTML5来了,她带来了新的表单,这些强大的表单项,可以省去一大块复杂的JavaScript代码,很值得去学习. 而且在新的表单里面,不再像以前每个表单都必须位于<form></form>之内,只要在<form></form>内定义一个id,然后在网页任何位置都

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

PHP ----学习笔记(二)

date()函数用于格式化时间或日期 date(format,timestamp) mktime()函数可为指定的日期返回Unix时间戳 mktime(hour,minuite,second,mouth,day,year,is_dst) include和require语句用于在执行流中向其他文件插入有用的代码 include 'filename'; require 'filename'; fopen() 函数用于在PHP中打开文件 fclose() 函数用于关闭打开的文件 feof() 函数检测