PIC单片机学习笔记

发布者:TechVoyager最新更新时间:2012-12-18 来源: 21ic 关键字:PIC单片机  学习笔记  寄存器 手机看文章 扫描二维码
随时随地手机看文章

1.状态寄存器STATUS

1.jpg

2.实现间接寻址的寄存器INDF和FSR

3.与程序计数器PC相关的寄存器PCL和PCLATH

4.电源控制寄存器PCON

2.jpg

PIC单片机的指令系统

PIC16F87X共有35条指令,均是长度为14位的单字节指令。所有指令按操作对象的不同又分为3类:面向字节操作类(17条);面向位操作类(4条);常数操作和控制操作类(14条)。

PIC配置字的设置

PIC的配置字设置方法到目前我学到两种:

1. 两个“_”紧跟CONFIG,后跟配置字设置后的数值;

2. 两个“_”紧跟CONFIG,后跟各配置字的位和状态,其格式如下:

;==============================================

; 配置字定义

;==============================================

__CONFIG _DEBUG_OFF&_CP_ALL&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC ;配置字定义

间接寻址、INDF和FSR 寄存器

INDF寄存器不是物理寄存器,对INDF寄存器寻址将导致间接寻址。[page]

使用INDF寄存器可以实现间接寻址。对任何INDF寄存器的指令实际上访问的是由指针寄存器FSR所指的寄存器。间接读INDF寄存器本身会返回00H。而使用间接寻址对IDNF寄存器进行写操作将导致执行一个空操作(虽然可能会影响状态位)。有效的9位地址是通过组合8位FSR寄存器和IRP位(STATUS<7>)获得的。示例如下:

间接寻址示例:

例:给30H~7FH单元依次写入30H~7FH。其中COUNT是计数寄存器。

;==============================================

; 连续地址写入数据子程序(间接寻址)

;==============================================

WR_ADS: MOVLW 30H ;以下将RAM内容初始化

MOVWF FSR ;从30H单元开始

MOVLW 30H ;将值30H赋给单元30H

MOVWF COUNT ;

INTRAM: MOVF COUNT,0 ;将30H~7FH赋给单元30H~7FH

MOVWF INDF ;对INDF进行操作

INCF COUNT,1 ;COUNT+1

INCF FSR,1 ;指针+1

BTFSS COUNT,7 ;COUNT<7>为1吗(7FH时COUNT<7>=0)

GOTO INTRAM ;

RETURN ;程序返回

PIC单片机寄存器定义

在PIC单片机编程时,需要对程序中自己需要的寄存器进行定义。一般都是使用伪指令。但是使用下面这种方法可以更简便。

使用CBLOCK后面跟随要定义寄存器的地址。可以是多个寄存器一起定义,这时寄存器地址将自动被赋为下一个地址。在结束定义时使用ENDC即可完成定义。

示例如下:

;================================================

; 空间定义

;=================================================

CBLOCK 20H ;从20H开始定义

COUNT ;地址为20H

W_TEMP ;地址为21H

STATUS_W ;地址为22H

ENDC ;结束定义

PIC单片机I/O的操作

将TRISX寄存器的某位置1,就可以将相应的输出驱动器置为高阻态模式。将 TRISX寄存器的某位清零,则将输出锁存器的内容锁存到指定的引脚。

RCSTA寄存器操作注意事项

在接收数据过程中,如果将接收到的数据及时读出,那么USART则会正常接收下一次发送过来的数据。可是要是在接收时发生中断,或者其它打断接收的操作,而延误了及时读取RCREG中的数据。此时,移位寄存器将不会再向RCREG放入任何数据。在这种情况下,即使有数据发送,RCIF标志位也不会被置位,接收会因此而中断。如果不采取措施,通信将会因此而彻底中断。

造成这个问题的原因是由于上述操作中断了接收而延误数据及时取出,致使RCSTA寄存器中的溢出标志位OERR(RCSTA<1>)置位。该标志位置位就会禁止移位寄存器将接收数据放入RCREG中,从而无法继续接收。

解决这一问题的方法是清零OERR。清零OERR不能直接对该标志位操作,必须通过清除允许连续接收位CREN(RCSTA<4>)清除溢出错误标志OERR。但是,清除允许连续接收位CREN(RCSTA<4>)后,必须再置位该位,否则,只能接收到一个字节。

关键字:PIC单片机  学习笔记  寄存器 引用地址:PIC单片机学习笔记

上一篇:Microchip推出具有投射电容式触摸功能的PIC32 GUI开发板
下一篇:PIC单片机中断程序设计技巧

推荐阅读最新更新时间:2024-03-16 13:15

