PIC单片机各寄存器

合集下载

PIC单片机器件配置字简介和使用

PIC单片机器件配置字简介和使用

PIC单片机器件配置字简介和使用在PIC系列单片机里,其芯片内部大都有设置一个特殊的程序存储单元,地址为2007,由单片机的用户自由配置,用来定义一些单片机功能电路单元的性能选项。

我们把这个单元叫做器件配置字(Configuration Bits)。

这种设计给单片机开发工程师带来了很大的灵活性,但是也给初学者带来了一些麻烦。

笔者以PIC16F877为例向初学者介绍配置字的用途和使用。

一、器件配置字的用途图1图1就是PIC16F877配置字的寄存器的情形。

对配置字的各位的解释如下:CP1-CP0:代码保护位,说明如下:11 = 代码保护关;10 = 参见器件数据手册;01 = 参见器件数据手册;00 = 所有存储器均受代码保护。

注:有些器件使用较多或较少的位数来配置代码保护。

目前就一些只使用一位(CP0) 的器件,保护位的说明如下:1 = 代码保护关;0 = 代码保护开。

DP:数据EEPROM 存储器的代码保护位,说明如下:1 = 代码保护关;0 = 数据EEPROM 存储器受代码保护。

注:对于具有数据EEPROM 存储器的ROM 程序存储器器件,使用该位。

BODEN:欠压复位(BOR) 使能位,说明如下:1 = BOR 使能;0 = BOR 禁止。

PWRTE:上电定时器(PWRT) 使能位,说明如下:1 = PWRT 禁止;0 = PWRT 使能。

注1:无论PWRTE 位的值为何,使能欠压复位即自动使能了上电定时器(PWRT)。

请确保使能欠压复位时,也使能了上电定时器。

注2:在一些早期的PICmicro® 单片机中,该位的极性被保留。

MCLRE:MCLR 引脚功能选择位,说明如下:1 = 引脚功能为MCLR;0 = 引脚功能为数字I/O,MCLR 在内部连接到VDD 上。

WDTE:看门狗定时器(WDT) 使能位,说明如下:1 = WDT 使能;0 = WDT 禁止。

FOSC1-FOSC0:振荡器选择位,说明如下:11 = RC 振荡器;10 = HS 振荡器;01 = XT 振荡器;00 = LP 振荡器。

PIC 系列单片机数据存储器的特点和功能概要

PIC 系列单片机数据存储器的特点和功能概要

PIC系列单片机数据存储器的特点和功能(中)PIC单片机学习PIC单片机数据存储器时,不仅要了解各寄存器单元的功能,而且还应在编制程序时会调用它们完成编程目的。

下面笔者将以编程实例说明它们的用途。

2 间接寻址寄存器INDF和FSR位于PIC单片机数据存储器的最顶端、地址00单元(地址码最小)的间接寻址寄存器INDF是一个空的寄存器。

它只有地址码,在物理上不是一个真正的寄存器。

它的功能常常与寄存器FSR(又称寄存器选择寄存器)配合工作,实现间接寻址目的。

初学专用寄存器INDF和FSR时,记住下述的逻辑关系对编程是有帮助的:使用寄存器INDF的任何指令,在逻辑上都是对寄存器FSR所指向的RAM进行访问,即对INDF(本身)进行间接寻址(访问),读出的应是FSR内容。

以下的一个简单程序是用间接寻址方式清除RAM地址20h~2Fh单元寄存器内容的实例。

MOVLW0x20;20h→w,对指向RAM单元的指针;初始化MOVWF FSR;20h→FSR,FSR指向RAMLOOP CLRF INDF;清除INDF,即清除FSR内容所指;向的单元20h→2FhINCF FSR;(指针)FSR内容加1BTFSS FSR,4;判别(指令)FSR的D3位,若为零;执行下条循环指令;若为1间跳;执行。

GOTO LOOP;跳转到LOOP(循环)CONTINUE…;已完成功能,继续执行程序由上述指令看出,因寄存器INDF和FSR的配合工作,达到了对RAM地址20h~2Fh 的寄存器清零目的。

由于完成上述功能的指令数很少,这就会简化指令系统,使PIC单片机的指令集得以精简。

说明:上述各条指令易于看懂,所以无需再复述,但其中的一条判别指令“BTFSS FSR,4”比较关键。

该条指令是保证题设中要选择RAM地址单元上限值2Fh时,其对应的二进制数为00101111B,此时FSR的第4位恰为1。

所以上述指令中用了一条判断指令;BTFSS FSR,4,判断FSR的D3位值是否为1,若不为1而为0,则执行下条循环指令GOTO LOOP,使FSR中的地址不断加1,直到寄存器FSR的D3位为1时,这时它的内容代表的RAM地址恰为2Fh。

飞思卡尔16位单片机寄存器总结

飞思卡尔16位单片机寄存器总结

一、输入输出端口寄存器I/O接口包括PORTA、B、E、K、T、S、M、P、H、J、AD。

其中PORTA、B、E、K属于复用扩展总线接口,单片机在扩展方式下工作时,作为总线信号。

1、PORTT、S、M、P、H、JI/O寄存器PTx如果对应位数据方向寄存器DDRx为“0”,输入,读取该寄存器返回引脚值;“1”,输出,读取该寄存器返回I/O寄存器的内容。

数据方向寄存器DDRx决定对应引脚为输出还是输入,“0”为输入,“1”为输出,复位后,默认为输入。

上拉/下拉使能寄存器PERx选择使用内置上拉/下拉器件,“1”允许,“0”禁用。

中断使能寄存器PIExPORTP、H、J三个端口具有中断功能。

“1”对应引脚允许中断,“0”禁止,复位后,所有端口中断关闭。

中断标志寄存器PIFxPORTP、H、J三个端口具有中断功能。

“1”对应引脚允许中断,“0”禁止,复位后,所有端口中断关闭。

2、PORTA、B、E、KI/O寄存器Px若某端口的引脚被定义为输出,写入I/O寄存器中的数值会从对应引脚输出;输入,通过I/O寄存器读取对应引脚电平。

数据方向寄存器DDRx决定对应引脚为输出还是输入,“0”为输入,“1”为输出,复位后,默认为输入。

PORTE最低两位只能为输入。

上拉电阻控制寄存器PERx第7、4、1、0位分别控制K、E、B、A端口,“1”允许使用对应端口的上拉电阻,“0”禁止,复位后,PK、PE端口使能,PB、PA禁止。

二、中断系统中断控制寄存器INTCR第7位IRQE,中断电平/边沿有效选择,0为低电平有效,1为下降沿有效;第6位IRQEN,外部中断IRQ中断请求使能,0关闭,1允许。

三、PWM模块PWM允许寄存器PWME对应每一位PWMEx,1启动输出,0停止输出,读写任意时刻。

PWM预分频时钟选择寄存器PWMPRCLK为Clock A和B选择独立的预分频因子,读写任意时刻。

Clock B对应6、5、4三位,Clock A对应2、1、0三位,分别可以实现2、4、8、16、32、64、128分频。

PIC16系列单片机中断寄存器

PIC16系列单片机中断寄存器

