资讯详情

关于PIC单片机的一些经验总结

为了前一段时间学习PIC16F一个616型单片机的总结,方便大家交流,我写了这篇PIC单片机的学习经验是在阅读手册和编程调试后用自己的语言组织的。我希望你能及时纠正和批评缺点或问题,并提出有价值的意见.

PIC16F616是14引脚,8位CMOS单片机.简化指令集只有35个指令。由于数据总线与指令总线分离的哈佛总线结构,除少量指令不是单周期外,大部分指令都是单周期指令.这有利于提高单片机的运行速度和执行效率.

PIC16F616这台单片机的电压可以是2V到5.5V之间,内部集成RC振荡器的频率可分配为8MHZ或者4MHZ,外部晶振也可以提供时钟.内部集成有AD硬件模块,如转换、比较器,还具有上电复位、欠压复位、看门狗、代码保护等功能.三个定时器,PWM用户可以编程发生器等.下面我就一一介绍一下关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于下面的关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于下面我的关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于下面的关于关于关于关于关于关于关于关于关于关于关于关于下面的关于关于关于关于关于关于关于关于关于关的关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关于关PIC这些模块和单片机的功能.

3.存储器

PIC16F616分为程序存储和数据存储,程序存储的大小为2048words,数据存储器的大小是128bytes.

00000H地址为复位地址。当电源或看门狗计时器复位时,会导致PC指针指向复位地址.地址0004H为中断地址,无论发生什么中断,PC该指针将指向该地址.在地址0005H~07FFH可移植程序.

数据存储器分为两部分,分别称为bank0和bank1,其中bank00的地址范围为:00H-7FH,Bank地址范围为80H-FFH.一般的寄存器都放在里面.可以通过寄存器STATUSL里面的RP0位来选择bank0和bank1.

编程时要注意的是,当您要操作的寄存器在时bank0时,首先要选择bank0(将寄存器STATUS的RP0位置0),然后操作你想操作的寄存器,当你想操作的寄存器在bank1.同样,首先要选择bank1.

在数据存储器20中,如果您想定义一些变量H初始地址定义,地址范围为20H-7FH.一般这么多就够了.

4.PIC的输入输出端口

在学习这部分时,我遇到了一些问题.PIC单片机引脚不多,多为复用引脚,如AD、IO、比较器、外部晶体振动等,所以在配置端口时,我们必须知道如何设置每个功能才能实现,在这个部分,我想谈谈一般IO口的设置.

PIC16F616有12个IO但是有引脚(RA3)只能作为输入引脚,不能作为输出,A口具有电平变化中断的功能,而C口没有。设计时应注意.

在设置时,通常需要进行以下设置:

(1)通过寄存器设置端口是模拟端口还是数字端口ANSEL来设置.例如你想用AD,将相应的引脚设置为模拟输入端口.

(2)如果选择数字端口,接下来要设置端口的方向,是输入还是输出(RA3除外)可通过寄存器使用TRISA(A口)或TRISC(C口)来设置.

(3)通过寄存器设置端口的输出电平PORTA(A口)或PORTC(C口)来设置.

这是对IO口的一般设置,但这并不是所有的设置,下一个设置取决于A口或C口.对于A口,它有几个特殊的功能:内部弱上拉、电平变化中断、RA2/INT中断引脚断.如果您想要这些功能,请设置相应的寄存器.

弱上拉的设置只有当引脚输出时,弱上拉才有效,可以通过寄存器使用WPUA设置相应的引脚弱拉,值得一提的是,如果打开弱拉,会有多余的电流浪费,所以低功耗设计不可取,但如果在键盘电路设计中,可以打开弱拉功能,所以不需要添加键盘电路拉电阻.

通过寄存器设置电平变化中断:IOCA设置,但首先将相应的引脚设置为数字端口并输入.同时,寄存器INTCON的REIE允许总中断设置为1(放置寄存器)INTCON的GIE如果设置相应的引脚具有此功能,当引脚电平发生时,就会产生中断,同时,一些中断标志被放置在同一位置(INTCON的RAIF位置1),总中断GIE在中断服务程序中,应清除软件RAIF位和重新置GIE位置可以继续打开这个中断.

RA2/INT脚的中断设置:同样,首先将相应的引脚设置为数字端口和输入状态INTCON的INTF1,表示允许int引脚外部中断,寄存器OPTION_REG的INTEGD可以设置是上升沿中断还是下降沿中断.中断时,INTCON的INTF位被置为1,GIE被清零,在中断服务程序中,要软件清除INTF位和重新置GIE位置可以继续打开这个中断.

对于C口,不能产生电平变化中断和沿中断.

5.定时器

定时器是单片机的重要组成部分。它可以产生许多不同的定时时间来满足程序设计的不同需求.PIC16F616有三个定时器,即Timer0、Timer1、Timer2.它们的用法不是很一样。我们来谈谈这三个定时器的用法和设置。.

(1)Timer0

Timer0是一个八位计数器,它有一个八位计数寄存器TMR8位预分频器(与看门狗共用),可选择内部或外部时钟源,具有计数器溢出中断功能.

Timer0可用作定时器或计数器Timer0相关寄存器包括:TMR0,INTCON,OPTION_REG,TRISA.

当Timer0作为定时器使用时,应设置OPTION_REG的T0CS位于0,表示使用内部时钟,每个指令周期TMR0的值会增加(当没有预分频时),当TMR0被赋值时,会有两个指令周期的延迟.预分频器可与看门狗共用,可由OPTION_REG的PSA位来设置,当PSA 0时,分频器选择Timer0,当PSA当时,分频器选择看门狗.同时,寄存器可以通过与分频器的分频值OPTION_REG设置值可以从1:2到1:256.Timer0的计数器TMR0计数从FFH到00H溢出,标志位同时溢出(INTCON寄存器的T0IF位置)会位(不管Timer0中断是否打开),如果中断已经打开(INTCON寄存器的T0IE位置),然后会产生溢出中断.T0IF位置要求软件清零.

当Timer0作为计数器来使用的时候,就要用外部时钟源(OPTION_REG的T0CS1),每次当引脚T0CK1的沿到来时Timer0的 TMR0会增加1,上升和下降沿可以由OPTION_REG的T0SE来设置.中断和Timer0作为定时器使用时是一样的.编程时,可以用 Timer0定时或生成定时信息。让我解释一下定时器的计算时间.假设Timer时钟源为4MHZ,所以每个指令的执行时间是 1us,设Timer预分频系数为1:256,TMR0的初值为6,定时时间为:

256×(256-6)×1us=64ms

编程时需要注意的是,Timer0的中断不能将单片机从SLEEP状态唤醒.

(2)Timer1

Timer16位计数器.它有一个计数寄存器(TMR1H:TMR1L),时钟源也是内外可选的,有2个bit预分频器可以同步或异步操作,具有中断功能,但溢出中断只能在外部时钟和异步模式下使用单片机SLEEP中唤醒,Timer具有捕获/比较功能,还有被一些特殊事件触发功能(ECCP),比较器的输出可以与Timer1的时钟同步.下面逐一介绍这些功能.

标签: 电阻1824

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台