PIC单片机之16C84单片机介绍(一)

最新更新时间:2012-11-14来源: 互联网关键字:PIC  单片机  16C84单片机 手机看文章 扫描二维码
随时随地手机看文章

PIC16C84是8位CMOS EEPROM单片机。它有高性能的类似于RISC 的指令,共有35条单字节的指令,所有的指令除程序分支指令需要两个指令周期外,都只需要一个指令周期。当主振频率为10MHZ时一个指令周期为400ns。程序指令的宽度为14位,在芯片内有1K×14的EEPROM程序存储器 。

  数据的宽度为8位,在芯片内有36×8的静态RAM的通用寄存器,64×8的EEPROM的数据存储器。8级深度的硬堆栈。具有直接、间接、相对寻址方式。有4个中断源;外部RBO/INT引脚;TMRO计时器溢出,PORTB<7: 4>引脚上信号的改变;数据写入EEPROM完成。

  数据存储器的擦/写可达1000000次,数据的保持大于40年。有13位的I/O引脚,可以单独直接控制。每一个I/O引脚均可承受25mA的输入/输出电流,这样就可以直接驱动LED。有8位的计时/计数器(TMRO)并带有8位可编程的预分频。有通电复位(POR);功耗上升(POWER-UP)计时器(PWRT); 振荡器起动计时器(OST);看门狗计时器(WDT),为了能可靠工作 ,它有自己的RC振荡器。有代码保证功能。有SLEEP(睡眠)方式,以节者功耗。有4种可供选择的振荡器:RC(低成本的RC振荡器);XT(标准的晶体/谐振器);HS(高速晶体/谐振器);LP(低功耗,低 频率的晶体)。工作电压的范围宽2.0V~ 6.0V。

  PIC16C84单片机最大的特点是具有1K×14位的电可擦除的程序存储器和64×8位的电可擦除的数据存储器,这将为系统开发和各种应用提供了 更多的方便。

  时钟和指令周期

  从OSCI来的时钟输入在内部经4分频。产生互不叠加的时佛周期,每4个时钟周期(θ1,θ2,θ3,θ4)组成一个指令周期。在内部、程序计数内对每一个θ1加1,然后从程序存储器取指令,取出的指令在θ4时放入指令寄存内。在下一个θ1利θ4期间指令被执行。取指令和执行指令采用流水线技术,一个指令周期取指令,下一个指令周期执行已取出的指令,同时又取出下一条指令。所以每条指令执行,CPU的时间是一个指令周期。当某条指令要改变程序计数器的 内容时(如分支指令),则需要两个指令周期才能完成。被取出的指 令在执行指令周期的θ1时放入指令寄存器,在θ2,θ3,θ4时译码 并执行指令。在θ2期间读操作在θ4期间写操作数。

  存贮器的结构

  在PIC16C84单片机中有两个存储器块。即程序存储器和数据存储器。每一块具有它自己的总线,即可在同一时钟周期访问每一块。数据存储器被进一步分成通用RAM和专用功能寄存器(SFRs)。专用功能寄存器用于控制外设模式。数据存储器也包含有数据EEPROM存 储器。这个存储器并不直接映象到数据存储器,而是间接映象的。即由一个间接寻址的指针指明要读/写的数据EEPROM的地址。64个字节 的数据EEPROM具有的地址是0~3FH。

  3-1程序存储器的结构

  PIC16C84单片机具有13位程序计数器,寻址能力为8K×14位的程序存储器空间。实际上对于PIC16C84能供使用的只有1K×14位的程序存储器(地址为0000~ 03FFH)。寻址上述单元,如超过了上述地址范围, 地址将卷绕。例对20H单元与地址420H,820H,C20H,1020H,1420H,1820H,1C20H都将访问到它。系统复位时PC的值为0000H,中断向量是 0004H。

  PC<12:0>

  CALL,RETURN 13

  RETFIE,RETLW 1级堆栈

  .

  8级堆栈

  复位地址 0000H

  外部中断向量 0004H

  用户存贮空间 3FFH

  1FFFH

  3-2数据存储器的结构

  数据存储器被分成两个区域。第一个是专用功能寄存器(SFR)区域,第二是通用寄存器区域(GPR)。SFR控制着器件的操作。数据存储器被分成0块和1块。通过程序时状态寄存器STATUS中的RP1: RP0位 的设置来选择0块(RP1=0,RP0=0)或1块(RP0=1)。

  其中带有斜线的部分是实际不存在的单元,带有*号的单元没有物理寄存。指令MOVWF和MOVF可以把W寄存器的值(W寄存器是器件内部的工作 寄存器)传送到寄存器文件(“F”)中的任何单元,反之也可以。整个数据存储器可以直接寻址或通过文件选择寄存器(FSR)进行间接寻址。间接寻址要根据状态寄存器的RP1:RP0位的状态决定访问数据存 储器的某一块,数据存储器的两块中都被分成通用寄存器和专用寄存 器。其中每块低地址单元留作专用寄存器,专用寄存器以上地址的单 元为通用寄存器,它们是静态RAM。

  1.通用寄存器文件 寄存器文件可以直接寻址或通过FSR间接寻址。所有器件都有一定 数量的通用寄存器(GPR),它们的数据宽度是8位。PIC16C84只有36个字节的通用寄存器,地址为0CH~ 2FH,对1块对应的8CH~ AFH的访问都将实际访问0CH~ 2FH(地址的高位被忽略)。

  文件地址

  00 间接寻址地址(*) 间接寻址地址(*) 80

  01 TMRO OPTION 81

  02 PCL PCL 8 2

  03 STATUS STATUS 83

  04 FSR FSR 8 4

  05 PORTA TRISA 85

  06 PORTB TRISB 86

  07 87

  08 EEDATA EECON1 88

  09 EEADR EECON2(*) 89

  0A PCLATH PCLATH 8A

  0B INTCON INTCON 8B

  36个通用寄 映象到 存器(SRAM) 0块 2F AF 7F FF 0块 1块

2.专用功能寄存器

  CPU和外设使用专用寄存器以控制器件的操作。专用寄存是静态RAM。下面介绍几个重要的专用寄存器

  ①状态寄存器

  状态寄存器包含有ALU(复术逻辑运算单元)的算术状态,复位状态和对数据存储器的块选择,与任何寄存器一样,状态寄存器可以作为任何指令的目的寄存器。如果状态寄存器作为某指令的目的寄存器 ,而那条指令要影响Z、DC,C位的状态,则禁止写这三位。图4-4是 状态寄存器及其状态。

  R/W R/W R/W R R R/W R/W R/W

  IRP RP1 RP0 TO PD Z DC C bit7 bit0

  其中C是进位位,对ADDWF和ADDLW指令,当这一位为1,表示指令 运算的结果的最高有效位产生了进位输出。减法指令执行的是加第二 操作数的新码。对于循环指令(RRF,RLF),这一位即可以来自于源寄存器的高位,也可以来自于低位。如果这一位为0,表明结果的最高有效位没有产生进位输出。对于减法,这一位的极性取反。DC是数字进位或数字借位位。当这一位为1时,结果的D3位向D4位有进位,否则无进位。对于减法,这位的极性取反。Z是结果为0标志。当这一位为1时,表明算术运算和逻辑运算的结果为0,否则这一位为0,表明运算结果不为0。PD:低功耗位。当这一位为1表明电源加上按正常供电或执行了C LRWDT指令以后,这一位为0表示执行了SLEEP指令(即器件进入了低功 耗状态)。TO超时位。当这一位为1时,表明电源加上,进入了正常供电,且执行了CLRWDT和SLEEP指令,这一位为0表明产生了看门狗计时器超时。

  RP1:RP0,作为直接寻址的数据存储器的块选择位。

  RP1:RP=00状态,选择0块(地址00H~7FH)。

  RP1:RP0=01状态,选择1块(地址80H~FFH)。

  RP1:RP0=10选择2块(地址100H~17FH)。

  RP1:RP0=11选择3块(地址180H~1FFH)。

  每块128个字节,PIC16C84只使用RP0位,RP1编程时设置为0。不允许使用RP1为通用读/写位,这可能影响与将来产品的兼容性。IRP寄存器块选择位(作为间接寻址),当这一位设置为0,选择0.1块(地址00H~FFH),当这一位为1时,选择2.3块(地址100H~1FFH)。PIC16C84不使用IRP位,IRP位在编程时为0。状态寄存器中的Z、DC,C位是根据器件的逻辑来置1或清0。而TO,PD位是不可写入的。状态寄存器作为目的寄存器的指令的结果将有不同的内容。例如CLRF STATUS(清0状态寄存器)。结果状态寄存器的内容为000uuluu。其中u表示不改变。只有BCF,BSF,SWAPF和MOVW F这些指令可以用来改变STATUS寄存器的内容,因为这几条指令不影响任何状态位。

  ②OPTION寄存器

  OPTION寄存器是可读,可写的寄存器,它包含了各种控制位以配 置TMRO/WDT的预分频器,外部INT中断,TMRO和在PORTB的微弱上拉。图4-5是OPTION寄存器各位的功能。 R/W R/W R/W R/W R/W R/W R/ W R/W

  RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0 bit7 bit0

  其中PS2,PS1,PS0为预分频器的值的选择。(与PIC16C6X的规定 相同)。PSA位是将预分频器分配给WDT(看门狗计时器,或TMR0)。

  TOSE是为TMRO选择跳变信号

  INTEDG是为INT中断引脚选择跳变信号。

  RBPU用来打开或关闭PORTB内部的上拉电阻。

  OPTION的所有位的定义同PIC16C6X系列。

  ③INTCON寄存器

  INTCON是可读可写的寄存器,它包含了各中断源允许或禁止中断 。图4-6是PIC16C84的INTCON寄存器

  R/W R/W R/W R/W R/W R/W R/W R/W

  GIE EEIE TOIE INTE RBIF TOIF INTIF RB IF bit7 bit0

  其中RBIF是RB端口改变中断标志位。此位为1,表明RB<7:4>输入中至少有一位发生了改变,它必须用软件清0这一位。否则为0,即 RB<7:4>输入中没有改变。 ? ? ? ? ? INTIF是外部中断标志位。当这一位为1时,表明有外部中断发生 ,它必须用软件将其清0,否则为0,表明没有外部中断发生。

  TOIF是TMRO溢出中断标志。这一位为1,表明TMRO发生了溢出,必须由软件将这一位清0,否则为0,表明TMRO没有溢出发生

  RBIE是RB端口改变中断的允许或禁止位,设置此位为1,允许中断,为0禁止。

  INTE是INT中断的允许或禁止位。设置为1允许中断方式,为0禁止 。

  TOIE为TMRO溢出中断的允许或禁止位。设置为1允许TMRO溢出中断,否则禁止。

  EEIE是EE(电可擦除)的写完成中断的允许与禁止位。当设置为1时,允许EE写完成中断,否则禁止。

  GIE是所有中断的允许与禁止。设置为1时,允许所有不可屏蔽中断,为0禁止。

  四、PCL和PCLATH

  程序计数器(PC)是13位。低字节PCL是可读,可写的寄存器。PC的高字节(PCH)不是直接可读,可写的。PCLATH(PC latch high) 是作为PC<12:8>的保持寄存器,这几位的内容被传送到程序计数器 的高位。当程序计数器在执行CALL,GOTO或写PCL等指令时,即向PC装入新的值。PC的高位由PCLATH装入。

  具有8个13位宽度的硬件堆栈。堆栈空间它既不是程序存储器的一部分,也不是数据存储器的一个部分,堆栈的指针是不可读/写的。当执行CALL指令或中断被响应时,整个13位的PC被压入堆栈。在执行RETURN,RETLW,RETFIE等指令时,堆栈被弹出。PUSH(压入)和POP(弹出)不影响PCLATH。

  堆栈是作为循环缓冲器。当堆栈被压入38次后,第9次压入将占据第一次压入的位置,第十次压入将占据第二次压入的位置,等等。同样当堆栈弹出第9次时,与第一次弹出是一样的。注意,没有状态位来 指明堆栈上溢式下溢的条件。没有PUSH,POP指令助记符,但CALL,R ETURN,RETLW,RETFIE等指令的执行或中断发生,将实际发生压栈退栈。

  4-2程序存储器的页

  PIC16C84具有1K的程序存储器,CALL,GOTO指令只有11位的地址范围,这11位的地址范围允许分支在2K程序存储器页大小的范围。

  为将来PIC16C8X程序存储器的扩展,必须由另外两位来说明程序 存储器的页。这些页位来自于PCLATH<4:3>。当执行CALL、GOTO指令时,用户必须确保这些页位的编程等指向要求的程序存储器的页。

  如果执行CALL指令,整个13位被压入堆栈。所以对于返回指令不要求 对PCLATH<4:3>位的管理。因为PC的值将会由退栈而获得。注意:PIC16C84忽略了PCLATH<4:3>位,这些位用于程序存储页1,2,3(0800H-1FFFH),不可以把PIC16C84的PCLATH<4:3>位用作通用读/写位,这会影响将来产品的向上兼容。

  4-3间接寻址,INDF和FSR的作用

  INDF寄存器不是物理寄存器,只是被用来与FSR寄存器连接以执行间接寻址。

  使用INDF寄存器,就可以实现间接寻址。

  使用INDF寄存器的任何指令,实际寻址数据是由文件选择寄存器(FSR)所决定的。读INDF自身(FSR=0),将产生00H。向INDF写,结果无操作(显然可以提供状态位)。8位FSR寄存器同状态寄存器STATUS<7>(IRP)组合可以得到9位地址。

  然而PIC16C84是不用IRP的。使用下面的例程序,通过间接寻址清零。2OH~2FH单位。

  MOVLW 20H ;初始化RAM的指针

  MOVF FSR ;到FSR

  NEXT CLRF INDF ;通过间接寻址清0,由FSR的内容所指问的寄存器。

  INCF FSR ;(FSR)+1→FSR

  BIFSS FSR,4;当FSR的第4位为1跳过下一条指令

  GOTO NEXT ;否则入。

