设为首页 加入收藏

TOP

PIC单片机状态寄存器中的C(进位/借位位标志)
2017-10-11 15:06:58 】 浏览:2454
Tags:PIC 单片机 状态 寄存器 (进位 标志

  查阅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)!

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇51单片机 | 模拟PWM调制控制实验 下一篇51单片机 | 实现四相步进电机控制..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目