📄 bitop.lst
字号:
C51 COMPILER V7.07 BITOP 07/08/2004 05:56:11 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE BITOP
OBJECT MODULE PLACED IN .\Output\BitOp.obj
COMPILER INVOKED BY: M:\Keil\C51\BIN\C51.EXE BitOp.C ROM(COMPACT) BROWSE MODP2 DEBUG OBJECTEXTEND CODE LISTINCLUDE SYMBO
-LS PRINT(.\List\BitOp.lst) OBJECT(.\Output\BitOp.obj)
stmt level source
1 /***********************************************************************************
2 C51 位操作函数库 BitOp.C
3
4 MCU 型号: Philips P89C668
5 时钟频率: 11.0592 MHz 6Clock
6 开发环境: Keil C51 V7.06
7 开发日期: 2003.09.17
8 程序编写: BaoFang
9
10 ***********************************************************************************/
11
12 /*宏uchar定义*/
13 #define uchar unsigned char
14
15
16 uchar code uc8Bit_value[8]={1,2,4,8,16,32,64,128};
17
18
19 /*******************************************************************
20 测试变量某一位是否为‘1’
21 函数原型: uchar fnBitTest(uchar ucNumTest,uchar ucBitNum)
22 功能: 测试变量某一位是否为‘1’
23 返回0--否
24 返回1--是
25 变量:ucNumTest为待测试的数
26 ucBitNum为位数,其值从 0到7
27 *******************************************************************/
28 uchar fnBitTest(uchar ucNumTest,uchar ucBitNum)
29 {
30 1 if( ucNumTest>> ucBitNum & 0x01 == 1 )
31 1
32 1 return 1;
33 1
34 1 else
35 1
36 1 return 0;
37 1 }
38
39 /*******************************************************************
40 清除某一位
41 函数原型: uchar fnBitClr(uchar ucNumTest,uchar ucBitNum)
42 功能: 清除某一位
43 返回结果
44 变量:ucNumTest为待清除的数
45 ucBitNum为位数,其值从 0到7
46 *******************************************************************/
47 uchar fnBitClr(uchar ucNumTest,uchar ucBitNum)
48 {
49 1
50 1 return ucNumTest & ~uc8Bit_value[ucBitNum];
51 1
52 1 }
53
54
C51 COMPILER V7.07 BITOP 07/08/2004 05:56:11 PAGE 2
55 /*******************************************************************
56 设置某一位
57 函数原型: uchar fnBitSet(uchar ucNumTest,uchar ucBitNum)
58 功能: 设置某一位
59 返回结果
60 变量:ucNumTest为待设置的数
61 ucBitNum为位数,其值从 0到7
62 *******************************************************************/
63 uchar fnBitSet(uchar ucNumTest,uchar ucBitNum)
64 {
65 1
66 1 return ucNumTest | uc8Bit_value[ucBitNum];
67 1
68 1 }
69
70
71 /*******************************************************************
72 取反某一位
73 函数原型: uchar fnBitCpl(uchar ucNumTest,uchar ucBitNum)
74 功能: 取反某一位
75 返回结果
76 变量:ucNumTest为待取反的数
77 ucBitNum为位数,其值从 0到7
78 *******************************************************************/
79 uchar fnBitCpl(uchar ucNumTest,uchar ucBitNum)
80 {
81 1
82 1 if( ucNumTest>> ucBitNum & 0x01 == 1 )
83 1
84 1 return ucNumTest & ~uc8Bit_value[ucBitNum];
85 1
86 1 else
87 1
88 1 return ucNumTest | uc8Bit_value[ucBitNum];
89 1 }
90
C51 COMPILER V7.07 BITOP 07/08/2004 05:56:11 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _fnBitTest (BEGIN)
; SOURCE LINE # 28
;---- Variable 'ucBitNum' assigned to Register 'R5' ----
;---- Variable 'ucNumTest' assigned to Register 'R7' ----
; SOURCE LINE # 29
; SOURCE LINE # 30
0000 AE05 MOV R6,AR5
0002 EF MOV A,R7
0003 A806 MOV R0,AR6
0005 08 INC R0
0006 8002 SJMP ?C0010
0008 ?C0009:
0008 C3 CLR C
0009 13 RRC A
000A ?C0010:
000A D8FC DJNZ R0,?C0009
000C 30E003 JNB ACC.0,?C0001
; SOURCE LINE # 32
000F 7F01 MOV R7,#01H
0011 22 RET
0012 ?C0001:
; SOURCE LINE # 36
0012 7F00 MOV R7,#00H
; SOURCE LINE # 37
0014 ?C0002:
0014 22 RET
; FUNCTION _fnBitTest (END)
; FUNCTION _fnBitClr (BEGIN)
; SOURCE LINE # 47
;---- Variable 'ucBitNum' assigned to Register 'R5' ----
;---- Variable 'ucNumTest' assigned to Register 'R7' ----
; SOURCE LINE # 48
; SOURCE LINE # 50
0000 ED MOV A,R5
0001 900000 R MOV DPTR,#uc8Bit_value
0004 93 MOVC A,@A+DPTR
0005 F4 CPL A
0006 5F ANL A,R7
0007 FF MOV R7,A
; SOURCE LINE # 52
0008 ?C0004:
0008 22 RET
; FUNCTION _fnBitClr (END)
; FUNCTION _fnBitSet (BEGIN)
; SOURCE LINE # 63
;---- Variable 'ucBitNum' assigned to Register 'R5' ----
;---- Variable 'ucNumTest' assigned to Register 'R7' ----
; SOURCE LINE # 64
; SOURCE LINE # 66
0000 ED MOV A,R5
0001 900000 R MOV DPTR,#uc8Bit_value
0004 93 MOVC A,@A+DPTR
0005 4F ORL A,R7
0006 FF MOV R7,A
; SOURCE LINE # 68
0007 ?C0005:
0007 22 RET
C51 COMPILER V7.07 BITOP 07/08/2004 05:56:11 PAGE 4
; FUNCTION _fnBitSet (END)
; FUNCTION _fnBitCpl (BEGIN)
; SOURCE LINE # 79
;---- Variable 'ucBitNum' assigned to Register 'R5' ----
;---- Variable 'ucNumTest' assigned to Register 'R7' ----
; SOURCE LINE # 80
; SOURCE LINE # 82
0000 EF MOV A,R7
0001 A805 MOV R0,AR5
0003 08 INC R0
0004 8002 SJMP ?C0012
0006 ?C0011:
0006 C3 CLR C
0007 13 RRC A
0008 ?C0012:
0008 D8FC DJNZ R0,?C0011
000A 30E009 JNB ACC.0,?C0006
; SOURCE LINE # 84
000D ED MOV A,R5
000E 900000 R MOV DPTR,#uc8Bit_value
0011 93 MOVC A,@A+DPTR
0012 F4 CPL A
0013 5F ANL A,R7
0014 FF MOV R7,A
0015 22 RET
0016 ?C0006:
; SOURCE LINE # 88
0016 ED MOV A,R5
0017 900000 R MOV DPTR,#uc8Bit_value
001A 93 MOVC A,@A+DPTR
001B 4F ORL A,R7
001C FF MOV R7,A
; SOURCE LINE # 89
001D ?C0007:
001D 22 RET
; FUNCTION _fnBitCpl (END)
C51 COMPILER V7.07 BITOP 07/08/2004 05:56:11 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
_fnBitSet. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ucNumTest. . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
ucBitNum . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
uc8Bit_value . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 8
_fnBitCpl. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ucNumTest. . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
ucBitNum . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
_fnBitClr. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ucNumTest. . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
ucBitNum . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
_fnBitTest . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ucNumTest. . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
ucBitNum . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 68 ----
CONSTANT SIZE = 8 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -