循环7盏灯依次点亮的程序LED灯程序

博客访问: 221376
博文数量: 59
博客积分: 1449
博客等级: 中尉
技术积分: 802
注册时间:
college education is a fucking jok. DONT take it seriously.
&& 终于把LED等的实验做好了...linux平台上做.& 貌似速度很不好... 延迟的函数是递减0x100000, 大约需要三四秒.真够慢的..一共有两个文件,一个汇编文件,一个C语言文件,其中汇编文件的功能就是关闭看门狗,然后为C语言代码设置环境,这里简单的设置一下堆栈就可以了。貌似这样和在x86上写裸程序是一个道理。C语言文件就循环点亮LED1-4。贴代码如下:crt0.S#define WATDOG&&& 0x.text.global _startstart:&&& ldr&&& r0, =WATDOG&&& mov&&& r1, #0&&& str&&& r1, [r0]&&& ldr&&& sp, =1024*4&&& &&& bl&&& mainhalt:&&& b&&& halt main.c文件 #define GPBCON&&& (*(volatile unsigned long *)0x)#define GPBDAT&&& (*(volatile unsigned long *)0x)#define LED4_SET_OUTPUT ((1<<10) | (1<<12) | (1<<14) | (1<<16))#define LED1_ON&&& (~(1<<5))#define LED2_ON (~(1<<6))#define LED3_ON (~(1<<7))#define LED4_ON (~(1<<8))void delay(void){&&& unsigned int i = 0x100000;&&& while(i--);}int main(void){&&& int i = 0x1000;&&& GPBCON = LED4_SET_OUTPUT;&&& while(i--) {&&& &&& GPBDAT = LED1_ON;&&& &&& delay();&&& &&& GPBDAT = LED2_ON;&&& &&& delay();&&& &&& GPBDAT = LED3_ON;&&& &&& delay();&&& &&& GPBDAT = LED4_ON;&&& &&& delay();&&& }&&& return 0;}Makefile 文件产生的二进制文件的名称很奇怪哈...是u-boot.bin,没办法... Nor flash里的u-boot进入下载模式时之能将固定的二进制文件名下载并烧入nand... 板子自带的就是这样... 不要与真正的u-boot搞混了...CROSS_COMPILE := arm-linux-CC := $(CROSS_COMPILE)gccCPP := $(CROSS_COMPILE)gcc -EAS := $(CROSS_COMPILE)asLD := $(CROSS_COMPILE)ldOBJCOPY := $(CROSS_COMPILE)objcopyall:u-boot.binu-boot.bin: test_elf&&& $(OBJCOPY) -O binary -S $< $@test_elf: crt0.o main.o&&& $(LD) -Ttext 0x0 -o $@ crt0.o main.o.S.s:&&& $(CPP) -o $@ $<.s.o:&&& $(AS)& -o $@ $<.c.o:&&& $(CC) -c -o $@ $<.PHONY clean:clean:&&& rm -f *.s *.o *.bin test_elf
阅读(1231) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
请登录后评论。网站已改版,请使用新地址访问:
led arm9的LEd灯点亮程序,4个LED全亮1秒后全灭,再过1秒 ,如此循环 Other Embeded program 其他嵌入式/单片机内容 238万源代码下载- www.pudn.com
&文件名称: led
& & & & &&]
&&所属分类:
&&开发工具: C-C++
&&文件大小: 97 KB
&&上传时间:
&&下载次数: 4
&&提 供 者:
&详细说明:arm9的LEd灯点亮程序,4个LED全亮1秒后全灭,再过1秒全亮,如此循环-arm9 the the LEd lights lit program, four LED full brightness for one second all off, one second later full brightness, so the cycle
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&led\inc\2440addr.h&&...\...\2440addr.inc&&...\...\2440lib.h&&...\...\2440slib.h&&...\...\def.h&&...\...\IIC.h&&...\...\MAIN.h&&...\...\Memcfg.inc&&...\...\memtest.h&&...\...\mmu.h&&...\...\option.h&&...\...\Option.inc&&...\...\profile.h&&...\led.mcp&&...\..._Data\CWSettingsWindows.stg&&...\........\Debug\TargetDataWindows.tdt&&...\........\.....Rel\led.axf&&...\........\........\ObjectCode\2440init.o&&...\........\........\..........\2440lib.o&&...\........\........\..........\2440slib.o&&...\........\........\..........\Main.o&&...\........\........\TargetDataWindows.tdt&&...\........\Release\TargetDataWindows.tdt&&...\src\2440init.s&&...\...\2440lib.c&&...\...\2440slib.s&&...\...\Main.c&&...\...\Main.c.bak&&...\led_Data\DebugRel\ObjectCode&&...\........\Debug&&...\........\DebugRel&&...\........\Release&&...\inc&&...\led_Data&&...\src&&led
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - mini2440在ads1.2下实现跑马灯
&[] - ARM9系列,s3c2410实验代码,包括(LED显示实验,七段数码管实验,四位拨段开关实验)都在开发板上调试通过。初学值得一看,
&[] - 一款基于winCE的嵌入式打地鼠游戏设计,文件包含代码,截图,说明。STM32之点亮LED灯程序
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
STM32之点亮LED灯程序
&头文件及完整例程下载:
#include &stm32f10x.h&
GPIO_InitTypeDef GPIO_InitS
#define LED1_ON GPIO_SetBits(GPIOB, GPIO_Pin_5); &
&//#define LED1_ON GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET);
#define LED1_OFF GPIO_ResetBits(GPIOB, GPIO_Pin_5);&
//#define LED1_OFF GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_RESET) ;&
#define LED2_ON GPIO_SetBits(GPIOD, GPIO_Pin_6); &
#define LED2_OFF GPIO_ResetBits(GPIOD, GPIO_Pin_6);&
#define LED3_ON GPIO_SetBits(GPIOD, GPIO_Pin_3); &
#define LED3_OFF GPIO_ResetBits(GPIOD, GPIO_Pin_3); &
void RCC_Configuration(void);
void LED_Config(void);
void Delay(__IO uint32_t nCount);
/****************************************************************************
* 名 & &称:void LED_Config(void)
* 功 & &能:LED 控制初始化函数
****************************************************************************/&
void LED_Config(void){
& RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD , ENABLE);
& GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; & & //LED1 &V6 & //将V6,V7,V8 配置为通用推挽输出 &
& GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
& GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //口线翻转速度为50MHz
& GPIO_Init(GPIOB, &GPIO_InitStructure);&
& GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_3; //LED2, LED3 V7 V8
& GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
& GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
& GPIO_Init(GPIOD, &GPIO_InitStructure);
// &GPIO_Init(GPIOD, &GPIO_InitStructure);
& GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
& & &//LCD背光控制
& GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
& GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
& GPIO_Init(GPIOD, &GPIO_InitStructure);
& GPIO_ResetBits(GPIOD, GPIO_Pin_13); & & & & & & &//LCD背光关闭
/****************************************************************************
* 名 & &称:int main(void)
* 功 & &能:主函数
****************************************************************************/&
int main(void)
& RCC_Configuration(); & //系统时钟配置
& LED_Config();//LED控制配置
& while (1)
& LED1_ON; LED2_OFF; LED3_OFF;//LED1亮 &LED2,LED3灭(LED2,LED3 仅V5 &V3,V2,V2.1板有)
& & Delay(0xAFFFF);
LED1_OFF; LED2_ON; LED3_OFF;//LED2亮 &LED1,LED3灭(LED2,LED3 仅V5 &V3,V2,V2.1板有)
Delay(0xAFFFF);
LED1_OFF; LED2_OFF; LED3_ON;//LED3亮 &LED1,LED2灭(LED2,LED3 仅V5 &V3,V2,V2.1板有)
Delay(0xAFFFF); & &
/****************************************************************************
* 名 & &称:void RCC_Configuration(void)
* 功 & &能:系统时钟配置为72MHZ
* 入口参数:无
* 出口参数:无
* 说 & &明:
* 调用方法:无&
****************************************************************************/&
void RCC_Configuration(void)
& SystemInit();
/****************************************************************************
* 名 & &称:void Delay(__IO uint32_t nCount)
* 功 & &能:延时函数
* 入口参数:无
* 出口参数:无
* 说 & &明:
* 调用方法:无&
****************************************************************************/&
void Delay(__IO uint32_t nCount)
& &for(; nCount != 0; nCount--);
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网 51hei.com , All Rights ReservedConfiguration-->Colors &Fonts 里边,可以进行字体类型、颜色、大小的设置,如图 1-8所示。图1-8 字体设置(一)因为我们用的是 C语言编程,所以我们在 Window 栏中选择 8051:Editor C Files,然后在右侧 Element 栏目里可以选择要修改的内容,一般我们平时用到的,只是其中几项而已,比如:Text——普通文本Text Selection——选中的文本Number——数字/*Comment*/——多行注释//Comment——单行注释Keyword——C 语言关键字String——字符串Keil本身都是有默认设置的,可以直接使用默认设置,但如果你觉得不合你的口味,那就在这里更改一下,改完后直接点 OK 看效果就可以了。图1-9 字体设置(二)用单片机点亮LED灯C语言教程一、使用Keil uVision新建一个工程对于单片机程序来说,每个功能程序,都必须要有一个配套的工程(Project),即使是点亮 LED 这样简单的功能程序也不例外,因此我们首先要新建一个工程,打开我们的 Keil 软件后,点击:Project-->New uVision Project...然后会出现一个新建工程的界面。以我们在硬盘上建立了一个 lesson2 的目录,然后把 LED 这个工程的路径指定到这里,这样方便今后管理程序,不同的功能程序放到不同的文件夹下,并且给这个工程起一个名字叫做 LED,软件会自动添加扩展名.uvproj。如图 2-9 所示。图2-9 保存工程直接点保存就可以了,工程会自动保存成 LED.uvproj 文件,下次要打开 LED 这个工程时,可以直接找到文件夹,双击这个.uvproj 文件就可以直接打开了。保存之后会弹出一个对话框,这个对话框让我们选择单片机型号。因为 Keil 软件是外国人开发的,所以并没有国内的 STC89C52,但是只要选择同类型号就可以了。51内核是由 Intel 公司创造的,所以这里直接选择 Intel 公司名下的 80/87C52 来代替,这个选项的选择对于后边的编程没有任何的不良影响。如图 2-10 所示。图2-10 单片机型号选择点击OK 之后,会弹出一个对话框,如图 2-11 所示,每个工程都需要一段启动代码,如果点“否”,编译器会自动处理这个问题,如果点“是”,这部分代码会提供给我们用户,按需要自己去处理这部分代码。那这部分代码在初学 51 的这段时间内,一般是不需要去修改的,但是随着技术的提高和知识的扩展,我们就有可能会需要了解这块内容,因此这个地方我们选一下“是”,让这段代码出现,但是我们暂时不需要修改它,大家知道这么回事就可以了。图2-11 启动代码选择这样工程就建立好了,如图 2-12 所示,如果我们点击 Target 1 左边的加号,会出现我们刚才加入的初始化文件 STARTUP.A51,这个我们先不管。图2-12 工程文件工程有了之后,我们要建立编写代码的文件,点击 File-->New,如图 2-13,新建一个文件,也就是我们编写程序的平台。然后点 File-->Save 或者直接点击那个 Save 的快捷键,可以保存文件,保存时我们把它命名为 LED.c,这个地方必须加上.c,因为如果写汇编语言,这个地方的扩展名是.asm,头文件就是.h 等等,我们编写的是 C 语言程序,这个地方必须自己添加文件的扩展名.c,如图 2-14 所示。图2-13 新建文件图2-14 保存文件现在就可以在建立好的文件中输入我们的程序代码了,在编写之前还有个工作要做。我们每做一个功能程序,必须要新建一个工程,一个工程代表了单片机要实现的一个功能。但是一个工程,有时候我们可以把我们的程序分多个文件写,所以每写一个文件,我们都要添加到我们所建立的工程中去,鼠标右键点 Source Group 1,点 Add Files to GroupSource Group 1...,如图 2-15 所示。图2-15 添加文件(一)在弹出的对话框中,单击 LED.c 选中它,然后点 Add,或者直接双击 LED.c 都可以将文件加入到这个工程下,然后单击 Close,关闭添加。这个时候大家会看到在 Source Group 1下边又多了一个 LED.c 文件。图2-16 添加文件(二)二、用C语言编写单片机程序准备工作做了那么多,终于要编写程序代码了。第一个单片机程序:#include
//包含特殊功能寄存器定义的头文件sbit LED = P0^0; //位地址声明,注意:sbit 必须小写、P 大写!void main(){ //任何一个 C 程序都必须有且仅有一个 main 函数LED = 0; //分号表示一条语句结束先从程序语法上来分析一下:main是主函数的函数名字,每一个 C 程序都必须有且仅有一个 main 函数。void是函数的返回值类型,本程序没有返回值,用 void 表示。{ }在这里是函数开始和结束的标志,不可省略。每条C 语言语句以结束的。逻辑上来看,程序这样写就可以了,但是在实际单片机应用中,存在一个问题。比如我们的程序空间可以容纳 100 行代码,但是我们实际上的程序只用了 50 行代码,当运行完了50 行,再继续运行时,第 51 行的程序不是我们想运行的程序,而是不确定的未知内容,一旦执行下去程序就会出错从而可能导致单片机自动复位,所以我们通常在程序中加入一个死循环,让程序停留在我们希望的这个状态下,不要乱运行,有以下两种写法可以参考:参考程序一:#include sbit LED = P0^0;void main(){while(1){LED = 0;参考程序二:#include sbit LED = P0^0;void main(){LED = 0;while(1);程序一的功能是程序在反复不断的无限次执行 LED = 0;这条语句,而程序二的功能是执行一次,然后程序直接停留下来等待,相对程序一来说程序二更加简洁一些。我们的开发板上,还有一个 74HC138 作为 8 个 LED 小灯的总开关,而 P0.0 仅仅是个分开关。如同我们家里总是有一个供电总闸,然后每个电灯又有一个专门的开关,我们刚才的程序仅仅打开了那个电灯的开关,但是没有打开那个总电闸,所以程序需要加上这部分代码。因为要介绍的内容比较多,所以我们把 74HC138 的原理以及为什么要加额外的代码在以后统一介绍,这次小瓦君直接加上这部分代码,大家知道有这么一回事就可以了。#include
//包含特殊功能寄存器定义的头文件sbit LED = P0^0; //位地址声明,注意:sbit 必须小写、P 大写!sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;void main(){ENLED = 0;ADDR3 = 1;ADDR2 = 1;ADDR1 = 1;ADDR0 = 0;LED = 0; //点亮小灯while (1); //程序停止在这里程序编好了,我们要对程序进行编译,生成需要的可以下载到单片机里的文件,在编译之前,我们先要勾选一个选项,Project-->Options for Target Target1...,或者直接点图 2-17 中红框内的快捷图标:图2-17 工程选项图标在弹出的对话框中,点击 Output 选项页,勾选其中的“Create HEX File”复选框,然后点 OK,如图 2-18 所示。图2-18 创建 HEX 文件设置好以后呢,点击“Project-->rebuild all target files”,或者鼠标点击图 2-19 中红框内的快捷图标,就可以对程序进行编译了。图2-19 编译程序编译完成后,在 Keil 下方的 Output 窗口会出现相应的提示,大家注意看图 2-20,这个窗口告诉我们编译完成后的情况data=9.0 ,指的是程序使用了单片机内部的 256字节 RAM 资源中的 9 个字节,code=29 的意思是使用了 8K 代码 Flash 资源中的 29 个字节。当提示“0 Error(s), 0 warning(s)”表示我们的程序没有错误和警告,就会出现“creating hex file from “LED”...,意思是从当前工程生成了一个 HEX 文件,我们要下载到单片机上的就是这个HEX 文件。如果出现有错误和警告提示的话,就是 Error 和 warning 不是 0,那么我们就要对程序进行检查,找出问题,解决好了再进行编译产生 HEX 才可以。图2-20 编译输出信息到此为止,程序就编译好了,下边我们就要把编译好的程序文件下载到单片机里了。三、将程序下载到单片机首先,要把硬件连接好,把板子插到电脑上,打开设备管理器查看所使用的是哪个 COM 口,如图 2-21 所示,找到“USB-SERIAL CH340(COM5)”这一项,这里最后的数字就是开发板目前所使用的 COM 端口号。图2-21 查看COM口然后STC 系列单片的下载软件——STC-ISP,如图 2-22 所示。图2-22 程序下载设置下载软件列出了 5 个步骤:第一步,选择单片机型号,我们现在用的单片机型号是STC89C52RC,这个一定不能选错了;第二步,点击“打开程序文件”,找到我们刚才建立工程的那个 lesson2 文件夹,找到 LED.hex 这个文件,点击打开;第三步,选择刚才查到的 COM口,波特率使用默认的就行;第四步,这里的所有选项都使用默认设置,不要随便更改,有的选项改错了以后可能会产生麻烦。第五步,因为 STC 单片机要冷启动下载,就是先点下载,然后再给单片机上电,所以先关闭板子上的电源开关,然后点击“Download/下载”按钮,等待软件提示你请上电后,如图 2-23 所示,然后再按下板子的电源开关,就可以将程序下载到单片机里边了。当软件显示“已加密”就表示程序下载成功了,如图 2-24 所示。图2-23 程序下载过程图2-24 程序下载完毕程序下载完毕后,就会自动运行,大家可以在板子上看到那一排 LED 中最右侧的小灯已经发光了。那现在如果我们把 LED = 0 改成 LED = 1,再重新编译程序下载进去新的 HEX 文件,灯就会熄灭。至此,点亮一个 LED 的实验已经完成,终于迈出了第一步,是不是还挺好玩的呢!点击“学学”菜单栏!获取更多机器人和单片机的相关知识,还有DIY教程哦~回复“单片机”,获取51单片机电子教案(C语言完整版)为您提供:【前沿资讯】跟踪国内外机器人领域前沿最新动态【萝卜知识】完整的机器人专业知识学习路径,人人都可以成为创客【实践通道】提供机器人相关的产品、爱好者社区,以及工作实践机会本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。生命科技百家号最近更新:简介:传递最新信息,执著玩机动脑,普及使用技巧作者最新文章相关文章

我要回帖

更多关于 8个流水灯循环点亮 的文章

 

随机推荐