• 博客(0)
  • 资源 (2)

空空如也

【PDF书】AVR单片机嵌入式系统原理与应用实践

第1章 单 片嵌入式系统概述 在各种不同类型的嵌入式系统中,以单片微控制器(Microcontroller)作为系统的主要控制核心所构成的单片嵌入式系统(国内通常称为单片机系统)占据着非常重要的地位。本书将介绍以AVR系列单片微控制器为核心的单片嵌入式系统的原理、硬软件设计、调试等应用方法。 单片嵌入式系统的硬件基本构成可分成两大部分:单片微控制器芯片和外围的接口与控制电路。其中单片微控制器是构成单片嵌入式系统的核心。 单片微控制器又被称为单片微型计算机(Single-Chip Microcomputre或One-Chip Microcomputre),或者嵌入式微控制器(Embedded Microcontroller)。而在国内普遍采用的名字为“单片机”。尽管单片机的“机”的含义并不十分恰当,比较模糊,但考虑到多年来国内习惯了单片机的叫法,为了符合我国的实际情况,本书仍采用单片机的名称。 所谓的单片微控制器-即单片机,它的外表通常只是一片大规模集成电路芯片。但在芯片的内部却集成了中央处理器单元(CPU),各种存储器(RAM、ROM、EPROM、E2PROM和FlashROM 等),各种输入/输出接口(定时器/计数器、并行I/O、串行I/O以及A/D转换接口等),等众多的功能部件。因此,一片芯片就构成了一个基本的微型计算机系统。 由于单片机芯片的微小体积,极低的成本和面向控制的设计,使的它作为智能控制的核心器件被广泛地应用于嵌入到工业控制、智能仪器仪表、家用电器、电子通信产品等各个领域中的电子设备和电子产品中。可以说,由单片机为核心构成的单片嵌入式系统已成为现代电子系统中最重要的组成部分。 1.1 嵌 入式系统简介 1.1.1 嵌入 式计算机系统 计算机的出现首先是应用于数值计算。随着计算机技术的不断发展,计算机的处理速度越来越快,存储容量越来越大,外围设备的性能越来越好,满足了高速数值计算和海量数据处理的需要,形成了高性能的通用计算机系统。 1. 什么是嵌入式系统 以往我们按照计算机的体系结构、运算速度、结构规模、适用领域,将其分为大型计算机、中型机、小型机和微型计算机,并以此来组织学科和产业分工,这种分类沿袭了约40年。近20年来,随着计算机技术的迅速发展,以及计算机技术和产品对其它行业的广泛渗透,使得以应用为中心的分类方法变得更为切合实际。具体的说,就是按计算机的非嵌入式应用和嵌入式应用将其分为通用计算机系统和嵌入式计算机系统。 通用计算机具有计算机的标准形态,通过装配不同的应用软件,以类同面目出现,并应用在社会的各个方面。现在我们在办公室里、家庭中,最广泛普及使用的PC机就是通用计算机其最典型的代表。 而嵌入式计算机则是以嵌入式系统的形式隐藏在各种装置、产品和系统中的。在许多的应用领域中,如工业控制、智能仪器仪表、家用电器、电子通信设备等电子系统和电子产品中,对计算机的应用有着不同的要求。这些要求的主要特征为: (1) 面对控制对象。面对物理量传感器变换的信号输入;面对人机交互的操作控制;面对对象的伺服驱动和控制。 华东师范大学 电子科学技术系 马潮 1-1 第 1 章 单片嵌入式系统概述 (2) 嵌入到应用系统。体积小、低功耗、价格低廉,可方便地嵌入到应用系统和电子产品中。 (3) 能在工业现场环境中可靠运行。 (4) 优良的控制功能。对外部的各种模拟和数字信号能及时地捕捉,对多种不同的控制对象能灵活地进行实时控制。 可以看出,满足上述要求的计算机系统与通用计算机系统是不同的。换句话讲,能够满足和适合以上这些应用的计算机系统与通用计算

