查阅PIC单片机芯片手册,关于进位/借位位的说明为:

  C:进位/借位位。

   1 = 结果的最高位发生了进位

   0 = 结果的最高位未发生进位

   同时有一条标注:借位的极性是相反的。

  通过以上说明,可以将C的分析分为两种情况:

  1、加法:

   最高位发生了进位:C = 1;

   最高位未发生进位:C = 0;

  2、减法:

   最高位发生了借位:C = 0;

   最高位未发生借位:C = 1;

  为了加深理解,在MPLAB中写入一段代码,通过观测STATUS寄存器的值来测试以上分析:

 ;测试SUBWF、ADDWF指令与状态寄存器C标志位的关系

 LIST        P=16F684
include "P16F684.INC" Sub_Register_Small EQU 20H
Sub_Register_Large EQU 21H
Add_Register EQU 22H
Small_Status EQU 23H
Large_Status EQU 24H
Add_Status EQU 25H ;被减数 < 减数
MOVLW 54H
MOVWF Sub_Register_Small
MOVLW 66H
SUBWF Sub_Register_Small, F SWAPF STATUS, W ;保存状态寄存器值
MOVWF Small_Status
SWAPF Small_Status, F ;被减数 > 减数
MOVLW 77H
MOVWF Sub_Register_Large
MOVLW 66H
SUBWF Sub_Register_Large, F SWAPF STATUS, W ;保存状态寄存器值
MOVWF Large_Status
SWAPF Large_Status, F ;加法进位
MOVLW 77H
MOVWF Add_Register
MOVLW 0BBH
ADDWF Add_Register, F SWAPF STATUS, W ;保存状态寄存器值
MOVWF Add_Status
SWAPF Add_Status, F END

  启用仿真后,查看内存23H、24H、25H(保存的是以上三种操作后的STATUS)的值,结果如下:

  Small_Status  : 00011000B,对应C=0(最高位发生了借位)

  Large_Status : 00011011B,对应C=1(最高位未发生借位)

  Add_Status    : 00011011B,对应C=1(最高位发生了进位)

  为了简单便于记忆,可以把C的进/借位规则记为:加柴(1)做煎(减)蛋(0)!

PIC单片机状态寄存器中的C(进位/借位位标志)的更多相关文章

  1. PIC单片机基础2

    PIC中档系列单片机,每条指令14位,共有35条汇编指令,根据操作对象不同,可将其分为三类: 字节操作类指令 位操作类指令 立即数与控制类操作指令 1.字节操作类指令,以MOVF指令为例: 指令:MO ...

  2. 令状态寄存器访问指令(MRS,MSR)

    ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据. 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器.每个位的含义如下图: 分成了4部分: 1,条件标志位 N(Negative) ...

  3. Cortex-M3 在C中上报入栈的寄存器和各fault状态寄存器

    因为在标准C语音中是不能获取SP指针的.因而,如果想通过C代码来获取入栈的寄存器值,需要配合一小段汇编代码来获取当前的SP值,然后再把这个SP值以参数形式传送给C代码,最后以指针的形式把栈中的各寄存器 ...

  4. 串口应用:遵循uart协议发送N位数据(状态优化为3个,适用任意长度的输入数据,取寄存器中的一段(用变量作为边界))

    上一节中成功实现了发送多个字节的数据.把需要发送的数据分成多段遵循uart协议的数据依次发送.上一节是使用状态机实现的,每发一次设定为一个状态,所以需要发送的数据越多,状态的个数越多,代码越长,因而冗 ...

  5. PIC单片机基础1

    1.PIC单片机总线结构——哈佛结构:即指令和数据空间是完全分开的,所以与常见的微控制器不同的一点是,程序和数据总线可以采用不同的宽度.以PIC16F684单片机为例,数据总线是8位的,但指令总线位数 ...

  6. 51单片机SRF寄存器

    1.21个寄存器介绍        51系列单片机内部主要有四大功能模块,分别是I/O口模块.中断模块.定时器模块和串口通信模块(串行I/O口),如其结构和功能如下图: 图1 51单片机结构和功能图 ...

  7. [51单片机] Keil C51中变量的使用方法详解

    引言    8051内核单片机是一种通用单片机,在国内占有较大的市场份额.在将C语言用于51内核单片机的研究方面,Keil公司做得最为成功.由于51内核单片机的存储结构的特殊性,Keil C51中变量 ...

  8. 【PIC单片机】MPLAB X IDE快速入门指南

    引言:近期由于项目实践需要,开始动手学习相关硬件知识.从PIC单片机入手. 单片机学习核心要点:查数据手册 配置寄存器 一.基于MPLAB X IDE配置位设置 MPLAB X IDE和MPLAB I ...

  9. 系统架构师考试——程序计数器 PC, 指令寄存器IR、状态寄存器SR、通用寄存器GR

    ● 计算机执行程序时,在一个指令周期的过程中,为了能够从内存中读指令操作码,首先是将__(9)___的内容送到地址总线上. (9)A.程序计数器PC    B.指令寄存器IR C.状态寄存器SR    ...

随机推荐

  1. Opentk教程系列-1绘制一个三角形

    本系列教程翻译自Neo Kabuto's Blog.已经取得作者授权. 本文原文地址http://neokabuto.blogspot.com/2013/02/opentk-tutorial-1-op ...

  2. node.js之模块

    node.js之模块 1.自定义模块的设置 加载自定义模块利用require: eg: require('./custom_module.js') 2.从模块外部访问模块内的成员 2.1使用expor ...

  3. 第9天:CSS精灵图

    今天重点学习了CSS精灵图. "CSS精灵",英语css sprite,所以也叫做"CSS雪碧"技术.是一种CSS图像合并技术,该方法是将小图标和背景图像合并到 ...

  4. Entity Framework : The model backing the '' context has changed since the database was created

    1.采用code first 做项目时,数据库已经生成,后期修改数据库表结构.再次运行时出现一下问题: Entity Framework : The model backing the '' cont ...

  5. 【Linux】Apache Httpd 服务管理

    基本的操作方法: 本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况 apahce启动命令: 推荐 [user@master1 ~]$  /usr/local ...

  6. 怎样查看当前QQ的版本号是多少

    怎样查看当前QQ的版本号是多少.. -------------- -------------

  7. Maven详解(五)------ 坐标的概念以及依赖管理

    我们知道maven能帮我们管理jar包,那么它是怎么管理的呢?这篇博客我们来详细介绍. 1.什么是坐标? ①.数学中的坐标 在平面上,使用 X .Y 两个向量可以唯一的定位平面中的任何一个点 在空间中 ...

  8. win32 Message(MSG)消息处理

    一般情况下的消息处理如下,TranslateMessage转换virtual-keys消息到characters消息,DispatchMessage调度一个消息给窗口程序. //getMessage第 ...

  9. python使用mongodb

    系统环境:Windows 10 ,python3.x 1.安装mongodb mongodb下载官网:https://www.mongodb.com/download-center?jmp=nav#c ...

  10. 共享Visio和project的下载链接

    好东西就应该共享  下面的是最新版的Visio和project的百度云链接 Visio的链接:http://pan.baidu.com/s/1o8UJq4M 密码:sltu project的链接:ht ...