pic c语言 位标志,PIC单片机状态寄存器中的C(进位/借位位标志)
查閱PIC單片機(jī)芯片手冊(cè),關(guān)于進(jìn)位/借位位的說明為:
C:進(jìn)位/借位位。
1 = 結(jié)果的最高位發(fā)生了進(jìn)位
0 = 結(jié)果的最高位未發(fā)生進(jìn)位
同時(shí)有一條標(biāo)注:借位的極性是相反的。
通過以上說明,可以將C的分析分為兩種情況:
1、加法:
最高位發(fā)生了進(jìn)位:C = 1;
最高位未發(fā)生進(jìn)位:C = 0;
2、減法:
最高位發(fā)生了借位:C = 0;
最高位未發(fā)生借位:C = 1;
為了加深理解,在MPLAB中寫入一段代碼,通過觀測(cè)STATUS寄存器的值來測(cè)試以上分析:
1 ;測(cè)試SUBWF、ADDWF指令與狀態(tài)寄存器C標(biāo)志位的關(guān)系
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 ;被減數(shù) < 減數(shù)
14 MOVLW ? ? ? ?54H
15 MOVWF ? ? ? ?Sub_Register_Small
16 MOVLW ? ? ? ?66H
17 SUBWF ? ? ? ?Sub_Register_Small, F
18
19 SWAPF ? ? ? ?STATUS, W ? ? ? ? ? ?;保存狀態(tài)寄存器值
20 MOVWF ? ? ? ?Small_Status
21 SWAPF ? ? ? ?Small_Status, F
22
23 ;被減數(shù) > 減數(shù)
24 MOVLW ? ? ? ?77H
25 MOVWF ? ? ? ?Sub_Register_Large
26 MOVLW ? ? ? ?66H
27 SUBWF ? ? ? ?Sub_Register_Large, F
28
29 SWAPF ? ? ? ?STATUS, W ? ? ? ? ? ?;保存狀態(tài)寄存器值
30 MOVWF ? ? ? ?Large_Status
31 SWAPF ? ? ? ?Large_Status, F
32
33 ;加法進(jìn)位
34 MOVLW ? ? ? ?77H
35 MOVWF ? ? ? ?Add_Register
36 MOVLW ? ? ? ?0BBH
37 ADDWF ? ? ? ?Add_Register, F
38
39 SWAPF ? ? ? ?STATUS, W ? ? ? ? ? ?;保存狀態(tài)寄存器值
40 MOVWF ? ? ? ?Add_Status
41 SWAPF ? ? ? ?Add_Status, F
42
43 END
啟用仿真后,查看內(nèi)存23H、24H、25H(保存的是以上三種操作后的STATUS)的值,結(jié)果如下:
Small_Status ?: 00011000B,對(duì)應(yīng)C=0(最高位發(fā)生了借位)
Large_Status : 00011011B,對(duì)應(yīng)C=1(最高位未發(fā)生借位)
Add_Status ? ?: 00011011B,對(duì)應(yīng)C=1(最高位發(fā)生了進(jìn)位)
為了簡單便于記憶,可以把C的進(jìn)/借位規(guī)則記為:加柴(1)做煎(減)蛋(0)!
總結(jié)
以上是生活随笔為你收集整理的pic c语言 位标志,PIC单片机状态寄存器中的C(进位/借位位标志)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何将下载的影像变换为西安80坐标系
- 下一篇: 文件 服务器属性,去除服务器文件上的R