PIC16系列单片机中断寄存器1、EECON1---eeprom控制寄存器————————————————————————————-| R/W-x | U-0 | U-0 | U-0 | R/W-x | R/W-0 | R/S-0 | R/S-0 | ————————————————————————————-| EEPGD |------|-------|------|WRERR| WREN | WR | RD | ————————————————————————————-EEPGD:程序/数据选择位EEPGD=0;访问数据内存EEPGD=1;访问程序内存WRERR:错误标志位WRERR=0;写操作已经完成WRERR=1;写操作过早终止,指正常操作期间出现MCLR或WDT复位WREN:写使能位WREN=0;禁止写入EEPROMWREN=1;允许写入EEPROMWR:写操作控制位WR=0; EEPROM的写周期已经完成WR=1; 启动写周期。

一旦写入完成,该位将被硬件清零。

RD:读操作控制位RD=0; 未启动EEPROM读操作RD=1; 启动EEPROM读操作EEARD:2、INTCON---中断控制寄存器————————————————————————————--------- | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/S-0 | R/S-0 | ————————————————————————————--------- | GIE | PEIE | TMR0IE| INTE | RBIE | TMR0IF | INTF | RBIF | ————————————————————————————---------GIE: 全局中断允许位GIE=0; 禁止所有中断GIE=1; 允许所有未屏蔽中断PEIE:外设中断允许位PEIE=0;禁止所有外设中断PEIE=1;允许所有未屏蔽外设中断T0IE:TMR0溢出中断允许位T0IE=0; 禁止TMR0溢出中断T0IE=1; 允许TMR0溢出中断INTE:INT外部引脚中断允许位INTE=0; 禁止INT外部引脚中断INTE=1; 允许INT外部引脚中断RBIE:RB端口电平变化中断允许位RBIE=0; 禁止RB端口电平变化中断RBIE=1; 允许RB端口电平变化中断T0IF:TMR0溢出中断标志位T0IF=0; TMR0寄存器未发送溢出T0IF=1; TMR0寄存器已经溢出(必须用软件清零)INTF:INT外部引脚中断标志位INTF=0; 未发生INT外部中断INTF=1; 发生INT外部中断(必须用软件清零)RBIF:RB端口电平变化中断标志位RBIF=0; RB4-RB7引脚未有发生状态变化(电平变化)RBIF=1; RB4-RB7引脚中至少有一位的状态发生了变化(电平变化)3、PIE1:外设中断独立使能寄存器————————————————————————————--------- | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/S-0 | R/S-0 | ————————————————————————————--------- | PSPIE | ADIE | RCIE | TXIE | SSPIE | CCP1IE| TMR2IE| TMR1IE| ————————————————————————————---------PSPIE:并行从动端口的读/写中断允许位PSPIE=0; 禁止PSP的读/写中断PSPIE=1; 允许PSP的读/写中断ADIE:A/D转换中断允许位ADIE=0; 禁止A/D中断ADIE=1; 允许A/D中断RCIE:USART接收中断允许位RCIE=0; 禁止USART接收中断RCIE=1; 允许USART接收中断TXIE:USART发送中断允许位TXIE=0; 禁止USART发送中断TXIE=1; 允许USART发送中断SSPIE:同步串行口中断允许位SSPIE=0; 禁止SSP中断SSPIE=1; 允许SSP中断CCP1IE:CCP1中断允许位CCP1IE=0; 禁止CCP1中断CCP1IE=1; 允许CCP1中断TMR2IE:TMR2与PR2匹配中断允许位TMR2IE=0; 禁止TMR2与PR2匹配中断TMR2IE=1; 允许TMR2与PR2匹配中断TMR1IE:TMR1中断允许位TMR1IE=0; 禁止TMR1中断TMR1IE=1; 允许TMR1中断4、PIE2:外设中断独立使能寄存器2————————————————————————————- | U-0 | R/W-0 | U-0 | R/W-0 | R/W-0 | U-0 | U-0 | R/W-0 | ————————————————————————————- |-------| CMIE |--------| EEIE | BCLIE |-----|-------| TRISE0| ————————————————————————————-CMIE:比较强中断允许位CMIE=0; 禁止比较器中断CMIE=1; 允许比较器中断EEIE:比较强中断允许位EEIE=0; 禁止EEPROM写操作完成中断EEIE=1; 允许EEPROM写操作完成中断BCLIE:比较强中断允许位BCLIE=0; 禁止总线冲突中断BCLIE=1; 允许总线冲突中断CCP2IE:CCP2中断允许位CCP2IE=0; 禁止CCP2中断CCP2IE=1; 允许CCP2中断5、PIR1:外设中断独立标志位寄存器1————————————————————————————----- | R/W-0 | R/W-0 | R-0 | R-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | ————————————————————————————- | PSPIF | ADIF | RCIF | TXIF| SSPIF | CCP1IF| TMR2IF| TMR1IF| ————————————————————————————----- PSPIF:并行从动端口读/写中断标志位PSPIF=0; 未发生读/写操作PSPIF=1; 发生了读/写操作ADIF:A/D转换器中断标志位ADIF=0; 未完成A/D转换ADIF=1; 完成A/D转换(必须用软件清零)RCIF:USART接收中断标志位RCIF=0; 接收缓冲器为空RCIF=1; 接收缓冲器RCREG满(当读取RCREG时清零)TXIF:USART发生中断标志位TXIF=0; 接收缓冲器满TXIF=1; 接收缓冲器RCREG为空(当写入TXREG时清零)SSPIF:同步串行中断标志位SSPIF=0; 等待发送/接收完成SSPIF=1; 完成发送/接收CCP1IF:CCP1中断标志位*输入捕捉模式CCP1IF=0; 未发生TMR1寄存器捕捉CCP1IF=1; 发生TMR1寄存器捕捉(必须用软件清零)*输出比较模式CCP1IF=0; 未发生TMR1寄存器的比较匹配CCP1IF=1; 发生了TMR1寄存器的比较匹配(必须用软件清零)*脉宽调制模式(PWM)下未定义TMR2IF:TMR2对PR2匹配中断标志位TMR2IF=0; TMR2对PR2不匹配TMR2IF=1; TMR2对PR2匹配(必须用软件清零)TMR1IF:TMR1溢出中断标志位TMR1IF=0; TMR1寄存器未发生溢出TMR1IF=1; TMR1寄存器发生溢出(必须用软件清零)6、PIR2:外设中断独立标志位寄存器2 ————————————————————————————- | U-0 | R/W-0 | U-0 | R/W-0 | R/W-0 | U-0 | U-0 | R/W-0 | ————————————————————————————- | --- | CMIF | --- | EEIF | BCLIF | --- | --- | CCP2IF| ————————————————————————————- CMIF:比较器中断标志位CMIF=0; 比较器输入未发生变化CMIF=1; 比较器输入发生变化(必须用软件清零)EEIF:EEPROM写操作完成中断标志位EEIF=0; EEPROM写操作未完成EEIF=1; EEPROM写操作已经完成(必须用软件清零)BCLIF:总线冲突中断标志位BCLIF=0; 未出现总线冲突BCLIF=1; 配置SSP模块I2C主控模式时出现总线冲突CCP2IF:CCP2中断标志位*输入捕捉模式CCP2IF=0; 未发生TMR1寄存器捕捉CCP2IF=1; 发生了TMR1寄存器捕捉(必须用软件清零)*输出比较模式CCP2IF=0; 未发生TMR1寄存器的比较匹配CCP2IF=1; 发生了TMR1寄存器的比较匹配(必须用软件清零)*脉宽调制模式(PWM)下未定义7、TRISE:并行从动端口状态/控制寄存器————————————————————————————----| R-0 | R-0 | R/W-0 | R/W-0 | U-0 | R/W-1 | R/W-1 | R/W-1 | ————————————————————————————----| IBF | OBF | IBOV | PSPMODE| --- | TRISE2| TRISE1| TRISE0| ————————————————————————————----8、OPTION_REG:选项寄存器————————————————————————————--------- | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | ————————————————————————————--------- | RBPU | INTEDG | T0CS | T0SE | PSA | PS2 | PS1 | PS0 | ————————————————————————————--------- RBPU:弱上拉使能位RBPU=0; 使能弱上拉RBPU=1; 禁止弱上拉INTEDG:中断信号边沿选择位INTEDG=0; INT引脚下降沿中断INTEDG=1; INT引脚上升沿中断T0CS:TMR0时钟源选择位T0CS=0; 内部指令周期时钟(CLKOUT)T0CS=1; T0CKI引脚输入时钟PSA:预分频器分配位PSA=0; 预分频器分配给TIMER0PSA=1; 预分频器分配给WDTPS2-PS0:预分频比选择位PS2 PS1 PS0 TMR0分频比WDT分频比000 1:2 1:1001 1:4 1:2010 1:8 1:4011 1:16 1:8100 1:32 1:116101 1:64 1:32110 1:128 1:64111 1:256 1:1289、T1CON:TIMER1控制寄存器————————————————————————————--------- | U-0 | U-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | ————————————————————————————--------- | --- | --- |T1CKPS1|T1CKPS0|T1OSCEN| T1SYNC| TMR1CS| TMR1ON| ————————————————————————————--------- T1CKPS1-T1CKPS0: TIMER1输入时钟预分频比选择位11:1:8预分频比10:1:4预分频比01:1:2预分频比00:1:1预分频比T1OSCEN: TIMER1振荡器使能位T1OSCEN=0; 振荡器关闭T1OSCEN=1; 振荡器使能T1SYNC: TIMER1外部时钟输入同步控制位*当TMR1CS=1时:T1SYNC=0; 同步外部时钟T1SYNC=1; 不同步外部时钟*当TMR1CS=0时:此位被忽略,TIMER1使用内部时钟TMR1CS: TIMER1时钟源选择位TMR1CS=0; 选择内部时钟(FOSC/4)TMR1CS=1; 选择T1OSO/T1CKI引脚的外部时钟(上升沿计数)TMR1ON: TIMER1使能位TMR1ON=0; 关闭TIMER1TMR1ON=1; 开启TIMER1*与TIMER1相关的寄存器有:1.TMR1L保存16位TMR1寄存器低字节的寄存器2.TMR1H保存16位TMR1寄存器高字节的寄存器。

PIC18F单片机内核组成

PIC18F单片机内核组成

PIC18F单片机内核组成
1.中央处理器(1)运算器:8 位运算/逻辑运算部件,累加器(工作寄存器W)
(2)8*8 硬件乘法器:可执行无符号运算,产生一个16 位运算结果
(3)控制单元:定时控制逻辑,RAM 文件寄存器,地址多路选择器,指令寄存器,文件选择寄存器
2.程序存储器和程序计数器
单片机内存放程序指令的存储器称为程序存储器。

程序计数器是21 位宽,可寻址2MB 的程序存储器空间
3.状态寄存器
PIC 单片机的状态寄存器是8 位寄存器,用来存放运算结果的一些特征
bit7~bit5:未用,该位读出时始终为0
bit4:N 表示负标志位,用于有符号的算术运算,结果表明是否为负数1=结果为负
0=结果为正
bit3:表示溢出为,用于有符号算术运算,表明溢出了7 位二进制数的范围1=算术运算或逻辑运算中发生溢出
0=没有发生溢出
bit2:Z 表示全0 标志位
1=算术运算或逻辑运算结果为0
0=算术运算或逻辑运算结果不为0
bit1:DC 表示辅助进位/借位标志位,用于
ADDWF、ADDLW、SUBLW、SUBWF。

pic16f84a的简介

pic16f84a的简介

PIC16F84单片机的内部硬件资源学些PIC单片机,在Microchip尚未推出其他Flash系列的情况下,很多菜鸟都是从PIC16F84开始的,我们把它整理了一份中文资料供大家学习。

首先介绍PIC16F84单片机的内部结构,如图1所示的框图。

由图1看出,其基本组成可分为四个主要部分,即运算器ALU和工作寄存器W;程序存储器;数据存储器和输入/输出(I/O)口;堆栈存储器和定时器等。

现分别介绍如下。

1 运算器ALU及工作寄存器W运算器ALU是一个通用算术、逻辑运算单元,用它可以对工作寄存器W和任何通用寄存器中的两个数进行算术(如加、减、乘、除等)和逻辑运算(如与、或、异或等)。

16F84是八位单片机,ALU 的字长是八位。

在有两个操作数的指令中,典型的情况是一个操作数在工作寄存器W中,而另一个操作数是在通用寄存器中,或者是一个立即数。

在只有一个操作数的情况下,该数要么是在工作寄存器W中,要么是在通用寄存器中。

W寄存器是一个专用于ALU操作的寄存器,它是不可寻址的。

根据所执行的指令,ALU还可能会影响框图中状态寄存器STATUS的进位标志C、全零标志Z等。

2 程序存储器单片机内存放程序指令的存储器称为程序存储器。

PIC16F84的所有指令字长为14位。

所以程序存储器的各存储单元是14位宽。

一个存储单元存放一条指令。

16F84的程序存贮器有1024(28)个存储单元(存储容量为1k)。

这些程序存储器都是由FPEROM构成的。

程序存储器是由程序计数器PC寻址的。

16F84的程序计数器为13位宽,可寻址8K(8×1024)的程序存储器空间,但16F84实际上只使用了1k的空间(单元地址为0~3FFH)。

当访问超过这些地址空间的存储单元时,将导致循环回到有效的存储空间。

对于用过其它单片机的用户,可能会感到16F84的片内存储器容量太少了。

实际上并非如此,因为16F84的指令系统都是由单字指令构成的,相应于其它由二字节、三字节甚至四字节指令的单片机而言,PIC单片机的程序存储器有效容量要比标称值扩大2 5倍到3倍。

PIC单片机16F84的内部硬件资源

PIC单片机16F84的内部硬件资源

PIC单片机16F84的内部硬件资源成都卫东现在我们已经知道要单片机工作,就需用汇编语言编制程序。

而对某个PIC单片机编程时,还需对选用的PIC单片机内部硬件资源有所了解。

这里介绍PIC16F84单片机的内部结构,如图1所示的框图。

由图1看出,其基本组成可分为四个主要部分,即运算器ALU和工作寄存器W;程序存储器;数据存储器和输入/输出(I/O)口;堆栈存储器和定时器等。

现分别介绍如下。

1 运算器ALU及工作寄存器W运算器ALU是一个通用算术、逻辑运算单元,用它可以对工作寄存器W和任何通用寄存器中的两个数进行算术(如加、减、乘、除等)和逻辑运算(如与、或、异或等)。

16F84是八位单片机,ALU的字长是八位。

在有两个操作数的指令中,典型的情况是一个操作数在工作寄存器W中,而另一个操作数是在通用寄存器中,或者是一个立即数。

在只有一个操作数的情况下,该数要么是在工作寄存器W中,要么是在通用寄存器中。

W寄存器是一个专用于ALU操作的寄存器,它是不可寻址的。

根据所执行的指令,ALU还可能会影响框图中状态寄存器STATUS的进位标志C、全零标志Z等。

2 程序存储器单片机内存放程序指令的存储器称为程序存储器。

PIC16F84的所有指令字长为14位。

所以程序存储器的各存储单元是14位宽。

一个存储单元存放一条指令。

16F84的程序存贮器有1024(28)个存储单元(存储容量为1k)。

这些程序存储器都是由FPEROM构成的。

程序存储器是由程序计数器PC寻址的。

16F84的程序计数器为13位宽,可寻址8K(8×1024)的程序存储器空间,但16F84实际上只使用了1k的空间(单元地址为0~3FFH)。

当访问超过这些地址空间的存储单元时,将导致循环回到有效的存储空间。

对于用过其它单片机的用户,可能会感到16F84的片内存储器容量太少了。

实际上并非如此,因为16F84的指令系统都是由单字指令构成的,相应于其它由二字节、三字节甚至四字节指令的单片机而言,PIC单片机的程序存储器有效容量要比标称值扩大2 5倍到3倍。

PIC单片机各寄存器汇总

PIC单片机各寄存器汇总

1) 芯片的振荡模式选择。

2) 片内看门狗的启动。

3) 上电复位延时定时器PWRT的启用。

4) 低电压检测复位BOR模块的启用。

5) 代码保护。

__CONFIG_CP_OFF &_WDT_OFF &_BODEN_OFF &_PWRTE_ON &_XT_OSC &_WRT_OFF &_LVP_OFF &_CPD_OFF ;_CP_OFF 代码保护关闭_WDT_OFF 看门狗关闭_BODEN_OFF_PWRTE_ON 上电延时定时器打开_XT_OSC XT振荡模式_WRT_OFF 禁止Flash程序空间写操作_LVP_OFF 禁止低电压编程_CPD_OFF EEPROM数据读保护关闭LVP Low Voltage Program 低电压编程CP Code Protect 代码保护Date EE Read Protect EEPROM数据读保护Brown Out DetectPower Up TimerWatchdog TimerFlash Program Write外部时钟输入(HS,XT或LP OSC配置)如下图:陶瓷(ceramic)谐振器电容的选择如下表:一般情况为:11 1111 0011 0001 0x3F31 或0x3F71位13 CP:闪存程序存储器代码保护位11=代码保护关闭0=所有程序存储器代码保护位12 未定义:读此位为1 1位11 DEBUG:在线调试器模式位11=禁止在线调试器,RB6和RB7是通用I / O引脚0=在线调试功能开启,RB6和RB7专用于调试位10:9 WRT1:WRT0:闪存程序存储器的写使能位11PIC16F876A / 877A11=写保护关闭,所有的程序存储器可能被写入由EECON控制10=0000h-00FFh写保护,0100h-1FFFh写入由EECON控制01=0000h-07FFh写保护,0800h-1FFFh写入由EECON控制00=0000h-0FFFh写保护,1000h-1FFFh写入由EECON控制位8 CPD:数据EEPROM存储器代码保护位(Code Protection bit) 1 1=数据EEPROM存储器代码保护关闭0=数据EEPROM存储器代码保护功能开启位7 LVP:低电压(单电源)在线串行编程使能位(Low V oltage Program) 0 1=RB3/PGM引脚有PGM功能,低电压编程启用0=RB3是数字I / O 引脚,HV(高电压13V左右) 加到MCLR必须用于编程位6 BOREN:欠压复位使能位(低电压检测复位)(Brown-out Reset(Detect)) 0 1=低电压检测复位BOR(BOD)模块启用0=低电压检测复位BOR(BOD)模块关闭位5:4 未定义:读此两位均为1 11位3 PWRTEN:上电定时器使能位(上电复位延时定时器)(Power-up Timer) 0 1=上电定时器关闭0=上电定时器开启位2 WDT:看门狗定时器使能位0晶体振荡器电容的选择1=看门狗开启如右图:0=看门狗关闭位1:0 Fosc1:Fosc0:振荡器选择位0111=RC振荡器10=晶体振荡器HS模式。

PIC单片机资源

PIC单片机资源

PIC单片机资源
九银发表于2009年04月04日 20:55 阅读(56) 评论(3) 分类:个人日记举报
PIC单片机的文件寄存器、指令、状态寄存器、引脚等是单片机学习和编程练习重要资源。

希望对大家有帮助。

如果你觉得有用,就顶一下。

、文件寄存器:
、指令表
、STATUS寄存器
t7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
P RP1 RP0 T0 PD Z DC C
.选项寄存器OPTION_REG
t7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PU INTEDG T0CS T0SE PSA PS2 PS1 PS0
3/PSA:前后分频器分配位,主动参数。

0:分配给TMR0,作为TMR0的前分器;
:分配给WDT,作为WDT的后分频器。

4/T0SE:TMR0用于计数器,计数脉冲信号边沿选择位,主动参数。

:RA4/T0CKI引脚上的上升沿增量;
:RA4/T0CKI引脚上的下降沿增量。

5/T0CS:定时/计数器TMR0时钟源选择位,主动参数。

:用内部指令周期时钟(CLKOUT)作为TMR0的触发脉冲;
:用T0CKI引脚上的外部时钟作为TMR0的触发脉冲。

6/INTEDG:INT中断信号触发边沿选择位,主动参数。

:BR0/INT引脚上的上升沿触发;
:BR0/INT引脚上的下降沿触发。

7/RBPU:B端口弱上拉使能位,主动参数。

:RB0-RB7引脚弱上拉使能;
:RB0-RB7引脚弱上拉不使能。

、PIC单片机引脚。

PIC单片机各寄存器

PIC单片机各寄存器

配置字(__CONFIG):1) 芯片的振荡模式选择。

2) 片内看门狗的启动。

3) 上电复位延时定时器PWRT的启用。

4) 低电压检测复位BOR模块的启用。

5) 代码保护。