STM8学习笔记四——STM8的GPIO基础知识
一、GPIO定义 GPIO,即通用输入输出端口General Purpose Input Output的缩写。 GPIO端口可以通过程序配置成输入端口或输出端口。 二、GPIO的IO模式 STM8的GPIO口有12种模式设置,其中输入4种,输出8种: 1、GPIO_Mode_In_FL_No_IT浮空输入无中断 2、GPIO_Mode_In_PU_No_IT上拉输入无中断 3、GPIO_Mode_In_FL_IT浮空输入有中断 4、GPIO_Mode_In_PU_IT 上拉输入有中断 5、GPIO_Mode_Out_OD_Low_Fast 开漏-输出低-高速 Output open-drain, low level, 10MHz
[单片机]
STM8<font color='red'>学习</font><font color='red'>笔记</font>四——STM8的GPIO基础知识
STM32NET学习笔记 UDP部分
1.前言 嵌入式以太网开发是一个很有挑战性的工作。通过几个月的学习,我个人觉得大致有两条途径。第一条途径,先通过高级语言熟悉socket编程,例如C#或C++,对bind,listen,connect,accept等函数熟悉之后,应用 lwIP。第二种途径,通过分析嵌入式以太网代码,结合TCPIP协议栈规范逐步实践代码。第一种途径效率高,开发周期短,编写出来的代码性能稳定,第二种途径花的时间长,开发出来的代码功能不完善,但是由于紧紧结合TCPIP规范,可以了解的内容较多,适合学习。本文通过分析和修改AVRNET源码,逐步实现TCPIP协议栈的各个子部分,包括ETHERNET部分,ARP部分,IP部分,ICMP部分,UDP部分
[单片机]
AVR,C51和PIC单片机比较
八位单片机由于内部构造简单,体积小,成本低廉,在一些较简单的控制器中应用很广。即便到了本世纪,在单片机应用中,仍占有相当的份额。由于八位单片机种类繁多,本文仅将常用的几种在性能上作一个简单的比较,供读者在使用时作参考。 1. 51系列   应用最广泛的八位单片机首推Intel的51系列,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,有先入为主的优势。世界有许多著名的芯片公司都购买了51芯片的核心专利技术,并在其基础上进行性能上的扩充,使得芯片得到进一步的完善,形成了一个庞大的体系,直到现在仍在不断翻新,把单片机世界炒得沸沸扬扬。有人推测,51芯片可能最终形成事实上的标准MCU芯片。   51系列优点之一是它从内部
[单片机]
基于STM32从零写操作系统系列---基于寄存器写串口驱动
目的 尝试基于寄存器层面,编写串口的驱动。用这种方式编写串口驱动,有点类似于使用汇编语言。面向的是每一个单独的寄存器,通过读、改、写的手段,配置寄存器。但是这种方式能够更接近硬件,用硬件的思维编程。 相对于《基于STM32从零写操作系统系列---使用C语言》,这章重新调整了文件结构,让项目文件更好管理和维护。主要使用了makefile的嵌套编译方法来编译多目录下的代码文件。 分析 1.Makefile嵌套编译 首先简单来看一下文件结构: 再看一下顶层Makefile,主要差异如下: 各子目录下的Makefile比较简单 其中需要注意的是: 在windows的cmd命令行中for命令用于查找
[单片机]
基于STM32从零写操作系统系列---基于<font color='red'>寄存器</font>写串口驱动
MSP430F5529 DriverLib 库函数学习笔记(五)定时器A
平台:Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 硬知识 定时器A具有如下特点:  4种运行模式的异步16位定时/计数器;  参考时钟源可选择配置;  高达7个可配置的捕获/比较寄存器;  可配置的PWM输出;  异步输入和输出锁存;  具有可对Timer_A中断快速响应的中断向量寄存器。 定时器A的结构框图如图所示。 定时器A 16位定时器原理 16位定时器的计数值寄存器TAR在每个时钟信号的上升沿进行增加/减少,可利用软件读取TAR寄存器的计数值。此外,当
[单片机]
MSP430F5529 DriverLib 库函数<font color='red'>学习</font><font color='red'>笔记</font>(五)定时器A
PIC单片机SPI接口配置
一般所有单片机的SPI接口都需要配置以下几点内容(CPU作为SPI主模式): 1.引脚功能/方向配置:标准SPI接口由4根线组成,SCK,MISO(SDI),MOSI(SDO),SS(CS),其中SCK,MISO,MOSI都应设置成SPI功能,并且SCK和MOSI设置成输出引脚,MISO设置成输入引脚,SS引脚设置成普通GPIO功能,并且设置成输出。 2.SPI参数配置: (1)SPI的时钟频率设置,一般设置范围几K到几M不等,该频率决定SPI的时钟线和数据线的速率。 (2)SPI时钟极性 (3)SPI时钟相位(边沿) (4)数据宽度,一般选择8位或者16位 (5)位序,传输过程中是高位在前,还是低位在
[单片机]
<font color='red'>PIC单片机</font>SPI接口配置
STM32之学习笔记--串口通信
  在基础实验成功的基础上,对串口的调试方法进行实践。硬件代码顺利完成之后,对日后调试需要用到的printf重定义进行调试,固定在自己的库函数中。   b) 初始化函数定义:   void USART_Configuration(void); //定义串口初始化函数   c) 初始化函数调用:   void UART_Configuration(void); //串口初始化函数调用   初始化代码:   void USART_Configuration(void) //串口初始化函数   {   //串口参数初始化   USART_InitTypeDef USART_InitStructure; //串口设置恢复默
[单片机]
AVR单片机的RTOS-AVRX应用
引 言   随着技术的发展,嵌入式系统的设计及应用对人们的生活产生了很大的影响,并将逐渐改变人们未来的生活方式。在特定的操作系统上开发应用程序,可以使开发人员忽略掉很多底层硬件细节,使得应用程序调试更方便、易于维护、开发周期缩短并且降低开发成本,因而嵌入式操作系统深得开发人员的青睐。   AVR微处理器是Atmel公司开发的8位嵌入式RISC处理器,它具有高性能、高保密性、低功耗、非易失性等优点,而且程序存储器和数据存储器可独立编址,并具有独立访问的哈佛结构。AVR单片机内核有丰富的指令集,通过32个通用寄存器直接与逻辑运算单元相连接,允许在一个周期内一条单一指令访问两个独立的寄存器,这样的结构使代码的执行效率比传统的复杂指令集
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved