随笔分类 -  嵌入式&&单片机

GNU ARM 汇编
摘要:转自:http://blog.chinaunix.net/uid-23193900-id-3179709.htmlGNU ARM 汇编GNU:维基百科上说:GNU,一个类UNIX的操作系统,由GNU计划推动,目标在于建立一个完全相容于UNIX的自由软件环境。这里GNU代表了一种平台,一类开发环境,更是一种汇编程序设计的语法格式。我们这里可以认为他代表一类组织,有自己的独特的程序设计规范,就是AT&T规范,一般称之为AT&T汇编,提到AT&T汇编,就应该知道这是另一种汇编语法格式,汇编指令是由处理器决定的。跟语法格式无关。ARM:代表一类处理器,比如INTEL处理器,AR 阅读全文

posted @ 2012-05-22 22:59 hicjiajia 阅读(3603) 评论(0) 推荐(0)

AT&T汇编
摘要:转自:http://n3719e7533.blog.163.com/blog/static/18943933420111132184813 AT&T 汇编 1.Register Reference 引用寄存器要在寄存器号前加百分号%,如“movl %eax, %ebx”。 有如下寄存器: [1] 8 个 32-bit 寄存器 %eax,%ebx,%ecx,%edx,%edi,%esi,%ebp,%esp; ( 8 个 16-bit 寄存器,它们事实上是上面 8 个 32-bit 寄存器的低 16 位:%ax,%bx, %cx,%dx,%di,%si,%bp,%sp; 8 个 8... 阅读全文

posted @ 2012-05-22 22:54 hicjiajia 阅读(8333) 评论(0) 推荐(0)

光敏试验
摘要:突然发现上个月买的单片机盒子里有个光敏电阻,这个没玩过,所以赶紧试试。光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达1~10M欧,在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆。下面看一下电路图:(我们把光敏电阻接入AIN0通道的J2插针处)如何操作AD还是按照前篇文章的三步走战略,但是光敏电阻组值变动范围太大,很难严格的说出量程范围,我们只需要大体估计个就行,反正有比例关系。我们知道当没有光照射的时候,光敏电阻阻值最大,AD将获得最大值(全1),我们索性规定当没有光照射的时候,输入的电压就是5V,这样对应的系数就有了,255 / 5 = 阅读全文

posted @ 2012-05-01 19:39 hicjiajia 阅读(2911) 评论(0) 推荐(0)

BootLoader —— S3C2440
摘要:原文作者:phosphor,出自:http://bbs.armeasy.com 先来看看扬创的bootloader的实现方法: 首先:在汇编中初始化堆栈,中断向量表,MMU,时钟,串口等,然后跳到C语言的Main函数。这部分代码小于4K,放在block0。这个Main函数用来将第二段代码拷备到DRAM中并执行。 其次:进入第二段代码。第二段代码也是先在汇编中初始化堆栈,中断向量表等,然后跳到C语言的Main函数。这部分代码就不用有4K限制了,具体大小由第一段代码决定,因为它本身由第一段代码来搬运。这个Main函数用来显示开机图片以及进度条。然后视串口接收信息运行带有USB下载NK的Eboot或 阅读全文

posted @ 2012-05-01 16:08 hicjiajia 阅读(1727) 评论(1) 推荐(1)

ARM中断(三)
摘要:原文:http://www.cnblogs.com/processakai/archive/2011/05/01/2033963.html;==;=========================================; NAME: 2440INIT.S; DESC: C start up codes; Configure memory, ISR ,stacks; Initialize C-variables; 完全注释;=========================================; NAME: 2440INIT.S; DESC: C start up code 阅读全文

posted @ 2012-05-01 13:00 hicjiajia 阅读(4016) 评论(0) 推荐(0)

ARM中断(一)
摘要:本文感谢 ce123 朋友 S3C2440一共有60个中断源,其中有15个子中断源,它们与SUBSRCPND寄存器中的每一位相对应,其他45个中断源与SRCPND中的每一位相对应。要注意的是EINT4~7对应的是同一位SRCPND[4],而EINT8~23对应的也是SRCPND[5]一位。1 S3C2440的中断寄存器 中断分两大类:外部中断和内部中断。1.1 外部中断寄存器 24个外部中断占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。具体可参考datesheet数... 阅读全文

posted @ 2012-05-01 12:59 hicjiajia 阅读(7445) 评论(2) 推荐(2)

ARM中断(二)
摘要:本文感谢郑星 朋友2440支持IRQ(普通中断)和FIQ(快速中断)。2440有60个中断源,不支持中断嵌套。CPU每执行一条指令都会检查CPSR寄存器,当发现I或F位被置1时,就进行中断处理。需要两次查表过程(为什么要查两次表??没有办法,ARM把所有的中断都归纳成一个IRQ中断异常和一个FIQ中断异常;第一次查表主要是查出是什么异常,可我们总要知道是这个中断异常中的什么中断呀!没办法还需要查第二次)。第一步跳入异常向量表:地址异常名称指令0x00复位异常B RestHandler0x04未定义指令异常B HandlerUndef0x08软件中断异常B HandlerSWI0x0C指令预取异 阅读全文

posted @ 2012-05-01 12:59 hicjiajia 阅读(2598) 评论(0) 推荐(0)

volatile关键字
摘要:ARM来啦!今天接触了点ARM体系结构,相比51却是复杂的多,小意思啦...... 对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的。如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使用汇编语言完成实际对设备的控制,因为C语言并没有提供真正的“端口”的概念。如果是内存映射,那就方便的多了。 以 #define IOPIN (*((volatile unsigned long *) 0xE0028000)) 为例:作为一个宏定义语句,define是定义一个变量或常量的伪指令。首先( volatile unsigned long * )的意思是将后面的那个... 阅读全文

posted @ 2012-04-22 18:19 hicjiajia 阅读(426) 评论(0) 推荐(0)

视频那些事
摘要:这几天想买ARM板子了,顺便在网上找找视频,在VeryCD上找了一套国嵌的共享版视频,但在共享版视频中却又少了“内核驱动”的视频,居然偷工减料了....还好在尚观网站上发现了其余视频,遗憾的是只能在线看;欣喜的是下载地址被嗅到了,更欣喜的是地址只简单的做了下 encodeURI 编码,三下五除二,把所有文件名 encodeURI 下,组合成下载地址,全部下了回来。不过还有四个未公开视频班,要花钱买得......(我忘记保存编码后的地址了,不过方法就是这样,需要的自己组合地址下载吧.....) 阅读全文

posted @ 2012-04-22 11:08 hicjiajia 阅读(368) 评论(0) 推荐(0)

A/D 有点乱
摘要:A/D有点小麻烦,需要模数/数模互转,我游荡了好久才找到门。一、理论知识二、实践为主三、误差分析四、代码分析五、杂七杂八.一、理论知识 模数/数模转换基本上是一个比例上的问题。也就是说,由ADC产生的数字值是和输入电压与转换器量程的比值相关的。例如,如果2V的电压输入到一个满量程为5V的ADC,则数字输出结果应该是ADC输出的最大数字量的40%(2V/5V = 0.4)。 可用的 ADC 可以提供各种和输出数字范围。输出的数字范围通常以“位”来表示,如 8 位, 10 位等。输出的位数决定了可以从转换器输出端读取的数值范围。一个8位转换器可以提供 0 - 255(2的8次方减去一)数值范围.. 阅读全文

posted @ 2012-04-15 13:36 hicjiajia 阅读(890) 评论(0) 推荐(0)

IIC总线
摘要:我这块板子很多芯片都是IIC总线传输,所以先去学了下IIC,然后继续操作芯片。(初学者经验不足,在淘宝上看他们给的截图包含大量的视频,实际结果是只有简单的实验有教程,其他的直接给代码,悲哀啊!!!)网上可以很容易找到IIC总线的中文资料,我这里就不在啰嗦,我简单的把IIC的操作封装下,方便使用。1、D/A实验:(D/A芯片是 PCF8591,目的是控制LED灯缓慢熄灭)#include "iic.h" // 引入IIC操作,自定义的库#include <reg52.h>void main(){ uchar num; IIC_INIT(); // 初始化IIC总. 阅读全文

posted @ 2012-04-10 17:38 hicjiajia 阅读(2728) 评论(0) 推荐(1)

温度传感器
摘要:综述Figure1 展示了DS18B20的结构图。内部64位ROM用于存储设备唯一的串号。scratchpad包含一个2字节的温度寄存器,用于存储由温度传感器件发送来的数字输出。另外,scratchpad还提供了用于访问1个字节的最大值警报触发寄存器和1个字节的最小值警报触发寄存器的接口(TH和TL),和一个字节的配置寄存器。配置寄存器允许用户设置温度转数字值的分辨率(9位—12位)。TH、TL和配置寄存器都是EEPROM,所以,当断电时他们将保持数据不丢失。DS18B20采用DALLAS公司独特的单总线协议,使总线传输只需一根控制信号。因为所有的设备都通过三态或漏极开路端口链接到总线控制线需 阅读全文

posted @ 2012-04-06 09:10 hicjiajia 阅读(2299) 评论(0) 推荐(0)

蜂鸣器
摘要:学习单片机有将近20天了,有一点感触,刚开始用proteus仿真,总是出现各种错误,无奈之下买了一块板子.要真正学习单片机必须有开发板,这句话一点没错.另外如果之前有数模和C语言的基础,学习起来是很快的, 单片机是座桥,ARM近在咫尺拉!.一、根据简谱写程序数据二、程序实现三、其他四、附录(五线谱对应表).一、根据简谱写程序数据 (必须有简单的简谱知识,为此我也专门去网上找了几个视频学了下 )1、音符变量对应表(F大调)2、根据乐谱确定变量这里简单说一点,<兰花花>是2/4拍,也就是以四分音符为一拍,每小结两拍, "T"代表一拍,"T/2"代 阅读全文

posted @ 2012-03-31 10:22 hicjiajia 阅读(2407) 评论(0) 推荐(1)

51单片机虚拟调试
摘要:1、安装Keil4与Proteus7.82、Keil4与Proteus7.8联调3、使用需要说明一下,我这里使用的虚拟电路板文件(TX-1.DSN)是郭天祥的那个.1、这一步就不用说了.....2、Keil4与Proteus7.8联调首先需要安装驱动<点这里>实现protues和keil的联调步骤如下:1.首先安装好Proteus 7.8和keil4(虽然这个驱动表明只支持Keil2和3两个版本,实测4版本也是没有问题的)2.安装keil和Proteus联调驱动程序3.安装联调驱动程序,注意:驱动程序安装在和keil同一个文件夹下4.在Keil4界面中点击Project—>O 阅读全文

posted @ 2012-03-08 09:04 hicjiajia 阅读(1489) 评论(0) 推荐(0)