AVR单片机是 Atmel 公司 1997 年推出的 RISC 单片机。RISC(精简指令系统计算机)是相对于CISC(复杂指令系统计算机)而言的。RISC 并非只是简单地去减少指令,而是通过使计算机的结构更加简单合理而提高运算速度的。RISC 优先选取使用频率最高的简单指令,避免复杂指令:并固定指令宽度,减少指令格式和寻址方式的种类,从而缩短指令周期,提高运行速度。由于 AVR 采用了 RESC 的这种结构,使AVR系列单片机都具备了1MIPS/MHz(百万条指令每秒/兆赫兹)的高速处理能力。
AVR单片机吸收了 DSP 双总线的特点,采用 Harvard 总线结构,因此单片机的程序存储器和数据存储器是分离的,并且可对具有相同地址的程序存储器和数据存储器进行独立的寻址。
在 AVR单片机中,CPU 执行当前指令时取出将要执行的下一条指令放入寄存器中,从而可以避免传统MCS51 系列单片机中多指令周期的出现。
传统的 MCS51 系列单片机所有的数据处理都是基于一个累加器的,因此累加器与程序存储器、数据存储器之间的数据转换就成了单睛机的瓶颈;在 AVR 单片机中,寄存器由32个通用工作寄存器组成,并且任何一个寄存器都可以充当累加器,从而有效地避免了累加器的瓶颈效应,提高了系统的性能。
AVR单片机具有良好的集成性能。AVR 系列的单片机都具备在线编程接口,其中的 Mega 系列还具备JTAG仿真和下载功能;都含有片内看门狗电路、片内程序 Flash、同步串行接口 SPI;多数 AVR 单片机还内嵌了 AD 转换器、EEPROM、摸拟比较器、PWM 定时计数器等多种功能;AVR 片机的 I/O 接口具有很强的驱动能力,灌电流可直接驱动继电器、LED等器件,从而省去驱动电路,节约系统成本。
AVR单片机采用低功率、非挥发的 CMOS 工艺制造,除具有低功耗、高密度的特点外,还支持低电压的联机 Flash,EEPROM 写入功能。
AVR单片机还支持 Basic、C 等高级语言编程。采用高级语言对单片机系统进行开发是单片机应用的发展趋势。对单片机用高级语言编程可很容易地实现系统移植,并加快软件的开发过程。
AVR 单片机具有多个系列,包括 ATtiny、AT90、ATmega。每个系列又包括多个产品,它们在功能和存储器容量等方面有很大的不同,但基本结构和原理都类似,而且编程方也相同。
AVR单片机系列齐全,可适用于各种不同场合的要求。AVR单片机共分为三个系列:
低档:ATtiny
中档:AT90
高档:ATmega
关键字:AVR 单片机 功能特性
引用地址:
AVR单片机-功能特性介绍
推荐阅读最新更新时间:2024-11-19 19:23
基于PIC12C508单片机对灯光系统的控制
以下程序使用PIC12C508 单片机 ,内部4MHz时钟,4脚输入50HZ脉冲信号,7,6,3脚(GP0,GP1,GP4端口)为输出口。其中渐变部分是让灯慢慢的变亮(或灭)。 ;程序如下: GPI0EQU6 COUNT1EQU11 COUNT2EQU12 COUNT3EQU13 COUNT4EQU14 COUNT5EQU15 POIN TE REQU16 POINTER1EQU17 ORG00H MOV LW07H;设定时钟参数1:256分频 OP TI ON MOV LW2CH;输出端口设定0,1,4输出,3输入50HZ TRIS6 ;------------------------------- START: ;对3端口
[单片机]
第68节:单片机C语言的多文件编程技巧
开场白: 很多人也把多文件编程称作模块化编程,其实我觉得叫多文件编程会更加符合实际一些。多文件编程有两个最大的好处,一个是给我们的程序增加了目录,方便我们查找。另外一个好处是方便移植别人已经做好的功能程序模块,利用这个特点,特别适合团队一起做大型项目。很多初学者刚开始学多文件编程时,会经常遇到重复定义等问题,想知道怎么解决这些问题吗?只要按照以下鸿哥教的规则来做,这些问题就不存在了。 第一个:每个文件保持成双成对出现。每个.c源文件必须有一个.h头文件跟它对应,每个.h头文件必须有一个.c源文件跟它对应。比如:main.c与main.h,delay.c与 delay.h。 第二个:.c源文件只负责函数的定义和变量的定义,但是
[单片机]
51mcu模拟ps2键盘发送数据程序
这个是程序是来自我以前开发的一个项目,其中里面的的void ps_send(uchar x) 这个函数,便可实现向电脑发送按键的数据 你只要对照 ps2 扫描码的表填入适当的参数即可 #include STC89C51.H #include keyboard.h #include INTRINS.H #define nop() _nop_() uchar *receive_buf;//接收来自计算机的数据 //uchar key; unsigned char key_buf ; /******延时子程序********/ void delay_ms(uchar a) {uchar i; uchar j; for(j=0;j
[单片机]
基于51单片机的红外计数器设计
一.系统概述 系统使用的模块有AT89C51单片机+LCD1602显示屏+光电开关+按键+小灯+蜂鸣器。 本设计采用51单片机为核心控制,使用LCD1602进行数值的显示,系统的光电开关控制数值的加减,当控制数值加的光电开关扫描到物体时,显示屏上的数值就会加1,当控制数值减的光电开关扫描到物体时,显示屏上的数值就会减1,系统内还能设置了报警阈值,按键控制阈值的大小,当数值达到阈值后就会进行报警。 二.仿真概述 1.使用LCD1602显示实时阈值和数值变换。 2.控制数值增加的光电开关扫描到物体数值增加。 3.控制数值减少的光电开关扫描到物体数值减少。 4.通过按键设定阈值,点击设置按键后按下加减按键进行阈值的设
[单片机]
MCS-51单片机指令系统(2)
指令系统的分类 该指令系统使用44种助记符,它们代表着33种可能,可以实现51种操作。因此,有的功能可以有几种助记符。指令助记符与操作数的各种可能寻址方式的组合总共构造出111条指令。不同指令对标志位的影响不同,可能会影响PSW中(Cy、AC、OV、P)某些标志位的状态,且需要正确估算指令的字节数。 指令格式由两部分组成,即操作码和操作数。操作码:规定指令进行什么操作,操作数:指令操作的对象。有单字节指令、双字节指令、三字节不同长度的指令,格式不同:(1)单字节指令:操作码、操作数 同在一个字节中。(2)双字节指令:操作码+操作数。(3)三字节指令:操作码+操作数+操作数。 在MCS-51单片机中,立即数不能作为目的操
[单片机]
一个单片机ADC的挖坑填坑之旅
本文来解析一个盆友在使用STM32采集电池电压踩过的坑。以STM32F4 的ADC属于逐次逼近SAR 型ADC为例进行分析,参考STM32F405xx Datasheet,对于如何编写ADC程序就不做描述了。 先描述一下坑 采集电池电压,利用两个电阻将电池电压分压,然后送入单片机,当电阻如上分别取4M欧/1M欧时,ADC采集到的ADC值与万用表测得的ADC输入端相差很大,取30K欧以及10k欧时,则相差变小。 盆友咨询我这是为什么?我给出了建议,先卖个关子,先来看看应用最为广泛的STM32单片机的一些特性。 STM32 ADC: STM32 12位ADC是逐次逼近型的模数转换器。它有多达19个多路复用通道,允许它测量来
[单片机]
第9课 定时器
在对单片机应用项目进行编程时,经常需要插入一定的延时程序,此时一般有两种方案可选择,一是采用软件手段 插入一段延时程序,二是采用单片机内部的硬件资源 定时器。对于软件手段,我们在前面的课程已经详细讲到过,它最大的缺点就是占用单片机的 机时 ,也就是耗费单片机的 精力 ,从而降低了单片机的工作效率。而定时器则不同,它是单片机内部一个独立的功能模块,定时器一旦设置后,定时器便自动开始计时,当计时时间满后,便产生相应的中断,去处于中断函数内的程序,而在计时这段时间内,定时器和CPU是分别独立工作的,CUP此时就可以有时间去做其它的事情。所以为了提高单片机的工作效率和实现精确的延时,目前几乎所有的半导休生产厂商在设计单片机时,在内部
[单片机]
GD32单片机和STM32单片机的区别
一、前言 什么GD32? GD32是国内开发的一款单片机,据说开发的人员是来自ST公司的,GD32也是以STM32作为模板做出来的。 所以GD32和STM32有很多地方都是一样的,不过GD32毕竟是不同的产品,不可能所有东西都沿用STM32,有些自主开发的东西还是有区别的。相同的地方我们就不说了,下面我给大家讲一下不同的地方。 二、区别 1、内核 GD32采用二代的M3内核,STM32主要采用一代M3内核,下图是ARM公司的M3内核勘误表,GD使用的内核只有752419这一个BUG。 2、主频 使用HSE(高速外部时钟):GD32的主频最大108M,STM32的主频最大72M 使用HSI(高速内部时钟):GD32的主频最大10
[单片机]