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

  C:进位/借位位。

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

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

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

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

  1、加法:

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

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

  2、减法:

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

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

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

  1. ;测试SUBWFADDWF指令与状态寄存器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)!

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. mysql按某个列执行1-N排名的问题

    对所有员工的当前(to_date='9999-01-01')薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列CREATE TABLE `salaries` (` ...

  2. javascript-数组的常用方法

    不知大家是否有过跟我类似的经历,就是切图仔刚开始做切图页面的时候,经常调用一些别人写的jquery插件,例如音乐播放器这种需要切换多首音乐的插件.调用的时候就必须有一个音乐队列,而这个队列就是一个数组 ...

  3. How to enable your website to public(set up your web server at home)

    As a so exciting dream, I would like set up my owned web site which can be accessed anywhere nomatte ...

  4. JSP的四个作用域

    JSP的作用域一般是对于变量而言的,描述的是变量在某处是否有效(可用) JSP的四个作用域       名称          作用域       page 当前页面有效 request 当前请求中有 ...

  5. React渲染问题研究以及Immutable的应用

    写在前面 这里主要介绍自己在React开发中的一些总结,关于react的渲染问题的一点研究. 另外本人一直希望在React项目中尝试使用,因此在之前已经介绍过immutable的API,可以参看这里I ...

  6. python链接MySQLdb报错:2003

    使用python链接Mysql数据库操作,遇到问题! 问题如图所示: 解决方法:将"localhost"改为"127.0.0.1" db=MySQLdb.con ...

  7. JDK安装与配置详细图文教程

    目的:本人健忘,以后难免会重装系统啥的,软件卸了装是常有的事,特此写此详细教程,一是方便自己以后重装的时候可以看看:二是如果有某位初学者有幸光临,也可以给一点参照.下面我会从JDK的下载.安装.环境变 ...

  8. Mybatis映射文件完整模板参照

    Mybatis映射文件完整模板参照 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE map ...

  9. lucene&solr-day1

        全文检索课程 Lucene&Solr(1) 1.   计划 第一天:Lucene的基础知识 1.案例分析:什么是全文检索,如何实现全文检索 2.Lucene实现全文检索的流程 a)   ...

  10. CSS3学习笔记-1:CSS样式继承

    自己在写css时总会遇上css样式继承的问题,好在一般问题不大,但一直也不明白css样式继承的规则,最近发现了一篇文章讲的不错,因此转载过来: 所谓CSS的继承是指被包在内部的标签将拥有外部标签的样式 ...