430系列单片机指令系统无需学习

| 数据库系统 |

【www.guakaob.com--数据库系统】

《MSP430单片机原理》
430系列单片机指令系统无需学习 第一篇

第2章 MSP430单片机原理与C语言基础

MSP430系列超低功耗单片机有200多种型号,TI 公司用3~ 4位数字表示其型号。其中第一位数字表示大系列,如MSP430F1xx系列、MSP430F2xx系列、MSP430F4xx系列、MSP430F5xx系列等。在每个大系列中,又分若干子系列,单片机型号中的第二位数字表示子系列号,一般子系列越大,所包含的功能模块越多。最后1~2 位数字表示存储容量,数字越大表示 RAM 和 ROM 容量越大。430 家族中还有针对热门应用而设计的一系列专用单片机。如 SP430FW4xx 系列水表专用单片机、MSP430FG4xx 系列医疗仪器专用单片机、MSP430FE4xx 系列电能计量专用单片机等。这些专用单片机都是在同型号的通用单片机上增加专用模块而构成的。最新的MSP430型号列表可以通过 TI 公司网站下载。

在开发单片机应用系统时,第一步就是单片机的选型,选择合适的单片机型号往往就能事半功倍。单片机选型基本方法是选择功能模块最接近项目需求的系列,然后根据程序复杂程度估算存储器和 RAM 空间,并留有适当的余量,最终决定选用的单片机型号。

本章节以MSP430F249单片机为学习目标,介绍单片机的基本结构和工作原理,读者可以举一反三、触类旁通,而不必每种型号都去学习却无法深入掌握。

2.1 MSP430F249单片机基本结构与原理

2.1.1MSP430F249的主要结构特点

 供电电压范围 1.8V~3.6V。

 超低功耗:活动状态270uA(1MHz,2.2V);待机模式0.3uA;关机模式0.1uA。

 16位RISC精简指令集处理器。

 时钟系统:多种时钟源,可灵活使用。时钟频率达到16MHz;具有内部振荡器;可外接32kHz低频晶振;外接时钟输入。

 12位A/D转换器,内部参考电压,采用保持电路。

 16位定时器A,3个捕获/比较寄存器。

 16位定时器B,7个捕获/比较寄存器。

 4个通用串口:USCI_A0和USCI_A1、USCI_B0和USCI_B1(I2C、SPI)。  60kB+256B的flash程序存储器,2kB的RAM数据存储器。

 64引脚QFP封装。

MSP430F249单片机的芯片封装形式如图2.1所示,各引脚的功能描述如表2-1所列。

2.1.2 MSP430F249单片机的基本结构

MSP430F24x系列单片机功能结构示意图如图2.2所示。

(1)CPU简介

MSP430单片机的CPU为16位RISC精简指令集的处理器,只有27条正交汇编指令和7种寻址方式。RISC处理器基本上是为高级语言所设计的,编译程序对正交指令系统很容易做到最优化,利于产生高效紧凑的代码。MSP430CPU中集成了16个16位通用寄存器R0~R15,其中R0~R3分别复用为程序指针PC、堆栈指针SP、状态寄存器SR和常数发生器CG1/CG2。这些寄存器之间的操作只需要一个CPU周期。

1)程序计数器(PC指针)也就是CPU专用寄存器R0,PC指针是一个16位寄存器,可以寻址64kB的空间。MSP430单片机的指令长度以字(16位)为最小单位,而程序存储器单元以字节(8位)为单位,所以PC的值总是偶数。

图2.1 MSP430F249单片机引脚图

图2.2 MSP430F24x系列单片机功能结构示意图

2)堆栈指针SP为CPU专用寄存器R1,SP指针为16为寄存器,也总是偶数的。堆栈是在片内RAM中实现的,通常将堆栈指针设置为片内RAM的最高地址加一。使用C语言编程时,集成编译软件IAR会自动设置堆栈指针初始值。对程序员来说无需关心细节,编译结束后在信息窗提示的编译结果会给出 RAM 使用量的大小,只要不超过 RAM 区实际容量并稍留余量给堆栈用即可。使用汇编语言编程时必须注意堆栈指针的正确设置,否则堆栈可能会覆盖你的变量区,导致程序出错。

3)状态寄存器SR和常数发生器CG1、CG2(见数据手册)

SCG1 系统时钟控制位1,该位置位时关闭SMCLK

SCG0 系统时钟控制位0,如果DCO未用作MCLK或SMCLK时,该

位置位关闭DCO。

OSCOFF 晶振控制位,如果LFXT1未用作MCLK或SMCLK时,该位置

位关闭LFXT1。

CPUOFF CPU控制位,该位置位时关闭CPU。

GIE 总中断允许位,该位置位时允许可屏蔽中断;复位时禁止所有的

可屏蔽中断。

N 负数标志位,当运算结果为负时置位;否则复位。

Z 零标志位,当运算结果为零时置位;否则复位。

C 进位标志位,当运算结果产生进位时置位;否则复位。{430系列单片机指令系统无需学习}{430系列单片机指令系统无需学习}

(2)片内存储器

MSP430单片机采用冯·诺依曼结构,程序存储器flash、数据存储器RAM、特殊功能寄存器以及中断向量全部映射到64kB内部地址空间。MSP430不同型号单片机地址空间略有不同,MSP430F249的存储器结构如表2-2所示。

MSP430F249的数据存储区RAM有2kB大小,地址范围0x0200~0x09FF。RAM为堆栈、全局变量和局部变量提供空间。使用C语言来开发项目,注意观察编译结束后在信息窗口中提示的RAM使用量的大小,只有不超过RAM区的实际容量并稍留余量即可。

2)引导区

引导区使得用户可以通过UART串口对MSP430单片机的程序存储器flash或RAM区实现程序代码的写操作。详细内容参见TI公司的相关技术文档《Features of the MSP430 Bootstrap Loader》。

3)信息存储区

MSP430F249单片机有256B的信息存储区,它分为两段,每段128B。信息存储区用来存放那些掉电后需要保存的变量,一般用来保存项目的设定值或量程转换参数。Flash信息存储区只允许块擦除或写入操作,且有擦除次数的限制。需要频繁(几秒钟一次)擦除写入的变量不能存放在信息存储区,这时可以外接铁电存储器EEPROM器件来保存这些变量。

4)程序存储区

{430系列单片机指令系统无需学习}

MSP430F249单片机的程序存储区位于0x1100~0xFFC0,约60kB,程序存储区用于存放用户程序、常数以及表格等。程序存储区可以通过JTAG、BSL和ISP方式下载得到用户程序。

关于Flash存储器,我们介绍几个基本概念。Flash 的结构决定了写操作只

《如何学习msp430单片机》
430系列单片机指令系统无需学习 第二篇

如何学习单片机

学习就是迎接挑战、解决困难的过程,没有挑战,就没有人生的乐趣。

下面以MSP430系列单片机为例,解释一下学习单片机的过程。

(1)获取资料

购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET使用指导、MSP430 F1xx系列、F4xx系列的使用说明和具体单片机芯片的数据说明,可以找到仿真器FET的电路图、实验板电路图、芯片封装知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本

资料,就可以看懂所有的相关资料。

(2)购买仿真器FET和实验电路板

如果经济条件不错,可以直接购买。

(3)自制仿真器FET和实验电路板

自制仿真器FET,首先要到网上找到FET电路图,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电路非常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画原理图,画完原理图后,就学习认识元件封装,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给电路板制作公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路

板做好后,就可以与实验电路板一起调试了。

自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个引脚的功能,还需要数码管、按钮、排电阻、三端稳压器、二极管、散热器、电解电容、普通电容、电阻、钮子开关等元件的知识,对于初学者,可以做一个只有3个数码管、8个按钮、8个发光二极管的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET一样,首先画电路图,然后买元件,再画电路板。由于MSP430系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:首先在焊盘上涂上松香水,在松香水未干的情况下,将芯片放在焊盘上,注意芯片第一引脚的位置,并使引脚与焊盘对齐,将擦干净的电烙铁(不能有任何焊锡)接触引脚,引脚只要一热,焊盘上的焊锡就自动将引脚焊住了,千万注意电烙铁上不能有焊锡,焊接时最好配备一个放大镜。焊接电路板时,每一个元件都要核对参数,可以用万用表测量的元件一定要测量。

(4)从网上获得IAR软件

到利尔达公司或TI公司的网站下载IAR软件,并安装到计算机上。{430系列单片机指令系统无需学习}

(5)调试FET和实验板

将FET的一端与PC机的并行口相连,另一端连接实验板的JTAG接口,上电后,检查FET芯片、实验板上的单片机芯片是否发热(用手模),PC机是否工作正常后,运行IAR软件,找个C语言或汇编语言的例子,编译成功后下载到单片机中,如果能够下载,说明一切成功。否则还需要仔细研究,一般

情况下,只要电路板上的电路正确,元件参数准确,没有不成功的。

(6)分步骤学习单片机{430系列单片机指令系统无需学习}

学习使用单片机就是理解单片机硬件结构,在汇编或C语言中学会各种功能的初始化设置,以及实现

各种功能的程序编制。

第一步:数字I/O的使用

使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要

怕麻烦,所有的单片机都是这样。

第二步:定时器的使用

学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)

也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。

定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。

第三步:中断

单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干

什么,中断完成后,程序应该干什么等等。

中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能

使单片机具有吃着碗里的,看着锅里的功能。

以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。

第四步:与PC机进行RS232通信

单片机都有USART接口,特别是MSP430系列中很多型号,都具有两个USART接口。,USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个MAX3232芯片进行

电平转换。

USART接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信

号可以在单片机实验板上得到显示,将是多么有意思的事情啊!

第五步:学会A/D转换

MAP430单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概

念。

使用A/D转换功能的简单的例子是设计一个电压表。

第六步:学会PCI、I2C接口和液晶显示器接口

这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。

第七步:学会比较、捕捉、PWM功能

这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。

如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。

第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计

学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开

发的发展方向。

到此为止,相当于学会15招降龙十八掌,但还不到打遍天下无敌手的境界。即使如此,也算是单片机大虾了。顺便说一句,MSP430单片机的技术支持是非常好的,负责任的工程师大虾会在关键时候,挺

身而出,使你化险为夷。

{430系列单片机指令系统无需学习} {430系列单片机指令系统无需学习}

