单片机简单地理解寄存器

| 工作总结 |

【www.guakaob.com--工作总结】

单片机寄存器总结
单片机简单地理解寄存器 第一篇

单片机寄存器总结

我们知道单片机的内部有ROM、有RAM、有并行I/O口,那么,除了这些东西之外,单片机内部究竟还有些什么?这些个零碎的东西怎么连在一起的? 下面就让我们来对单片机内部作一个完整的分析吧!

从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在一个51单片机的内部包含了这么多的东西。

对图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O口的锁存器就可以了,那么对于定时/计数器,串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。事实上,我们已接触过P1这个特殊功能寄存器了,还有哪些呢?看表1

下面,我们介绍一下几个常用的SFR。

1、ACC---是累加器,通常用A表示。

这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,

为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特

殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0

则z=0。该标志常用作程序分枝转移的判断条件。

2、B--一个寄存器。

在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3、PSW-----程序状态字。这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并

作出相应的处理。它的各位功能请看表2

下面我们逐一介绍各位的用途

CY:进位标志。8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0

例:78H+97H(01111000+10010111)

AC:辅助进、借位(高半字节与低半字节间的进、借位)。

例:57H+3AH(01010111+00111010)

F0:用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。 RS1、RS0:工作寄存器组选择位。这个我们已知了。

0V:溢出标志位。运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。

P:奇偶校验位:它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。 运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。

例:某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。

4、DPTR(DPH、DPL)--------数据指针,可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。 分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作。

5、P0、P1、P2、P3------这个我们已经知道,是四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。

10、SP------堆栈指针。

堆栈介绍:日常生活中,我们都注意到过这样的现象,家里洗的碗,一只一只摞起来,最晚放上去的放在最上面,而最早放上去 的则放在最下面,在取的时候正好相反,先从最上面取,这种现象我们用一句话来概括:“先进后出,后进先出”。请大家想想,还有什么地方有这种现象?其实比比皆是,建筑工地上堆放的砖头、材料,仓库里放的货物,都是“先进后出,后进先出”这实际是一种存取物品的规则,我们称之为“堆栈”。

在单片机中,我们也可以在RAM中构造这样一个区域,用来存放数据,这个区域存放数据的规则就是“先进后出,后进先出”,我们称之为“堆栈”。为什么需要这样来存放数据呢?存储器本身不是可以按地址来存放数据吗?对,知道了地址的确就可以知道里面的内容,但如果我们需要存放的是一批数据,每一个数据都需要知道地址那不是麻烦吗?如果我们让数据一个接一个地放置,那么我们只要知道第一个数据所在地址单元就可以了(看图2)如果第一个数据在27H,那么第二、三个就在28H、29H了。所以利用堆栈这种方法来放数据可以简化操作 那么51中堆栈什么地方呢?单片机中能存放数据的区域有限,我们不能够专门分配一块地方做堆栈,所以就在内存(RAM)中开辟一块地方,用于堆栈,但是用内存的哪一块呢?还是不好定,因为51是一种通用的单片机,各人的实际需

求各不相同,有人需要多一些堆栈,而有人则不需要那么多,所以怎么分配都不合适,怎样来解决这个问题?分不好干脆就不分了,把分的权利给用户(编程者),根据自已的需要去定吧,所以51单片机中堆栈的位置是可以变化的。而这种变化就体现在SP中值的变化,看图2,SP中的值等于27H不就相当于是一个指针指向27H单元吗?当然在真正的51机中,开始指针所指的位置并非就是数据存放的位置,而是数据存放的前一个位置,比如一开始指针是指向27H单元的,那么第一个数据的位置是28H单元,而不是27H单元,为什么会这样,我们在学堆栈命令时再说明。

图2如下图

803l单片机共有21个字节的特殊功能寄存器(SFR),起着专用寄存器的作用,用来设置片内电路的运行方式,记录电路的运行状态,并表明有关标志等。此外,特殊功能寄存器中,还有把并行和串行I/O端口映射过来的寄存器,对这些寄存器的读写,可实现从相应I/O端口的输入、输出操作。

21个特殊功能寄存器不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,见下图。带*的表明是有位地址的寄存器。在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作。

由此可见,在特殊功能寄存器中,也有两套地址:字节地址和位地址。两者在地址空间上都是80H-FFH,但对字节地址只有21个字节是有效的,对位地址只有83位是有效的,可以说,它们是内部数据存储器中字节地址与位地址的不连续延伸。其他无效地址单元是不能被访问的,在使用时应加以注意。

21个特殊功能寄存器的名称及主要功用介绍如下,详细的用法在以下各节内容中予以介绍

IE、IP寄存器 作用:中断控制用

TMOD、TCON 作用:计时、定时、计数器用

【单片机简单地理解寄存器】

SCON寄存器 作用:串行传输控制

PCON寄存器 作用:省电模式操作

二,串行口的工作方式

8051单片机的全双工串行口可编程为4种工作方式,现分述如下:

1,方式0为移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也可以外接同步输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同步脉冲。

(1)输出串行数据从RXD引脚输出,TXD引脚输出移位脉冲。CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。

(2)输入当串行口以方式0接收时,先置位允许接收控制位REN。此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。

2,方式1为波特率可变的10位异步通讯接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。

(1)输出当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。【单片机简单地理解寄存器】

(2)输入在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。

3,方式2

方式2为固定波特率的11位UART方式。它比方式1增加了一位可程控为1或0的第9位数据。

(1)输出: 发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI。

(2)输入: 在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。且不置位RI。再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。

4,工作方式

方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。

单片机中的寄存器多数是八位的
单片机简单地理解寄存器 第二篇

1、89C51是一种带4K字节闪烁可编程可擦除(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位,俗称单片机。P0能够用于外部程序数据存储器,它可以被定义为数据/

89C51引脚图

地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

2、MCS-51系列单片机内部通常有 128B(位)至256B的片内数据存储器,用于一般的控制及运算是足够的,但若用于数据存储,其容量是不足的,在这种情况下,必须扩展数据存储器。MCS-51系列单片机对外提供 32 条I/O 口线,但其 P0口作为地址/数据复用口,P2口用于提供高 8 位地址,而其 P3口具有第二功能,若扩展了程序存储器或数据存储器,单片机的 I/O 口往往也不够用,有时必须进行 I/O 口的扩展。应用系统中有时还涉及到数据的输入、输出、人机交互信息等接口问题,必须进行有关接口电路扩展。

3、如果采用晶振的频率为 3MHz ,定时/计数器工作方式 0、1、2 下,其最大的定时时间为多少?

答:内部定时脉冲周期=机器周期=12/3Mhz=4us

工作方式 0:Tmax

=8192*4us=32.768ms

工作方式 1:Tmax

=65536*4us=262.144ms

工作方式 2:Tmax

=256*4us=1.024ms

一般双列引脚的,有 P0、P1、P2、P3 四个 8位输入/输出口

4、单片机中的寄存器多数是八位的,也就是每个寄存器可以放8个二进制数,每个二进制数就是一位了

单片机是时序电路,必然会有产生时序脉冲的装置,这个任务交给了晶振。本实验用的晶振是11.0592MH的,也就是每秒钟产生11.0592M个脉冲。单片机的机器周期是晶振振动周期的十二倍,也就是十二分频。一个机器周期也就是12/11.0592us大概是1us。

这里的64位技术是相对于32位而言的,这个位数指的是CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集就是运行64位数据的指令,也就是说处理器一次可以运行64bit数据, 不能因为数字上的变化,而简单的认为64bit处理器的性能是32bit处理器性能的两倍。实际上在32bit应用下,32bit处理器的性能甚至会更强,即使是64bit处理器,目前情况下也是在32bit应用下性能更强

8位处理器、16位处理器、32位处理器和64位处理器,其计数都是8的倍数。它表示一个时钟周期里,处理器处理的二进制代码数。“0”和“1”就是二进制代码,线路上有电信号,则计做1,没有电信号则为0。8位机有8条线路,每个时钟周期有8个电信号,组成一个字节。所以,随8位处理器上升至64位处理器,每个时钟周期传送1个字节到8个字节,关联到时钟速度提高到若干个千兆赫之后,处理器处理信息的能力越来越大。

89C51的片内RAM为128字节(2的8次方),因此理论上堆栈的容量最大为128字节,一个字节是8位

ISD1700系列(如ISD1730/ISD1760...)可以按键录音(按住录音按键,对着麦克风讲话就可以了),

原理上都可以被51去控制。因为语音芯片,实际是语音存储芯片,所以每个信息段都必须有一个地址码,如果你想播放哪段语音,就用51去调用这个地址,就能实现语音播放。

晶振及复位电路是每个单片机系统必须具备的电路,

本设计的晶振采用的是11.0592M晶体振荡器,此晶振比较常见,易于购得。因此,在设计中,使用11.0592M的晶振与2个30P的瓷片电容组成单片机的晶体振荡电路,为单片机的正常工作提供了振荡信号。

2.4 单片机最小系统

本系统采用的STC89C51 RC 单片机构成的最小系统简单、可靠。用STC89C51 RC 单 片机构成最小应用系统时,只要将单片机接上电源电路、时钟电路和复位电路即可。 STC89C51 RC 单片机主要电源电压操作范围为4.0~5.5V,所以本设计采用5V。 STC89C51 虽然有内部振荡电路,但要形成时钟,必须外部附加电路。STC89C51 RC 单片机的时钟产生方法有两种。内部时钟方式和外部时钟方式。本设计采用最常用的内 部时钟方式,利用芯片内部的振荡电路,在 XTAL1、XTAL2 引脚上外接定时元件,内部 的振荡电路便产生自激振荡,即用外接晶体和电容组成的并联谐振回路。振荡晶体可在 1.2MHZ 到12MHZ 之间选择。电容值无严格要求,但电容取值对振荡频率输出的稳定性、 大小、振荡电路起振速度有少许影响,一般可在 20pF 到 100pF 之间取值。所以本设计中,振荡晶体选择 12MHZ,电容选择 30pF。

在设计印刷电路板时,晶体和电容应尽可能 靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠地工作。 STC89C51 RC 单片机通常采用上电复位和按钮复位两种方式。上电复位是利用电容 充电来实现的,即上电瞬间RST 端的点位与Vcc 相同,随着充电电流的减少,RST 端的 电位逐渐下降。只要Vcc 的上升时间不超过1ms,振荡器建立时间不超过10ms,当RST 端保持至少两个及其周期为高电平时,就能完成复位操作。但是,为了在程序运行时也 能可靠地使单片机复位,所以通常还要设置按键复位的功能,在程序运行时,通过复位 按键强制单片机进入复位状态。所以,在本系统中,采用上电复位与按键复位的复合电路

复位

AT89C51单片机在启动时都需要复位,使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内部的斯密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如RST引脚上有一个高电平并维持2个机器周期(24个振荡周期),则CPU就可以响应并将系统复位。上图为手动复位电路,通过接通一按钮开关,使单片机进入复位状态【单片机简单地理解寄存器】

AT89C51单片机时钟电路(振荡电路)

T89C51芯片内部有一个高增益反相放大器,用于构成振荡器,反相放大器的输入端为XTAL1,输出端为XTAL2,两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器。电容器C1和C2通常取22pf左右,可稳定频率并对振荡频率有微调作用。振荡脉冲频率范围为0~24MHz。

单片机寄存器
单片机简单地理解寄存器 第三篇

通过前面课程的学习,我们已知道了单片机的内部有ROM、有RAM、有并行I/O口,那么,除了这些东西之外,单片机内部究竟还有些什么?这些个零碎的东西怎么连在一起的? 下面就让我们来对单片机内部作一个完整的分析吧!

从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有 RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在一个51单片机的内部包含了这么多的东西。

对图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O口的锁存器就可以了,那么对于定时/计数器,串行I/O口等怎么用呢? 在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。事实上,我们已接触过P1这个特殊功能寄存器了,还有哪些呢? 看下表

【单片机简单地理解寄存器】

下面,我们介绍一下几个常用的SFR。

1、ACC---是累加器,通常用A表示。 这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是 在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则 Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。

2、B--一个寄存器。

在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3、PSW-----程序状态字。

这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表: 下面我们逐一介绍各位的用途

CY:进位标志。8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0 例:78H+97H(01111000+10010111)

AC:辅助进、借位(高半字节与低半字节间的进、借位)。 例:57H+3AH(01010111+00111010)

【单片机简单地理解寄存器】

F0:用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。 RS1、RS0:工作寄存器组选择位。这个我们已知了。

0V:溢出标志位。运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。

P:奇偶校验位:它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。 运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。 例:某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。 4、P0、P1、P2、P3------这个我们已经知道,是四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。

5、IE-----中断充许寄存器按位寻址,地址:A8H【单片机简单地理解寄存器】

EA=1时,各中断的产生由个别的允许位决定 - (IE.6):保留 ET2(IE.5):定时2溢出中断充许(8052用)

ES (IE.4):串行口中断充许(ES=1充许,ES=0禁止) ET1(IE.3):定时1中断充许

EX1(IE.2):外中断INT1中断充许 ET0(IE.1):定时器0中断充许 EX0(IE.0):外部中断INT0的中断允许 7、IP-----中断优先级控制寄存器 按位寻址,地址位B8H

6、指针寄存器(1)程序计数器PC

指明即将执行的下一条指令的地址,16位,寻址64KB范围, 复位时PC = 0000H

(2)堆栈指针SP

指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H (3)数据指针DPTR

@R0、 @R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。 DPTR = DPH + DPL。可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。 分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范 围内的数据操作。

7、定时/计数器(1) 定时器方式寄存器:TMOD (2) 定时器控制寄存器:TCON

(3) 计数寄存器:TH0、TL0;TH1、TL1。可用于设定计数初值。 8052/8032增设专用寄存器

(1) 定时器2控制寄存器T2CON;控制、设置工作方式。 (2) 计数寄存器:TH2、TL2

(3) 定时器2捕获/重装载寄存器:RCAP2H、RCAP2L 存放自动重装载到TH2、TL2的数据

中断系统

有关中断的概念什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。

仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。第一、什么可经引起中断,生活中很多事件可以引起中断:有人按了门铃了,电话铃响了, 你的闹钟闹响了,你烧的水开了….等等诸如此类的事件,我们把可以引起中断的称之为中断源,单片机中也有一些可以引起中断的事件,8031中一共有5个: 两个外部中断,两个计数/定时器中断,一个串行口中断。

第二、中断的嵌套与优先级处理:设想一下,我们正在看书,电话铃响了,同时又有人按了 门铃,你该先做那样呢?如果你正是在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会电话了。如果不是 这两者(即不等电话,也不是等人上门),你可能会按你通常的习惯去处理。总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。优先级的问 题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接电话,有人按门铃的情况,或你正开门与人交谈,又有 电话响了情况。考虑一下我们会怎么办吧。

第三、中断的响应过程:当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签 放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书):电话铃响我们要到放电话的地方去,门铃响我们要到门那边去,也说是不同 的中断,我们要在不同的地点处理,而这个地点通常还是固定的。计算机中也是采用的这种方法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中 断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,中断响应可以分为以下几个步 骤:1、保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。2、寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口 地址。以上工作是由计算机自动完成的,与编程者无关。在这5个入口地址处存放有中断处理程序(这是程序编写时放在那儿的,如果没把中断程序放在那儿,就错 了,中断程序就不能被执行到)。3、执行中断处理程序。4、中断返回:执行完中断指令后,就从中断处返回到主程序,继续执行。

究竟单片机是怎么样找到中断程序所在位置,又怎么返回的呢?我们稍后再谈。

1、MCS-51中断系统的结构如图(抱歉,本图请找本51书看一下)所示,由与中断有关的特殊功能寄存器、中断入口、顺序查询逻辑电路等组成,包括5个中断请求源,4个用于中断控制的寄存器IE、IP、ECON和SCON来控制中断 类弄、中断的开、关和各种中断源的优先级确定。

中断请求源:

(1)外部中断请求源:即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0、INT1,也就是P3.2、P3.3这两个引脚。在内部的TCON中有四位是与外中断有关的。

IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。这两种方式的差异将在以后再谈。

IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。

IT1、IE1的用途和IT0、IE0相同。 (2)内部中断请求源

TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中

断后,再由硬件将TF0清0。

TF1:与TF0类似。

TI、RI:串行口发送、接收中断,在串口中再讲解。

2、中断允许寄存器IE在MCS-51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。见下表

其中EA是总开关,如果它等于0,则所有中断都不允许。 ES-串行口中断允许 ET1-定时器1中断允许 EX1-外中断1中断允许。 ET0-定时器0中断允许 EX0-外中断0中断允许。

如果我们要设置允许外中断1,定时器1中断允许,其它不允许,则IE可以是

即8CH,当然,我们也可以用位操作指令 SETB EA SETB ET1 SETB EX1 来实现它。

3、五个中断源的自然优先级与中断服务入口地址外中断0:0003H 定时器0:000BH 外中断1:0013H 定时器1:001BH

它们的自然优先级由高到低排列。

写到这里,大家应当明白,为什么前面有一些程序一始我们这样写: ORG 0000H LJMP START ORG 0030H START: 。 。 。

这样写的目的,就是为了让出中断源所占用的向量地址。当然,在程序中没用中断时,直接从0000H开始写程序,在原理上并没有错,但在实际工作中最好不这样做。

优先级:单片机采用了自然优先级和人工设置高、低优先级的策略,即可以由程序员设定那些中断是高优先级、哪些中断是低优先级,由于只有两级,必有一些中断处于同一级别,处于同一级别的,就由自然优先级确定。

单片机学习心得
单片机简单地理解寄存器 第四篇

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

学习使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或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单片机偏偏卖的要多些。

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

实习报告范文
单片机简单地理解寄存器 第五篇

[篇一:建筑工程实习报告]

一、实习目的

通过接触和参加实际工作,充实和扩大自己的知识面,培养综合应用的能力,为以后走上工作岗位打下基础。

二、实习内容

参加测量工程、钢筋工程、模板工程、混凝土工程、砌筑工程施工全过程的操作实习,学习每个工种的施工技术和施工组织管理方法,学习和应用有关工程施工规范及质量检验评定标准,学习施工过程中对技术的处理方法。

三、实习概况

在实习期间遵守实习单位和学校的安全规章制度,出勤率高,积极向工人师傅请教善于发现问题,并运用所学的理论知识,在工地技术员的帮助下解决问题。对钢筋工程、模板工程、混凝土工程等有了很具体的了解,同时对部分工程进行实践操作。实习报告范文

1、钢筋工程钢筋使用必须坚持先检查后使用的原则;钢筋必须有出厂合格证和检验报告,按国家规范进行复检合格后方可用于工程中,钢筋在现场加工,制作加工工序为:钢筋机械安装→钢筋对焊→锥螺纹加工→弯曲成型→钢筋绑扎。

2、模板工程模板及其支架应根据工程结构形式、荷载大小、地基土类别、施工设备和材料供应等条件进行设计。模板及其支架应具有足够的承载能力、刚度和稳定性,

单片机课程设计心得体会
单片机简单地理解寄存器 第六篇

[篇一:单片机课程设计心得体会]

这次这个单片机的课程设计我们完成的不太理想,我们小组两个人都是交流生,并且不是在物理学院学习,同时选课时没有认真全面的了解这门课程的安排,导致没有选上和课程配套的实验课,一个学期也就没有做过一次实验,在后来的制作过程中遇到了很多困难,所以这次这个课程设计的作品完全是在没有任何单片机制作经验甚至是没有做过任何相关电路的基础上开始的。选题的时候其实只上了几个星期的课,对单片机能做什么或者说以我们的水平能让单片机做什么根本没有一个清晰的认识,很担心自己的选题最后做不出来,所以当时选题时的原则是尽量的简单可行,因为毕竟我们没有实验课,一学期下来必定会比物理系的同学在具体的实验方面落后不少,同时平时我们都在南新校区,与老师和同学的交流都很困难,

课程设计心得
单片机简单地理解寄存器 第七篇

[篇一:编译原理课程设计心得体会]

经过一个星期的编译原理课程设计,本人在刘贞老师的指导下,顺利完成该课程设计。通过该课程设计,收获颇多。

一、对实验原理有更深的理解

通过该课程设计,掌握了什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解,课本上的知识师机械的,表面的。通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。课程设计心得

二、对该理论在实践中的应用有深刻的理解

通过把该算法的内容,算法的执行顺序在计算机上实现,知道和理解了该理论在计算机中是怎样执行的,

本文来源:http://www.guakaob.com/shiyongwendang/689859.html