学习单片机心得体会

2024-10-19

学习单片机心得体会(精选10篇)

学习单片机心得体会 篇1

单片机的学习心得感受

随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时/数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机。

单片机是微型计算机应用技术的一个重要分支,近年来在工业智能仪器仪表、光机电设备、自动检测、信息处理、家电等的得到广泛应用和迅速发展。单片机是自动地进行运算和控制,把实现计算和控制的步骤一步步地用命令的形式,即一条条指令预先存入到存贮器中,单片机在CPU的控制下,将指令一条条地取出来,并加以翻译和执行,得到你要的东西。

这学期在老师的带领下,我从对单片机一无所知的到现在终于有点了解,这期间虽然没有在这方面下很大的功夫,但是也学到了一点知识,从点亮一个灯,到流水灯再到数码管的显示以及后面独立按键。这都是我以前无法想象的。

单片机这门课是一科非常重视动手实践的科目,不能总是看书,但是也不能完全不看书。单片机并传统的数字电路或模拟电路那样比较直观,原因是除了“硬件”之外还存在一个“软件”的因素。正是这个“软件”的原因使得许多初学者怎么也弄不懂单片机的工作过程,怎么也不明白为什么将几个数送来送去就能让数码管显示一串字符或控制一个电机的变速。对初学单片机的人来说,需要从书中大概了解一下单片机的各个功能寄存器,如果看的多了反而容易搞乱,现在市场上大多数讲单片机的书一开始就讲解复杂的内存、地址、存储器什么的,更让初学者感到不知所云、难以入门。如果按教科书式的学法,上来就是一大堆指令、名词,学了半天还搞不清这些指令起什么作用,能够产生什么实际效果,那么也许用不了几天就会觉得枯燥乏味而半途而废。简单的说,使用单片机实际上就是用我们自己编写的软件去控制单片机的各个功能寄存器。再简单些,就是控制单片机哪些引脚的电平什么时候输出高电平,什么时候输出低电平。由这些高低变化的电平来控制外围电路,实现我们需要的各个功能。

学习单片机首先用到c语言,提到C语言源文件,大家都不会陌生。因为我们平常写的程序代码几乎都在这个XX.C文件里面。编译器也是以此文件来进行编译并生成相应的目标文件。作为模块化编程的组成基础,我们所要实现的所有功能的源代码均在这个文件里。理想的模块化应该可以看成是一个黑盒子。即我们只关心模块提供的功能,而不管模块内部的实现细节。在大规模程序开发中,一个程序由很多个模块组成,很可能,这些模块的编写任务被分配到不同的人。而你在编写这个模块的时候很可能就需要利用到别人写好的模块的借口,这个时候我们关心的是,它的模块实现了什么样的接口,我该如何去调用,至于模块内部是如何组织的,对于我而言,无需过多关注。而追求接口的单一性,把不需要的细节尽可能对外部屏蔽起来,正是我们所需要注意的地方。

谈及到模块化编程,必然会涉及到多文件编译,也就是工程编译。在这样的一个系统中,往往会有多个C文件,而且每个C文件的作用不尽相同。在我们的C文件中,由于需要对外提供接口,因此必须有一些函数或者是变量提供给外部其它文件进行调用。假设我们有一个LCD.C文件,其提供最基本的LCD的驱动函数。在当前位置输出一个字符 而在我们的另外一个文件中需要调用此函数,那么我们该如何做呢?头文件的作用正是在此。可以称其为一份接口描述文件。其文件内部不应该包含任何实质性的函数代码。我们可以把这个头文件理解成为一份说明书,说明的内容就是我们的模块对外提供的接口函数或者是接口变量。同时该文件也包含了一些很重要的宏定义以及一些结构体的信息,离开了这些信息,很可能就无法正常使用接口函数或者是接口变量。但是总的原则是:不该让外界知道的信息就不应该出现在头文件里,而外界调用模块内接口函数或者是接口变量所必须的信息就一定要出现在头文件里,否则,外界就无法正确的调用我们提供的接口功能。因而为了让外部函数或者文件调用我们提供的接口功能,就必须包含我们提供的这个接口描述文件----即头文件。同时,我们自身模块也需要包含这份模块头文件(因为其包含了模块源文件中所需要的宏定义或者是结构体,好比我们平常所用的文件都是一式三份一样,模块本身也需要包含这个头文件。

硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。

当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课是对我的学习态度的一次检验。对于这次单片机综合课程,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次课程所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。

感谢老师的让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。虽然课程时间很短,但我学习了很多的东西,可以使我接触接触,感受颇深。

学习单片机心得体会 篇2

1 学习单片机的准备工作

(1)网上了解一些单片机,包括种类、开发工具和应用特点,譬如51、PIC、AVR、MSP430等很多款型,选择一款适合自己学习的单片机。

(2)根据选择的单片机选取书籍。最好书中在讲解知识点时,能给出相应的完整实例,包括设计思想、硬件电路和程序代码的整个流程。这样书籍理论与实践结合比较紧密,可以帮助学习者快速地理解和应用。学习者也可以利用网络,找一些资源为我所用。

(3)有条件者最好买一套对应单片机的实验板。目前单片机开发板功能齐全,数码管、键盘、AD或DA、液晶、串口、USB、红外、时钟等部件都有,同时开发板厂商可以提供好多配套实验代码和配套教材。通过开发板,学习者可以直观真实地进行基础功能实践和自行设计。无条件者可以利用Proteus仿真软件,在Proteus中既可以绘制电路图,还可以运行单片机程序,省去买板子的费用。

2 学习单片机的简单应用

(1)了解单片机的硬件结构,例如单片机的引脚功能、存储器特点与配置、IO特点与功能。

(2)选择并熟悉对应单片机的软件编程环境。包括工程项目的建立与配置、文件的添加与删除、程序的编译与调试、可执行文件的生成、程序下载等一系列操作流程。

(3)学习单片机的编程语言与简单编程。

(1)单片机的编程语言包括汇编与C两种方式。汇编写程序代码效率高,但相对难度较大,尤其是遇到算法方面问题的时候。C语言的特点是可读性高,可移植性好,容易上手。这里推荐汇编语言,因为它可以帮助学习者更好的了解单片机的硬件资源,对以后的软硬件开发应用会有很大帮助,最终选择哪种可以由学习者自己决定。

(2)单片机的编程可以根据厂商提供的配套教材或其他收集的资料等从单片机IO口学起,例如流水灯、数码管、键盘扫描,从别人的代码中慢慢掌握单片机编程语言和编程技巧。对于知识点用到才学,不用的暂时丢一边。

(4)尝试修改程序代码。尝试在源程序的基础上修改程序,将自己的想法融合在一起,构思一下架构如何来完成,慢慢寻找自己的编程思路。切忌不能受限在别人的思维里,这样你自己永远也没办法提高。

(5)尝试自己编写程序代码。最初,啥都不懂,可以抄人家的程序过来,看看每句是干什么用的,运行什么结果,很明白。但是当你自己写的时候发现不时地就会卡住,那时候才明白原来看别人的程序容易,自己写的时候就不是那么回事了,这就是差距。所以当自己能够写出来的时候,说明真的懂了。在这里需要强调一点,编写程序时,需要养成良好的写程序风格,例如程序注释、变量命名等,这是一种良好的素质,既让别人看了舒心,也减少后期的维护。

(6)深入学习。若是觉得前面的知识真的会了,就可以学习单片机的其他知识了。一般按照由浅入深地逐步学习单片机硬件使用和软件编程(从IO口简单应用、单片机内部资源、单片机外围器件控制等)。学习过程中,要多思考多问人,并总结自己在学习时遇到的问题和解决的办法。

3 学习单片机的综合应用

一般来说,经过以上的学习之后,若是觉得对单片机的基本应用已经比较熟练,就可以做一些综合性的小项目,在实际操作中举一反三,启发思维,提高单片机的应用技能。建议小项目可以从自己的兴趣出发,先简单再复杂,逐步积累软硬件经验。

4 结语

学习单片机心得体会 篇3

【关键词】单片机应用技术;工作过程;学习领域;教学情境

一、基于工作过程教学的必要性

单片机应用技术是与人们日常生活、生产密不可分的,同时又是工科专业学生必须具备的岗位基本技能。高职学生由于基础较差,理解能力不强,针对理论性较强的知识普遍出现学不懂、不愿学的现象。通过传统教学我们发现学生比较倾向于动手的训练(即实验),学生更愿意通过在实际工作中完成具体任务来获得相关知识。因此,完全打破传统学科体系,按照企业实际工作任务、工作过程和工作情境来组织课程,形成基于工作過程的学习领域课程开发势在必行。

二、基于工作过程的学习领域课程开发流程

基于工作过程的课程开发是以真实产品为载体,按照真实生产要求进行课程内容分析,从真实生产中提炼工作任务,围绕任务完成的过程来展开,关注的是“如何完成工作任务”。课程开发流程是:

1.课程设计与生产实际相结合。针对初级电子产品开发工程师岗位与企业技术人员共同研讨和分析,按岗位——典型工作任务——工作流程——职业能力——课程目标这样的链路进行课程学习领域设计。

2.选择综合贯穿项目,以产品开发工作过程为依据,根据学生的学习认知规律设计教学情境,按照由浅入深,涉及的能力点和知识点逐步增加,最后完成大型复杂的实用项目的教学规律,选取和序化教学内容。

3.在教学实施过程中,将理论和实际融为一体,使学生在学、做、说、写过程中,不仅掌握技能,而且得到工作过程的体验。

4.将企业管理制度引进考核方案,考核内容包括学习过程考核、应用能力考核、遵守制度和工作规范等方面的考核,加强学生职业能力的培养。

三、基于工作过程的“单片机应用技术”学习领域课程设计

“单片机应用技术”的学习领域课程开发是依据工作过程导向,以典型工作任务为载体,学习情境按照难易程度依次递进的思路设计的。通过该系列学习情境的实现,学生不仅能够掌握单片机硬件设计和软件设计等专业知识和专业技能,真正具备观察分析问题、理论联系实际解决问题的能力,还能够全面培养其职业规范、职业道德和纪律等综合素质。

1.教学载体设计。

本课程选择“数字温度计”项目作为教学的载体。主要原因是“数字温度计”设计涉及了单片机的内部资源使用、汇编语言程序设计、中断、定时、A/D转化、显示、键盘等单片机技术应用的主要内容。该项目知识覆盖面广、又具有一定的实用性和拓展性。

2.教学情境设计。

我们根据“数字温度计”设计进展,结合学生的的学习规律,将综合项目分为七个教学情境,每个教学情境由若干个单项工作任务支撑,通过任务训练达到学生职业能力培养的目的。

学习情境设计如下所示:

情境1:单片机简单系统(任务一:单片机简单系统设计;任务二:单片机简单系统制作)

情境2:汇编语言编程(任务三:信号灯点亮控制;任务四:简易计算器设计;任务五:流水灯控制;任务六:单信号灯控制)

情境3:日历和时钟(任务七:利用按键产生外部中断,控制LED亮灭;任务八:交通信号灯设计和调试)

情境4:键盘(任务九:4×4键盘制作)

情境5:显示器(任务十:位LED显示器的制作)

情境6:温度检测(任务十一:数字电压表的设计)

情境7:综合项目设计和调试(任务十二:数字温度计的整机调试)

情境8:综合能力迁移项目(学生自主选题)

3.教学内容序化。

遵循学生职业能力培养的基本规律,教学情境1~8实际上就是按照由浅到深、由单项到综合、由简单到复杂的学习内容的序化过程。在课程学习过程中,学生所做的项目逐步完善的同时,学生的职业能力也在逐步提高。

4.将企业管理引入教学,强化学生职业素质的养成。

通过到企业调研,我们将企业的管理制度、岗位职责和生产工艺引入教学。要求学生以企业员工的身份和态度按产品开发的流程和要求去完成项目,做的过程中根据岗位的要求和工作规范以及考核标准,作为职业素养养成的内容。通过对学生的规范管理,培养学生的职业素养,使学生在校学习与真实工作相一致。

四、学习领域教学实施

一个完整学习情境的实施包括资讯、计划、决策、实施、检查、评估6个环节。以工作任务“信号灯控制”为例,要求学生会制作电路、设计控制程序。根据教师安排,学生要完成如下任务:

1.咨询。这一阶段主要是下发设计任务书,描述项目学习目标;发放相关学习资料;学习MCS-51单片机的结构原理以及回答学生提问等环节,这个环节要求教师精心设计学习任务单。

2.计划。首先分配工作小组,制订小组工作计划;然后以小组为单位,讨论信号灯控制系统的设计与制作方案,分配设计任务,教师对方案进行指导;最后以小组为单位,选派代表阐述项目计划。

3.决策。利用小组学习法,各小组分别提出完成项目的设计方案,每个小组选1名学生上台陈述本组的实施方案,师生共同讨论后进行分析比较优化,最终选定合理、科学的最佳方案进行实施。在这个环节中,教师要适当对学生设计的方案进行分析,指出需要修正的地方,千万不能全盘否定学生的方案,以免打击学生的积极性。

4.实施。学生按照工作计划,独立完成工作任务。教师在工作任务实施过程中巡回指导,给予必要的知识补充。在这个环节学生要完成信号灯控制系统的硬件设计、硬件制作和软件设计和调试。

5.检查。项目完成后,针对最初下达的工作任务要求进行核对,检查项目完成情况,如有不符的情况,进行分析和修改。最后学生分组对工作过程和结果写出工作报告。

6.评估。评估分为过程与结果评价、资料整理和提升。过程与结果评价分小组自评、小组互评和教师评价三个方面。资料整理和提升主要是学生根据互评和教师评价的建议优化方案,并且整理项目所有资料,将相应资料归档。

五、学习领域课程考核

学习领域课程主要以过程考核为主,课程考核涵盖项目任务的全过程。本课程的考核内容包括学习过程考核、应用能力的考核、遵守工作制度和工作规范等方面的考核。课程考核成绩由综合项目(学习情境1~7)和综合能力迁移项目(学习情境8)两部分组成。

学习情境1~7每个项目10分,共70分,评分标准如下:

要培养出创新的人才,就要创新人才培养模式。“单片机应用技术”课程改革适应高职教学的需要,适应未来职业的需要。

作者简介:

单片机学习心得 篇4

计算机科学与技术

学号:

单片机是一门应用性和综合性很强的学科,它综合了电子技术中的模拟电路和数字电路方面的知识,特别是数字电路,因为数字电路在里面的应用很多。学习单片机最好先从汇编语言入手,虽然汇编语言是低级语言,编程效率低,但它比C语言占用内存小,执行速度快等优点,在刚接触单片机时更容易学习。由于单片机涉及的知识很多,所以我们只能循序渐进的学习,逐步的积累,没有什么捷径可循。

刚开始学习的时候,对单片机没有什么认识,不知道什么是单片机,更不知道它有什么作用。通过学习才大体知道了单片机的一些知识。由中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口、定时器/计数器以及串行通信接口等集成在一块芯片上,构成了一个单片微型计算机,简称为单片机。它的应用范围很广,在工业自动化中应用有数据采集、测控技术。在智能仪器仪表中应用有数字示波器、数字信号源、数字万用表、感应电流表,自动取款机等。在消费类电子产品中应用有洗衣机、电冰箱、空调机、电视机、微波炉、手机、IC卡、汽车电子设备等。在通讯方面应用有调制解调器、程控交换技术、手机、小灵通等。在武器装备方面应用有飞机、军舰、坦克、导弹、航天飞机、鱼雷制导、智能武器等。学习单片机要投入大量的时间,如果只想速成,几乎是不可能的。由于单片机涉及的知识面很广,不可能在朝夕间就学会,只能一点点的积累。不积跬步,无以至千里。只有当你一步步去学习、去积累之后,你的单片机水平才会提高。学习过程中还要注重理解,要逐渐养成自己的编程思路,在编程过程中还要注意细节问题,如果因为粗心大意将程序写错,将会无形间给自己带来更大的工作量,随着学习的深入,我们编写的程序将越来越长,如果出现很多错误,在

改错时将会很麻烦,出错越多你改的时间将会越长,就会无形间给自己带来更多麻烦。

单片机(micro control unit)是一种集CPU、RAM、ROM、I/O、中断、定时/计数等功能为一体的完整的计算机,只需外加主频振荡器和电源,灌入应用程序就可以实现一定的功能。单片机的的应用特点是“面向测控”。因此,它必须有强力的信息处理、检测、控制的功能。学习使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编指令系统或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。

一、总线:我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各 器件之间的工作必须相互协调?所以就需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线线,则线的数量将多得惊人,所以在微处理机中引 入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线 上,即相当于各个器件并联起来,但仅这样还不行,如果有两?器件同时送出数据,一 个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是是不允许的,所以 要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有 多个器件同时接收)。器件的数据线也就被称为数据总线,器件所有的控制线被称 控制 总线。

在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配 地址,才能 用,分配地址当?也是以电信号的形?给出的,由于存储单元比较多,所以,用于地址分的线也较多,这些线被称为地址总线。

二、数据、地址、指令:之所以将这三者放在一起,是因为这三者的本质都是一样的─数字,或者说都是?串‘0’和‘1’组成的序列。换言之,地址、指令也都是数据。指令由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的 一一对应关,不可以由 单片机的开发者更改。地址:是寻找单片机内部、外部的存储 单元、输入输出口的依据,内 存单元的地址值

已由芯片设计者规定好,不可更改,外部的 单元可以由单片机开发者自行决,但有一些地址单元是一定要有的(详见程序的执行过 程)。数据:这是由微处理机处理的 象,在各种 不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况:

1地址(如MOV DPTR,#1000H),即地址1000H送入DPTR。

2方式字或控制字(如MOV TMOD,#3),3即是控制字。

3常数(如MOV TH0,#10H)10H即定时常数。

4实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执 兄 令:MOV P1,#00H)这里0FFH和00H都是实际输出值。又如用于LED的字形码,也是实 际?出的值。理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指 令来 行了。

三、P0口、P2口和P3的第二功能用法 初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间 要有个切换的过程,或者说要有一条指令,事实各端口的第二功能完全是自动,不需要指令来转换。如P3.6、P3.7分别是WR、RD信号,当微片理机外接RAM或有外部I/O口 时,它们挥作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从 P3.或P3.7送出,不需要事先用指令说明。事实上‘不能作为通用I/O口使用’也并不是‘不能而是(使用者)‘不会’将其作为通用I/O口使用。你完全可以在指令中按排一条S ETB P3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使用者不会 这么做,因为这通常这会导致系统当溃(即死机)。

四、程序的执行过程 单片机在通电复位后8051内的程序计数器(PC)中的值为‘0000,所以程序总是从‘0000’单元开始执行,也就是说:在系统的ROM中一定要存在‘0000’个单元,并且在‘0000’单元中存放的一定是一条指令。

五、堆栈 堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的 一份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且 堆栈有特 的数据传输指令,即‘PUSH’和甈OP’,有一个特殊的专为其服务的单元,即堆栈指 针SP 每当执一次 PUSH

指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原 来值基础上)动减1。由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP值,就可以把堆栈设置在规定的内存单元中,如在程序开始时?用一条MOV SP,#5FH指令,就时把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元 开始往后8H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的浑乱

六:中断

当单片机应用于测控系统时,实时性就显得特别重要了。而中断技术就是处理这种实时性要求高的场合。单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。中断功能是需要合理控制的,在使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等。中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情。这就是中断功能的强大之处。

七:汇编语言与C语言

汇编指令有自己的一套繁琐的指令系统,不容易熟练掌握,编写程序不得不注意硬件细节。相对于C语言,汇编语言也有不可忽略的优势,就是在某些特殊场合需要高效的,占用存储空间小的地方。但随着技术的发展硬件的限制越来越小,C语言比较好理解,通用性和可移植性都很不错。也不用记专门的指令集合来,所以我还是比较倾向于用C编写程序的。

接触单片机已经有一段时间了,我感觉自己动手学习编写程序,调试然后在开发板上做学习的很快,看到自己看到的结果通过自己亲手做出来的感觉很有成功感。

有时候单片机的学习很单调,有些知识学起来很抽象,不容易理解,只能慢慢适应,一边学习理论知识,一边编写程序,将程序刷入单片机进行调试,通过这种方式才能更快速的学习单片机。同事也会从学习中体会成功的喜悦。

看门狗程序

看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位.防止MCU死机.看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗。硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。那么定时时间到后就会使单片机复位。、本程序通过按键喂狗防止溢出复位 看门狗演示程序

在16383个机器周期内必须至少喂狗一次

标准AT89s52单片机试验通过。-----------------*/ #include

sfr WDTRST = 0xA6;

sbit K1 = P3^0;sbit K2 = P3^1;sbit LED1=P1^1;sbit LED2=P1^2;

void DelayUs2x(unsigned char t);//us级延时函数声明

void DelayMs(unsigned char t);//ms级延时

/*-----------------

主函数

-----------------*/ main(){

LED1=0;

DelayMs(100);

LED1=1;

DelayMs(100);

TMOD=0x01;

TH0=0xc6;

//定时16ms

TL0=0x66;

EA=1;

ET0=1;

WDTRST=0x1e;

//在程序初始化中激活看门狗。

WDTRST=0xe1;

//先送1E,后送E1

if(K1==0)

{

TR0=1;

}

while(1)

{

if(K2==0)

{

TR0=0;

}

LED2=1;

LED1=1;

DelayMs(100);

LED2=0;

DelayMs(100);

} } /*-----------------

定时器中断函数

-----------------*/ void Time0(void)interrupt 1 {

TH0=0xc6;

//定时16ms

TL0=0x66;

WDTRST=0x1e;

//喂狗指令

WDTRST=0xe1;}

/*-----------------uS延时函数,含有输入参数 unsigned char t,无返回值

unsigned char 是定义无符号字符变量,其值的范围是

0~255 这里使用晶振12M,精确延时请使用汇编,大致延时

长度如下 T=tx2+5 uS

-----------------*/ void DelayUs2x(unsigned char t){

while(--t);} /*-----------------mS延时函数,含有输入参数 unsigned char t,无返回值

unsigned char 是定义无符号字符变量,其值的范围是

0~255 这里使用晶振12M,精确延时请使用汇编-----------------*/ void DelayMs(unsigned char t){

while(t--){

//大致延时1mS

DelayUs2x(245);

单片机学习心得 篇5

熟悉单片机的人都明白,要学好单片机可不是一件容易的事,倒不是因为单片机很难学,而是很难找到一本专为单片机入门者而编写的教材。翻一下身边的单片机教材,都好像是为已经懂单片机的人而写的,一般先介绍单片机的硬件结构和指令系统,再是系统扩展和外围器件,顺便讲一些应用设计(随便说一下,很多书中的电路设计已经过时,并且有些程序还是错误的)。如果按照此种学习方法,想进行产品开发,就务必先把所有的知识全部掌握了才能够进行实际应用。学习使用单片机只能靠循序渐进的积累,下面就本人学习单片机的过程和经验做简要介绍。

首先,学习单片机要有必须的基础:电子技术方面要有数字电路和模拟电路等方面的理论基础,个性是数字电路;编程语言要求汇编语言或C语言。要想成为单片机高手,推荐初学者首先学习汇编语言,学的差不多的时候,转入C语言学习。尽管汇编语言属于低级语言,编程效率低,但是较C语言具有目标代码简短,占用内存少,执行速度快等优点,更重要的是能使初学者尽快熟悉单片机的内部结构,并能对其进行精确的控制。汇编语言在单片机教材里面都会涉及,不需要单独购买教材和学习。C语言是一门学问,有很多专业书籍来讲解,并且对我们今后的编程生涯有绝对的好处,因此要深入学习,千万不要自以为看了某某的视频教程就以为掌握了C语言,那只是C语言的一部分。在那里给大家推荐一本单片机C语言程序设计参考书,马忠梅等著,北京航空航天大学出版社出版的《单片机的C语言应用程序设计》,要求C语言基础。如果没学过C语言,推荐学习清华大学谭浩强编写的C语言程序设计,这本书写的不错,通俗易懂。

其次,是单片机教材选取。单片机是一门十分重视实践的技术,不能总是看书,但要学习它首先应看书,对单片机引脚、内部结构、寄存器和原理有必须地了解和感官认识,它的是怎样工作的,能干些什么?刚开始时,也许你看不明白,但这并不要紧,因为你还缺乏实践经验。此刻单片机应用广泛,因此各个厂家分别推出了自己的单片机,按内部结构体系派系分:51系列、PIC系列、AVR系列、摩托罗拉等等……我们没必要每样都学!因为他们的编程方法和调试过程以及内部指令结构有必须的相似,只要学精通一款就OK了!尤其是用C语言编程,就几乎不用分什么派系,但是我们要选取一款有代表性的知识范围广,并且入门容易,书籍多。一般来说,MCS-51系列单片机已经得到广泛的普及和应用,市场上它的资料也比较多,用的人也很多。给大家推荐一些参考书,学习时只需要一本就足够拉。书名:《新编MCS-51单片机应用设计》,哈尔滨工业大学出版,作者:张毅刚;书名:《单片机原理及应用》,高等教育出版社,作者:张毅刚等;书名:《单片机高级教程:应用与设计》,北京航空航天大学出版社,作者:何立民。相关教材还有很多,在这不一一列举。

然后,是开发工具和开发环境的选取。选取一块适宜的学习板,对于初学者来说一般无力理解,如果经济条件允许、本人又对单片机很感兴趣、有从事相关工作意向的话,鼓励大家购买。随便说一句,学习板功能要求太全,具有流水灯、数码管、独立键盘、矩阵键盘、AD或DA、液晶、蜂鸣器等就差不多啦,毕竟,功能齐全的价格比较高。仿真器对单片机初学者来说既是那么耳熟,同时又有些陌生,这主要是因为市场上传统的仿真器价格都在千元以上,对经济不是十分宽裕的人来说是不小的开支。同时仿真器是用来提高调试程序效率的,也不是非需不可的,如果你没有仿真器,遇到程序出错的时候,只好苦思冥想,反复烧写调试。随便推荐一下,学林电子的51tracer仿真器,有兴趣的朋友可关注一下。有了单片机教程板以后,先看下指导说明书,熟悉一下学习板,开卷有益。以后就得靠自己多练习了,将学习板与电脑连接好,先学会开发软件的使用,然后从最简单的流水灯实验做起,按照你自己的意愿控制流水灯,当你完成时,你会发现这是多么惬意的事情。太好玩了,你会觉得这不是在学习,而是在玩,当你发现,单片机能够按照你编写的程序工作时,你会觉得十分兴奋,比做什么事情都开心,这样你会慢慢迷上单片机,真的。不少网站上说搞

定某个实验,就恭维的告诉你一声”恭喜你,学会了”自己学会了单片机,这有点可笑,这只能说明你算过关了,对单片机有了必须了解和会使用它了。但是单片机能完成的功能太多了,尤其是对外围器件的控制,综合起来能设计出许多意想不到的产品.因此除了入门外,精通可千万别轻易说出口。

最后,在熟练掌握和应用后,那能够说对于单片机方面的硬件你已经入门了,剩下的就是自己练习设计电路,不断的积累经验。最终,自己完全设计具有个人风格的电路,产品,这样你就是单片机高手拉。只要过了第一关,后面的路就好走多了,万事开头难,大家可能都听过。时下多家电子类的报刊杂志如:《电子制作》《无线电》《电子报》《电子世界》都开设了详细的单片机教程专栏,对于想学习单片机的朋友来说帮忙很大,能够说此刻的单片机教程环境是最好的,有网络,有书籍,有报刊杂志,还有视频教程,元件的采购方面也十分充足,相关的器材又多有便宜。如果每一天能抽出两小时的时间去学习,快的一个月,慢的三个月就入门拉。

以下是一些经验:

(1)学习单片机没有捷径,别指望两三天就学会,要坚持不懈,重在积累。

(2)别崇拜高手,别相信天才,大部分人都不是天才(相信你也不是)!

(3)单片机是一门应用性和实践性很强的学科,要多动手,多做实验。

(4)要学会参考别人的程序,减少自己琢磨的时间,迅速提高自己的编程潜力。

(5)碰到问题能够借助网络来搜寻答案和对自己有帮忙的问题,能够大大减少你的开发时间。

(6)要多交一些朋友,多交流。技术是靠不断的积累和交流才会进步的,封闭自守只会更加落后。

北邮单片机学习心得 篇6

电子工程学院

其实就在不久前,我对单片机的认识还只是停留在它是一块能够进行有限运算和控制的,小型化的,成本低的芯片还有一些外设口的集合,通常用于一些低端的家电产品,因为我有接触过计算机软件的设计,例如运用C语言、C++、Java语言开发一些简单的小程序,在我的直观印象里,单片机的运用和程序设计应该不会比计算机软件的设计与开发难,毕竟计算机比单片机要复杂得多。可是,当我真正接触到单片机,真正触碰并且尝试让它按照我的要求运转起来的时候,往往事与愿违,这时候开始我才真正感受到单片机程序设计与开始的看法大相近庭,也是从这时候起,我才算真正理解并且体会到单片机的魅力。

单片机的诞生可以追朔到20实际70年代,在1970—1974年之间,诞生了第一代4位单片机,这一类单片机就已经具有了并行I/O(输入输出)接口以及一些常用的A/D(模拟信号到数字信号转换)和D/A(数字信号到模拟信号转换)等资源。随后,潘多拉的盒子边打开,人能认识到单片机的潜在能力和市场价值,在1974—1978年,单片机进入8位时代,此后,单片机进入了高速发展的时代,在此后短短10年内,单片机的工作频率、硬件资源和RAM/ROM容量等都有极大的突破,创新地加入了串口通信接口及多级中断处理系统,其中以Intel公司的MCS-51为代表,51系列单片机以其强大的可重复编程能力和高的性价比等优点而得到广泛的应用,在家电产品,例如电视、电话、冰箱、空调、洗衣机、家用防盗报警器等,还有随身影音设备,例如MP3、MP4、录音笔等,以及电子玩具、几点一体化设备、数据通信、测控设备等领域都能见到它的身,所以掌握单片机已经成为学习、从事电子专业的必备能力。

单片机的发展到现在,称其为一个小型的计算机已经一点也不为过了,单片机集成了一个计算机应有的各个模块,但是它的使用方法和计算机有着很大的区别,在学习之处,由于没有注意到这一点,而仍然简单的按照自己之前运用C语言在计算机上编程的思想与方法去操作它,发现它就像不受控制一样,完全不能按照自己程序设定的套路运行,让我很是头疼,这个问题困扰了我很久,知道我了解了单片机的工作原理之后。

单片机虽然是“微型计算机”,但是它毕竟不是计算机,它的编程方法自然与我们现在接触到的计算机不同,单片机可以看成是一台资源“极其”有限的计算机,正由于这个原因,单片机的运行机理和控制与普通的软件编程有着天壤之别。

首先,我第一个觉得单片机编程与计算机编程有着很大不同的是:单片机的系统时钟,时钟是单片机的生命,而在计算机软件编程中,我们从来不用考虑时钟这一回事,这让我第一次接触单片机编程时候很是茫然,时钟它就像单片机的心脏,规定了单片机运行的节拍,所以任何单片机程序编程的设计中,时钟如何设置,应该是首要考虑的事情,单片机的时钟分为主系统时钟、辅助系统时间、外部时钟等,而且每一个模块的时钟都可以再经过分频器分频产生各种不同的时钟组合,时钟的快慢直接影响到单片机的性能、运行速度和精度,尤其是在采样的时候,选择一个合适的时钟是我们得到可靠的采样数据的最基础的保障,也是让单片机工作在一个既满足工作需求又能节约能耗的基础。

再者,单片机的程序结构也与计算机软件程序结构有着很大的不同,单片机的程序一般为初始化加上一个死循环,这起初让我很那一理解,一个死循环,并且死循环里一般都没有多少操作语句,这样单片机怎么能完成那么强大的功能能呢,而且让程序进入一个死循环,这在计算机编程中都是极力避免的,然后,后来才发现单片机程序主体结构设计为这样的奇妙之处,这也是单片机为何能被称为低功耗,甚至超低功耗的原因,也是模块化程序结构的精华所在,而单片机如此美妙的缔造者,就是它的:中断。

真正懂得单片机的人都称,如果你不会用中断,那么你就根本不会单片机,单片机主程序里就是一个简单的死循环,那么它是如何完成那么多强大的功能(例如A/D、D/A、计时、通信等)呢?这多亏了单片机的中断机制,中断的概念来自于现实生活,某人正在打扫房间,突然电话响了,这个人便要接电话,接完电话后再回来打扫房间。这个过程便是“执行主程序(打扫房间)——中断(电话响,接电话)——中断返回(继续打扫房间)”的过程,单单片机CPU正在执行程序的过程中,如果外部硬件或内部组件有紧急的请求,此时中断系统可以将当前的程序暂停,优先处理中断请求。当中断请求处理完毕的时候,再返回来继续执行主程序。有了中断系统,便可以使单片机具备对外部的异步事件进行处理的能力。所以,主程序虽然是个死循环,但是每当外界有中断请求的时候,它就跳转到中断程序中去执行,所以我们看到,大部分,也是最主要的程序一般都位于中断服务程序中,这样,单片机的各个模块既能单独地并行地互不干扰地运行,又能够保证主程序顺序执行,这样就发挥了模块化程序设计思想的高效特点,并且既充分利用了各个硬件的资源,又能减少能量损耗。

最后,单片机中的对各个硬件资源的控制有严格的控制寄存器来控制,并且各个单片机都不同,所以在设计单片机并且运用它的某些硬件功能的时候,一定要仔细阅读单片机的用户手册,充分了解各个控制寄存器的设定方法时候才能正确使用其硬件,并且还要时刻注意各个硬件之间的中断的相互影响关系,否则程序运行后极容易出现让人不知所源的错误。

学习单片机心得体会 篇7

1 学习板设计思路

本学习板设计思路主要有以下几个方面:

(1) 学习板设计既要满足单片机教学中的实验要求, 又要满足学生课外的学习需求。

(2) 学习板体积小, 实现串口下载和USB下载供电一体化, 只要有电脑即可使用。

(3) 学习模块布置合理, 直观明了, 便于学生观察实验现象, 提升课堂教学效果。

(4) 适于教师采用项目教学或者理实一体教学。

2 学习板硬件组成

本学习板的硬件组成, 如图1所示:

本学习板的硬件设计思路如图1所示, 核心控制元件采用MSC-51系列单片机, 典型的如STC89C51或者STC89S51都可。整个硬件电路中, 重点介绍单片机最小系统, 或者称为最小应用系统, 是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说, 最小系统一般应该包括:单片机、晶振电路、复位电路。如图2所示。

(1) 复位电路:由电容串联电阻构成, 由图2并结合“电容电压不能突变”的性质, 可以知道, 当系统一上电, RST脚将会出现高电平, 并且, 这个高电平持续的时间由电路的RC值来决定。典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位。所以, 适当组合RC的取值就可以保证可靠的复位。一般推荐C取10u, R取8.2K, 当然也有其他取法的, 原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。

(2) 晶振电路:典型的晶振取11.0592MHz (因为可以准确地得到9600波特率和19200波特率, 用于有串口通讯的场合) /12MHz (产生精确的uS级时间, 方便定时操作) 。

(3) 单片机:可以采用51系列兼容单片机芯片。特别注意:对于单片机31脚 (EA/Vpp) , 当接高电平时, 单片机在复位后从内部ROM的0000H开始执行;当接低电平时, 复位后直接从外部ROM的0000H开始执行。

由单片机最小电系统为基本单元, 外加其他的硬件电路, 就能实现单片机的各种控制功能。

3 学习板实验实现

下面举例验证学习板的实验功能。

霓虹灯是我们在生活中常见的一种现象。例如许多城市的商场、饭店、宾馆等地方, 用霓虹灯来吸引来来往往人群的眼球。这些不同颜色, 不同形状的霓虹灯给我们的生活增添了许多色彩。那么, 制作简单的霓虹灯的原理是什么呢?用LED如何来制作霓虹灯?

在教学中, 以设计完成一种霓虹灯为任务来展开。

1.任务简介

LED的发光形式有很多种, 常见的霓虹灯发光现象有:长亮、闪烁和流动。将这几种现象组合穿插, 就能得到各种各样的霓虹灯。

2.任务设计

霓虹灯设计制作主要完成以下2项: (1) 单片机最小系统的设计制作; (2) LED灯形状阵列的设计。

(1) 基于AT89S51单片机最小系统的硬件设计, LED发光驱动的实现。

(2) LED灯形状阵列的设计。LED的发光颜色有很多种, 发光形状也不尽相同, 在具体的设计过程中, 可以依据自己的思路来设计, 避免千篇一律。

(3) 用软件延时的方法模拟霓虹灯原理, 要求:

a.左循环点亮发光二极管 (每个二极管的点亮持续时间为0.2s) , 循环16次。

b.所有发光二极管同时亮灭 (亮灭持续时间均为0.2s) , 循环16次。

c.右循环点亮发光二极管 (每个二极管的点亮持续时间为0.2s) , 循环16次。

d.所有发光二极管同时亮灭 (亮灭持续时间均为0.2s) , 循环16次。

从1到4循环执行, 实现模拟霓虹灯的效果。

(4) 硬件电路, 如图3所示。

(5) 程序设计流程图, 如图4所示。

(6) 任务参考代码

参考程序如下:

3、任务调试

单片机C语言学习心得 篇8

8.1 在定义的时候,*ap中的‘*’是指针类型说明符;

在进行指针预算时,x = *ap 中的‘*’是指针运算符。8.2 如果在已定义好的指针变量,并引用,即

int *ap, int a;ap = &a;则在进行指针运算的时候:

(1)*ap与a是等价的,即 *ap就是a;

(2)&*ap:由于*ap与a等价,则&*ap与&a等价(地址);

(3)*&a:由于&a = ap,则*&a与*ap等价,即*&a与a等价(变量);(4)*ap++相当于a++。

8.3 指向数组的指针变量的定义,应用,赋值:

int a[10];int *app;则有两种方法:app = &a[0];或 app = &a;(1)app+I 或a+i就是数组元素a[i]的地址;(2)*(app+i)或 *(a+i)就是元素a[i]中的内容;

(3)指针变量也可以带下表,即app[i]与*(app+i)等价。8.4 数组和指针可以互换,但在代码执行的效率上却大不相同。用数组找元素必须每次计算元素的地址,效率不高;而用指针则直接指向某个元素,不必每次计算地址,可以大大的提高运算效率。8.5 关于指针的运算:

(1)p++(或p+=1):使指针p指向下一个数组元素,地址加1;

(2)*p++:先得到p指向的变量值,再执行p加1,指向下一个数组元素;(3)*++p:先使p加1,指向下一个数组元素,再去p指向的变量值;(4)(*p)++:表示p指向的变量值加1;

(5)若p指向当前数组中的第i个元素,则:

(p--)与a[i--] 等价:先执行*p,然后p自减;(++p)与a[++i] 等价:先执行p自加,再执行*p;(--p)与a[--p] 等价:先执行p自减,再执行*p。

8.6 指向多维数组:

定义一个二维数组:a[3][4];定义一个指针变量:(*p)[4];(注意:列数相同(第二维相同))使指针变量指向数组:p = a;此时: p与a等价:指向数组a[3][4]的第0行首地址;

p+1与a+1等价:指向数组a[3][4]的第1行首地址; p+2与a+2等价:指向数组a[3][4]的第2行首地址;

而:

*(p+1)+3与& a[1][3]等价,指向a[1][3]的地址;

*(*(p+1)+3)与a[1][3]等价,表示a[1][3]的值; 一般的:对于数组a[i][j]来讲,有

*(p+i)+j相当于&a[i][j],表示第i行第j列元素的地址; *(*(p+i)+j)相当于a[i][j],表示第i行第j列元素的值。

8.7 指向结构体:

如果指针p指向结构体数组msg1[0]的首地址,则:

(1)(*p).flg与p->flg和msg1[0].flg三者完全等价,即(*p).成员名 与p->成员名 以及 结构体数组元素成员名三种形式是等价的;

(2)p+1:使指针指向结构数组msg1[0]的下一个元素msg1[1]的首地址;(3)由于指向运算符->的优先级高于自加运算符++,则:

(++p)->flg:先使p自加1指向msg1[1]的地址,再指向msg1[1]的flg成员值;(p++)->flg:先得到msg1[0].flg的值,再使p自加1指向msg1[1]的首地址;

学习单片机感想 篇9

在2003年最初接触单片机的时候,在我心中觉得51就是单片机,单片机就是51,根本不知道还有其他单片机的存在。那时候老师只教会了我们汇编语言,根本不知道用C语言也可以进行单片机开发。幸运的是,我加入了单片机兴趣小组,在老师的指导下,做了一系列实验,有“基于DS18B20的温度采集系统”、“有基于164的移位寄存器的灯光控制系统”、“有步进电机和直流电机的控制系统”。这时候我才发现,这是学习单片机的一个最好途径——在实践中领悟理论,用理论指导实践。在上课的整整一个学期中,虽然老师讲得很详细,但是大部分概念都是到了实际动手做东西的时候才弄明白的。而且在经历了迷惑之后再搞清楚,印象就特别深刻。直到现在我对那些概念和接口都非常清晰。其实我也很庆幸学习和使用了两年多的汇编语言。由于有这些锻炼,我对单片机底层结构和接口时序就弄得很清楚。在使用C语言开发的时候,优化代码和处理中断也就不会太费劲。我觉得,虽然现在绝大部分单片机开发都使用C语言,甚至有些公司还推出了图形化编程的工具,这样对于项目的开展从时间上快了很多,在管理上也规范了不少,但是从学习和想深入掌握单片机精髓的角度来说,还是需要熟练掌握汇编语言的使用。

机会总是青睐于有准备的人。也许有了前面一段时间的理论和实践的积累,我才慢慢得到了一些参加科技竞赛和参与科研项目的机会。在参加第一届浙江省机械设计竞赛的时候,我们设计的由多单片机系统协调控制的“月球车”机器人夺得了唯一的一个特等奖。这个竞赛给我最大的收获是我对单片机的认识改变了,它不再仅仅是一门学科了,它是一个可以让你的创意得到充分发挥的平台。后来参与了“基于视频分划技术的钢卷尺自动切零位机”、“电能表涡杠涡轮啮合深度检测系统”、“基于公共电话网的水表集抄数据路由器”、“高精度电感微位移测量系统”等一些实际的项目。在这些过程中,我发现只是精通单片机技术还不能很好的解决问题。体会最深的是,单片机只有融合到各种应用领域中,才能展现它的最大活力。然而单片机仅仅是一个工具而已,要做好单片机系统还需要各种应用领域的专业知识的支持。例如,在“基于视频分划技术的钢卷尺自动切零位机”中,就需要搞清楚全电视信号的时序,弄明白钢卷尺切零位机的工作原理,懂得怎么利用叠加在视频信号中的横竖线来进行刻度的瞄准等。没有这些专业知识,就算单片机技术再厉害也不可能做好这个项目。脱离应用背景的单片机开发,就像一个没有灵魂的躯体一样。

随着ARM的出现,我曾经认为,8位单片机可能在32位单片机的冲击下就此走进历史,可是很快就认识到我是错误的。随着技术的革新和时间的推移,各大单片机公司纷纷将单片机朝着片上系统这个方向发展,集成了现在各种流行的技术和常用的模块。我相信,在当前国内和国外的这个市场中,8位单片机应用的市场仍然是充满生机,活力无限。在市场的不断变化和技术的不断更新过程中,8位单片机也会顺应潮流不断革新。

从我五年走过的路来看,单片机学习的过程应该是一个循序渐进、不断学习、不断积累的过程,可以分为三个阶段。

第一阶段:掌握开发单片机的必备基础知识。首先是熟练掌握单片机的基本原理,其实各家各门的单片机其基本结构和原理都差不多,特别是共有的知识需要好好理解和掌握。例如,内核结构、内存分配、中断处理、定时计数、串行通信、端口复用等一些最基本的概念和原理。除此之外,我们还需要具备模拟电子、数字电子、C语言程序开发知识以及原理图和PCB

设计等一些技能。在进行系统开发的时候,进行原理设计、PCB布板、程序编写、系统联调这些工作都是在所难免的。

第二阶段:在掌握好一款单片机原理和应用的基础上,开始学习其他各家单片机的独有技术,学不了那么多也要多了解了解。同时尽可能多地掌握单片机的一些外围器件和常用电路,以备不时之需。有时候客户要求低成本,那我们只好选用合钛、义隆、华邦等这类台湾芯片;如果客户要求工业级的性能,那么我们就得从PIC、NEC、飞思卡尔、NXP等这些欧美和日式单片机中选择;若要进行功耗的开发,选用MSP430系列应该有一定优势;在进行测量仪器设计的时候,C8051和AduC842这类数模混合芯片就显得比较方便。所以说最好每个类型的单片机都会一两款,在实际项目选型中可以更加灵活。另外,要注意平时的技术积累。比如,在项目开发过程中将一些常用的接口程序和控制算法整理成模块或者函数,在其他的项目开发中,有同样或者接近的需求时马上就可以使用,又快又好。

第三阶段:在实际的项目开发过程中,不断深化单片机应用技术,不断积累应用行业的专业知识。例如,我完成了“高精度电感微位移测量系统”,就会对电感传感器的测量机理和信号特性、测量电路的设计、电磁兼容处理、误差修正和非线性处理等测控方面的专业技术有很深的认识。以后碰到类似的项目时,很多东西就可以直接利用了。有了扎实的单片机应用相关的基础知识,并且熟悉掌握了几款不同类型单片机的开发方法,再结合实际的应用背景,那么就可以随心所欲,设计出性能最优、结构最合理的单片机应用系统。这是我最大的奋斗目标,我觉得这也应该是单片机应用的最高境界吧。

学习单片机心得体会 篇10

目前, 我国各高等院校的理工学科中, 单片机课程做为一种专业基础课程。在单片机的课堂教学中, 利用C语言编写程序和利用汇编语言编写程序都是单片机教学中不可缺少的重要部分。C语言做为一种高级语言, 具有可移植性强、硬件依赖性弱等优点, 是很多单片机编程者的优先选择。但要真正学好单片机课程, 汇编语言是不能缺少的重要内容, 学好汇编语言, 对单片机硬件的理解和内部结构非常有帮助。因为汇编语言指令有111 条, 如果不找出其中的一般规律, 对于初学者来说将是一个巨大的挑战。本文从汇编语言按照功能划分的5 大类指令入手, 分别对各类指令的一般规律进行总结, 希望对初学者有所启发。

1 MCS-51单片机的指令系统

MCS-51 系列单片机中汇编指令按照各类指令的执行功能进行分类, 分别有数据传送类

指令、算术运算类指令、逻辑运算类指令、控制转移类指令和位操作指令。每类指令的功能各不相同。

在讲解汇编指令之前, 要认识在汇编指令中出现的一些常用符号, 最常见的符号有A、Rn、@Ri、direct和#data, 在这些符号中, #data是立即数, 可以直接把立即数取出进行相应操作;累加器A、工作寄存器Rn和直接地址direct中都可以放数据, 可以从这些单元中存取数据;@Ri是寄存器间接寻址方式, 要从@Ri中取数据的话, 需要中间经过两个步骤, 第一步先找到数据所存放的地址单元, 第二步再根据地址把地址中的数据取出, 所以是间接找到数据的方式。学习了常见符号后, 需要掌握汇编指令的基本格式, 任何一条汇编指令都是按照基本格式进行编写的。下面分别从汇编指令的5 大类指令入手, 提出每类指令的一般学习规律。

首先, 对于数据传送指令来说, 这类指令的功能是进行数据传送, 通俗来说就是将数据从一个地址单元传送到另一个地址单元。共有28 条指令组成。分为内部数据传送指令、外部数据传送指令、堆栈指令、查表指令和数据交换指令5小类。以内部数据传送指令为例来说, 这类指令在学习中有些学生会经常用错, 但是在讲解中总结其中的规律对学生学习指令非常有帮助。内部数据传送指令中的数据都是在片内RAM单元进行操作的。其中指令的一般规律如下:

(1) 内部传送指令中操作码必须是MOV, 源操作数可以是A、Rn、@Ri、direct和#data;目的操作数是A、Rn、@Ri、direct。指令中的数据是从源操作数单元中取出, 通过内部传送指令操作码MOV, 将数据再存放到目的操作数中。所以在内部传送指令中, 源操作数单元最终目的是要取出数据, 而目的操作数单元最终目的是要存放数据, 因此符号#data不能做为目的操作数, 只能做为源操作数。

(2) 内部传送指令中源操作数和目的操作数可以是符号A、Rn、@Ri、direct中任意两个符号的组合, 并且这4个符号都可以为源操作数和目的操作数, 是双向的, 但是Rn、@Ri这两个符号的组合除外。这4 个符号和#data组合时, #data只能在源操作数位置。

(3) 在内部传送指令中有2 个特殊指令, MOV direct1, direct2 和MOV DPTR, #data16。第一条指令功能是把直接地址2 中的数据传送给直接地址1;第二条指令的功能是将16 位立即数传送给DPTR。

其次, 对于算术运算类指令, 这类指令的基本功能是进行加、减、乘、除运算的。这

类指令的规律较好得出。加法和减法运算的指令共12条, 加减运算的2 个数据是A分别和Rn、@Ri、direct和#data的组合, 目的操作数是累加器A, 算术运算指令会影响到PSW。

再次, 逻辑运算指令是完成基本的逻辑运算的, 包括逻辑与、逻辑或和逻辑异或, 还有移位等指令。这类指令的学习要结合数字电路中讲解的与、或、异或等逻辑功能进行讲解。与、或、异或运算的第1 种情况的2 个数据是A分别和Rn、@Ri、direct和#data的组合, 目的操作数是累加器A;第2 种请的2 个数据是A、direct和direct、#data。控制转移指令分为无条件转移指令和条件转移指令2 类。无条件转移指令不再说明, 对于条件转移指令, 一直是汇编指令的重难点知识。条件转移指令的学习把握两点即可, 一是不同指令的条件是什么?二是条件满足时会发生转移, 条件不满足时按顺序执行程序。

最后, 对于位操作指令来说, 与前面4 类指令的最大不同就是操作对象不同, 位操作指令的操作对象是某一位, 前面4 类指令的操作对象是一个字节。字节操作指令中最常用寄存器的是累加器A, 在位操作指令中最常见的是位累加器C。位操作指令只有符号C、bit两个符号, 按照功能分为位传送指令、位逻辑运算指令和位控制转移指令。

2 结束语

MCS-51 系列单片机中汇编指令的学习中, 长期以来存在不易学、不易教的现象。做为这门课程的教师要积极采取应对措施, 不能照本宣科地讲授, 要结合这门课程的特点, 在理论课教学中及时总结相关规律, 或在课堂上利用编程软件进行软件验证等方法, 提供学生的学习兴趣, 达到较好教学效果的目的。

摘要:单片机原理及接口技术课程是各大院校电子类的专业基础课, 其中利用汇编语言编程是学好单片机的基础。经过多年的教学发现, 讲解汇编指令时不能照本宣科, 要利用每类汇编指令的基本规律进行教学, 适当通过实例加深对指令的理解。经过课堂教学证明, 能起到较好的教学效果。

关键词:单片机,汇编指令,课堂教学

参考文献

[1]邓兴成, 单片机原理与实践指导[M].北京:机械工业出版社, 2009.

[2]闫红蕾, 基于C语言和汇编语言的单片机仿真实训教学研究[J].电子制作, 2014 (20) :30-31.

[3]吴清收, 单片机原理与接口技术教材改革研究与探索[J].教育教学论坛, 2015 (38) :23-24.

上一篇:在歌声中醉生梦死作文下一篇:森林抚育补贴试点工作总结