6. 达到理想境界

达到理想境界是困难的,在知识爆炸的年代里,即使天天学习,也很难跟上科学技术的发展,更何况每天还要为找工作、提职称、写论文、搞科研经费、政治学习、买房、购车、柴、米、油、盐、酱、醋、茶等忙活,那么,还需要学习吗?回答是肯定的,人就是为兴趣而活,爱好单片机才能学会单片机,不

为什么目的,只为学习的乐趣,当然要是兴趣也能赚钱,则是一举两得。

学会使用单片机其实是学会了使用工具,充其量是个补锅、锔碗的匠人。如果再要进步,就需要在信号识别、控制理论、数字信号处理理论、通信理论等方面下工夫,只有这样,才能开发出高水平、高附加

值、具有知识产权的产品,达到熟练运用降龙十八掌,打遍天下无敌手的至高境界。

单片机是DSP、嵌入式操作系统等高级硬件产品开发的基础。如果想要进一步的发展,必须学会单片

机的开发。{430系列单片机指令系统无需学习}

如果在学会单片机的基础之上,学会CPLD和FPGA的开发以及硬件描述语言,就可以在高速产品的

开发方面获得一杯羹。

《单片机的学习》
430系列单片机指令系统无需学习 第三篇

1、熟悉单片机的原理,结构;

2、学好数电,模电,为设计电路打好基础;

3、熟练使用C语言,多学习别人的程序;

4、对操作系统原理有一定的了解;

5、Protel至少要有点基础;

6、要实际动手调试电路的能力。

学习单片机的步骤

当前的单片机种类很多,但是 51 是最基础的,因此单片机的学习最好也是从 51 开始,不仅容易上手,而且相当实用。然而 51 单片机毕竟过于基础,后来的很多单片机在功能上都有很大的扩展,因此按照我们实验室多数人的路线接下来大多数人会学习 AVR 单片机, AVR 单片机在功能上较 51 有很大提升,集成了 A/D 、快速 PWM 等很多实用的功能,而且和很多大型的单片机在功能上有很多类似之处,因此如果以后还想掌握其他单片机 AVR 无疑是一个很好的跳板。

学习的过程

学习单片机最终要的是当然是练,我所说的学习跟课堂上的单片机学习不同,我以前也看过一些单片机教材,有些教材讲的是单片机的工作原理和内部结构,这些东西对于我们暂时并不需要,等以后开课的时候在学习好了。现在要学习的是暂时抛开内部结构原理不谈,如何能用单片机写一些简单的小程序,是从实用性的角度出发,网上有一种说法称之为先实践后理论的学习方法。

因此我的观点如下,单片机的硬件结构首先要有一个基本的了解,最起码要知道各引脚的功能、区别,能自己动手搭一个单片机的最小系统,然后就可以直接从程序入手,程序最好还是用 C 语言编程,从简单的跑马灯做起,逐渐深入,陆续可以做一些数码管、液晶、 DS1302 、 DS18B20 等电子元器件的应用,在深入就可以结合一些具体实例扩展一些中断、串口通讯等功能。还有一点要声明的是单片机里用到的 C 语言其实很有限,课堂上学习 C++ 的很大一部分内容在初期单片机编程中都用不到,因此没必要因为觉的自己的 C 语言基础不是很好而对单片机望而止步!

学习的工具

软件方面方面, 51 单片机用的是 KEIL 软件,这个软件在学校图书馆软件下载和其他网站上都有,具体用法自己查找相关资料, AVR 的软件就比较多了,我用的是 CVAVR ,另外还有 ICCAVR 等多款编译软件,这要看个人喜好了,建议有了一定的 51 基础再学。另外就是烧写软件,烧写软件的作用就是将编译器生成的 HEX 文件烧写至单片机里,这要配合下载线实用,如果有并口的话最好用并口下载线,软件最好用广州双龙的 SLISP 软件,如果是笔记本没有并口的话则要自己买一个下载器了,名称为 USBASP ,网上电子市场有卖 20 块钱左右,软件会随光盘自带。

硬件方面,首先是要有单片机,对于单片机有一点要注意, 51 单片机最好买 89S51 、 89S52 这两种型号,上面我所说的烧写程序是 ISP 方式,这两种单片机支持 ISP 下载,所以如果买其他型号的烧写程序可能会不太方便, AVR 单片机常用的就是 ATmega16L 其它型号的区别也不是很大,甚至有些兼容。至于单片机开发板,目前的价格都很贵,从一百到几百不等,不过像上次学校里广告的那个六十多块钱的最好还是免了,没什么作用。能买一块当然好,没有的话也不要紧,自己动手买个电路板搭一下也很方便,引出 ISP 接口,烧写程序十分容易,然后将 I/O 口引出扩展也很方便。

学习单片机的其它几个注意点:

1 .理论与实践并重

对一个初学单片机的人来说,如果按教科书式的学法,上来就是一大堆指令、名词,学了半天还搞不清这些指令起什么作用,也许用不了几天就会觉得枯燥乏味以致半途而废。所以学习与实践结合是一个好方法,边学习、边演练,循序渐进,这样用不了几次就能将所用到的指令理解、吃透、扎根于脑海,甚至 “ 根深蒂固 ” 。也就是说,当你学习完几条指令后 ( 一次数量不求多,只求懂 ) ,接下去就该做实验了,通过实验,使你感受到刚才的指令产生的控制效果,眼睛看得见 ( 灯光 ) 、耳朵听得到 ( 声音 ) ,更能深刻理解指令是怎样转化成信号去实现控制的,通过实验看到自己所学的成果不仅有一种成就感也能提升你对单片机的兴趣。说句实在话,单片机与其说是学出来的,还不如说是做实验练出来的,何况做实验本身也是一种学习过程。因此边学边练的学习方法,效果特别好。

2 .合理安排时间持之以恒

学习单片机不能 “ 三天打鱼、两天晒网 ” ,要有持之以恒的毅力与决 4 心。学习完几条指令后,就应及时做实验,融汇贯通,而不要等几天或几个星期之后再做实验,这样效果不好甚至前学后忘。另外要有打 “ 持久战 ” 的心理准备,不要兴趣来时学上几天,无兴趣时凉上几星期。学习单片机很重要的一点就是持之以恒。

3 .遇到问题耐心检查

单片机有软硬件两方面的内容,有时一个程序怎么调都不出效果,然而从理论分析却又是对的,这是就要仔细找原因了,学习单片机经常碰到很多问题,有时一两天都不能解决,这是就要有耐心,从底层找起,相信每找出一个错误都会有一个新的收获。切不可轻言放弃!!! 4 .对只短暂学过一遍的知识,充其量只比浮光掠影稍好。因此,较好的方法是过一段时间后 (1-2 个月 ) 再重新学一遍,学过的知识要经常运用,这样反复循环几次就能彻底弄懂消化,永不忘却。

5 .要进行适当投资购买实验器材及书籍资料

单片机技术含金量高,一旦学会后,给你带来的效益当然也高,无论是应聘求职还是自起炉灶开厂办公司,其前景都光明无限。因此在学习时要舍得适当投资购买必要的学习、实验器材。另外还要经常去科技图书店看看,购买一些适合自己学习、提高的书籍。一本好的书籍真的很重要,可以随时翻阅,随时补充不懂或遗忘的知识。

学习使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。

第一步:数字I/O的使用

使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。

第二步:定时器的使用 学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。

定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。

第三步:中断

单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等。

中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。

以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。

第四步:与PC机进行RS232通信

单片机都有USART接口,特别是MSP430系列中很多型号,都具有两个USART接口。USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个MAX3232芯片进行电平转换。

USART接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信号可以在单片机实验板上得到显示,将是多么有意思的事情啊!

第五步:学会A/D转换

MAP430单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。

使用A/D转换功能的简单的例子是设计一个电压表。

第六步:学会PCI、I2C接口和液晶显示器接口

这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。

第七步:学会比较、捕捉、PWM功能

这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。 如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。

第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。

到此为止,相当于学会15招降龙十八掌,但还不到打遍天下无敌手的境界。即使如此,也算是单片机大虾了

《单片机学习心得》
430系列单片机指令系统无需学习 第四篇

[篇一:单片机学习心得分享]

学习使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或c语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。

第一步:数字i/o的使用

使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字i/o功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,你的人,那我劝你最好是自己买上一块,毕竟自己有一块要方便的多,以后做单片机类的小实验时都能用得上,还省事。

有了单片机学习板之后你就要多练习,最好是自己有台电脑,一天少看电影,少打游戏,把学习板和电脑连好,打开调试软件坐在电脑前,先学会怎么用调试软件,然后从最简单的流水灯实验做起,等你能让那八个流水灯按照你的意愿随意流动时你已经入门了,你会发现单片机是多么迷人的东西啊,太好玩了,这不是在学习知识,而是在玩,当你编写的程序按你的意愿实现时你比做什么事都开心,你会上瘾的,真的。做电子类的人真的会上瘾。然后让数码管亮起来,这两项会了后,你已经不能自拔了,你已经开始考虑你这辈子要走哪一行了。就是要这样练习,在写程序的时候你肯定会遇到很多问题,而这时你再去翻书找,或是问别人,当得到解答后你会记住一辈子的,知识必须用于现实生活中,解决实际问题,这样才能发挥它的作用,你自己好好想想,上了这么多年大学,天天上课,你在课堂上学到了什么?是不是为了期末考试而忙碌呢?考完得了90分,哈哈哈好高兴啊,下学期开学回来忘的一干二净,是不是?你学到什么了?但是我告诉你单片机一旦学会,永远不会忘了。另外我再说说用汇编和c语言编程的问题。很多同学大一二就开设了c语言的课,我也上过,我知道那时天天就是几乘几,几加几啊,求个阶乘啊。学完了有什么用?让你用c语言编单片机的程序你是不是就傻了?书上的东西我们必须要会运用。

单片机编程用c语言或汇编语言都可以,但是我建议用c语言比较好,如果原来有c语言的基础那学起来会更好,如果没有,也可以边学单片机边学c语言,c语言也挺简单,只是一门工具而已,我劝你最好学会,将来肯定用得着,要不你以后也得学,你一点汇编都不会根本无所谓,但你一点c语言都不会那你将来会吃苦头。汇编写程序代码效率高,但相对难度较大,而且很罗嗦,尤其是遇到算法方面的问题时,根本是麻烦的不得了,现在单片机的主频在不断的提高,我们完全不需要那么高效率的代码,因为有高频率的时钟,单片机的rom也在不断的提高,足够装得下你用c语言写的任何代码,c语言的资料又多又好找,将来可移植性非常好,只需要变一个io口写个温度传感器的程序在哪里都能用,所以我劝大家用c语言。

总结上面,只要你有信心,做事能坚持到底,有不成功不放弃的强烈意志,那学个单片机来说就是件非常容易的事。

步骤:

1。找本书大概了解一下单片机结构,大概了解就行。不用都看懂,又不让你出书的。(三天)

2。找学习板练习编写程序,学单片机就是练编程序,遇到不会的再问人或查书。(二十天)

3。自己网上找些小电路类的资料练习设计外围电路。焊好后自己调试,熟悉过程。(十天)

4。自己完全设计具有个人风格的电路,产品,……你已经是高手了……

看到了吗?下功夫一个多月你就能成为高手,我就讲这么多了,学不学得会,下不下得了功夫就看你的了。

我的单片机学习心得。

很多人说,学单片机最好先学汇编语言,以我的经验告诉大家,绝对没有这个必要,初学者一开始就直接用c语言为单片机编程,既省时间,学起来又容易,进步速度会很快。在刚开始学单片机的时候,千万不要为了解单片机内部结构而浪费时间,这样只能打击你的信心,当你学会编程后,自然一步步就掌握其内部结构了。

单片机的学习实践。

单片机提高重在实践,想要学好单片机,软件编程必不可少。但是熟悉硬件对于学好单片机的也是非常重要的。如何学习好硬件,动手实践是必不可少的。我们可以通过自己动手做一个自己的电子制作,通过完成它,以提高我的对一些芯片的了解和熟练运用它。这样我们就可以多一些了解芯片的结构。我相信,你完成了一个属于自己的电子制作,你的单片机水平就会有一个质的提高。

这就是我学习单片机的心得体会,希望给单片机的爱好者学好单片机有所帮助。

使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或c语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。?

[篇三:学习单片机心得]

学了一年多的单片机,对单片机也有了一个基础的了解。在这一年里,我学了ds18b20、128*64大液晶、数码管显示等。从最初的跑马灯,到整体融合,经历了一段时间。单片机只有p0,p1,p2,p3,如果想把很多功能合在一起的话,就得复用,或着用到扩展,但是那个扩展模块不好用,写起程序来会比较麻烦,其实复用好的话,基本io口都够用!

学习的时候总是难免碰到一些问题!但是我的总结是:没关系,边做边想!或着讲瞎搞!不搞肯定不知道,搞了才会懂!过去的一些问题在现在看来都是小case,什么定时器赋值啊,定时器的使用类型(模式0,模式1,模式2),当时就自己在那里看书理解,一大堆的文字在那里,看了很久也不懂!不过后来我懂得了上网找视频教程!刚开始的时候也总是想为什么这么做,为什么这么做,为什么这么做,一堆的为什么。现在懂了,做多了,就觉得要这样做,要这样做,就是这么做的,没错!不会的时候想着,反正会弄懂的,多试试!

要相信熟能生巧,想想学习的时候,和现在的程度,不是在一个档次的!熟悉了操作,一些疑惑也会虽之解开!

我最初开始学单片机是因为我喜欢编程,我觉得编程是一件乐趣的事!或着说享受技术带来的快乐!我现在懂得了有各门各样的语言,c语言是其中一种,还有更底程的汇编语言,java之类的高级语言,这些我都很喜欢!它们各有各自的好处和用处!而且我不想只会一门语言,所以我要慢慢地学习各种自己喜欢的语言!

在学习的过程中遇到麻烦或着问题,已经习以为长了!遇到问题也不会焦虑,想的是该怎么解决!水平也是在不断解决问题中提高的,有这一点体会!其实初学单片机,碰到问题总是新的知识而已,因为单片机很简单,也不用很懂电路原理,知道什么时候给0,什么时候给1,其它的就交给硬件去处理。

我也不单单只想有关单片机的程序单片机功能简单,一直写单片机也会变得呆板的(这期间就一直写单片机的程序,不写其它思考性的编程),至少我是这么觉得。因为写单片机的程序一段时间后,我发现我的思路有点僵在单片机的思路上,自己想写一写其它的程序,不是单片机的,是c语言的一些有关数学计算(类似应用题的那种),写的时候却想的写单片机的感觉 ,有点难以集中到现在要解决的问题!

其实单片机我觉得就是瞎搞(想着各种其怪的点子,把它实现出来),然后就是熟能生巧!也不要局限于那么一些模块,不止那些模快,多弄弄其它的。单片机,很好玩的!

[篇四:单片机学习心得]

