MINI2440 LED驱动的汇编语言实现
来源:互联网 发布:caffe 提取所有参数 编辑:程序博客网 时间:2024/06/05 06:09
在学习ARM的过程中,一直只能看懂ARM的汇编程序,但是,真正自己动手写程序的时候,还真是不太容易,最近在看相关代码优化的问题时,才知道核心代码应该应用汇编来书写,因为用C语言来实现,很多时候优化得不太满足所需。
同时,在进行系统移植或者启动程序的书写时,也都要应用汇编来编写代码,而同时这一块也是我个人所喜爱的一块,所以,这几天有点时间,重新学习ARM汇编,同时将会把以前所做过的实验的相关部分应用汇编来进行实现。
下面是一个最简单的驱动程序,开发板为MINI2440,开发环境为MDK3.8。源代码如下。
主函数部分,由于这个驱动程序比较简单,所以,主函数部分比较简单。
/******************************************************************************
*说明:本程序是一个简单的LED流水灯驱动程序。所以在此不再进行说明。
*
*
*PCU与接口配置:
* CPU:S3C2440A
* LED1:GPB5
* LED2:GPB6
* LED3:GPB7
* LED4:GPB8
*内存运行地址:0x30000000
*
*
*作者:舒稳
*部门:长沙理工大学 计通学院 计算机07级04班
*最后修改时间:2010.7.6
*
*版权所有:2010.7.6------------ soon
*
*
******************************************************************************/
/*测试主函数*/
int main(void)
{
_my_led_test();
return 0;
}
下面为LED的真正驱动部分
rGPBCON EQU 0x56000010
rGPBDAT EQU 0x56000014
AREA MY_LED_TEST,CODE,READONLY
CODE32
EXPORT _my_led_test ;声明函数为外部可引用函数
_my_led_test
LDR R1,=rGPBCON
MOV R2,#0x00015400
STR R2,[R1] ;设计rGPBCON个引脚的工作方式
LDR R1,=rGPBDAT
LDR R3,=data_lable
MOV R5,R3 ;用于保存data_lable的首地址
MOV R4,#4 ;用于循环计数
my_led_test_loop
LDR R2,[R3],#4 ;以字为单位起数据,后变址寻址
STR R2,[R1] ;点亮相应的LED灯
MOV R0,#0x00100000 ;将要进行延时的时间
BL _delay_time ;进行延时
SUBS R4,#1
MOVEQ R4,#4
MOVEQ R3,R5 ;重新装载data_lable的首地址
B my_led_test_loop
_delay_time
delay_time_loop
SUBS R0,R0,#1
BNE delay_time_loop
MOV PC, LR
data_lable DCD 0x1C0,0x1A0,0x160,0x0E0 ;分别用于点亮相应的LED灯
END
有需要源工程的朋友,请给在下发邮件,
QQEMAIL: 443120079@qq.com
- MINI2440 LED驱动的汇编语言实现
- 用虚拟总线来实现的MINI2440 LED驱动
- MINI2440 LED灯驱动
- mini2440 led驱动
- mini2440 led驱动
- mini2440 LED驱动 (用ioremap实现访问CPU寄存器)
- mini2440 LED驱动 (用ioremap实现访问CPU寄存器)
- mini2440驱动分析之LED
- LED驱动分析(mini2440)
- mini2440 按键控制LED 驱动
- 基于mini2440的led驱动编写的总结
- 基于platform总线的mini2440的led设备驱动例子
- mini2440之led的几种驱动方式
- 基于linux的mini2440 led驱动及应用程序
- 驱动案例一:mini2440 LED驱动 (用ioremap实现访问CPU寄存器)
- Linux2.6.32驱动笔记(4)ioctl方法解析及mini2440-led驱动实现
- mini2440 led驱动及 应用程序注释
- mini2440 led驱动问题及代码
- 编译器cl.exe
- Teradata University
- ClearCase完全攻略(五) UCM实例:创建PVOB,创建VOB,两者区分
- WinCE 程序设计 窗口管理函数
- 常用内存数据库介绍(一)
- MINI2440 LED驱动的汇编语言实现
- 网络游戏运营策略分析
- Android蓝牙栈bluez使用方法
- Log4net学习心得
- filter实现登录验证,并且过滤servlet
- VS2010帮助查看器推荐
- PowerDesigner中设置Hibernate一对多,多对一属性
- 如何使用netfilter/iptables构建防火墙
- select多路事件分离函数