AVR单片机系列教程(一)
一、基础篇
单片机的基本要素:
(1)CPU核(如:51核 AVR核 M430核)
(2)ROM(READ ONLY Memory 绕母)
(3)RAM(random access Memory 随机访问寄存器 )
(4)片上外设
(5)总线
CPU核: 相当于电脑的CPU吧、就是执行从ROM中取指令。这东西有几个指标非常重要
一、主频(如51核是2MHZ晶振12分频过来就是2MHZ、AVR 是20MHZ(快达到DSP水平了)MSP430F1系列的是8MHZ)
二、指令集 (CISC(复杂) RISC(精简)当然精简指令集比复杂执行效率高很多个人觉得缺点实现的功能少 )
三、字长 (就是一次能处理二进制数据的位数 我们单片机一般是8位 16位 AVR和51都是8位)
ROM: 相当于电脑的硬盘、存储程序用的指标就是容量 大多数是flash 结构基本都混淆说了
一、容量 单位一般KB位单位
二、高级指标 、自编能力(就是程序在运行中可以自己擦出flash然后更改flash中的内容的能力一般我们用不到)
如:51(不具备自编能力)-->8KB
MSP430F1101(具备)--> 1KB
AVR(具备)---> 16KB
RAM: 数据存储器、相当于计算机的内存、ROM中的程序在运行时快速的存取数据、目前大多数单
片机为SRAM结构 计算机室SDRAM结构。指标也是容量 一般 B(字节) KB(千字节)
一、容量 、
如: 51单片机512字节
MSP430F1101 128字节
AVR 1KB 1千字节
主要是程序运行时调用一些变量啊调用一些数组等都是存在RAM中的。
片上外设: 相当于电脑的接口,鼠标接口、显示器接口等
常见的片上外设模块有外部中断、定时器/计数器、URAT(异步串行)、SPI(同步)IIC(2线的串行口)ADC及模拟比较器等。
如:一下三种价格10元左右的单片机
一、89C52就只有外部中断 定时器计数器 UART
二、MSP430F1101 外部中断 定时器计数器 ADC
三、AVR 外部中断、定时器/计数器、URAT(异步串行)、SPI(同步串行)IIC(2线的串行口)ADC及模拟比较器。
总线: 用于以上四部分之间的传输数据的通道、相当于硬盘的IDE线、光驱线等。
总线只是一个概念。没有一个实际的这样的一个东西、这个东西我也不太清楚可以理解为一束功能相近的导线的集合吧。
单片机能做什么?
单片机无所不能!
所谓的“微电脑控制控制”的核心就是单片机(微电脑控制比较时髦的)覆盖工业生产、日常生活、军事设备、科研仪表仪器等所有智能化的应用场合
例如:智能洗衣机(一般洗衣机不能完成的功能)
定时完成洗衣脱水功能。
可以判断衣服的干净程度。
实现洗净既停的功能。
蒸汽熨烫的功能。
刷卡投币洗衣
更加智能LG公司的"IPAD"洗衣机一边洗衣一边听歌。
例如:(LED显示屏)
LED发光二极管构成显示屏的像素点
单片机负责逐点火逐行扫描,并与电脑通信获取图片信息。
例如:(PH/ORP仪表)
用于环境监测、工矿企业、科学研究、水产养殖等场合的PH值的测定
读取PH传感器的模拟信号、内部处理后显示在LCD上。(其实就是读取液体的PH值)
还有很多数码产品。。。
还有智能小车(我上大学时就做过这样一个东西呵呵用ATMEGA8)
一、巡线
二、避障
三、电视机遥控器遥控(接受各个遥控器的键码)
四、LCD显示
了解更多AVR单片机系列,可关注“云汉电子社区(ickeybbs) ”官方微信公众号,或者登录云汉电子社区官方网站(bbs.ickey.cn)
avr单片机编程入门精品,新手学习必看(有典型实例哦)
单片机分为很多种,有什么avr单片机,stm32单片机等,随着单片机被广泛的使用,这些都是在单片机学习中需要接触的,有很多人问我:对于avr单片机编程来说,学习这个的时候很是迷茫,死活入不了门,到底avr单片机编程如何入门,这里就让我这个老鸟教会你。
首先要知道,avr单片机是什么?不然不了解这个,那接下来的学习也是白瞎,AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。
AVR单片机特点(ATmega16):
1、131条机器指令,且大多数指令的执行时间为单个系统时钟周期;
2、32个8位通用工作寄存器;
3、工作在16MHz时具有16MIPS的性能;
4、配备只需要2个时钟周期的硬件乘法器。
AVR单片机优势:
AVR单片机是Atmel公司推出的较为新颖的单片机,其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作 业。AVR单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。通常时钟频率用4~8MHz,故 最短指令执行时间为250~125ns。
了解了这些,那接下来就通过一系列的实例,让你对avr单片机了解透彻
系统时钟:
ATmega16的片内含有4种频率(1/2/4/8M)的RC振荡源,可直接作为系统的工作时钟使用。同时片内还设有一个由反向放大器所构成的OSC(Oscillator)振荡电路,外围引脚XTAL1和XTAL2分别为OSC振荡电路的输入端和输出端,用于外接石英晶体等,构成高精度的或其它标称频率的系统时钟系统。
为ATmega16提供系统时钟源时,有三种主要的选择:(1)直接使用片内的1/2/4/8M的RC振荡源;(2)在引脚XTAL1和XTAL2上外接由石英晶体和电容组成的谐振回路,配合片内的OSC(Oscillator)振荡电路构成的振荡源;(3)直接使用外部的时钟源输出的脉冲信号。方式2和方式3的电路连接见图2-6(a)和2-6(b)。
内部看门狗:
在AVR片内还集成了一个1MHz独立的时钟电路,它仅供片内的看门狗定时器(WDT)使用。因此,AVR片内的WDT是独立硬件形式的看门狗,使用AVR可以省掉外部的WDT芯片。使用WDT可以有效的提高系统的可靠行。
avr单片机的工作流程:
AVR CPU的工作是由系统时钟直接驱动的,在片内不再进行分频。图2-7所示为Harvard结构和快速访问寄存器组的并行指令存取和指令执行时序。CPU在启动后第一个时钟周期T1取出第一条指令,在T2周期便执行取出的指令,并同时又取出第二条指令,依次进行。这种基于流水线形式的取指方式,使AVR可以以非常高的速度执行指令,获得高达1MIPS/MHz的效率。
存储器:
所有的I/O寄存器可以通过IN(I/O口输入)和OUT(输出到I/O口)指令访问,这些指令是在32个通用寄存器与I/O寄存器空间之间传输交换数据,指令周期为1个时钟周期。此外,I/O寄存器地址范围在$00-$1F之间的寄存器(前32个)还可通过指令实现bit位操作和bit位判断跳转。SBI(I/O寄存器中指定位置1)和CBI(I/O寄存器中指定位清零)指令可直接对I/O寄存器中的每一位进行位操作。使用SBIS(I/O寄存器中指定位为1跳行)和SBIC(I/O寄存器中指定位为0跳行)指令能够对这些I/O寄存器中的每一位的值进行检验判断,实现跳过一条指令执行下一条指令的跳转。
在I/O寄存器专用指令IN、OUT、SBI、CBI、SBIS和SBIC中使用I/O寄存器地址$OO~$3F。
当以SRAM方式寻址I/0寄存器时,必须将该其地址加上$0020,映射成在数据存储器空间的地址。
两个重要的寄存器:状态寄存器SREG和堆栈指针寄存器SP
堆栈是数据结构中所使用的专用名词,它是由一块连续的SRAM空间和一个堆栈指针寄存器组成,主要应用于快速便捷的保存临时数据、局部变量和中断调用或子程序调用的返回地址。堆栈在系统程序的设计和运行中起者非常重要的作用,只要程序中使用了中断和子程序调用,就必须正确的设置堆栈指针寄存器SP,在SRAM空间建立堆栈区。
处在I/O地址空间的$3E($005E)和$3D($005D)的两个8位寄存器构成了AVR单片机的16位堆栈指针寄存器SP。AVR单片机复位后堆栈寄存器的初始值为SPH=$00、SPL=$00,因此建议用户程序必须首先对堆栈指针寄存器SP进行初始化设置。
AVR的堆栈区是建立在SRAM空间的,16位的SP寄存器可以寻址的空间为64K。
由于AVR的堆栈是向下增长的,即新数据进入堆栈时栈顶指针的数据将减小(注意:这里与51不同,51的堆栈是向上增长的,即进栈操作时栈顶指针的数据将增加),所以尽管原则上堆栈可以在SRAM的任何区域中,但通常初始化时将SP的指针设在SRAM最高处。
对于具体的ATmega16芯片,堆栈指针必须指向高于$0060的SRAM 地址空间,因为低于$0060的区域为寄存器空间。ATmega16片内集成有1K的SRAM,不支持外部扩展SRAM,所以堆栈指针寄存器SP的初始值应设在SRAM的最高端:$045F处。
根据上面所讲述,AVR的SP堆栈指针寄存器指示了在数据SRAM中堆栈区域的栈顶地址,一些临时数据、局部变量,以及子程序返回地址和中断返回地址将被放置在堆栈区域中。在数据SRAM中,该堆栈空间的顶部地址必须在系统程序初始化时由初始化程序定义和设置。
当执行PUSH指令,一个字节的数据被压入堆栈,堆栈指针(SP中的数据)将自动减1;当执行子程序调用指令CALL或CPU响应中断时,硬件会自动把返回地址(16位数据)压入堆栈中,同时将堆栈指针自动减2。反之,当执行POP指令,从堆栈顶部弹出一个字节的数据,堆栈指针将自动加1;当执行从子程序RET返回或从中断RETI返回指令时,返回地址将从堆栈顶部弹出,堆栈指针自动加2。
通过这些原理及实例,你是否对avr单片机编程有了更深入的了解呢,其实avr单片机学习并不难,只要你认真去学,把每一步每一个流程都掌握透彻,那你就在avr单片机编程方面就已经入门了,这些你是否get到了呢?
相关问答
51单片机和 AVR单片机 的区别?这个区别不少,最主要的当然是寄存器和IO端口啦!avr在51的基础上扩充了大量的寄存器和大量的引脚功能,几乎每个引脚都有第二功能,还有如:4路PWM波的输出、I^2...
arm 单片机 和 avr 、51有什么区别?简单的说,CPU构架不同,虽然都是8位的,但指令集不同,AVR是用RISC的,哈佛结构的总线;51是用CISC,冯诺衣曼结构的总线。跟AVR比,51是老掉牙的东西,内部资源...简...
AVR单片机 控制SCA100T传感器?_汽配人问答[最佳回答]其实是用SPI串行通信方式和SCA100T进行通讯。而SCA100T的数据手册里也写明了其串行通信的时序:CSB低电平使能,在SCK上升沿期间发送和接收数据,先发...
AVR单片机 asm("nop");什么意思,8M的话多少,时间?AVR单片机中asm("nop");这条语句,其中asm()的作用是指函数内部的参数翻译为汇编指令,其作用是在C语言环境下直接使用汇编指令执行。nop是一个空...AVR单...
“ AVR ”是什么意思?[回答]AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(ReducedInstructionSetCPU)精简指令集高速8位单片机。AVR的单片机可以广泛应用于...
哪位大仙,急急急! AVR单片机 的价格大概是多少?[回答]您可以提供一下AVR单片机的具体需求,然后才能给您反馈价格哦。AVR单片机的价格受多方面影响,比如品牌、市场等,在选择购买之前,多方面地进行了解和...
175度高温 AVR单片机 价格是多少?[回答]175度高温AVR单片机的价格都是不一样的,我知道有个网站,网站里边都是一些有保障的大公司,你可以去看一下。175度高温AVR单片机的价格受多方面影响,...
老师们!谁能给我说一下!怎样区分51 单片机 开发板和 AVR单片机 ...[回答]开发板可以有效的提高学习效率,缩短研发进度。打开开发板的时候,请首先看下板子的相关的配件。把MiniUSB连接到单片机开发板上。我们下载的时候,单...
300度高温 AVR单片机 的价格一般是多少?感谢回答[回答]没有提供300度高温AVR单片机的具体需求,任何人都给不了你价格,建议您再补充一下具体需求!需要您提供一下个人的需求才能给您做300度高温AVR单片机...
250度高温 AVR单片机 的价格是多少钱?[回答]做250度高温AVR单片机的公司很多,公司不一样,价格方便肯定是有差异的,建议您多找几家公司询问一下。您可以提供一下250度高温AVR单片机的详细要求...