05年的时候,因为制作fm发射电路采用了bh1415的芯片,需要用到单片机控制,所以开始接触使用单片机,虽然以前读书时作为一门功课学过,不过也快丢荒了10年了,基本上都忘光了,也算是从头学起了吧。我当时是买了一块实验板,很简单的功能,比论坛实验板还要少功能,还有一个仿真器,也是比较简单的,sst芯片的。然后开始从大家都知道的流水灯写起,万事开头难,第一个程序基本上就抄人家的,翻查了一份快速入门的学习资料,写下第一个程序。然后,在仿真机是单步的看运行结果,从每一步执行,都硬件上反应出来的效果,很快,对单片机的运作有了一个非常感性的认识,这跟只看书然后自己想象运行是完全两码事。然后,是进一步的其它程序学习,一个月时间,基本上已经熟悉了51的各种硬件资源。把流水灯,数码管动态扫描,中断等等的学习了,然后就是写综合性的程序,也就是我发在论坛里的时钟。通过这个程序的编写,使自己的编程水平有了很大的飞跃。之后,就是逐步学习编写更多的程序,各种外围器件的控制等等,通过编写程序使自己不断的提高。在学过汇编之后,我又转到了c语言学习,因为以前没有学习过c语言,一切都很陌生,所以自己沿用了学习汇编的方法,大约花了3天功夫基本就对c语言有了初步的了解,然后就是尝试写上面所说的时钟,以汇编程序的思路作为参考,以c语言来编写,花了几天功夫完成了这一程序,也实现了从汇编编程为主到c编程为主的转变。然后,就是以c语言编写外围器件的控制程序,以此来熟悉c的编程风格,一直到现在,基本上就是c语言编程,汇编已经是作为调试程序的辅助。

下面我概括了几点我的学习经验和心得体会:

1、万事开头难、要勇敢迈出第一步。开始的时候,不要老是给自己找借口,说keil不会建项目啦、没有实验板啦之类的。遇到困难要一件件攻克,不会建项目,就先学它,这方面网上教程很多,随便找找看一下,做几次就懂了。然后可以参考别的人程序,抄过来也无所谓,写一个最简单的,让它运行起来,先培养一下自己的感觉,知道写程序是怎么一回事,无论写大程序还是小程序,要做的工序不会差多少,总得建个项目,再配置一下项目,然后建个程序,加入项目中,再写代码、编译、生成hex,刷进单片机中、运行。必须熟悉这一套工序。个人认为,一块学习板还是必要的,写好程序在上面运行一下看结果,学习效果会好很多,仿真器就看个人需要了。单片机是注重理论和实践的,光看书不动手,是学不会的。

2、知识点用到才学,不用的暂时丢一边。厚厚的一本书,看着人头都晕了,学了后面的,前面的估计也快忘光了,所以,最好结合实际程序,用到的时候才去看,不必说非要把书从第一页看起,看完它才来写程序。比如你写流水灯,完全就没必要看中断的知识,专心把流水灯学好就是了,这是把整本书化整为零,一小点一小点的啃。

3、程序不要光看不写,一定要自己写一次。最开始的时候,啥都不懂,可以抄人家的程序过来,看看每一句是干什么用的,达到什么目的,运行后有什么后果,看明白了之后,就要自己写一次,你会发现,原来看明白别人的程序很容易,但到自己写的时候却一句也写不出来,这就是差距……当你自己能写出来的时候,说明你就真的懂了……

4、必须学会掌握调试程序的方法。不少人写程序,把代码写好了,然后一运行,不是自己想要的结果,就晕了,然后跑到论坛上发个帖子,把程序一贴,问:为什么我的程序不能正常运行?然后就等别人来给自己分析。这是一种很不好的行为,应该自己学会发现问题和学会如何解决问题。这就需要学习调试程序的方法,比如keil里,可以下断点啦,查看寄存器内容等等,这些都是调试程序的手段,当你发现你写的程序运行结果和你想象中不一样的时候,你可以单步,也可以下断点,然后跟踪,查看各相关寄存器内容,看看程序运行过中是不是有什么偏差,找出影响结果的地方,改正过来。这一个过程非常重要,通过程序的排错,你可以学到的知识是书上得不到的。

5、找到解决问题思路比找到代码更重要。我们用单片机来控制周边器件,达到我们想到的目的,这是一个题目,而如何写出一个程序,来控制器件按你想要的结果去运作,这个就是解题的思路。要写程序,就得先找到解决问题的思路,你学会找出这个解题思路,比你找到代码更为重要。不少人很喜欢找人家的代码,有的人甚至有了代码就直接复制到自己的程序中,可以说,这不是一种学习的态度,无助于你编程水平的提高。我几乎不怎么看人家的代码,多数时候是看别人的思路,有方框图最好,没有的话文字说明也可以,要从代码中看出别人处理问题的思路,是相当困难的,特别是大型的程序,看起来是非常的累人,所以现在我也明白了,以前读书时说的程序流程图很重要,现在算是知道了。当你知道一个问题怎么去解决了,那么剩下的只是你安排代码去完成,这就已经不是什么问题了。举个例子:数码管动态扫描,没写过的初学者可能搞不清是怎么回事,其实,就是分时让每一时间段时只控制一只数码管显示数字,几只数码管轮流显示,由于速度很快,人眼的看起来是全部数码管都亮的。明白是这么一回事,事情就好办了,剩下的事情,无非是你安排让一只只数码管轮流显示出相应的数值。显示数字,然后延时一下,再下一只显示数字,延时,知道是这样,我们实际程序上只要做到这样就可以:往段口送段码,然后打开位选显示一只,延时一下,再关闭位选,再送出段码,再打开另一只位选。仅此而已。有了解决问题的思路,我们就能问题拆分开来,然后逐一的解决,如果动态扫描的原理都没懂,不知道如何做,那么这个程序是怎么也写不出来的。

