查阅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. Flow-Guided Feature Aggregation for Video Object Detection论文笔记

    摘要 目前检测的准确率受物体视频中变化的影响,如运动模糊,镜头失焦等.现有工作是想要在框的级别上寻找时序信息,但这样的方法通常不能端到端训练.我们提出了flow-guided feature aggr ...

  2. node里面的c/c++模块

    准备工作 node使用c++插件时需要使用node-gyp包,node-gyp把c++源码编译为二进制文件,js在调用二进制文件,编译后的二进制文件模块调用就和js的模块调用一样. npm insta ...

  3. ubuntu安装mysql可视化工具MySQL-workbench及简单操作

    一.使用命令行在ubuntu下安装mysql可视化工具MySQL-workbench Step1:安装MySQL-workbench 方案一:如果你已经装好mysql的相关服务,那么直接使用如下命令即 ...

  4. hdu 6171---Admiral(双向搜索)

    题目链接 Problem Description Suppose that you are an admiral of a famous naval troop. Our naval forces h ...

  5. 用NETSH WINSOCK RESET命令修复网络

    之前遇到一种情况,QQ可以正常使用,浏览器无法访问网页.在CMD下ping 主机也提示超时. 最后通过NETSH WINSOCK RESET命令重置WINSOCK目录,成功修复了网络连接. Netsh ...

  6. Android Studio的Terminal配置

    1.首先检查你的setting设置如下图 2.如果是已经ok的,请在你的Android sdk的文件夹目录下找到adb.exe,并配置环境变量 3.重启as,在terminal内输入 -adb hel ...

  7. java 泛型简单使用

  8. Android项目实战(三十四):蓝牙4.0 BLE 多设备连接

    最近项目有个需求,手机设备连接多个蓝牙4.0 设备 并获取这些设备的数据. 查询了很多资料终于实现,现进行总结. ------------------------------------------- ...

  9. 多模字符串匹配算法之AC自动机—原理与实现

    简介: 本文是博主自身对AC自动机的原理的一些理解和看法,主要以举例的方式讲解,同时又配以相应的图片.代码实现部分也予以明确的注释,希望给大家不一样的感受.AC自动机主要用于多模式字符串的匹配,本质上 ...

  10. 再起航,我的学习笔记之JavaScript设计模式20(策略模式)

    策略模式 策略模式(Strategy):将定义的一组算法封装起来,使其相互之间可以替换.封装的算法具有一定的独立性,不会随客户端变化而变化. 其实策略模式在我们生活中可应用的地方还是比较多的,比如在商 ...