⑴ 什么叫c51十六进制
C51 是单片机型号的一种,C51是51系列单片机编程中的数据格式为十六进制
相关资料:
就51系列而言,由于Intel公司将其内核使用权以专利互换或出售的形式转给世界许多着名IC制造商,如PHILIPS、SIEMENS、AMD、ATMEL、SST、STC等,这样51系列就变成有众多制造厂商支持的、发展出上百个品种的大家族。到目前为止,其它任何一种单片机系列均未发展到如此规模。
这类单片机具有集成度高、性能价格比优越、货源充足等优点,在工业测量领域内获得了极为广泛的应用。51系列单片机是我国的主流机种,它的开发工具(仿真器、编程器、编译系统等)也很容易购买到,而且价格较底。我们学习单片机也选择从51系列开始。
在51系列单片机中,按ROM(程序存储器)的类型来分,可大致分为三种:1、片内带内部掩膜ROM的(8051)它是由生产厂家用最后一道工序掩膜工艺来写入程序的,用户不能修改。用于大批量的产品。2、片外挂接ROM的(8031),这类单片机本身不含ROM,需要用户自己外接,主要用在早期的51系列单片机开发中。3、片内带EPROM的(8751),这类单片机目前常用的有OTP型和FLASH型。
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。
⑵ 单片机十六进制如何转成二进制数
单片机十六进制和二进制数,不用转换,计算机内的数据都是以二进制保存的。几进制数,只是以不同的方式来显示。本质上是一样的。
如果一定要转换,具体参考如下:
unsigned char num; //定义一个8位数
if(num&(1<<n))
...;//num 的第N位是1
else
...;//num 的第N位是0
当然可以放在一个循环里面;
for(unsigned char i=0;i<8;i++) {
if(num&(1<<n))
...;//num 的第N位是1
else
...;//num 的第N位是0
}
⑶ 单片机IO口十六进制问题
单片机IO口十六进制 比如
P2=0x01 对应 P2^0=1
P2=0x02 对应 P2^1=1
P2=0x04 对应 P2^2=1
P2=0x08 对应 P2^3=1
P2=0x10 对应 P2^4=1
P2=0x20 对应 P2^5=1
P2=0x40 对应 P2^6=1
P2=0x80 对应 P2^7=1
P2=0x11 对应 P2^4=1 与 P2^0=1
P2=0xff 对应 P2^7=1 与 P2^6=1、P2^5=1、P2^4=1、P2^3=1、P2^2=1、P2^1=1、P2^0=1
⑷ 单片机的十六进制怎么表示
十六进制 是计算机中数据的一种表示方法.同我们日常中的十进制表示法不一样.它由0-9,A-F,组成.与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0---(N-1)的数表示超过9的用字母A-F。 例如: 10进制的32表示成16进制就是:20 16进制的32表示成10进制就是:3×16^1+2×16^0=50 6.1 为什么需要八进制和十六进制? 编程中,我们常用的还是10进制……毕竟C/C++是高级语言。 比如: int a = 100,b = 99; 不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。 但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是: 0000 0000 0000 0000 0110 0100 面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。 用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢? 2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。 6.2 二、八、十六进制数转换到十进制数 6.2.1 二进制数转换为十进制数 二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:101100100,转换为10进制为:356
⑸ 单片机c语言十进制转十六进制
转来做什么的问题,十进制的13 存到单片机的内存里就是0X0D....
⑹ 单片机十六进制共阳极代码
51单片机和开发板是什么关系?怎么用?
⑺ 单片机中将十六进制转化成十进制并显示
给你一个比较好理解的十六进制转换为BCD码的程序。
BCDT:
MOV R5,#16 ;设置计数值
CLR A
MOV R2,A ;存放结果寄存器清零
MOV R3,A
MOV R4,A
MOV R6,TH1
MOV R7,TL1
LOOP:
CLR C
MOV A,R7 ;取被转换二进制数乘二
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R4 ;乘2加c后经十进制调整转
ADDC A,R4 ;换成BCD码存入R2R3R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
DA A
MOV R3,A
MOV A,R2
ADDC A,R2
DA A
MOV R2,A
DJNZ R5,LOOP
RET
⑻ 单片机C语言中小数的十六进制数怎么表示
浮点数没有16进制的表达方式,只有整数类型有。
整型常量有3种表示方式:
①十进制整数。例如,123、一456、0。
②八进制整数。以0开头的整数是八进制数。例如,0123表示8进制数123<8),等于十进制数83。
③十六进制整数。以ox或0x开头的整数是十六进制数。例如,0x1.23或0Xl 23表示十六进制数123…),等于十进制数291。
如果在整型常量后面加上字母u或u,则表示无符号整数(unsigned int)。例如,123U或123u是unsigned int型的。如果在整型常量后面加上一个字母L或l,则表示长整数(10ngint)。例如,123[.或123l是long int型的。
⑼ 51单片机16进制编程
如果是ASCII码表内的符号值,那么ASCII值本身就可以认为是 16进制的(因为进制只是给人看的,单片机只有2进制,没有ASCII 和 Hex 之分),但如果是Hex值,经过ASCII发送后,需要接收解出数值,那么可以用这个函数:
uchar ASCII_ToHex(uchar ascii_data) //ASCII 转 Hex 函数
{
uchar hex_data=0; //定义 Hex变量存储转换结果
if(ascii_data>='0' && ascii_data<='9') hex_data=ascii_data-'0'; //若 转换内容为 字符'0-9',则转成对应数字0-9
else if(ascii_data>='a' && ascii_data<='f') hex_data=ascii_data-'a'+10; //若 转换内容为 字符'a-f',则转成数字10-15
else if(ascii_data>='A' && ascii_data<='F') hex_data=ascii_data-'A'+10; //若 转换内容为 字符'A-F',则转成数字10-15
return hex_data; //返回转换结果,非以上字符,不在Hex(0-F)范围内,默认0
}//