6、开动脑筋,运用多种方法,不断优化自己的程序。想想用各种不同方法来实现同一功能。这是一个练习和提高的过程,一个问题,你解决了,那么你再想想,能不能换种写法,也可以实现同一功能,或者说,你写出来的代码,能不能再精简一点,让程序执行效率更高,这个过程,就是一个进步的过程。很多知识和经验的获得,并不是直接写在书让你看就可以得到的,需要自己去实践,开动脑筋,经验才能得到积累,编程水平才能有所提高。

7、看别人的代码,学习人家的思路。这个在学习初期是很有用,通过看别人的代码,特别是有多年编程经验的人写出的具有一定水平的代码,可以使自己编程水平得到迅速的提高,同时,也可以结合别人的编程手法,与自己的想法融合在一起,写出更高水平的代码,从中得到进步。但要注意,切忌将学习变成抄袭,更不是抄袭完了就认为自己学会了,这样做只会使你退步。

8、尝试编写一下综合应用的程序。从流水灯学起,到动态扫描,再到中断,那么,你可以试试写一下时钟这种综合性应用的程序,不要小看时钟,要写好它不是一件容易的事情,它包括了单片机大部分的知识,比如有按键(io读取)、动态扫描(io输出)、中断等,如何协调好各功能模块正常工作,才是编程者需要学习的地方,当你单独写一个功能的时候,比如按键读取,你可能感觉很容易,因为你的程序啥也不做,只是读按键。但把它和其它功能混合在一起,如何在整个程序运行中使每一部分都正常工作,这就不是写一个按键读取这么容易的事情,功能模块之间有可能会互相影响,比如你需要让数码管既能显示,又要去处理按键读取,怎么使这两部分都正常工作,这就是一个协调过程。当你有了这个处理协调能力,你就算是入门了。

9、着重于培养解决问题的能力,而不是具体看自己编写了多少代码或者做过什么。“学单片机重点在于学习解决问题的思路,而不是局限于具体的芯片类型和语言”这一直是我的座右铭,是我学单片机多年来感悟 出来的。经常看到有人说“你会驱动xx芯片,真牛啊”“你搞过xx项目,真厉害”之类的话,其实这是非常片面的,搞过xx芯片,搞过xx项目,只能说明你做过这一项目,它只是你的业绩,并不是代表能力就一定高。真正的能力应该是:“遇到没有解决过的问题或器件,能利用自己已学的知识,迅速找到解决问题的方法。”这个才是能力。写程序的过程就是一个创造的过程,几乎没有完全一样的项目,每次你遇上的几乎都不相同,所以你拥有的必须是你面对新项目时的创造能力,而不是标榜着你以往做过多少项目。当然,业绩也能从另一侧面反映你的经验和水平。

[篇五:个人对于51单片机的学习心得]

本人也是通过学校安排的课程才接触到单片机的。

上课的时候倒是挺难挨的,觉得枯躁无味,经常逃课。倒是在后来自己临到考试的时候认真复习倒还兴趣增加不少(由此可见老师上课的启发兴趣能力有多强……)不过考试的成绩还真是一般般,单片机只是考了个及格,咳……

在这里讲个小插曲,我们学的是c51,后来有个什么凌阳公司来我们学校搞活动,所以我买了块凌阳,但是后来越学越没动力,可能是我领悟能力有限,不过有个老师跟我讲,学东西先从基础的东西学起,比如说51,它的应用最广泛,所以技术也就是最成熟的,资料也就是最多的,这对初学者来说无疑是方便的,而且你学一个比较偏的单片机,以后应用能用上就好,不能用上就浪费学习时间了。所以现在才重新买了一块开发板,很多东西都对上号了,就好学多了。

正如很多人说的那样,学单片机,先学汇编,再学c,我也是这样的,(因为老师上课就是讲汇编的,所以没办法,呵呵)因为这对以后熟悉单片机内部资源,计算周期是很有帮助的。不过汇编就是比较麻烦,换个芯片就都要重头来过,所以有局限性,不像c那样可以移植,修改的地方很少。对于汇编的学习还真是痛苦,我觉得这些东西最好是自己看,别人很难讲到你明白的,首先要熟悉那一百多条指令,说是一百多,其实有些是同个种类,压缩起来也不过就几十条,再说都是英文简写,就我那么点英文水平也看得明白,所以也不是什么难事,所以,先要搞定指令!指令搞定以后你也就能看一些基本的程序了,这样,对于兴趣的慢慢培养是大有好处的,谁都不想耗上一大段时间却什么都看不懂吧。接着就是看特殊寄存器及其功能,了解要利用到什么内部资源时要设置哪些特殊寄存器,要怎么设置,可不可以位寻址啊,0是什么1又是什么啊之类的。不一定要背下来,但是至少要有点印象有点了解,至少以后碰到的时候知道哪里可以查到。这些你可以直接搜索网上资源,有这方面的总结,“51特殊寄存器”,以后要查找和设置也就方便一点。这样你基本就可以看程序了!看程序的时候注意了,看的时候先看总体程序实现的功能是什么,是p口亮灯呢还是串行通信,还是中断还是定时(先从简单的程序入手,对应于每个知识点,p口亮灯,定时器,中断,串行);接着应该看流程图及每个子程序的定义,不看流程图看汇编就像看天书,一开始的时候。子程序名的跳转可以了解程序是怎么走的,由哪里跳到哪里。基本就是这样学汇编的了,一个学期,边上课边做实验,好像只是每个知识点只做了一个,基本就可以了解的了。

在这里又插一句,刚开始学的时候我们这些初学者经常会问些很白痴的,让已经入门的人喷血喷饭的问题。呵呵,这是必经之路,不过还是那句话,尽量先自己看书,看到真的不懂才去问别人,因为我始终觉得,提问和回答是一种互动的交流,而不是只是单向的,你也要先掌握些东西,别人再一点破就明白了,不要全靠别人!不然别人也会觉得你很烦的,这方面我很有经验,也受过不少白眼,不过,可以理解!

对于c语言编程,一开始自己还是有点畏惧的,因为c语言课程学得不好,不过后来在网上看到单片机用c语言跟用c编程序还是有区别的,单片机的比较简单一点,所以也抱着试试的心理学习。呵呵,后来自我感觉良好!(哈哈)c语言还在学习中,也只能暂时将目前的程度谈自己的感受,一开始看c程序搞了很久才明白什么是后缀是h的头文件,原来是编译器把所有的资源都分配的地址及代称,比如你在程序中用p1_0,tcon(定时器设置寄存器),实际是调用了一个地址。这是一个小的方面。最好先看一下专门写单片机编程的书籍,最好既有汇编又有c语言的,对比来学比较有效率。熟悉c语言的顺序结构,循环结构,条件结构各有什么语句,各怎么表达。暂时我也是按这样的顺序学习的,当然要多看程序,方法步骤跟汇编一样,还是要看流程图!

至于对汇编和c语言涉及的软件的学习,我觉得这些都比较容易掌握,上网下载个教程,按实例照着做就基本可以掌握,不要想一下子把所有功能都了解,基本的会用,其他比较特殊的功能以后自然会有机会用到,因为网上经常有些高手出来讲一些心得,到时看也不迟。现在看太多不熟练也容易忘记。东西总是等到用到了才比较有印象!

对了,等到书看到一定程度建议买块单片机学习板,之前也为了省钱想自己搭个最小系统要做什么再做什么,不过可能还是比较懒或是比较花时间,所以还是自己买了一块,因为一开始对硬件也不熟悉,什么都得上网查资料,做个跑马灯也要看要接多大电阻啊,要怎么连线啊之类的,倒不如买个现成的先熟悉程序再做硬件也不迟,那样反倒比较熟练。五六电子网站提供的单片机学习系统是您的最好选择。

基本上就写到这里了,本人的一些观点而已,欢迎讨论!

[篇六:avr和pic单片机学习心得总结]

一、两种单片机工程文件编译成功的关键是工程文件名和存储目录必须是英文字母,绝对不能是汉字目录!否则就会出现编译错误。我就是使用了汉字目录“我的文档”在工程文件编译文件过程产生错误,百思不得其解,浪费了许多时间。

二、学avr单片机感觉还是用avrstudio自带的gcc比较爽。一是因为avrstudio自带(不过还要自己安装winavr);二是因为winavr是自由软件不需要破解;三是现在用起来比以前要爽多了,以前还要自己编写makefile文件,现在只需在project的configuration中设置一下单片机使用晶振频率,剩下的就交给编译器;四是gcc函数库比较丰富,拿来直接用省的自己编写代码了。

三、pic单片机用量好像比avr单片机大一点,但低档pic单片机的结构没有avr单片机结构合理,尤其是在中断和存储器结构方面。pic产生中断,中断入口就一个,程序设计者要想知道哪里产生了中断就要自己写代码查询各个中断标志寄存器置位了;还有pic的存储器分好几个存储块,写程序要在几个块之间转换;avr单片机就不会存在这个问题。

四、avr单片机从软件开发到硬件开发非常便宜。软件免费而功能强大,编程仿真电路简单,网上购买便宜,自己也就可以制作。相对pic单片机软硬件耗费就要大一些,本人开始学pic就是因为pic单片机的编程器贵中途放弃,最后还是因为朋友学不会pic单片机,就把他的编程器送给了我,我才得以继续学习pic。

五、比起汇编来还是用:单片机c语言,比较容易,编写程序简单,程序可读性强,功能函数可以拿来使用。

六、说一说pic单片机的优点:1、就是pic单片机汇编命令要比avr单片机少的多,要是实现个简单的功能用汇编语言感觉用pic好;2、以前感觉pic单片机的网上源程序要比avr单片机好像要稍微多一些,不过现在感觉avr单片机的源程序也很多,并且进行了归纳。3、我不知道具体的数据就感觉来说pic单片机的用量很大。

七、到底学哪种单片机好呢?我也不知道,个人感觉avr好,可个人感觉人家pic单片机偏偏卖的要多些。

以上就是我的一点学习体会,当然就本人认识而言,肯定有不对的,还望指正。

本文来源:http://www.guakaob.com/jisuanjileikaoshi/389466.html