__CONFIG_CP_OFF &_WDT_OFF &_BODEN_OFF &_PWRTE_ON &_XT_OSC &_WRT_OFF &_LVP_OFF &_CPD_OFF ;代码保护关闭_CP_OFF看门狗关闭_WDT_OFF_BODEN_OFF上电延时定时器打开_PWRTE_ONXT振荡模式_XT_OSCFlash程序空间写操作禁止_WRT_OFF禁止低电压编程_LVP_OFF数据读保护关闭EEPROM _CPD_OFF低电压编程LVP Low V oltage Program代码保护CP Code Protect数据读保护EEPROM Date EE Read ProtectBrown Out DetectPower Up TimerWatchdog TimerFlash Program WriteLP OSC配置)如下图:外部时钟输入(HS,XT或陶瓷(ceramic)谐振器电容的选择如下表:配置字(__CONFIG):一般情况为:11 1111 0011 0001 0x3F31 或0x3F71位13 CP:闪存程序存储器代码保护位11=代码保护关闭0=所有程序存储器代码保护位12 未定义:读此位为1 1位11 DEBUG:在线调试器模式位11=禁止在线调试器,RB6和RB7是通用I / O引脚0=在线调试功能开启,RB6和RB7专用于调试位10:9 WRT1:WRT0:闪存程序存储器的写使能位11PIC16F876A / 877A11=写保护关闭,所有的程序存储器可能被写入由EECON控制10=0000h-00FFh写保护,0100h-1FFFh写入由EECON控制01=0000h-07FFh写保护,0800h-1FFFh写入由EECON控制00=0000h-0FFFh写保护,1000h-1FFFh写入由EECON控制位8 CPD:数据EEPROM存储器代码保护位(Code Protection bit) 1 1=数据EEPROM存储器代码保护关闭0=数据EEPROM存储器代码保护功能开启位7 LVP:低电压(单电源)在线串行编程使能位(Low V oltage Program) 0 1=RB3/PGM引脚有PGM功能,低电压编程启用0=RB3是数字I / O 引脚,HV(高电压13V左右) 加到MCLR必须用于编程位6 BOREN:欠压复位使能位(低电压检测复位)(Brown-out Reset(Detect)) 0 1=低电压检测复位BOR(BOD)模块启用0=低电压检测复位BOR(BOD)模块关闭位5:4 未定义:读此两位均为1 11位3 PWRTEN:上电定时器使能位(上电复位延时定时器)(Power-up Timer) 0上电定时器关闭1=上电定时器开启0=晶体振荡器电容的选择0:看门狗定时器使能位位2 WDT如右图:1=看门狗开启看门狗关闭0=01Fosc1:Fosc0:振荡器选择位:位1011=RC振荡器>2 MHz模式。

PIC存储结构

PIC存储结构

• PIC16F877内部配置8K*14位的Flash程序 存储器
• 地址空间分成4页:0、1、2、3页,每页 2K*14位宽的存储单元
• 程序计数器PC高位寄存器PCLATH决定 程序存储器跨页选择。
分页的程序存储器
(14位内核)
CALL or GOTO instruction
OP CODE k k k k k k k k k k k
3 bits for instruction
11 bits for destination
• 在14-位内核的器件中:
– 11 位访问 211 或 2048 (2k) 空间 – 访问更多的空间,需要更多的位
• 数据存储器体选方式
512字节存储器,9根地址线,分成4个“体” 间接寻址
直接寻址
直接寻址访问数据存储器
2
来自指令码
11 11
PCH <5>
PCL <8>
13-Bit Program Counter
PIC单片机架构 间接寻址
• FSR 和 INDF 用于间接寻址 • FSR 是地址指针 • INDF 保存移动的值
Writing
Reading
22
FSR
5
INDF
21
22 23
5
24
mHale Waihona Puke vlw movwf movlw movwf
PIC存储器
PIC单片机架构
存储器
• 两种类型
–程序 –数据(RAM 和EEPROM)
Microchip PIC MCU 金字塔
16 bit MCU
24 bits dsPIC
数据存储器 宽度

PIC内部特殊功能寄存器中文说明

PIC内部特殊功能寄存器中文说明

定时器,计数器TMR2的计数寄存器
RX9
串行端口使能位9位接收使能位
USART发送数据寄存器
CCP2M0
INDF
IBOV
PSPMODE RB端口方向寄存器用FSR内容实现间接寻址文件寄存器(是一个非物理寄存器)间接文件寄存器地址指针,叫文件选择寄存器
TX9
同步時時鍾源選擇位1為主模式第9位選擇位,1為9位0為8位
BANK2
RB端口数据寄存器
程序计数器高5位间接写入缓冲区
RBIF
间接文件寄存器地址指针,叫文件选择寄存器
184H FSR
PEIE
EEPROM錯誤標志位EEPROM讀控制位
OBF
ADIF
TMR0相关寄存器
ADIE
CKE
MSSP接收/发送数据移位寄存器
RCIE TXIE SSPIE TMR1IE
CCP2IF
16位的CCP1寄存器的低8位
16位的CCP1寄存器的高8位
CCP2M0
为0没有收到数据
BOV为1表示输出缓冲器仍保持着上次写入的数据;IBF为1表示接收一个数据,等待CPU读取;。

第三章 PIC单片机的存储器

第三章 PIC单片机的存储器

Return
主动参数和被动参数 ◆为了更好地说明各位参数,把需要设 置定义后才起作用的位参数称为主动 参数;
◆而需要根据指令执行结果系统自动返 回状态信息的位参数称为被动参数。
◄ Up
► Down

Main
Return
几个专业术语 ●对某寄存器单元或某位赋值“ 0” 称为 “清0” ●对某寄存器单元或某位赋值“ 1” 称为 “置位”或“置1” ●对于模块中断功能的设定,以“使能” 表示
●存储器是单片机的一个非常重要的部 件,专门用于存放指令、数据和运算 结果。PIC16F877单片机配置了三大存 储器模块。 ◆ 8K×14位Flash型程序存储器 ◆ 512×8位RAM型数据存储器 ◆ 256×8位E2PROM型数据存储器
◄ Up
► Down

Main
Return
3.1 存储器分类 ◆从使用功能上,存储器可为:随机存储 器RAM (Random Access Memory)和只读 存储器ROM (Read Only Memory)两类。
Bit2(Z):零标志,被动参数 ◆0:算术运算或逻辑运算结果不为0; ◆1:算术运算或逻辑运算结果为0。 Bit3(PD):降耗标志,被动参数 ◆0:执行休眠指令后; ◆ 1 :上电或执行看门狗定时器清 0 指令后。
◄ Up ► Down ◙ Main Return
Bit4( TO ):超时标志,被动参数 ◆0:看门狗定时器发生超时; ◆1:上电或执行看门狗清0指令或执行休 眠指令后。
7位地址来自指令的操作数
f f f f f f
9位数据存储器地址
◄ Up ► Down ◙ Main Return
Bit7 ( IRP): RAM 数据存储器体选位, 主动参数,仅用于间接寻址。 ◆0:选择数据存储器的低位体,体0或体1, 地址是000H~0FFH; ◆1:选择数据存储器的高位体,体2或体3, 地址是100H~1FFH。

PIC单片机寄存器大全

PIC单片机寄存器大全

2.状态寄存器。

3.程序计数器程序计数器(Program Counter,PC)用于记录下一条所要执行的指令在程序存储器中的地址,PC中的内容决定了程序的执行流程。

4.程序存储器PIC16F87X采用FLASH程序存储器,用于存放用户编写的程序和一些固定不变的数据(如数据表),存储容量为4kB或8kB(14位)。

5.数据存储器数据存储器(RAM)用于存放CPU在运算过程中产生的中间数据,分为通用寄存器(General Purpose Register,GPR)和特殊功能寄存器(Special Function Register,SFR)。

传统RAM 存储器一般只能实现数据的读写操作,而PIC单片机的RAM还可以实现移位、置位、清零等位操作,所以其RAM又称为文件寄存器(File Register)。

6.间接寻址寄存器和文件选择寄存器间接寻址寄存器(INDF)和文件选择寄存器(FSR)配合实现间接寻址。

INDF并不是一个物理上真正存在的寄存器,访问时,将欲访问的数据存储器的地址存入FSR,而需要存入或读取的数据则在INDF中,如此实现间接寻址。

具体在7.2.3节讲解。

7.复用器复用器包括数据复用器(MUX)和地址复用器(Address MUX)。

数据复用器主要对来自指令码和数据存储器的数据进行选择,然后进入ALU参加运算:地址复用器主要对来自指令码(直接寻址时)和间接寻址时的地址进行选择(FSR),然后用作数据存储器RAM的地址。

8.堆栈堆栈(Stack)用于保护程序的断点地址。

程序执行过程中产生中断或调用子程序时,在进入中断服务程序或子程序之前,要保存主程序断点处的地址,在中断服务程序或子程序执行完后,再将断点地址恢复到PC中,使原程序流程能得以继续执行。

FSR文件选择寄存器INDF间接寻址寄存器位于RAM最顶端、地址码为00H,是一个空寄存器,它只有地址编码,不存在一个真正的(物理上)的寄存器,它用来与FSR(通用寄存器选择寄存器)配合,实现间接寻址。

PIC单片机原理及应用(第三章)

PIC单片机原理及应用(第三章)

3.3.1 通用寄存器
F877 单 片 机 的 通 用 寄 存 器 GPR ( General Purpose Registers),可由用户自行支配存放 随机数据。 通用寄存器区域: 通用寄存器数量: 地 址 区 域 : F0H~FFH 、 170H~l7FH 和 1F0H~1FFH,都可以索引(或映射)到体0的16 个RAM单元。 这样安排是为了便于中断服务程序的设计和 数据处理,就可以在程序设计中能够有效突破 体的限制而定义通用的变量函数。
RP1、RP0 = 0
RP1、RP0 = 0
0
1
选中体0
选中体1
RP1、RP0 = 1
RP1、RP0 = 1
0
1
选中体2
选中体3
Bit7/IRP:RAM数据存储器体选位,仅用于间 接寻址。 0:选择数据存储器低位体: 即 体 0 ( FSR 的 Bit7=0 ) 或 体 1 ( FSR 的 Bit7=1); 1: 选择数据存储器高位体: 即 体 2 ( FSR 的 Bit7=0 ) 或 体 3 ( FSR 的 Bit7=1)。
1.状态寄存器STATUS
状态寄存器的内容用来记录算术逻辑单元 ALU的运算结果状态、CPU的特殊运行状态以及 RAM数据存储器体间选择等信息。
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit 0
IRP
RP1
RP0
T0
PD
Z
DC
C
状态标志位
Bit0/C:进位/借位标志,被动参数。
0:执行加法(或减法)指令时,如果最高 位无进位(或有借位);
一般将整个程序存储器以2KB为单位进行分 页(PAGE),如图3-1所示F877单片机,8KB程 序存储器共分作4页,分别称为“页0”、“页 l” 、 “ 页 2” 和 “ 页 3” 。 程 序 计 数 器 高 8 位 PCLATH的Bit4~Bit3位构成程序存储器分页的 选择位,对应的地址空间如下:

PIC单片机配置字说明及使用

PIC单片机配置字说明及使用

PIC单片机器件配置字简介和使用在PIC系列单片机里,其芯片内部大都有设置一个特殊的程序存储单元,地址为2007,由单片机的用户自由配置,用来定义一些单片机功能电路单元的性能选项。

我们把这个单元叫做器件配置字(Configuration Bits)。

这种设计给单片机开发工程师带来了很大的灵活性,但是也给初学者带来了一些麻烦。

笔者以PIC16F877为例向初学者介绍配置字的用途和使用。

一、器件配置字的用途图1图1就是PIC16F877配置字的寄存器的情形。

对配置字的各位的解释如下:CP1-CP0:代码保护位,说明如下:11 = 代码保护关;10 = 参见器件数据手册;01 = 参见器件数据手册;00 = 所有存储器均受代码保护。

注:有些器件使用较多或较少的位数来配置代码保护。

目前就一些只使用一位(CP0) 的器件,保护位的说明如下:1 = 代码保护关;0 = 代码保护开。

DP:数据EEPROM 存储器的代码保护位,说明如下:1 = 代码保护关;0 = 数据EEPROM 存储器受代码保护。

注:对于具有数据EEPROM 存储器的ROM 程序存储器器件,使用该位。

BODEN:欠压复位(BOR) 使能位,说明如下:1 = BOR 使能;0 = BOR 禁止。

PWRTE:上电定时器(PWRT) 使能位,说明如下:1 = PWRT 禁止;0 = PWRT 使能。

注1:无论PWRTE 位的值为何,使能欠压复位即自动使能了上电定时器(PWRT)。

请确保使能欠压复位时,也使能了上电定时器。

注2:在一些早期的PICmicro® 单片机中,该位的极性被保留。

MCLRE:MCLR 引脚功能选择位,说明如下:1 = 引脚功能为MCLR;0 = 引脚功能为数字I/O,MCLR 在内部连接到VDD 上。

WDTE:看门狗定时器(WDT) 使能位,说明如下:1 = WDT 使能;0 = WDT 禁止。

FOSC1-FOSC0:振荡器选择位,说明如下:11 = RC 振荡器;10 = HS 振荡器;01 = XT 振荡器;00 = LP 振荡器。

第二章 PIC单片机存储器PPTA

第二章  PIC单片机存储器PPTA

第二章PIC 单片机存储器PIC16F877 存储器分为:程序存储器(1FFFH ~0H )数据存储器(512B )堆栈(8*13b )EEPROM (252B )四个存储器物理地址空间相互间是独立的FLASH 程序存储器8Kx14b 控制单元ALUWPC堆栈8x13位数据存储器512BEEPROM256BI/O单元程序存储器数据总线14位数据存储器地址总线9位数据存储器数据总线8位程序存储器地址13位CPU四个存储器物理地址空间相互独立EEPROM 地址同SRAM地址不相连12341.PIC程序存储器PIC16F877程序存储器采用FLASH,其容量为8K*14bit,因为CALL和GOTO指令仅提供11位有效地址,所以采用页结构将8K*14bit分为4页,每页为2K*14bit (“0页”= 07FFH~0000H、“1页”= 0FFFH~0800H、“2页”= 17FFH~1000H、“3页”= 1FFFH~1800H),采用直接或间接两种方式对存储器进行访问。

直接寻址在PIC 16F877的35条指令中,CALL和GOTO为直接跳转指令,这两条指令的共同特点是指令中有11位表示跳转的目地址,可访问的范围为一页,即在2K*14b范围内。

由于访问8K * 14bit存储空间需13位地址,而CALL和GOTO指令仅提供了11位,因此13位地址中的高两位由PCLATH寄存器中的D4和D3位提供,即PCLATH寄存器中的D4和D3位的状态确定了当前所访问程序存储器中的“页基址”,它类似8086 CPU中的“段基址”。

执行CALL和GOTO指令前必须对PCLATH寄存器中的D4和D3位进行设置-----即执行“页基址”设置。

A10 A0PCLATH D4 D3;KKK KKKK KKKK 0 0页0:0000H ~07FFH0 1页l :0800H ~0FFFH 1 0页2:1000H ~17FFH1 1页3:1800H ~1FFFH CALL 100 KKK KKKK KKKK GOTO 101 KKK KKKK KKKK当执行跳转指令GOTO 或调用子程序指令CALL 时,由于指令直接提供PC 的低11位地址,因此在执行GOTO 或CALL 指令前,必须首先对PCLATH 中的D3和D4位进行设置。

pic 单片机中寄存器用法

pic 单片机中寄存器用法

pic 单片机中寄存器用法单片机中寄存器的用法是非常重要的,它们在控制和管理硬件设备方面起着关键作用。

在单片机中,寄存器可以用来存储和操作数据,以及控制各个外设。

下面将介绍一些常见的单片机寄存器的用法。

通用寄存器(General-Purpose Register)是单片机中最基本的寄存器之一。

它们用于存储临时数据和运算结果。

通常情况下,单片机都会提供多个通用寄存器,可以通过一个特殊的寄存器选择器来访问它们。

状态寄存器(Status Register)用于存储一些标志位,反映单片机的运行状态。

比如,它可以记录运算结果是否为零、运算是否溢出等等。

通过读取状态寄存器的值,可以判断程序的执行情况,从而进行相应的处理。

输入输出寄存器(Input/Output Registers)用于控制单片机与外设之间的数据传输。

它们可以使单片机与外设进行输入和输出操作,实现与外界的数据交互。

通过编程设置或读取输入输出寄存器的值,可以实现对外设的控制和通信。

特殊功能寄存器(Special Function Registers)是单片机中一类特殊用途的寄存器,用于控制和配置单片机的各个功能模块。

比如,时钟控制寄存器用于设置单片机的工作频率;中断控制寄存器用于配置中断优先级和中断使能开关等等。

这些寄存器的具体功能和设置方式可能会因单片机的型号和制造商而有所不同。

在使用单片机时,了解和熟悉寄存器的用法非常重要。

通过合理地配置和操作寄存器,可以实现对硬件设备的精确控制,提高系统的性能和稳定性。

同时,编程时也要注意避免寄存器的冲突和重复使用,以免出现错误和不可预料的结果。

总而言之,单片机中寄存器的用法包括通用寄存器、状态寄存器、输入输出寄存器和特殊功能寄存器。

它们扮演着连接单片机与外设、存储临时数据以及控制和管理硬件功能的重要角色。

合理理解和运用寄存器,能够提高单片机程序的效率和可靠性。

PIC单片机存储体0或1的选用说明(程序)

PIC单片机存储体0或1的选用说明(程序)

PIC单片机存储体0或1的选用说明(程序)
PIC 单片机中级产品PIC16C6X 的数据存储器通常分为两个存储体,
即存储体0(Bank0)和存储体1(Bank1)。

每个存储体都是由专用寄存器和通用寄存器两部分组成的。

两个存储体中的一些寄存器单元实际上是同一个寄存器单元,却又具备有不同的地址。

例如本版介绍的PIC16F84 的状态寄存器STATUS-Reg 的两个地址是03H 和83H。

又如通用寄存器也是如此。

不同型号的PIC 单片机,其数据存储器的组成(即功能)是不完全相同的,所以设计人员一旦选用了某个PIC 单片机的型号后,常要查找该单片机的数据
存储器资料,以便编程用。

笔者以PIC16F84 在MPLAB 集成开发软件的环境下编写的源程序中,
有关RB 口(RB7、RB6…RB0)初始化为例,说明选用存储体0 或1 的方法如下:
程序清单
file:PIC01?ASM
List P=16F84
#include P16F84.inc
STATUS EQU 03H
RB EQU 06H
TRISB EQU 86H
ORG0x00 ;复位向量(PIC16F84)
GOTO MAIN ;转至主程序开始处
ORG 0x08 ;从地址08H 开始存放程序
MAIN。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1) 芯片的振荡模式选择。

2) 片内看门狗的启动。

3) 上电复位延时定时器PWRT的启用。

4) 低电压检测复位BOR模块的启用。

5) 代码保护。

__CONFIG_CP_OFF &_WDT_OFF &_BODEN_OFF &_PWRTE_ON &_XT_OSC &_WRT_OFF &_LVP_OFF &_CPD_OFF ;_CP_OFF 代码保护关闭_WDT_OFF 看门狗关闭_BODEN_OFF_PWRTE_ON 上电延时定时器打开_XT_OSC XT振荡模式_WRT_OFF 禁止Flash程序空间写操作_LVP_OFF 禁止低电压编程_CPD_OFF EEPROM数据读保护关闭LVP Low Voltage Program 低电压编程CP Code Protect 代码保护Date EE Read Protect EEPROM数据读保护Brown Out DetectPower Up TimerWatchdog TimerFlash Program Write外部时钟输入(HS,XT或LP OSC配置)如下图:陶瓷(ceramic)谐振器电容的选择如下表:一般情况为:11 1111 0011 0001 0x3F31 或0x3F71位13 CP:闪存程序存储器代码保护位11=代码保护关闭0=所有程序存储器代码保护位12 未定义:读此位为1 1位11 DEBUG:在线调试器模式位11=禁止在线调试器,RB6和RB7是通用I / O引脚0=在线调试功能开启,RB6和RB7专用于调试位10:9 WRT1:WRT0:闪存程序存储器的写使能位11PIC16F876A / 877A11=写保护关闭,所有的程序存储器可能被写入由EECON控制10=0000h-00FFh写保护,0100h-1FFFh写入由EECON控制01=0000h-07FFh写保护,0800h-1FFFh写入由EECON控制00=0000h-0FFFh写保护,1000h-1FFFh写入由EECON控制位8 CPD:数据EEPROM存储器代码保护位(Code Protection bit) 1 1=数据EEPROM存储器代码保护关闭0=数据EEPROM存储器代码保护功能开启位7 LVP:低电压(单电源)在线串行编程使能位(Low V oltage Program) 0 1=RB3/PGM引脚有PGM功能,低电压编程启用0=RB3是数字I / O 引脚,HV(高电压13V左右) 加到MCLR必须用于编程位6 BOREN:欠压复位使能位(低电压检测复位)(Brown-out Reset(Detect)) 0 1=低电压检测复位BOR(BOD)模块启用0=低电压检测复位BOR(BOD)模块关闭位5:4 未定义:读此两位均为1 11位3 PWRTEN:上电定时器使能位(上电复位延时定时器)(Power-up Timer) 0 1=上电定时器关闭0=上电定时器开启位2 WDT:看门狗定时器使能位0晶体振荡器电容的选择1=看门狗开启如右图:0=看门狗关闭位1:0 Fosc1:Fosc0:振荡器选择位0111=RC振荡器10=晶体振荡器HS模式。

参考振荡频率范围:>2 MHz01=晶体振荡器XT模式。

参考振荡频率范围:100 kHz ~ 4 MHz00=晶体振荡器LP模式。

参考振荡频率范围:<200 kHzOPTION_REG寄存器:位7 RBPU:PORTB输入引脚内部弱上拉使能控制位1=所有PORTB的内部弱上拉被禁止0=设定为输入状态的引脚内部弱上拉被使能位6 INTEDG:选择RB0/INT引脚的中断沿1=RB0/INT 上升沿中断0=RB0/INT 下降沿中断位5 T0CS:选择TMR0的计数时钟源1=外部脉冲沿跳变计数0=内部指令周期计数位4 T0SE:选择计数的外部脉冲沿1=T0CKI脉冲上升沿计数0=T0CKI脉冲下降沿计数位3 PSA:预分频器指派1=预分频器分配给看门狗定时器WDT,此时TMR0的计数预分频为1:10=预分频器分配给TMR0位2:0 PS2:PS0:设定预分频器的分频系数如下表所示分频设定TMR0分频比WDT分频比000 1:2 1:1001 1:4 1:2010 1:8 1:4011 1:16 1:8100 1:32 1:16101 1:64 1:32110 1:128 1:64111 1:256 1:128T1CON寄存器:位7:6 没有定义,读此两位的结果为0位5:4 T1CKPS1:T1CKPS0:TMR1预分频设置11=预分频系数1:810=预分频系数1:401=预分频系数1:200=预分频系数1:1位3 T1OSCEN:TMR1内部振荡器控制位1=打开内部振荡器,反相放大器工作,需外接晶体产生振荡时钟0=关闭内部振荡电路位2 T1SYNC:TMR1同步/异步计数控制位1=异步计数模式0=同步计数模式位1 TMR1CS:选择TMR1的计数时钟源1=T1CKI引脚上的上升沿计数0=内部指令周期计数(Fosc/4)位0 TMR1ON:TMR1计数允许/禁止控制位1=TMR1可以计数0=TMR1计数暂停T2CON寄存器:位7 没有定义,读此位的结果为0位6:3 TOUTPS3:TOUTPS0:TMR2计数溢出后分频设置0000=后分频系数1:10001=后分频系数1:2……1111=后分频系数1:16位2 TMR2ON:TMR2计数允许/禁止控制位1=TMR2可以计数0=TMR2计数暂停位1:0 T2CKPS1:T2CKPS0:TMR2预分频设置00= 1:1预分频01= 1:4预分频1x= 1:16预分频CCPxCON寄存器:位7:6 没有定义,读此两位的结果为0位5:4 CCPxX:CCPxY:TMR1预分频设置捕捉模式:未用比较模式:未用PWM模式:PWM模式占空比控制字为10位,最低2位即放在CCPxX:CCPxY中,高8位数据放入专门的一个寄存器CCPRxL位3:0 CCPxM2:CCPxM0:CCP模块工作模式选择位0000 =关闭所有模式,CCPx模块处于复位状态0100 =捕捉模式,每一个上升沿捕捉一次0101 =捕捉模式,每一个下降沿捕捉一次0110 =捕捉模式,每4个上升沿捕捉一次0111 =捕捉模式,每16个上升沿捕捉一次1000 =比较模式,预置CCPx引脚输出为0,比较一致时CCPx引脚输出为11001 =比较模式,预置CCPx引脚输出为1,比较一致时CCPx引脚输出为01010 =比较模式,当比较一致时CCPxIF=1产生软中断,CCPx引脚没有变化1011 =比较模式,当比较一致时CCPxIF=1且触发特殊事件11xx =PWM模式INTCON寄存器:位7 GIE:全局中断使能控制位1=允许中断,但各中断还有独立的使能控制位0=禁止所有的中断,不管各自的中断是否允许位6 PEIE:外围功能模块中断允许控制位1=允许外围功能模块中断0=禁止所有外围功能模块中断位5 TMR0IE(T0IE):TMR0中断使能控制位1=允许TMR0中断0=禁止TMR0中断位4 INTE:RB0/INT引脚沿跳变中断允许控制位1=允许RB0/INT引脚中断0=禁止RB0/INT引脚中断位3 RBIE:PORTB引脚状态变化中断使能控制位1=允许PORTB状态变化中断0=禁止PORTB状态变化中断位2 TMR0IF(T0IF):TMR0中断标志位1=TMR0计数溢出发生中断,必须用软件将其清除0=TMR0没有溢出中断位1 INTF:RB0/INT引脚沿跳变中断标志1=RB0/INT引脚发生中断,必须用软件将其清除0=没有发生RB0/INT引脚中断位0 RBIF:PROTB引脚状态变化中断标志位1=PORTB引脚出现状态变化中断,必须用软件将其清除0=PORTB引脚没有发生状态变化中断STATUS寄存器:PIE1寄存器:PIR1寄存器:PIE2寄存器:PIR2寄存器:SSPSTAT寄存器:位7 SMP:SPI模式下数据输入采样点控制(sample采样)SPI主模式(Serial Peripheral interface 串行外围设备接口)1=输出时间的中点对输入数据采样0=输出时间结束时对输入数据采样SPI从模式此位必须保持为0位6 CKE:SPI模式下时钟沿选择,与CKE位一起实现SPI时钟极性的4中模式CKP=0 (clock edge 时钟沿)0=数据在时钟的上升沿时发送1=数据在时钟的下降沿时发送CKP=10=数据在时钟的下降沿时发送1=数据在时钟的上升沿时发送位5 D/A:数据/地址控制位,只适用于I2C模式0=表明接收或发送的是地址码1=表明接收或发送的是普通数据位4 P:停止位指示,只适用于I2C模式。

当SSP模块没有启用时,此位为0 1=表明刚才检测到一个停止位(芯片复位后此位为0)0=没有检测到停止位位3 S:起始位指示,只适用于I2C模式。

当SSP模块没有启用时,此位为0 1=表明刚才检测到一个起始位(芯片复位后此位为0)0=没有检测到起始位位2 R/W:读/写命令指令,只适用于I2C模式。

在I2C通信时如果寻址地址匹配,该位就留有读或写的标志。

其有效期限到出现下一个起始位/停止位/无应答信号为止0=此次I2C通信为写操作1=此次I2C通信为读操作,与BF位配合可以判断主器件有/无应答位输出位1 UA:地址更新标志,只适用于I2C通信时的10位寻址模式0=无需地址更新1=表明SSPADD寄存器需要更新地址位0 BF:数据缓冲器满标志接收时(SPI和I2C)0=接收没有完成,SSPBUF寄存器为空1=接收已经完成,SSPBUF寄存器满发送时(只适用于I2C)0=发送完成,SSPBUF寄存器为空1=正在发送过程中,SSPBUF寄存器满SSPCON(SSPCON1)寄存器:位7 WCOL:发送数据写入时的冲突标志0=写入时没有冲突发生1=当SSPBUF正在发送数据时程序又对其进行数据写入而发送冲突,此位被置位后必须有软件将其清0位6 SSPOV:接收数据溢出标志位SPI模式0=数据接收没有溢出1=当SSPBUF寄存器中所接收的数据还没有被读走时,内部的移位寄存器SSPSR内又有新的数据就绪,此时SSPSR内的数据将被丢弃,SSPBUF不会被更新。

SPI模式下接收数据溢出只可能发生在从模式下。

如果在从模式下只发送数据,发送完毕后应用程序也必须读一次SSPBUF以免发生溢出标志。

在主模式下得一次接收(或发送)过程都必须通过写SSPBUF才能启动,故一般不会出现接收溢出,除非你在接收数据到来后故意不去读SSPBUF寄存器。

相关文档
最新文档