一.单片机中的数制和数制转换
1.单片机的数制
数制是指数的制式,是人们利用符号计数的一种科学方法,单片机常用的数制有十进制、二进制和十六进制。
(1)十进制
它是大家最熟悉的计数制,有0~9十个数码。十进制数的末尾加英文字母D 表示它是一个十进制,字母D也可以省略不写。
(2)二进制
数字电路中只有两种电平特性,即高电平和低电平,这两个状态只需要用“0”和“1”两个数字区分就可以了,所以数字电路中使用二进制计数.二进制是计算机采用的计数制,它有0、1两个数码,任何二进制数都由这两个数码组成.因为它只有0和1两个数码,采用晶体管的导通和截止、脉冲的高电平和低电平等都很容易表示它。此外,二进制数运算简单,便于用电子线路实现。二进制数用末尾加一个英文字母B表示它是一个二进制数。二进制数的基数为2,它奉行“逢2进1”的进位计数原则。
(3)十六进制
它有0、1~9、A、B、C、D、E、F共16个数码,任何一个十六进制数都是由其中的一些或全部数码构成的。十六进制数的末尾加英文字母H 表示它是一个十六进制数。十六进制数的基数为16,进位计数为逢16进1。
2.单片机的数制转换
在单片机的编程中,经常要用到二进制到十六进制的转换,特别是8位二进制到十六进制的转换。这里采用的51单片机是8位的,编程时一般把8位二进制数,即一个字节作为一个整体处理,在对字节中的某个位置位或清0时,就对这个位送出了高电平或低电平。而一般在写程序时,不写出二制数,因为它不方便记忆,而是要用相等的十六进制数表示,所以要进行这两种数制的转换,熟记16以内的数制转换规律将对提高编程效率大有帮助。
二.关于二进制的逻辑运算
在计算机内常用“0”和“1”表示这两个逻辑值,“0”表示假,“1”表示真。因此,在逻辑电路中,输入和输出只有两种状态,即高电平“1”和低电平“0”。
1.与
与运算有两个输入量,一个输出量,它的特点是“有0出0,全1出1”。单片机C语言中与运算符为“&”,运算规则为:0&0=0,0&1=1&0=0,1&1=1。运算符“&”表示按位与运算,意思是变量按二进制位数对应关系逐位相与。
例如:(1010 1111)&(1010 0000)=1010 0000
2.或
或运算有两个输入量,一个输出量,它的特点是“有1为1,全0出0”。单片机C语言中的或运算符为“|”,运算规则为:0|0=0,0|1=1|0=1,1|1=1。运算符“|”表示按位或运算,意思是变量按二进制位数对应关系逐位相或。
例如:(1010 1111)|(1010 0000)=1010 1111
3.非
非运算实现“求反”功能的运算。单片机C语言中的非运算符为“!”,运算规则为:!0=1,!1=0。运算符“~”表示按位取反运算,如~0101 0000=1010 1111,而“!”运算只是对一位取反的运算。
4.同或
同或逻辑运算符为“☉”,运算规则为:0☉0=1,1☉0=0,0☉1=0,1☉1=1。在C语言中没有规定符号。
5.异或
异或逻辑运算符为“⊕”,运算规则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0。在单片机C语言中按位异或运算符为“^”。
三.数据类型
数据是具有一定格式的数字或数值,它是计算机操作的对象。不管使用何种语言、何种算法设计程序,都要对数据进行处理,最终在计算机中运行的只有数据流。数据的格式通常称作数据类型。按照数据类型对数据进行的排列、组合、架构则称为数据结构。C51的数据类型如下图所示。
除了上述C51数据类型外,还有针对8051系列单片机内的特殊功能寄存器而设置的sfr和sfr16类型的数据和为操作特殊寄存器中的特定位而设置的sbit类型的数据。C51中常用的数据类型如下表所示。
sfr———特殊功能寄存器的数据声明,声明一个8位的寄存器;
sfr16———16位特殊功能寄存器的数据声明;
sbit———特殊功能位声明,也就是声明某一个特殊功能寄存器中的某一位。
四. IO口的总线控制方式
五.本节必需掌握的重点
六.C语言的数组