关键字:PIC  单片机  16C84单片机 编辑:神话 引用地址:PIC单片机之16C84单片机介绍(一)

上一篇:ADC/DAC精度计算器(ACCU)简介
下一篇:PIC单片机之16C84单片机介绍(二)

推荐阅读最新更新时间:2023-10-12 20:43

ARM7单片机(学习ing)—(六)、SPI接口—01
六、SPI接口 六—(01)、SPI相关应用和寄存器的介绍~~ 1、特性 2、描述 3、管脚描述 4、寄存器描述 a、SPI控制寄存器(SPCR—0XEOO2000) b、SPI状态寄存器(SPSR —0XE0020004) c、SPI数据寄存器(SPDR—0XE0020008) d、SPI时钟计数寄存器(SPCCR—0XE00200OC) e、SPI中断寄存器(SPINT—0XE002001C) 5、SPI方框图
[单片机]
ARM7<font color='red'>单片机</font>(学习ing)—(六)、SPI接口—01
用51单片机做信号发生器,同时输出四种频率的方波
//编写51单片机程序,输出方波。 //要求:晶振为12MHz,用T0做定时器,在P1的低四位输出四种频率的方波: // P1.3 = 1.25kHz、P1.2 = 2.5kHz、P1.1 = 5kHz、P1.0 = 10kHz //另外,上述四个频率要求用一个四选一数据选择器,再选出其中的一个输出出去。 //P1.6、P1.7的输出用来控制四选一数据选择器的选择位,它们由P3.0按键控制。 //悬赏分:10 - 解决时间:2009-12-5 10:45 //=================================================== //最佳答案: //本题目早在一年前就回答完毕,现在增加了PROTE
[单片机]
用51<font color='red'>单片机</font>做信号发生器,同时输出四种频率的方波
8位数码管显示电子时钟c51单片机程序
/* 8位数码管显示 时间格式 05—50—00 标示05点50分00秒 S1 用于小时加1操作 S2 用于小时减1操作 S3 用于分钟加1操作 S4 用于分钟减1操作 */ #include reg52.h sbit KEY1=P3^0; //定义端口参数 sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; sbit LED=P1^2; //定义指示灯参数 code unsigned char tab ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管0—9 unsigned
[单片机]
AVR单片机学习基础篇
简介:AVR单片机的性价比远高于51单片机一、高速 、RISC、主频最高可达20MHZ.二、低功耗、宽电压(1.8V---5.5V)。最低全速运行功耗 300uA三、I/O驱动能力强、推拉电流能力均达30mA ,可以直接驱动继电器、蜂鸣器等,四、片内资源丰富.尤其值得一提的是AVR的定时器功能也是非常强的能够实现PWM功能或输入捕获功能、PWM功能是非常强的可以用于电机的控制。 一、基础篇 单片机的基本要素 CPU核(如:51核 AVR核 M430核) ROM(READ ONLY Memory 绕母) RAM(random accessMemory随机访问寄存器 ) 片上外设 总线 CPU核:相当于电脑的CPU吧、就是执行
[单片机]
AVR<font color='red'>单片机</font>学习基础篇
单片机无线模块解码(可解2262 1527编码芯片)
无线模块解码程序(可解2262 1527编码芯片) 电路原理图如下: Altium Designer画的PCB图如下:(51hei附件中可下载工程文件): 全频扫描万能振动器 或称:万能无线接收机 型号:QY-1083 全频扫描万能振动器 简单介绍: 该接收机体积小,接收信号稳定 技术指标: 1.工作电压:3.7VDC 2.工作电流:≤100mA 3.谐振方式: 4.调制方式:ASK/OOK 5.接收频率: 从250MHz----450MHz内, 6.频率误差: ±75kHz 7.接收距离:10-30M 8.传输速率:≤10Kbps 9.体积:60*65*15MM 10:电源:有开关 采用扫描方式搜索信号,搜索频率宽
[单片机]
<font color='red'>单片机</font>无线模块解码(可解2262 1527编码芯片)
基于AT89C2051单片机和GPS技术实现机器人定位模块的设计
1 引言 定位是根据先验的环境信息,结合当前的机器人位置信息以及传感器输入信息,准确地确定机器人位姿的过程。可靠定位是移动机器人研究中备受关注和富有挑战性的一个重要研究主题。 机器人定位技术可分为绝对定位和相对定位技术两类,绝对定位主要采用导航信标、主动或被动标识、地图匹配或卫星导航技术(GPS) 进行定位。相对定位是通过测量机器人相对于初始位置的距离和方向来确定机器人的当前位置,通常也称为测程法。绝对定位和相对定位各有优缺点,具有互补性,将两者结合能形成更加准确可靠的定位系统。本实验模块的设计就是先用测程法进行相对定位,然后利用电子罗盘进行纠正。 2 定位原理及硬件设计 2.1定位原理 本设计对应的机器人是前后轮独立驱动的,
[单片机]
基于AT89C2051<font color='red'>单片机</font>和GPS技术实现机器人定位模块的设计
单片机虚拟串口在Proteus中的使用
虚拟串口在Proteus中的使用,更准确的应该说是“串口在Proteus中的使用”,只不过我们用软件实现仿真,虚拟串口在这使用的比较频繁。 先在Proteus中将环境建立起来,很简单,先需要两个元器件就可以建立连接VIRTUAL TERMINAL和COMPIM,如图VIRTUAL TERMINAL的TXD与COMPIM的TXD相连,RXD与RXD相连,后面有图分析为什么这样相连: VIRTUAL TERMINAL是串口监视仪器,可以通过它将数据线上的符合RS232协议的波形捕捉到,并显示出来,也可以往数据线上发送RS232协议的波形;COMPIM为串口元件,可设置占用计算机上哪一个串口,可以是“实际串口”,也可
[单片机]
<font color='red'>单片机</font>虚拟串口在Proteus中的使用
stm32单片机pic单片机的优缺点对比分析
stm32单片机 由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,同时具有一流的外设:1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表现,当然和MSP430的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度,由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名其强大的功能主要表现在: stm32单片机特性 1、内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPS/
[单片机]
stm32<font color='red'>单片机</font>与<font color='red'>pic</font><font color='red'>单片机</font>的优缺点对比分析
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved