• PIC单片机状态寄存器中的C(进位/借位位标志)


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

      C:进位/借位位。

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

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

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

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

      1、加法:

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

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

      2、减法:

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

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

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

     1 ;测试SUBWF、ADDWF指令与状态寄存器C标志位的关系
     2 
     3 LIST        P=16F684
     4 include     "P16F684.INC"
     5 
     6 Sub_Register_Small    EQU        20H
     7 Sub_Register_Large    EQU        21H
     8 Add_Register          EQU        22H
     9 Small_Status          EQU        23H    
    10 Large_Status          EQU        24H    
    11 Add_Status            EQU        25H    
    12 
    13 ;被减数 < 减数
    14 MOVLW        54H
    15 MOVWF        Sub_Register_Small
    16 MOVLW        66H
    17 SUBWF        Sub_Register_Small, F
    18 
    19 SWAPF        STATUS, W            ;保存状态寄存器值
    20 MOVWF        Small_Status
    21 SWAPF        Small_Status, F
    22 
    23 ;被减数 > 减数
    24 MOVLW        77H
    25 MOVWF        Sub_Register_Large
    26 MOVLW        66H
    27 SUBWF        Sub_Register_Large, F
    28 
    29 SWAPF        STATUS, W            ;保存状态寄存器值
    30 MOVWF        Large_Status
    31 SWAPF        Large_Status, F
    32 
    33 ;加法进位
    34 MOVLW        77H
    35 MOVWF        Add_Register
    36 MOVLW        0BBH
    37 ADDWF        Add_Register, F
    38 
    39 SWAPF        STATUS, W            ;保存状态寄存器值
    40 MOVWF        Add_Status
    41 SWAPF        Add_Status, F
    42 
    43 END

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

         

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

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

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

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

  • 相关阅读:
    boost库常用库介绍
    boost介绍
    vs2019+win10配置boost库
    交互式多媒体图书平台的设计与实现
    47.全排列 2
    46.全排列
    基于VSCode的C++编程语言的构建调试环境搭建指南
    码农的自我修养之必备技能 学习笔记
    工程化编程实战callback接口学习笔记
    Erlang模块inet翻译
  • 原文地址:https://www.cnblogs.com/xbook-ben/p/7543587.html
Copyright © 2020-2023  润新知