OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » AVR大学之小学篇_AVR新手入门之前

共17条 1/2 1 2 跳转至

AVR大学之小学篇_AVR新手入门之前

院士
2010-02-10 09:56:33    评分

写在新手入门之前,如果你已经充分了解下面的内容,你已经是个合格的新手了,请跳过本页查看AVR大学 AVR新手入门教程。

AVR单片机行业名词解释:

atmel arm avr单片机 avr

本页关键词:avr单片机学习    什么是单片机? 什么是AVR?

 什么是单片机?

随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时/计数器和多种I/O资源接口集成到一片芯片上,形成了芯片级的计算机,因此最早期的含义为单片微型计算机,(Single Chip Microcomputer),直译为单片机,沿用至今。单片机的准确叫法应该是微型控制器(Microcontroller),目前大多数厂家和学者都已经改用Microcontroller ,简称 MCU(Microcontroller Unit)。

单片机的特点:

  1. 优异的性能价格比
  2. 集成度高,体积小,可靠性高
  3. 控制功能强
  4. 低电压,低功耗
  5. 应用领域广泛 (应用将会在为什么要学单片机中详细介绍)

什么是AVR?

AVR是ATMEL(中文名)公司的A先生和V先生1997年发明的基于精简指令集(RISC)的单片机系列。ATMEL公司已经把AVR扩大到一个全系列:Tiny AVR,Mega AVR,LCD AVR,USB AVR,DVD AVR,RF AVR, Secure AVR ,FPGA AVR。

详细的功能优势在新手入门中介绍。

什么是ATMEL?

ATMEL是一家专业从事芯片开发生产的公司,中文名艾特梅尔,其注册商标为ATMEL,AVR。

 




关键词: 学之     小学     新手入门     之前    

院士
2010-02-10 09:57:08    评分
2楼

本页关键词:avr单片机学习    什么是jtag,isp?AVR JTAG编程器,AVR JTAG仿真器,avr ISP下载线。

 什么是jtag?

JTAG是一个通信标准,用于计算机和单片机进行实时快速通讯。

AVR 的JTAG功能(只有部分型号才有)使得AVR的调试工作非常简单,可以通过JTAG 接口对Flash、EEPROM、熔丝位和锁定位进行编程。

使用AVR studio软件和JTAG硬件( AVR JTAG编程器,AVR JTAG仿真器)可以进行程序下载(编程)和程序在线调试。

JTAG接口有四个引脚。以JTAG的术语来说,这些引脚组成了测试访问端口TAP。这些引 脚是:

? TMS: 测试模式选择。此引脚用来实现TAP 控制器各个状态之间的切换。

? TCK: 测试时钟。JTAG 操作是与TCK 同步的。

? TDI:测试数据输入--需要移位到指令寄存器或数据寄存器(扫描链)的串行输入数据。

? TDO:测试数据输出-- 自指令寄存器或数据寄存器串行移出的数据。

什么是ISP?

ISP是一种通用的程序下载方式,AVR单片机都有ISP下载接口。可以通过ISP下载线或者STK500把程序下载到单片机中。

ISP下载线成本低廉,制作简单,一个并口ISP下载线只需几十元即可得到。开发工具成本低也是AVR单片机的优势之一。

JTAG与ISP的区别和联系

区别:JTAG可以调试程序,而ISP只能下载程序。

联系:同作为AVR程序下载工具,都能把程序从电脑下载到单片机中。都能对芯片的熔丝位和锁定位进行编程。

JTAG调试与普通软件仿真的区别和联系

联系:都可以在计算机调试程序终端看到程序的运行效果,都可以设置断点,单步运行,进入循环,跳出循环,连续运行等操作。还能实时观察各寄存器的值,IO口状态等。

区别:软件仿真,用的是计算机来模仿单片机运行,不是全真的环境,很多时候会出现偏差甚至错误。而用JTAG在线调试,程序本身在单片机内运行,完全真实的硬件环境,更准确的反映程序运行的实际情况,有助于大型程序的调试。


院士
2010-02-10 09:57:40    评分
3楼

本页关键词:avr单片机学习    什么是GCC,ICC,IAR? AVR GCC ,ICC AVR, IAR AVR 下载,教程

什么是GCC,ICC,IAR?

GCC avr 亦及AVR-GCC是一款优秀的AVR编译软件, 是流行的GUN C编译器在AVR上的移植。GCC支持多种操作系统,MS-DOS,Win32,Linux都可以使用。在使用Win32时,会有一个软件包WinAVR,不仅仅包括C编译器,虽然也 不是集成开发环境,但也还包括了编辑,编译,下载整个开发流程中所需的所有软件。GCC最大的特点是开源,发展较快,但是也是最大的问题,技术支持没有保障。

ICC avr 是Imagecroft C Complier 的简称,是一个完整的AVR集成开发环境,分为两个版本,标准版支持AT90S系列,和Mega系列;专业版有代码压缩功能,支持没有SRAM的器件的是一个单独的产品 ICC tiny,该软件的目前最新版本为7.1,本站提供下载,同时网上可以找到ICC6.31的注册机,可以注册成无任何功能限制的专业版。

ICC的集成开发环境非常优秀,它的使用我们会在新手入门和后面的教程中介绍。本站的所有例程都是在ICC下编译的。它是按照工程进行文件管理的,有一个叫Application Wizard的代码生成器,可生成初始化外围器件的代码;提供的库支持内部的外围功能,例如 UART,SPI,EEPROM和堆栈检查函数。 它还有一个终端程序,可以发送和接收ASCII码。ICC的技术支持由 Imagecraft Creations Inc.公司提供。


院士
2010-02-10 09:58:52    评分
4楼

要用到的关键词基本是:

单片机,AVR,Atmel,JTAG,ISP,GCC,ICC,IAR,仿真,编程,数据手册,flash,ROM,RAM,eeprom,晶振,SRAM,TWI(I2C),USART,RS232,RS485,GSM,CAN,LCD,LED,I/O,时序,BOOTLOAD,IAP,AD,DA,Mega,Tiny,封装,BOD,定时期,模拟比较器。

 


院士
2010-02-10 09:59:27    评分
5楼
为什么要学习单片机?

本页关键词:avr单片机学习   为什么要学习单片机

单片机的用途

1、在智能仪表中的应用

这是单片机应用最多最活跃的领域之一。在各类仪器仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。

2、在机电一体化中的应用

机电一体化产品是指集机械技术,微电子技术,计算机技术于一体,使其产品具有智能化特征的电子产品。它是机械工业发展的方向。

3、在实时控制系统中的应用

单片机广泛用于各种实时过程控制系统中,例如工业过程控制、过程监测、航空航天、间断武器、机器人系统等各种实时控制系统。用单片机进行实时系统数据处理和控制,保证系统工作在最佳状态,有利于提高系统的工作效率和产品的质量。

4、在人们生活中的应用

目前国内外各种家具已经普遍用单片机代替传统的控制电路,例如,洗衣机、电冰箱、空调机、微波炉、电饭煲、收音机、音像、电风扇及许多高级电子玩具都配上了单片机。

5、在其他方面的应用

单片机还广泛应用于办公自动化领域、商业营销领域、安全防卫、汽车及通信系统、计算机外部设备、模糊控制等领域。

学好单片机之后

基于单片机在各行各业的广泛应用,社会对单片机越来越重视,高校也纷纷开设单片机课程。

学好单片机可以让你在电子行业内找到一个比较好的工作。

学好单片机可以让你增加对电子产品的了解,扩展产品开发的思路,提高社会竞争力。


院士
2010-02-10 09:59:50    评分
6楼
为什么选择AVR单片机?

本页关键词:avr单片机学习    什么是单片机? 什么是AVR?

为什么选用AVR单片机?选自AVR研讨会演讲提纲!

(1) 为什么选用AVR单片机? Flash程序存储器可擦写1000次以上,不再有报废品产生。PIC 有的是OTP,只能烧录一次。AVR程序存储器数据为16位组织,也可按8位理解。PIC是12/14位程序 存储器,作寄存器转移和算术、逻辑运算带来不便。

(2) 为什么选用AVR单片机? 高速度(50ns)、低功耗!硬件应用Harward结构,具有预取指令功能, 使得指令可以在一个时钟周期内执行。PIC要4个时钟周期执行一条指令。MSC-51要12个时钟周期 执行一条指令。

(3) 为什么选用AVR单片机? 超功能精简指令!具有32个通用工作寄存器(相当于8051中的32个累 加器,克服了单一累加器数据处理造成的瓶颈现象),有128B~4KB个SRAM,可灵活使用指令运算。

(4) 为什么选用AVR单片机? 工业级产品!具有大电流(灌电流)10~20mA或40mA(单一输出),可直 接驱动SSR或继电器;有看门狗定时器(WDT),安全保护,防止程序走飞,提高产品的抗干扰能力。

(5) 为什么选用AVR单片机? 程序写入可以并行写入(用万用编程序器),也可用串行在线ISP擦 写。也就是说不必将IC拆下拿到万用编程上烧录,而可直接在电路板上进行程序修改、烧录等操 作,方便产品现场升级。有ISP、JTAG及自编功能,这是今后单片机编程的发展方向 。

(6) 为什么选用AVR单片机? AVR的I/O口是真正的I/O口,能正确反映I/O口的真实情况。I/O口 有输入/输出, 三态高阻输入,也可设定内部拉高电阻作输入端的功能,便于作各种应用特性所需 (多功能I/O口)

(7) 为什么选用AVR单片机? 高度保密(LOCK)!

–不可破解的Lock bit技术

–不象Mask ROM那样可通过电子显微镜破解–Flash单元深藏于芯片内部 –可多次烧写的Flash且具有多重密码保护锁死(LOCK)功能,因此可快速完成产品商品化,并可多 次更改程序(产品升级)而不必浪费IC或电路板,大大提高产品质量及竞争力。

(8) 为什么选用AVR单片机? AVR内带模拟比较器,I/O口可作A/D转换用,可组成廉价的A/D转换器。

(9) 为什么选用AVR单片机?可重设启动复位。AVR系列有内部电源开关启动计数器,可将低电平复 位(/RESET)直接接到Vcc端。当电源开时,由于利用内部RC的看门狗定时器,可延迟MCU启动执行程 序。这种延时使I/O口稳定后执行程序,以提高单片机工作可靠性。有的还有内部复位电压检测电
路BOD,而检测电压可调。

(10)为什么选用AVR单片机?具有休眠省电功能(POWER DOWN)及闲置(IDLE)低功耗功能。一般耗 电在1~2.5mA,典型功耗情况,WDT关闭时为100nA

(11) 为什么选用AVR单片机? 像8051一样,有多个固定中断向量入口地址,可快速响应中断。而 PIC只有一个中断入口,要查询后才能响应中断,失去了最佳响应中断时间。

(12) 为什么选用AVR单片机? AT90S1200/2343/ATtiny15等部分AVR器件具有内部RC振荡器- 1MHz的工作频率,使该类单片机成为无外加元器件即可工作,就是一片芯片,可谓简单方便,作加密 器件使用更妙。

(13) 为什么选用AVR单片机? 计数器/定时器,C/T有8位和16位,可作比较器;计数器外部中断和 PWM(也可当D/A)用于控制输出,有的有3-4个PWM,作电机无级调速是理想器件。

(14) 为什么选用AVR单片机?有串行异步通讯UART接口,不占用定时器和SPI传输功能,因其高速故 可以工作在一般标准整数频率,而波特率可达576K。

(15) 为什么选用AVR单片机? AT90S4414/AT90S8515具有可扩展外部数据存储器达64KB。它们 的引脚排列及功能与8051相似,即可替代替8051系列单片机(8751或8752)的应用系统。仅差复位 电平,只需对调复位电阻、电容位置。还增加很多新功能,WDT,A/D,PWM等

(16) 为什么选用AVR单片机? 工作电压范围宽(2.7~6.0V),电源抗干扰性强。 AT90LXX为低电 压器件(2.7~6.0V), AT90SXX电压为 (4.0~6.0V),最低器件ATtiny12己到1.8V ~ 5.5V。

(17) 为什么选用AVR单片机? AT90S4434/8535具有8路10位A/D;AT90S2333/4433具有6路10位 A/D;功能更强的ATmega103/128有Flash 128KB,EEPROM 4KB,RAM 4KB,I/O端口48个,中断源16 个 ,外中断8个,SPI,UART,8路10位A/D,ISP。

(18) 为什么选用AVR单片机? 并具有较大容量、可擦写10万次的EEPROM,对掉电后数据保存带来 方便,来电后能记住掉电时的工体状态,EEPROM(64B~4KB) 。

(19) 为什么选用AVR单片机? 新的高档AVR ATmega16/32/64/128还具有JTAG边界扫描、仿真、 编程功能,不会造成以往仿真通过,脱机不行的现象。

(20) 为什么选用AVR单片机? AVR 微处理器---可以对自己编程..ATmega161为使用便利性而设 计
–写入新代码时无需外部器件
–小扇区:128字节
–Boot区可变
–Read-While-Write技术
–减少编程时间
–受控于硬件的编程方法
–打开通向新世界的大门
–通过任何接口进行编程(并行编程器、ISP、JTGA、 UART 、自编程)–重复编程无需外部器件
–100%安全的远程加密更新方式

(21) 为什么选用AVR单片机? 从高级语言C代码,看各种单片机性能比较: 从一个小C函数为例:
/* Return the maximum value of a table of 16 integers */
;返回最大值的表格的16位整数

int max(int *array);数组*array
{
char a;
int maximum=-32768;最大的=-32768

for (a=0;a<16;a++)
if (array[a]>maximum)
maximum=array[a];
return (maximum);返回
}
性能比较:
AT90S8515 8 MHz
80C51 24 MHz
68HC11A8 12 MHz
PIC16C74 20 MHz
编译结果结论:
8 MHz AVR ——224 MHz 80C51
HC11:代码效率高,但是处理能力只有AVR的1/10,功耗却高 2.5倍
PIC 速度快, 但是在相同功耗下AVR性能比其高3.5倍

(22) 为什么选用AVR单片机?AVR使用众多功能强大的高级语言
● IAR AVR C编译器 编译器与AVR同步设计,支持C和EC++ ,Demo版只生成调试文件,
● ICC AVR C 编译器 支持无SRAM器件;增加组软件模块;Icc Demo版30天是完全版, 30天后转 限2KB版
● Code Vision AVR C编译器 有组软件模块,Demo版为限2KB版
● GNU C编译器 网友联盟自由免费版,升级慢
● BASCOM-AVR Demo版为限2KB版

(23) 为什么选用AVR单片机?AVR有各种档次的开发工具
评估工具
–AVR Studio
–STK500
–GNU GCC 编译器高性能开发工具
–AVR Studio
–STK500
–ICE10 / ICE30/ICE200
–IAR C
低成本开发工具
–AVR Studio
–ICE200 / JTAGICE
–Imagecraft C
- 本站开发AVR mega16/32 学习开发板

(23)为什么选用AVR单片机?有了AVR基础,我们学习FPSLIC(=AVR+FPGA+SRAM),使我国单片机开发 进入芯片级开发。


院士
2010-02-10 10:01:42    评分
7楼

怎样成为单片机高手

不管出于什么原因学习单片机,成为单片机高手几乎可以说是每一个认真学单片机高手的愿望。

单片机高手的秘诀

1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。

2.别小家子气,买本书几十块都舍不得,你还学个P。为了省钱看电子书,浪费的时间绝对 超过书的价值。当然如果查资料,只能看PDF。

3.学习新的开发软件时,一定要看帮助手册。买的书不够全面。刚接触一个软件,什么都不 懂,就盲目的问东问西,让人看起来很幼稚。

4.不要蜻蜓点水,得过且过,细微之处往往体现实力。

5.把时髦的技术挂在嘴边,还不如把过时的技术记在心里。

6.看得懂的书,请仔细看;看不懂的书,请硬着头皮看。别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍。

7.多实践,去焊板子、调试,去写去调,只用软件模拟,是永远成不了高手的。

8.保存好你做过的所有的源程序、PCB、原理图等----那是你最好的积累之一。

9.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先你要学会 自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就能找到很多相 关资料,别老是等待别人给你希望,看的出你平时一定也很懒!

10到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就 有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己的帖子没人回 的。

11,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,如果你 总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的才有讨论的说 法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你讨论呢。

什么样的人是浮躁的人?

浮躁的人容易问:我到底该学什么; --踏踏实实的学点基本的吧?单片机不知道是什么就想去学ARM?       c语言不会想搞LINUX?别老是好高骛远。

浮躁的人容易问:谁有xxx源码?--(你给人家多少钱啊?自己的劳动白送你?)

浮躁的人容易说:跪求xxx---(就算网络也要点尊严吧?)

浮躁的人容易说:紧急求救---(其实只是个简单的课程设计)

浮躁的人容易说:有没有xxx中文资料?---一个字:懒。别说别的。E文不行?谁不是从 ABC学起的啊?

浮躁的人容易说:求xxx,我的email是xxx@xxx.com,然后消失 ---- 你以为你是大爷啊,人 家请你吃饭,还要喂到你口里不成?

浮躁的人容易问:做单片机有钱途吗----只是为了钱,搞不好技术的,你去抢银行好了。

浮躁的人容易说:哪里有xxx芯片资料?(其实大部分资料网络上都有,但是偏偏来找人 问,懒!)

浮躁的人分两种:只观望而不学的人;只学而不坚持的人; 浮躁的人永远不是一个高手。

学好单片机之后

基于单片机在各行各业的广泛应用,社会对单片机越来越重视,高校也纷纷开设单片机课程。

学好单片机可以让你在电子行业内找到一个比较好的工作。

学好单片机可以让你增加对电子产品的了解,扩展产品开发的思路,提高社会竞争力。


院士
2010-02-10 10:03:27    评分
8楼

学习AVR,需要软件,硬件,开发工具的支持。我们介绍一下开发环境的比较与选择。

AVR的编译软件常用的有,IAR AVR,imagecraft(ICC AVR),Code Vision,GNU GCC AVR等。

特点 IAR imagecraft Code Vision GNU GCC
代码效率 +++ ++ ++ ++
价格 ¥¥ Free
易用性 ++ +++ +++
与AVR STUDIO集成度 ++ +++ +++ ++
技术支持 +++ +++

综合易用性,价格,集成度,技术支持多方面因素,本站推荐imagecraft(ICC AVR),本站的教程,代码例子也是基于本平台下编写的。如果是个人使用,可以在google上搜索ICC的注册机,用于专业版的测试。请你支持正版,支持软件业的发展。

AVR的下载软件常用的有:AVR STUDIO,ICC AVR,SL AVR

软件 AVR STUDIO ICC AVR SL AVR
简介 Atmel 官方开发工具软件安,支持所有的芯片系列,还可以用于软件仿真。通过*.cof文件与外部编译软件集成。 ICC AVR内部支持并口ISP下载,STK500下载,详细配置及使用方法,请看使用ICC和并口ISP下载线下载程序 双龙公司开发
支持 串口,USB,JTAG在线仿真,ISP下载 支持串口,并口,ISP下载。不支持仿真 支持并口ISP下载

本站推荐AVR STUDIO,易用性好,可靠性高,支持所有芯片,官方免费提供,关于详细的使用方法,新手入门中有介绍。

AVR的开发工具有,原装的MKii,原装MKisp,普通版JTAG,并口ISP,豪华版 JTAG 与 ISP 二合一 编程仿真器。

原装的开发工具功能和稳定性有保障,但是价格比较昂贵(原装JTAG mkII 仿真下载器价格为2380元),如果不是特别需要,没有必要做那么大的投入。

普通版JTAG仿真器价格便宜,一般在100~200元之间,本站提供的普通版JTAG仿真器仅售120元。但是普通版JTAG仿真器存在抗干扰能力差的问题,在一些特殊的电路下(比如带有继电器的电路),回灌电流可能将仿真器主控芯片内的程序冲掉。

并口ISP是最经济的开发方案,本站提供的并口ISP下载线只需30元,但是并口ISP下载速度慢,如果你有一定电路基础,你可以自制并口ISP下载线,制作方法本站后面的教程将会提供。

本站推荐折衷的解决方案,豪华版 JTAG 与 ISP 二合一 编程仿真器,稳定性好,功能强,价格低,是目前性价比非常高的开发工具方案。 使用说明书,详细的介绍了JTAG仿真的方法,ISP下载的使用

本编程仿真器特有功能:

1、JTAG与ISP完美二合一
2、自动识别目标板是JTAG还是ISP
3、使用时无需手动重启,目标板插拔时自动重启
4、各种保护电路,保护编程器和目标板
5、支持USB和串口双接口
6、超低价格:每套仅需350元

ISP功能:

1、ISP下载功能
2、使用AVR Studio下载时选择STK500/ISP即可
3、支持几乎所有的带ISP功能的芯片

JTAG功能:

1、 完全支持AVR Studio 4.XX。
2、 支持所有具有JTAG接口的AVR系列单片机。
3、 完全真实的实现AVR单片机的所有的电性能。
4、 可以完全实现片内的数字或模拟功能。
5、 可以在程序执行过程中实现单步(step)、连续、断点、变量具有数据或程序空间断点。
6、 支持汇编和高级语言(C,C++)开发。
7、 可以对Flash、EEPROM、熔丝位、加密位进行编程。
8、 通讯速率可达115200bps。
9、 支持仿真电压2.3~6V, JTAG仿真器可由目标供电或外接电源供电。
10、使用原厂 AVR Studio 的升级文件。当有新版本时,能自动检测并自动升级。
11、支持芯片列表:
AT90CAN128,ATmega128, ATmega128L, ATmega16, ATmega162, ATmega162V, ATmega165, ATmega165V, ATmega169, ATmega169V, ATmega16L, ATmega32,

ATmega323, ATmega323L, ATmega32L, ATmega64, ATmega64L。

产品清单:

1、AVR JTAG ISP二合一编程仿真器 1台
2、串口连接线 1条
3、电源适配器 1个
4、优质USB线 1条
5、资料光盘 1张

资料光盘包括(AVR JTAG ISP二合一编程仿真器用户使用手册,AVR Studio 4.12 RC1,ICCAVR编译器,AVR系列芯片中英文手册,ISP软件,Bootloader源程序,AVR系列新手入门教程)

小贴示:本站的仿真器输出接口具有HC244保护,保护JTAG的输出口及监控程序不受损坏.(其它简易型的JTAG是无保护功能,经常会出现监控程序丢失.)


院士
2010-02-10 10:04:13    评分
9楼
怎样看懂数据手册?

首先声明一点,真正的新手是看不懂数据手册的,如果你能,说明你已经入门了。所以,当你看到数据手册头疼的时候,不要灰心,其实别人和你一样。

但是数据手册是AVR最好的书,你又必须得看懂数据手册,看数据手册不能急于求成,要一遍一遍的多看,应该说每次看都有不同的收获。

新手看第一遍,迷迷糊糊。

看第二遍,大体了解AVR有哪些模块。

第三次看,知道AVR的部分寄存器,但是仍然不知道如何使用,如何编程。

在这里就要发挥ICC AVR的优势了,使用ICC avr的程序生成向导(使用方法会在新手入门里面介绍),你使用哪一个模块,就生成哪一个模块的程序,然后再去看程序中使用到了哪写寄存器,再到数据手册里面去搜索相应词语,查看寄存器各个位的介绍和意义,以及设置方法。多这样几次,你就能够熟悉起来了,也就能看明白数据手册了。

一个精通单片机的人,无论拿来一个什么芯片,看看数据手册,很快就可以使用。

这里以定时器的数据手册为例:

//ICC-AVR application builder : 2007-3-22 10:17:15
// Target : M16
// Crystal: 7.3728Mhz

#include 
#include 

void port_init(void)
{
 PORTA = 0x00;
 DDRA  = 0x00;
 PORTB = 0x00;
 DDRB  = 0x00;
 PORTC = 0x00; //m103 output only
 DDRC  = 0x00;
 PORTD = 0x00;
 DDRD  = 0x00;
}

//TIMER0 initialize - prescale:1024
// WGM: Normal
// desired value: 10mSec
// actual value:  9.861mSec (1.4%)
void timer0_init(void)
{
 TCCR0 = 0x00; //stop
 TCNT0 = 0xB9; //set count
 OCR0  = 0x47;  //set compare
 TCCR0 = 0x05; //start timer
}

#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
 TCNT0 = 0xB9; //reload counter value
}

//call this routine to initialize all peripherals
void init_devices(void)
{
 //stop errant interrupts until set up
 CLI(); //disable all interrupts
 port_init();
 timer0_init();

 MCUCR = 0x00;
 GICR  = 0x00;
 TIMSK = 0x01; //timer interrupt sources
 SEI(); //re-enable interrupts
 //all peripherals are now initialized
}

上面的程序是由ICC的程序生成向导自动生成的,红色部分是和定时器0相关的,那么现在你可以去查数据手册,TCCR0,TCNT0,OCR0,TCCR0,TIMSK 你就可以充分了解定时器的工作原理及控制方法了。

比如:查看TIMSK,描述为

中断屏蔽寄存器- TIMSK

Bit 1 – OCIE0: T/C0 输出比较匹配中断使能

当OCIE0 和状态寄存器的全局中断使能位I 都为”1” 时,T/C0 的输出比较匹配中断使能。 当T/C0 的比较匹配发生,即TIFR 中的OCF0 置位时,中断服务程序得以执行。

Bit 0 – TOIE0: T/C0 溢出中断使能

当TOIE0 和状态寄存器的全局中断使能位I 都为”1” 时,T/C0 的溢出中断使能。当T/C0 发生溢出,即TIFR 中的TOV0 位置位时,中断服务程序得以执行。

可以看出TIMSK = 0x01;说明T/C0 溢出中断使能了,允许寄存器定时溢出中断,这就使得下面这段程序可以运行。

#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
 TCNT0 = 0xB9; //reload counter value
}

下面一段是一些朋友的理解:

古欣(286629322) 10:20:15
我正在写 新手入门中的 怎样看懂数据手册,大家有什么意见或好的建议 
学习(603761546) 10:15:50
我想比较麻烦.我遇到的最大困难就是英语 
古欣(286629322) 10:21:30
看懂中文的呢 
学习(603761546) 10:16:49
数据手册.只要是中文.应该很好看的.除非电子基础不好,不知道
里面的数据代表什么 
学习(603761546) 10:17:03
这是我的看法啊 
BG1(530377725) 10:17:25
如果能看懂某功能寄存器的设置方法,该功能就不是问题了 
学习(603761546) 10:17:36
也是我以前入门时的看法 
BG1(530377725) 10:18:19
单片机,我觉得还是应该以掌握寄存器为主 
古欣(286629322) 10:24:07
我觉得 真正的新手是看不懂数据手册的 
学习(603761546) 10:19:14
其实.古老师.不如帮助把英语资料给翻译一下.倒是比较好的方法 
独步(76759976) 10:19:23
就是就是 ,我就看不懂 
BG1(530377725) 10:19:35
其实使用单片机,最后不过是控制寄存器而已 
独步(76759976) 10:19:57
没这么简单吧?
我可不大懂 
BG1(530377725) 10:20:26
我觉得就这么简单  
BG1(530377725) 10:22:38
当然,c的语法或汇编代码及他们伪指令的掌握是必需的 
独步(76759976) 10:26:19
呵呵,这一说东西就又多了 
BG1(530377725) 10:27:42
语言只是怎么去用寄存器,看datasheet是为了怎么用寄存器 
BG1(530377725) 10:28:28
难道没有人认同吗  
古欣(286629322) 10:34:27
认同,过来之后认同,但是刚开始学的时候不是这样的 
BG1(530377725) 10:30:12
那是怎样的呢  
古欣(286629322) 10:35:50
一团遭 
学习(603761546) 10:33:33
怎样看懂数据手册? 其实没有什么写的!我这样认为
:第一...怎样找什么器件完成你的功能...这你必须有电子基础
;二:得到器件的名字.你得使用器件的功能...看资料
第三:怎么看懂...你得认识语言.转换为能接受的信号
所以.都是自己设计产品时.一系列基本联想到的步骤,基本别人不说
也因该这样走下去的....

个人理解 
BG1(530377725) 10:33:39
呵呵,我刚开始学51的时候,还不会使用keil的调试功能呢,那时候也不知道程序会跑出什么结果来,老是下载程序,得不到正确的结果,
所以,新手掌握调试方法可以少走很多弯路  
学习(603761546) 10:34:43
所以...感觉写这个.不如帮助翻译..这样比较好 
古欣(286629322) 10:40:40
一会儿我就写完了,呵呵 
BG1(530377725) 10:35:32
不是的,给新手指明学习方法很重要的 
BG1(530377725) 10:36:26
很多新手就是因为第快板不顺利,没信心而放弃的 
BG1(530377725) 10:36:56
哦,写错了,是“第一块板” 
古欣(286629322) 10:42:52
所以,我说成功的单片机高手后面有一块优秀的板 
学习(603761546) 10:37:31
忘记说了..兴趣是学习的关键 
学习(603761546) 10:38:31
如果第一块板都坚持不下去,还要继续吗..因该放弃 
BG1(530377725) 10:39:19
假如第一块板成功了,会加强兴趣的 
古欣(286629322) 10:44:51
嗯 
学习(603761546) 10:40:41
假如第一块板成功了,会加强兴趣的.....这是逼你学
不是你要学 
学习(603761546) 10:41:18
.如果你要学.第一块算什么 

BG1(530377725) 10:41:43
第一块算催化剂 
学习(603761546) 10:41:45
这就说的太元了 

学习(603761546) 10:44:58
其实.我最想做的事情.就是出来自己开个店 
BG1(530377725) 10:45:52
为Money而奋斗,但是技术也是重要的,我写程序去了 
学习(603761546) 10:49:32
这几年做下来..感觉最重要的是模拟电路和英语.....
这次这个任务结束.好好放下心来学习模拟电路

院士
2010-02-10 10:04:47    评分
10楼

这是一个非常有争议的问题,以前有人推崇汇编,是因为他不会C,有人也说有的人说不能用汇编写大的程序是因为他没有学好汇编。我希望你看过这个页面之后不要再去寻找是学汇编还是学C的答案。

一个合格的硬件工程师,应该都学,我推荐你先学习C语言,因为汇编入手太慢,写程序要以C为主,需要高速的或者底层的操作用内嵌汇编的方式。

汇编和c同样重要,相互配合,缺一不可!

汇编的重要性:

  • 帮助你从根本上彻底和完全了解芯片的结构和性能,以及工作原理,如何使用。
  • 在小的芯片上实现小的系统。
  • 系统的调试。尽管你使用了高级语言,在调试中可以帮助你了解C代码的性能和特点,甚至找到使用开发平台本身的BUG。
  • 编写时序要求严格的代码,实现一些高级语言不易实现的功能。

从目前的技术和应用发展来看,对硬件工程师的要求越来越高。以我的观点,作为单片机和嵌入式系统开发真正的高手,应具备以下几个方面的综合能力:

  • 硬件。模拟、数字电路的雄厚基础,了解跟踪现在市场上的各种元器件的应用和发展,能够进行可靠、完善的电路设计以及PCB的设计。
  • 软件。不仅需要精通汇编语言,也要精通C语言,要有好的单片机系统程序设计理念和能力,学校中学的那些分支结构、循环结构等基本原理远远不够!要有基本的数据结构的知识。否则你如何设计实现USB HOST读U盘的接口?如何实现嵌入式WEB系统?以及如何使用真正了解和使用RTOS?
  • 具备计算机网络和数字通信的基础知识,从根本上熟悉和了解各种协议的构造和实现,如:UART、RS232、SPI、I2C、USB、IEEE802、TCP/IP等。
  • 计算机应用的高手。
  • 熟练阅读英文资料。
  • 热爱和喜欢电子技术,具备刻苦精神、踏踏实实,不弄虚作假,不浮躁。多动手,勤实践。有强烈的专业和钻研精神。最后一条最重要!

共17条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]