Keil C51中直接使用二进制数方法
- 格式:docx
- 大小:9.88 KB
- 文档页数:2
习题_C51语⾔答案⼀、填空1.KeiL C51软件中,⼯程⽂件的扩展名是___UV2_______,编译连接后⽣成可烧写的⽂件扩展名是___HEX_________。
2.C51⽀持的指针有⼀般指针和存储器指针。
3.C51中,没有专门的循环语句,我们可以⽤函数____ crol _____完成⼀个字节的循环左移,⽤__ _irol_ ___完成⼆个字节的循环左移。
4.C51的基本数据类型有位型、字符型、整型、长整型、浮点型、双精度浮点型。
5.C51的存储类型有data 、bdata 、idata 、pdata 、xdata 、code 。
6.C51的存储模式有SMALL 、COMPACT 和LARGE 。
7.C51程序与其他语⾔程序⼀样,程序结构也分为顺序结构、选择结构、循环结构三种。
8.C51中int型变量的长度为 4位,其值域为0~65535 。
9.C51中关键字sfr的作⽤定义8位特殊功能寄存器,sbit的作⽤定义可位寻址对象,⽤于位寻址,从位寻址字节中定义位变量。
10.函数定义由函数⾸部和函数体两部分组成。
11.C51中“!”运算符的作⽤是逻辑运算结果值取反。
12.若函数⽆返回值,⽤void 关键字指定。
13.若局部变量未初始化,其初值为0 。
⼆、单项选择题:1.89S51的内部程序存储器与数据存储器容量各为多少?( C )(A)64KB、 128B ( B)4KB、64KB(C)4KB、128B (D)8KB、256B2.在8x51芯⽚⾥,哪个引脚⽤于控制使⽤内部程序存储器还是外部程序存储器?( B) P17 (A)XTAL1 (B)/EA (C)/PSEN(D)ALE3.下列哪个不是KeilC的预处理命令?(C) (A)#include(B)#define(C)#exit(D)#if4.下列哪个不是KeilC的数据类型?( B) (A)void(B)string(C)char(D)float5.在KeilC的程序⾥,若要指定P0⼝的bit3,如何编写?(C )(A)P0.3 (B)Port0.3 (C)P0^3 (D)Port^36.在8x51⾥,若要扩展外部存储器时,数据总线连接哪个输⼊/输出端⼝?(A )(A)P0 (B)P1 (C)P2 (D)P37.在KeilC⾥,判读开关状态时,使⽤if_else if语句与使⽤switch语句有何差异?(B )(A)if-else if 语句较快(B)if-else if语句有优先级(C)switch语句可判读较多开关状态(D)switch语句有优先级8.在KeilC⾥,中断⼦程序与函数有何不同?(A )(A)中断⼦程序不必声明(B)函数不必声明(C)中断⼦程序必须有形式参数(D)中断⼦程序⼀定会有返回值9.利⽤下列( A )关键字可以改变⼯作寄存器组A、interruptB、sfrC、whileD、using10.C51中⼀般指针变量占⽤( C )字节存储。
Keil C51使用详解keilc51使用详解v1.0电子设计世界!版权所有,热烈欢迎贴文,切勿修正并标明原文。
留存一切权利。
第一章keilc51开发系统基本知识 (6)1第一节系统概述 (6)第二节keilc51单片机软件开发系统的整体结构...6第三节keilc51工具包的加装...71.c51fordos72.c51forwindows的安装及注意事项:...7第四节keilc51工具包各部分功能及使用简介...71.c51与a51.72.l51和bl51.83.dscope51,tscope51及monitor51.84.ishell及uvision.9第二章keilc51软件使用详解 (10)第一节keilc51编译器的控制指令...101.源文件掌控类 (10)2.目标文件(object)控制类:...103.列表文件(listing)控制类:...10第二节dscope51的使用...111.dscope51fordos112.dscopeforwindows12第三节monitor51及其使用...131.monitor51对硬件的要求...132.mon51的使用...133.mon51的配置...134.串口连接图:...135.mon51命令及使用...14第四节集成开发环境(ide)的使用...141.ishellfordos的使用 (14)22.uvisionforwindows的使用 (15)第三章keilc51vs标准c..15第一节keilc51扩展关键字...15第二节内存区域(memoryareas):...161.pragramarea:...162.internaldatamemory:163.externaldatam emory.162.可位串行区表明20h-2fh..18第七节keilc51指针...181.通常指针...182.存储器指针...183.指针切换...18第八节keilc51函数...191.中断函数声明:...192.通用型存储工作区 (19)3.选通用存储工作区由usingx声明,见上例。
Keil C51实验项目Keil C51实验项目 (1)一、单片机的IO编程 (3)实验1 IO开关量输入实验 (3)实验2 IO输出驱动继电器(或光电隔离器)实验 (4)实验3 IO输入/输出---半导体温度传感器DS18B20实验 (5)二、单片机的中断系统 (6)实验 1 外部中断----脉冲计数实验 (6)实验 2 外部中断----故障报警实验 (7)三、单片机的定时器/计数器 (8)实验1 计数器实验 (8)实验2 秒时钟发生器实验 (10)四、单片机的串口特点和编程 (11)实验1 PC机串口通讯实验 (11)实验2 RS485通讯实验 (13)五、存储器 (14)实验1 RAM存储器读写实验 (14)六、PWM发生器 (15)实验1 PWM发生器(模拟)实验 (15)实验2 蜂鸣器实验 (16)七、WDG看门狗 (17)实验1 外扩WDG(MAX705)实验 (17)实验2 WDG(内部)实验 (18)八、SPI总线 (19)实验1 SPI(模拟)实验-----TLC2543 AD转换实验 (19)实验2 SPI(模拟)实验-----TLV5616 DA转换实验 (20)九、I2C总线 (21)实验1 I2C(模拟)实验-----IC卡(AT24C01)读写实验 (21)十、综合实验 (23)实验1 HD7279LED数码管显示实验 (23)实验2 HD7279键盘实验 (23)实验3 电机转速实验 (24)十一、步进电机实验 (26)实验1 步进电机正反转实验 (26)十二、TFT液晶显示实验 (26)实验1 TFT液晶显示彩色条纹实验 (26)十三、16X16LED点阵显示汉字实验 (27)实验1 16X16LED点阵显示汉字实验 (27)一、单片机的IO编程实验1 IO开关量输入实验目的:学习单片机读取IO引脚状态的的方法。
内容:编程读取IO引脚状态。
设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。
在Keil中,进制数表示方式与C语言中的表示方式相似,通常有以下几种形式:
十进制表示法:
c
Copy code
int decimalNumber = 10; // 十进制表示法
十六进制表示法:
c
Copy code
int hexNumber = 0xA; // 十六进制表示法
八进制表示法:
c
Copy code
int octalNumber = 012; // 八进制表示法
二进制表示法:
c
Copy code
int binaryNumber = 0b1010; // 二进制表示法(C++14及以上支持)
在Keil中,你可以在C语言中使用这些表示法来初始化变量或进行其他的数值操作。
请注意,C语言中的整数默认以十进制表示,但你可以使用上述不同的进制表示法来指定其他进制。
在Keil中使用不同进制的常数值可能会方便你在嵌入式系统开发中进行位操作或配置寄存器的值。
例如,在设置某个寄存器的配置时,通常使用位掩码并设置相应的位,这时候使用十六进制或二进制表示法可能更为直观。
51单片机进制转换程序
本程序可以在51单片机上实现十进制、二进制、十六进制之间的相互转换。
以下是各个功能的详细说明:
1. 十进制到二进制:将输入的十进制数转换成二进制数,以字符串的形式输出。
2. 十进制到十六进制:将输入的十进制数转换成十六进制数,以字符串的形式输出。
3. 二进制到十进制:将输入的二进制数转换成十进制数,以整数的形式输出。
4. 十六进制到十进制:将输入的十六进制数转换成十进制数,以整数的形式输出。
5. 二进制到十六进制:将输入的二进制数转换成十六进制数,以字符串的形式输出。
6. 十六进制到二进制:将输入的十六进制数转换成二进制数,以字符串的形式输出。
程序流程图:
(1) 十进制到二进制:
输入:十进制数(整数)
输出:二进制数(字符串)
流程:将十进制数除以2,取余数,然后将商继续除以2,直到商为0,将所有余数逆序排列,得到二进制数。
(2) 十进制到十六进制:
输入:十进制数(整数)
输出:十六进制数(字符串)
流程:将十进制数除以16,取余数,然后将商继续除以16,直到商为0,将所有余数逆序排列,得到十六进制数。
(3) 二进制到十进制:
输入:二进制数(字符串)
输出:十进制数(整数)
流程:将二进制数从右向左遍历,每个数字乘以2的幂次方(0次方到n-1次方),其中n为二进制数的长度,然后将所有结果相加得到十进制数。
(4) 十六进制到十进制:
输入:十六进制数(字符串)
输出:十进制数(整数)
流程:将十六进制数从右向左遍历,每个数字乘以16的幂次方(0次方到n-1次方),其中n为十六进制数的长度,然后将所有结果相加得到十进制数。
我找到了一些资料希望对你有用下周就要做实验了,由于听老师说机房位子可能比较少,对我这种蹭课的学生来说也就不敢奢望同选这门课的同学一样能够正常的在机房调试程序了,因此,我决定提前先在自己的工作室里把实验内容给过一遍。
第一个实验是关于嵌入式编程的,这个实验目的一方面是为了让我们熟悉ARM下编程的编译环境ADS和调试器ATX,另一方面是让我们掌握如何将c语言和汇编语言在实际编程中相互调用。
经过这两天靠自己不断的摸索,终于掌握了如何在编译环境中进行ARM编程,另外,还学会了在c中调用汇编程序的方法,以及如何通过linux自带的gcc编译嵌有汇编的c程序,总之,收获还是蛮多的哦,下面就总结一下吧。
1、c嵌汇编首先说一下关于GCC编译嵌有汇编语言的c语言吧,GCC编译的汇编语言不是我们上课时学的Intel x86汇编,而是AT&T汇编,两者的区别可以查看《Gcc使用的内嵌汇编语法格式小教程》。
下面是内嵌汇编的几种格式:语法__asm__(“instruction. ……instruction”); //Linux gcc中支持(注意asm的下划线均为两个否则GCC将会无法编译)__asm{instruction…instruction}; //ADS中支持(注意asm的下划线均为两个否则GCC将会无法编译)asm(“instruction [; instruction]”); //ARM C++中使用例1是我在linux环境下,编的嵌有汇编程序的c语言,并通过了GCC的编译:例1:#includeint plus(int a,int b){__asm__(“add %1,%0\n\t”:”+r”(a):”r”(b));return (c);}int main(){int a,b,c;a=2;b=1;c=plus(a,b);printf(“c=%d\n”,c);}这个程序应该是很简单的,但关键是子函数中嵌入的那段汇编程序,具体的写法可以参看其他文章。
Keil C51使用详解第一章Keil C51开发系统基本知识 (6)第一节系统概述 (6)第二节Keil C51单片机软件开发系统的整体结构 (6)第三节Keil C51工具包的安装 (7)1. C51 for Dos 72. C51 for Windows的安装及注意事项: (7)第四节Keil C51工具包各部分功能及使用简介 (7)1. C51与A51. 72. L51和BL51. 83. DScope51,Tscope51及Monitor51. 84. Ishell及uVision. 9第二章Keil C51软件使用详解 (10)第一节Keil C51编译器的控制指令 (10)1. 源文件控制类 (10)2. 目标文件(Object)控制类: (10)3. 列表文件(listing)控制类: (10)第二节dScope51的使用 (11)1. dScope51 for Dos 112. dScope for Windows 12第三节Monitor51及其使用 (13)1. Monitor51对硬件的要求 (13)2. Mon51的使用 (13)3. MON51的配置 (13)4. 串口连接图: (13)5. MON51命令及使用 (14)第四节集成开发环境(IDE)的使用 (14)1. Ishell for Dos的使用 (14)2. uVision for windows的使用 (15)第三章Keil C51 vs 标准C.. 15第一节Keil C51扩展关键字 (15)第二节内存区域(Memory Areas): (16)1. Pragram Area: (16)2. Internal Data Memory: 163. External Data Memory. 164. Speciac Function Register Memory. 16第三节存储模式 (16)1. Small模式 (16)2. Compact模式 (17)3. large模式 (17)第四节存储类型声明 (17)第五节变量或数据类型 (17)第六节位变量与声明 (17)1. bit型变量 (17)2. 可位寻址区说明20H-2FH.. 18第七节Keil C51指针 (18)1. 一般指针 (18)2. 存储器指针 (18)3. 指针转换 (18)第八节Keil C51函数 (19)1. 中断函数声明: (19)2. 通用存储工作区 (19)3. 选通用存储工作区由using x声明,见上例。
手把手教你学51单片机C语言教程(C语言基础)电平特性数字电路中只有两种电平:高和低(本学习笔记中)定义单片机为TTL电平:高+5V 低 0VRS232电平:计算机的串口电平:高 -12V 低+12V所以计算机与单片机之间通讯时需要加电平转换芯片max232。
二进制只有2个数字 0 同1 数字电路中也用1 表标高电平用0表示底电平。
十六进制二进制的简短表示形式,十进制中的0-15用十六进制表示为0、1、2、3、4、5、6、7、8、9、A、B、C、D 、E、F各种进位制的对应关系二进制数的逻辑运算“与”运算类似于数值“X”运算0·0=0 0·1=1·0=0 1·1=1“或”运算“或”运算是实现“只要其中之一有,就有”这种逻辑关系的一种运算, 其运算符为“+”。
“或”运算规则如下:0+0=0, 0+1=1+0=1, 1+1=1C-51的程序结构与一般C语言的结构相同,以main()函数为程序人口,程序体中包含若干语句还可以包含若干函数。
C-51函数的一般格式类型函数名(参数表){数据说明部分语句执行部分}C-51的数据类型基本数据类型C语言中的基本数据类型C-51的数据类型扩充定义sfr:特殊功能寄存器声明sfr16:sfr的16位数据声明sbit:特殊功能位声明bit:位变量声明例:sfr SCON = 0X98;sfr16 T2 = 0xCC;sbit OV = PSW^2;C-51数据的存储类型C-51数据的存储类型(续)例:数据类型存储类型变量char data var1;bit data flags;unsigned char xdata vextor[10];C-51的包含的头文件通常有:reg51.h math.h ctype.h stdio.h stdlib.h absacc.h 常用有:reg51.h (定义特殊功能寄存器和位寄存器);math.h (定义常用数学运算);C-51的运算符与C语言基本相同:+ - * / (加减乘除)> >= < <= (大于大于等于小于小于等于)== != (测试等于测试不等于)&& || ! (逻辑与逻辑或逻辑非)>> << (位右移位左移)& | (按位与按位或)^ ~ (按位异或按位取反)位右移位左移按位与按位或C-51的基本语句与标准C语言基本相同:if 选择语言switch/case 多分支选择语言while 循环语言do-while 循环语言for 循环语言版权声明:(部分资料图片来源网络)。
Keil C中直接使用二进制数的方法Keil C51中直接使用二进制数的方法在Keil C51中数不能直接以二进制形式赋值,虽然在8051的汇编中是可以的。
二进制数虽然书写长,易出错,但是由于是一位位写的,所以程序设计者能够很明确的看到每一位的状态,看得比较直观。
于是很多人怀念了8051的汇编,很想在C51中使用二进制。
没猜错的话搜到本篇日志的人很可能就是来找这种解决办法的,下面两种办法都是不错的选择。
方法一:建立一个头文件,将所有的二进制数宏定义列举出来,用的时候直接使用宏定义,头文件定义:binary(右键>>“目标另存为”>>下载)。
方法二:做一个带参数宏定义,将输入的类二进制数变换为对应的16进制数,整个定义和使用实例请见下文,可以直接使用,如果想研究原理又看不懂带参宏定义的朋友们请参考谭浩强的《C程序设计》预处理命令一章内容(第三版在P204-P211)。
#define LongToBin(n) \(\((n >> 21) & 0x80) | \((n >> 18) & 0x40) | \((n >> 15) & 0x20) | \((n >> 12) & 0x10) | \((n >> 9) & 0x08) | \((n >> 6) & 0x04) | \((n >> 3) & 0x02) | \((n ) & 0x01) \)#define Bin(n) LongToBin(0x##n##l)void main(void){ unisigned char c; c = Bin(10101001); //相当于c = 0xA9}上面预处理指令中使用了反斜杠\,这里解释一下:每一条预处理语句总是以"#"字符开始,并且不能超过一行,一旦遇到换行符语句就被当做结束,唯一的一种能将预处理语句扩展到多行的办法就是在换行符之前加一个反斜杠('\')。
c51 指令二进制## English Answer:C51 Instruction Set.The C51 instruction set is a set of instructions used by the 8051 microcontroller. It is a reduced instruction set computer (RISC) architecture, which means that it has a small number of instructions that are designed to be executed quickly. The C51 instruction set is divided into three types:Data manipulation instructions These instructions are used to perform operations on data, such as adding, subtracting, multiplying, and dividing.Control flow instructions These instructions are used to control the flow of execution of a program, such as branching, looping, and returning from a subroutine.Input/output instructions These instructions are used to transfer data between the microcontroller and the outside world, such as reading from a port or writing to a display.The C51 instruction set is a powerful set of instructions that can be used to implement a wide variety of applications. It is a popular choice for embedded systems because of its small size, low power consumption, and high performance.Instruction Format.The C51 instructions are all 8 bits wide. The first 4 bits of an instruction specify the opcode, which is the operation that the instruction will perform. The remaining 4 bits of an instruction specify the operands, which are the data that the instruction will operate on.Addressing Modes.The C51 instruction set supports a variety ofaddressing modes, which allow instructions to access datain different ways. The most common addressing modes are:Register addressing This addressing mode allows instructions to access data in the microcontroller's registers.Immediate addressing This addressing mode allows instructions to access data that is specified in the instruction itself.Direct addressing This addressing mode allows instructions to access data in the microcontroller's memory.Indirect addressing This addressing mode allows instructions to access data in the microcontroller's memory through a pointer.Example Instructions.The following are some examples of C51 instructions:MOV A, R0 This instruction moves the contents of register R0 to register A.ADD A, #5 This instruction adds the value 5 to the contents of register A.JMP 0x1000 This instruction jumps to the address0x1000.MOVX @DPTR, A This instruction moves the contents of register A to the memory location pointed to by the DPTR register.Conclusion.The C51 instruction set is a powerful set of instructions that can be used to implement a wide variety of applications. It is a popular choice for embedded systems because of its small size, low power consumption, and high performance.## 中文回答:C51 指令集。
C51单片机汇编语言程序设计一、二进制数与十六进制数之间的转换1、数的表达方法为了方便编程时书写,规定在数字后面加一个字母来区别,二进制数后加B十六进制数后加H。
2、二进制数与十六进制数对应表二进制十六进二进制制0000000100100011010001010110011101234567100010011010101111001101 11101111十六进制89ABCDEF3、二进制数转换为十六进制数转换方法为:从右向左每4位二进制数转化为1位十六进制数,不足4位部分用0补齐。
例:将(1010000110110001111)2转化为十六进制数解:把1010000110110001111从右向左每4位分为1组,再写出对应的十六进制数即可。
0101000011011000111150D8F答案:(1010000110110001111)2=(50D8F)16例:将1001101B转化为十六进制数解:把10011110B从右向左每4位分为1组,再写出对应的十六进制数即可。
100111109E答案:10011110B=9EH4、十六进制数转换为二进制数转换方法为:将每1位十六进制数转换为4位二进制数。
例:将(8A)16转化为二进制数解:将每位十六进制数写成4位二进制数即可。
8A10001010答案:(8A)16=(10001010)2例:将6BH转化为二进制数解:将每位十六进制数写成4位二进制数即可。
6B01101011答案:6BH=01101011B二、计算机中常用的基本术语1、位(bit)计算机中最小的数据单位。
由于计算机采用二进制数,所以1位二进制数称作1bit,例如110110B为6bit。
2、字节(Byte,简写为B)8位的二进制数称为一个字节,1B=8bit3、字(Word)和字长两个字节构成一个字,2B=1Word。
字长是指单片机一次能处理的二进制数的位数。
如AT89S51是8位机,就是指它的字长是8位,每次参与运算的二进制数的位数为8位。
用KeilC51开发定时器计数器用Keil C51开发定时器/计数器原文:基本的51单片机内部有两个16位可编程的定时器/计数器T0和T1。
它们各自具有4种工作状态,其控制字和状态均在相应的特殊功能寄存器中,可以通过软件对控制寄存器编程设置,使其工作在不同的定时状态或计数状态。
现在,许多厂家生产的8051兼容单片机上,还加入了定时器/计数器2,使单片机的应用更为灵活,适应性更强。
很多8051单片机的书籍都对定时器/计数器有详细的介绍,我们在此不再详细地讨论。
但因为编写或或阅读程序时经常要查阅定时器/计数器的设置情况,因此我们仅对一些编程时经常要用到的较重要的寄存器和设置方式进行简要简介。
1 定时器/计数器简介8051单片机的定时器/计数器基本结构如图1-1所示,定时器T0由两个8位计数器TH0和TL0构成,定时器T1也由两个8位计数器TH1和TL1构成,TMOD寄存器控制定时器的工作方式,TCON寄存器控制定时器的启动和停止以及定时器的状态。
图1-1 定时器/计数器结构在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的。
实际上,定时器就是单片机机器周期的计数器。
因为每个机器周期包含晶体振荡器的12个振荡周期,而每一个机器周期定时器加1,故其频率为晶振频率的1/12。
如果晶振频率为12MHz,则定时器每接收一个输入脉冲的时间为1?s。
选择计数器工作方式时,计数脉冲来自相应的外部输入引脚T0(P3.4)或T1(P3.5)。
在这种情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加1。
2 控制和状态寄存器(1)定时器控制寄存器(TCON)TCON为定时器/计数器的控制寄存器,同时也锁存外部中断请求标志,各位定义如下。
TF1:定时器/计数器1中断请求标志位。
当定时器计数满溢出回零时,由硬件置位,并可申请中断。
当CPU响应中断并进入中断服务程序后,TF1自动清零。
TR1:定时器/计数器1运行控制位,靠软件置位或清除。
Keil C51集成开发环境编程与调试教程山东师大传媒学院刘新阳编一、Keil中进行C语言编程的基本步骤同VC之类的通用C语言集成开发环境(IDE)一样,Keil也采用“工程”(Project)的方式管理源代码及相关文件,这种管理方式为由多个源代码文件组成的大型程序开发提供了方便。
不管是最简单的C51程序,还是复杂的多文件程序都需要以下步骤:1)先建立新的工程文件;2)在工程中新建源代码文件,或是将已经存在的源代码文件加入工程;3)编译;4)调试,修正错误再编译;5)将生成的二进制文件*.hex烧入单片机。
本教程重点介绍上述前4个步骤。
二、Keil中新建工程的步骤1. 单击菜单“Project——New uVision Project……”出现新建工程对话框:在此对话框中选择存放工程各类文件的路径和文件夹,然后为工程的主文件取个名字,以后单击该主文件即可打开这个工程项目。
2. 选择单片机型号上个窗口关闭后,马上会呈现下面这个窗口,在这里我们要选择所使用的单片机型号。
具体到这里,我们选择Atmel文件夹下的AT89C51。
(也可以选择下面的AT89C52、AT89S51或AT89S52)注意:单击OK后会出现下面这个提示信息:这里一定要选“否”,即:不需要自动添加起始代码。
完成后,即可看到Keil主界面:此时可以看到屏幕左侧的“Project”窗口(工程文件管理器)中,Target1下面的Source Group1(源代码文件组1)为空,即现在新建的工程中还不包含任何源代码文件。
所以,接下来要做的就是新建源代码文件。
3. 新建源代码文件单击菜单“File——New……”之后,即可在编辑区看到新建了一个名为text1的文本文件。
单击工具栏上的“保存”(图标为磁盘)按钮,可以在保存文件对话框中选择这个文本文件的保存位置(一般和工程文件保存在同一级文件夹)和文件的主名及扩展名。
如果只有一个源代码文件,一般主名命名为工程名,若是C语言源代码,扩展名设置为.c即可。
Keil C51 中直接使用二进制数方法
在Keil C51 中数不能直接以二进制形式赋值,虽然在8051 的汇编中是可以的。
二进制数虽然书写长,易出错,但是由于是一位位写的,所以程序设计者能够很明确的看到每一位的状态,看得比较直观。
于是很多人怀念了8051 的汇编,很想在C51 中使用二进制。
没猜错的话搜到本篇日志的人很可能就是来找这种解决办法的,下面两种办法都是不错的选择。
方法一:
建立一个头文件,将所有的二进制数宏定义列举出来,用的时候直接使用宏定义,头文件定义:binary(右键目标另存为下载)。
方法二:
做一个带参数宏定义,将输入的类二进制数变换为对应的16 进制数,
整个定义和使用实例请见下文,可以直接使用,如果想研究原理又看不懂带参宏定义的朋友们请参考谭浩强的《C 程序设计》预处理命令一章内容(第三版在P204-P211)。
#define LongToBin(n)
(
((n 21) 0x80) |
((n 18) 0x40) |
((n 15) 0x20) |
((n 12) 0x10) |
((n 9) 0x08) |
((n 6) 0x04) |
((n 3) 0x02) |。