深圳市华胄科技有限公司 >> MCU专题 >> 单片机学习


单片机学习:走进单片机世界(二)



提交者 电子007  在  2007-8-3 15:21:23 

上一篇 下一篇

三.编码
由于计算机只能识别0和1两种状态,诸如数据、指令以及符号等只能以二进制的形式表示。按照一定的规律将这些讯息转换为对应的二进制代码称为编码。常用的信息编码有BCD码、ASCII码等。
二――十进制编码(BCD)
计算机中的数据处理是以二进制数运算法则进行的.但由于二进制数对操作人员来说不直观、容易出错,因此在计算机的输入输出中希望以人们熟悉的十进制数形式进行。因此找到一个比较适合于十进制数系统的二进制编码的特殊形式,即二进制编码的十进制数,简称BCD码。在BCD码中是用4位二进制数给十进制数0~9十个数进行编码,称之为二――十进制数。
由于4位二进制数从0000到1111可以表示16个数,所以理论上可以任选其中的10中代码来表示0到9的10个数字,但通常采用0到9数字对应的8421码作为其代码,从而称8421BCD码,这种编码方式与十进制数的关系相当直观,它们之间的转换也是十分简单的.
BCD码与十进制数的相互转换:按照BCD码的四位编码与十进制数的关系,每一位十进制数用四位8421BCD码表示即可:每组BCD码数用一位十进制数表示.
例:将十进制数87转换为BCD码.
解:87=1000 0111BCD
例:将二进制数0110 1001BCD转换为十进制数
解:0110 1001=69
BCD码数与十进制数之间的转换不是直接完成的.BCD码数先转换为十进制数,然后再油十进制数转换为二进制数,反之,将二进制数转换为十进制数,然后再由十进制数转换为BCD码数.
  BCD码数与十进制数的对照表
 
十进制数
8421BCD码
   十进制数
  8421BCD码
0
       0000
8
         1000
1
       0001
9
         1001
2
       0010
10
0001  0000
3
       0011
11
0001  0001
4
       0100
12
0001  0010
5
       0101
13
0001  0011
6
       0110
14
0001  0100
7
       0111
15
0001  0101
 
 
 
二进制、十进制、十六进制数、BCD码的对应关系
 
十进制数
 
十六进制
 
二进制
 
BCD码
 
十进制数
 
十六进制
 
二进制
 
BCD码
 
0
 
0
 
00000000
 
00000000
 
10
 
     A
 
00001010
 
00010000
 
1
 
1
 
00000001
 
00000001
 
11
 
     B
 
00001011
 
00010001
 
2
 
2
 
00000010
 
00000010
 
12
 
     C
 
00001100
 
00010010
 
3
 
3
 
00000011
 
00000011
 
15
 
      F
 
00001111
 
00010101
 
4
 
4
 
00000100
 
00000100
 
100
 
     64
 
10000000
 
10000000
 
 
字符的ASCII码
在计算机中除了数字用二进制表示之外,字母和各种字符也必须用二进制表示,目前最普遍使用的为ASCII码.ASCII码是美国信息交换标准代码(American  Standard  Code  for  Information  Inter-change)的缩写,它采用了7位二进制代码对字符进行编码,故可以表示128个不同的字符。
阿拉伯数字0~9的ASCII码分别为30H~39H,大写英文字母A、B……、Z的ASCII码则是从41H开始依次往上编排。回车符CR的ASCII码为0DH。
 
 
四.常用计数制的对应关系
下表列出了常用数值0~15的各种数制间的对应关系,在以后的学习中经常用到,要求能够熟练掌握。
 
十进制
二进制
十六进制
十进制
二进制
十六进制
0
0000B
0H
8
1000B
8H
1
0001
1H
9
1001B
9H
2
0010B
2H
10
1010B
AH
3
0011B
3H
11
1011B
BH
4
0100B
4H
12
1100B
CH
5
0101B
5H
13
1101B
DH
6
0110B
6H
14
1110B
EH
7
0111
7H
15
1111B
FH
 
 
五.逻辑数据的表示
为了使计算机具有逻辑判断能力,就需要逻辑数据,并能对它们进行逻辑运算,得出一个逻辑式的判断结果。每个逻辑变量或逻辑运算的结果产生逻辑值,该逻辑值仅取真或假两个值。判断成立为真,不成立为假。在计算机内常用0和1表示这两个逻辑值,0表示假,1表示真。
最基本的逻辑运算有与、或、非3种。
1.逻辑与
逻辑与也称之为逻辑乘,最基本的与运算有两个输入量和一个输出量。逻辑与可以用两个串联开关来等效。用语言描述就是:只有两个输入量都是1时,输出才为1。或者说有0为0,全1出1。
它的运算规则:0×0=0
                     0×1=0
                     1×0=0
                     1×1=1
 
2.逻辑或
逻辑或也叫逻辑加,最基本的逻辑或有两个输入量和一个输出量。逻辑或可用两个并联的开关来等效。用语言描述就是:只有两输入量都是0时,输出才为0,或者可以这样说有1为1,全0为0。
它的运算规则:0+0=0
                     0+1=1
                     1+0=1
                     1+1=1
3.逻辑非
逻辑非即取反,逻辑非可以用灯的并联开关来等效。用语言描述就是:1的反是0,0的反是1。
 
六.计算机的常用术语
 
用于照明的灯有两种状态,即亮与灭。如果规定灯亮为1,灭为0,那么两盏灯的亮和灭的状态可见下表
状态
○   ○
○   ●
●   ○
●   ●
表达
0     0
0     1
1     0
1     1
注:○表示灯灭,●表示灯亮。
 
1.位
一盏灯的亮与灭,可以分别代表两种状态:0和1。实际上这就是一个二进制位,一盏灯就是一位。位(BIT)的定义就是:位是计算机中所能表示的最小数据单位。
1.字节
一盏灯可以表示0和1两种状态,两盏灯可以表示00、01、10、11四种状态,也就是可以表示0、1、2和3。计算机通常把8位放在一起,同时计数,可以表示0~255一共256种状态。相邻8位二进制码称之为一个字节(BYE),用B表示。
字节(B)是一个比较小的单位,常用的还有KB和MB等。
          1KB=1024B
          1MB=1024KB=1024×1024B
3.字和字长
字是计算机内部进行数据处理的基本单位。由若干位二进制码组成,通常与计算机内部的寄存器、运算器、数据总线的宽度一致。每个字所包含的位数称为字长。若干个字节定义为一个字,不同的计算机有不同的字长。如80C51系列单片机是8位机,就是指它的字长是8位,其内部的运算器等都是8位的,每次参加运算的二进制位只有8位,而以8086为主芯片的PC机是16位的,既每次参加运算的二进制位有16位。
字长是计算机中一个重要指标,一般而言,字长越长,性能越好。
8位字长可表达的数的范围是0~255,这意味着参加运算的各个数据不能超过255,并且运算的结果和中间结果也不能超过255,否则就出错。但在解决实际问题时,往往有超过255的要求。比如单片机用于测量温度时,假设测温范围是0~1000℃,就超过了255的范围了。为了要表示这样的数,需要用两个字节组合起来表示温度。这样,在进行运算时就花更长时间。比如做一次乘法,如果乘数和被乘数都用一个字节表示,只要一步(1行程序)就完成了,而使用两个数组合起来,做一次乘法可能需要5步(5行程序)或更多才能完成。同样的问题,如果用16位计算机来解决,它的表达范围可以是0~65535,只要一次运算就可以解决问题,所需时间就少了。



单片机教程,五系列(55讲)电子书全集下载

论坛精选:
单片机学习,C51单片机入门经典30课 前言
http://bbs.huazhoucn.com/Topic.aspx?id=2694
单片机学习,C51单片机入门经典30课 第一课
http://bbs.huazhoucn.com/Topic.aspx?id=2695
单片机学习,C51单片机入门经典30课 第二课
http://bbs.huazhoucn.com/Topic.aspx?id=2696
单片机学习,C51单片机入门经典30课 第三课
http://bbs.huazhoucn.com/Topic.aspx?id=2697
单片机学习,C51单片机入门经典30课 第四课
http://bbs.huazhoucn.com/Topic.aspx?id=2698
单片机学习,C51单片机入门经典30课 第五课
http://bbs.huazhoucn.com/Topic.aspx?id=2699
单片机学习,C51单片机入门经典30课 第六课
http://bbs.huazhoucn.com/Topic.aspx?id=2700
单片机学习,C51单片机入门经典30课 第七课
http://bbs.huazhoucn.com/Topic.aspx?id=2701
单片机学习,C51单片机入门经典30课 第八课
http://bbs.huazhoucn.com/Topic.aspx?id=2702
单片机学习,C51单片机入门经典30课 第九课
http://bbs.huazhoucn.com/Topic.aspx?id=2703
单片机学习,C51单片机入门经典30课 第十课
http://bbs.huazhoucn.com/Topic.aspx?id=2704
单片机学习,C51单片机入门经典30课 第十一课
http://bbs.huazhoucn.com/Topic.aspx?id=2705
单片机学习,C51单片机入门经典30课 第十二课
http://bbs.huazhoucn.com/Topic.aspx?id=2706
单片机学习,C51单片机入门经典30课 第十三课
http://bbs.huazhoucn.com/Topic.aspx?id=2707
单片机学习,C51单片机入门经典30课 第十四课
http://bbs.huazhoucn.com/Topic.aspx?id=2708
单片机学习,C51单片机入门经典30课 第十五课
http://bbs.huazhoucn.com/Topic.aspx?id=2709
单片机学习,C51单片机入门经典30课 第十六课
http://bbs.huazhoucn.com/Topic.aspx?id=2710
单片机学习,C51单片机入门经典30课 第十七课
http://bbs.huazhoucn.com/Topic.aspx?id=2711
单片机学习,C51单片机入门经典30课 第十八课
http://bbs.huazhoucn.com/Topic.aspx?id=2712
单片机学习,C51单片机入门经典30课 第十九课
http://bbs.huazhoucn.com/Topic.aspx?id=2713
单片机学习,C51单片机入门经典30课 第二十课
http://bbs.huazhoucn.com/Topic.aspx?id=2556
单片机学习,C51单片机入门经典30课 第二十一课
http://bbs.huazhoucn.com/Topic.aspx?id=2715
单片机学习,C51单片机入门经典30课 第二十二课
http://bbs.huazhoucn.com/Topic.aspx?id=2716
单片机学习,C51单片机入门经典30课 第二十三课
http://bbs.huazhoucn.com/Topic.aspx?id=2717
单片机学习,C51单片机入门经典30课 第二十四课
http://bbs.huazhoucn.com/Topic.aspx?id=2718
单片机学习,C51单片机入门经典30课 第二十五课
http://bbs.huazhoucn.com/Topic.aspx?id=2719
单片机学习,C51单片机入门经典30课 第二十六课
http://bbs.huazhoucn.com/Topic.aspx?id=2720
单片机学习,C51单片机入门经典30课 第二十七课
http://bbs.huazhoucn.com/Topic.aspx?id=2721
单片机学习,C51单片机入门经典30课 第二十八课
http://bbs.huazhoucn.com/Topic.aspx?id=2722
单片机学习,C51单片机入门经典30课 第二十九课
http://bbs.huazhoucn.com/Topic.aspx?id=2723
单片机学习,C51单片机入门经典30课 第三十课
http://bbs.huazhoucn.com/Topic.aspx?id=2724
单片机学习,C51单片机入门经典30课 附录
http://bbs.huazhoucn.com/Topic.aspx?id=2731

2 楼  提交者:电子007 在 2007-8-4 9:51:56
3 楼  提交者:Guest 在 2007-9-29 10:00:19
楼主自己顶自己啊
4 楼  提交者:Guest 在 2007-10-1 9:09:45
好啊
好啊
好啊
好啊
好啊
好啊
5 楼  提交者:Guest 在 2007-10-8 17:19:40
kjgk
6 楼  提交者:Guest 在 2007-10-9 10:42:34
7 楼  提交者:林青天 在 2007-10-9 11:43:19
请问二进制数如何转换成ASC码?
8 楼  提交者:夕云落月 在 2007-10-15 9:49:44
0-9的二进制数转化为ASCII码是加30H,   
10-15的二进制数转化为ASCII码是加41H .


我不知道你用的是什么语言.
1用高级语言:
  入口:整数C
  出口:字符串S
  
  把S清空.

  while( C 除以16的余数不为0)
  {
    把余数转化成ASCII码.(就是你说的那个)
    把转化成的ASCII码添加到S中去.   
  }

  最后得到的S就是C的ASCII码表示.

2用汇编语言.
  入口参数:EBX
  出口参数:BUFFER

  do
{
    MOV EAX,EBX
AND EAX,03H //只留下最后两位

ADD AL,90H     //对最后两位(在AL中)进行转换
DAA
ADC AL,40H
DAA

MOV BYTE PTR BUFFER[i--],AL   //放入到BUFFER中,指针减1
}while(EBX右移2位后不为0)


备注:
AND EAX,0FH
EBX右移4位后不为0

9 楼  提交者:Guest 在 2007-10-17 16:38:49
顶顶
10 楼  提交者:Guest 在 2007-11-1 18:30:33
fg
11 楼  提交者:Guest 在 2007-11-6 14:59:33
我顶呀!
12 楼  提交者:Guest 在 2007-11-17 9:58:13
我顶呀!
13 楼  提交者:Guest 在 2007-12-10 13:24:41
14 楼  提交者:Guest 在 2007-12-19 17:02:33
ha
15 楼  提交者:Guest 在 2007-12-24 22:37:51
学习中
16 楼  提交者:Guest 在 2007-12-25 14:21:10
kankan
17 楼  提交者:Guest 在 2008-2-3 0:55:39


'njo

18 楼  提交者:Guest 在 2008-2-18 20:53:27
好难找的资料 谢谢楼主
19 楼  提交者:Guest 在 2008-3-30 11:43:35
顶啊
20 楼  提交者:Guest 在 2008-5-11 21:50:37
if
21 楼  提交者:Guest 在 2008-5-11 21:51:11
if
22 楼  提交者:Guest 在 2008-7-4 20:37:39
OK
23 楼  提交者:学步者 在 2008-7-9 9:17:19
24 楼  提交者:Guest 在 2008-7-23 13:47:30
00
25 楼  提交者:Guest 在 2008-8-10 23:44:00
ok
26 楼  提交者:Guest 在 2008-9-20 12:54:19
hao
27 楼  提交者:Guest 在 2008-9-29 8:56:55
28 楼  提交者:Guest 在 2008-10-5 13:32:56
感谢
29 楼  提交者:Guest 在 2008-10-5 13:34:59
无内容
30 楼  提交者:Guest 在 2008-10-16 23:34:29
上一篇 下一篇
当前第〖1〗页 共有2页 转到第 1 2