2015-08-23

AVR汇编百例_-_计算程序

;范例9 ;16位整数被乘数*16位小数乘数-->16位整数积,精确到0.5 MUL165: RCALL MUL16 ;先得到32位积 SBRS R14,7 ;积小数部分最高位为1,将整数部分加1 RET ;否则返回 LDI R17,255 SUB R13,R17 SBC R12,R17 ;以减去-1($FFFF)替代加1 RET ;范例10 ;32位被除数/16位除数-->16位商,精确到1 DIV16: LDI R16,16 ;(r12r13r14r15)/(r10r11)-->r14r15 DLOOP: LSL R15 ROL R14 ROL R13 ROL R12 ;被除数左移1位 BRCS DI1 SUB R13,R11 SBC R12,R10 ;移出位为0,被除数高位字减去除数试商 BRCC DI2 ;够减,本位商为1 ADD R13,R11 ADC R12,R10 ;否则恢复被除数 RJMP DI3 ;本位商0 DI1: SUB R13,R11 SBC R12,R10 ;移出位为1,被除数高位字减去除数 DI2: INC R15 ;本位商1 DI3: DEC R16 BRNE DLOOP RET ;范例11 ;32位被除数/16位除数-->16位商,精确到0.5 ;可能产生溢出!例$7FFFC000/$8000=$FFFF.8->$10000! DIV165: RCALL DIV16 ;(r12r13r14r15)/(r10r11)-->r14r15 LSL R13 ROL R12 ;余数乘2 BRCS D165 ;有进位,转5入 SUB R13,R11 SBC R12,R10 ;否则,余数乘2减去除数 BRCS D164 ;不够减,转4舍 D165: CLR R13 ;否则将商增1 SEC ADC R15,R13 ADC R14,R13 ADC R13,R13 ;若有溢出,溢出位在R13中 RET D164: CLR R13 RET ;范例12 ;32位整数/16位整数->16整数+16位小数->4字节浮点数 ;(r12r13r14r15)/(r10r11)-->r12r13r14r15 DIV16F: RCALL DIV16 ;先做整数除法 MOV R9,r15 MOV R8,r14 ;保存整数部分 CLR R15 CLR R14 RCALL DIV16 ;除得小数部分 MOV R11,R15 MOV R15,R14 MOV R13,R8 MOV R14,R9 ;整数部分在r13r14,小数部分在r15r11 LDI R17,$90 ;预设阶码$90(整数为16位) MOV R12,R17 LDI R17,32 ;设32次右移 DIV16L: SBRC R13,7 RJMP NMLDN ;最高位为1,已完成规格化 LSL R11 ;否则继续右移R13,R14,R15,R11 ROL R15 ROL R14 ROL R13 DEC R12 ;阶码减1 DEC R17 BRNE DIV16L CLR R12 ;右移达32次,浮点数为零,置零阶 RET NMLDN: SBRS R11,7 RJMP DIVRT ;欲舍去部分(R11)最高位为0,转4舍 RCALL INC3 ;否则尾数部分增1 BRNE DIVRT INC R12 ;尾数增1后变为0,改为0.5,并将阶码增1 DIVRT: LDI R17,$7F ;将尾数最高位清除,表示正数(负数不要清除) AND R13,R17 ;规格化浮点数在R12(阶码)R13R14R15(尾数)中 RET ;范例13 ;(R16,R12,R13,R14,R15)/(R10,R11)-->R13,R14,R15 DIV24: CLR R16 ;32位整数/16位整数->24位整数,要求(R10)不为0;否则 ;要求(R12)<(R11) DIV40: LDI 17,24 ;40位整数/16位整数->24位整数 要求(R16,R12) LXP: LSL R15 ; <(R10,R11) ROL R14 ROL R13 ROL R12 ROL R16 BRCC LXP1 SUB R12,R11 ;右移后C=1 够减 SBC R16,R10 ;被除数减

2015-08-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除