第一篇
片上功能和开发环境
在目前这个物联网备受关注的时期,微控制器已无处不在,它已经从各个方面融入了我们的生活,并在悄悄地改变着我们的生活。美国ATMEL公司的微控制器因为融合了高效集成的设计、成熟可靠的技术和突破性的创新方案,成为现代智能互连产品领域的理想之选。如果你也想让你的产品更加智能、可靠、小巧、低碳而且经济实惠,选用ATMEL的处理器开发你的产品无疑是一个明智的决定。本书将以ATMEL公司的主流8位AVR系列单片机为例,配合全新推出的Atmel Studio 6.1集成开发环境,使你在充分了解AVR单片机强大功能的同时,在短时间内掌握AVR单片机的开发和使用。
全书共3篇22章,本篇主要讲述的是AVR单片机片内功能、使用C语言开发单片机程序的方法以及如何使用Atmel Studio 6.1集成开发环境,完成AVR单片机代码编写、编译、调试以及烧写全过程。
第1章
认识AVR
早在1997年,由ATMEL公司挪威设计中心的A先生与V先生利用ATMEL公司的Flash新技术,共同研发出RISC精简指令集的高速8位单片机,并将其命名为AVR。相对于早期的51系列单片机,AVR单片机的推出,彻底打破了传统单片机设计的格局,它废除了机器周期的概念,抛弃了复杂指令集(CISC),提高了指令执行速度,克服了数据处理的瓶颈现象,配以功能强大的I/O接口和丰富的片上资源,一经推出,便在市场上获得了巨大的成功。经过多年的发展,AVR系列单片机已经形成了完整的产品线,并广泛应用于计算机外部设备、工业实时控制、仪器仪表、通信设备、家用电器等各个领域。为了能让你感受到ATMEL的无穷魅力,我们就从认识AVR系列开始。
1.1AVR系列单片机
所谓单片机,就是在一个芯片上集成了构成一个计算机系统最基本的单元,如CPU、程序存储器、数据存储器、各种类型的功能模块和输入/输出接口等,使其具有一台计算机的基本属性。由于单片机主要用于逻辑运算和系统控制,因此也称其为微型控制单元,即MCU(Micro Control Unit)。
1.1.1系出名门的AVR
美国ATMEL(爱特梅尔)公司是全球领先的半导体产品设计、制造和行销企业,其产品线涵盖工业、消费、安全、通信、计算和汽车等多个应用领域。在微处理器产品中,ATMEL公司有基于8051内核、AVR内核和ARM内核的三大系列多款单片机产品。
ATMEL公司把8051内核与其擅长的Flash存储器技术相结合,最早推出了片内集成可重复擦写1000次以上Flash程序存储器、采用低功耗CMOS工艺的8051兼容单片机。例如,家喻户晓的AT89C51、AT89C52、AT89C2051都是ATMEL公司基于8051内核的典型产品。在此基础上,ATMEL公司又推出了基于ISP在线编程技术的AT89SXX系列产品和低功耗、单周期的AT89LPXX系列产品。ATMEL基于8051内核的系列产品,对我国的单片机市场影响巨大,并且在市场上占有相当的份额。
由于8051内核结构的单片机采用的是复杂指令系统CISC(Complex Instruction Set Computer)体系,基于CISC结构的单片机存在着指令系统不等长、指令数多、CPU工作效率低、代码执行速度慢等诸多缺点,随着时代的发展,它已经不能满足高档消费类电子产品和嵌入式系统的应用需求。为此,ATMEL公司又创新地推出了全新配置的采用精简指令集RISC(Reduced Instruction Set CPU)结构的单片机,简称AVR系列单片机。
AVR系列单片机对C语言和汇编语言代码进行了优化,大大提高了代码的执行效率,使其在执行指令和数据吞吐能力方面比传统CISC结构的单片机要快很多倍。此外,AVR系列单片机还具有丰富的片内模拟和数字外设,具备系统内可编程的E2PROM和FLASH存储器,从而大大提高了其灵活性和适用性。
1.1.2AVR系列产品家族
AVR系列的8位单片机产品结构如图1-1所示。
从图中我们不难看出AVR单片机可以分为三个系列:
1)tinyAVR 系列。此系列单片机产品定位于小型化低成本应用,芯片内部资源配置相对少一些,引脚数目也较少,适用于小型家用电器、简单的逻辑控制等低成本方面的应用。
2)megaAVR系列。megaAVR系列是目前ATMEL公司8位机的主打产品,也是备受市场青睐的一类单片机。该系列单片机产品线丰富,用户可根据实际需要在存储器、管脚数和外设方面选择不同型号的产品。megaAVR系列不仅具有强大的运算和处理能力,而且片上配置了如闪存、E2PROM、SPI、TWI 、USART、USB、CAN、看门狗定时器以及片内振荡器等诸多资源。所有的megaAVR系列产品都具有自我编程能力,可以实现快速、安全的在线升级功能。使用megaAVR系列单片机开发产品,既可以简化设计,又可有效地降低成本,是性价比很高的一类产品。
3)XMEGA系列。XMEGA系列单片机是ATMEL近年来发布的又一种新型单片机,其特点是高实时性、高集成度和超低功耗。它采用了ATMEL的第二代picoPower技术,使其真正可以在1.6V的低电压下运行。XMEGA系列具有快速12位A/D和D/A转换器、DMA控制器、创新的事件系统以及加密引擎,而且所有XMEGA单片机均兼容16位架构,是ATMEL公司8位单片机产品的领先之作,使用XMEGA系列开发产品能够大幅降低功耗并提高系统性能,是高端应用的首选。
. 以上介绍的tinyAVR系列、megaAVR系列和XMEGA系列单片机,除了外设功能和资源配置不同外,所有三个系列的单片机产品都具有相同的CPU内核,这可以最大限度地方便用户重复使用现有的开发工具和软硬件设计,以节省成本并缩短开发周期。
1.1.3AVR的特色功能
在使用单片机开发产品时,为了使产品更有竞争力,必须在单片机的性能和价格上做出平衡的考虑。使用AVR系列的单片机就是一个好的选择,它不仅自身成本低,而且开发工具更是“随手可得”。如果你不考虑芯片的仿真,那么一个成本不足10元的ISP下载器即可完成megaAVR系列单片机的烧写任务,可以说AVR开发的硬件门槛很低。
低成本不代表低性能。AVR系列单片机是8位单片机中第一个真正的RISC结构单片机,它采用了大型快速存取寄存器组、快速的单周期指令系统以及单级流水线等诸多先进技术,使得AVR单片机具备了高达1MIPS/MHz的运行处理能力,在市场上同类单片机产品中具有很强的竞争力。归纳起来,AVR系列单片机具有以下八大特点:
1.RISC精简指令集
精简指令集RISC结构是为了提高软件性能而推出的新型处理器结构,可以大幅提高CPU的运行效率。众所周知,51系列单片机采用的是复杂指令集CISC结构,CISC的每一条指令不仅冗长,而且不等长,需要指令译码器对每条指令的起止位置进行判断,然后才能执行。这个过程不仅使处理效率大大降低,而且会使功耗相应提高。而RISC结构的特点则是指令简短而且等长,其优点是无需对指令的起止位置进行判断,提高了代码的执行效率。
2.Harvard体系结构
51系列单片机是基于“冯·诺依曼”(Von-Neumann)结构设计的,这种内核结构的单片机典型特点是程序存储器和数据存储器都挂接在同一条8位的数据总线上,CPU也通过该总线对程序和数据存储器进行访问,在同一时间内,CPU要么从程序存储器中存取指令,要么从数据存储器中存取数据,这样就难免出现总线竞争的情况,从而影响单片机的工作效率。基于“冯·诺依曼”结构的单片机内部结构如图1-2所示。
AVR系列单片机采用的是“哈佛”(Harvard)结构。这种结构的特点是采用分开的指令和数据总线,CPU对数据存储器的访问是通过8位的数据总线来完成的,而对程序存储器的访问则是通过独立的16位指令总线来完成的。“哈佛”结构的优点是指令和数据空间完全分开,可以实现对程序和数据的同时访问,提高了CPU的执行速度和数据的吞吐率。采用“哈佛”结构的单片机内部结构如图1-3所示。
图1-2“冯·诺依曼”结构的单片机内部结构 图1-3“哈佛”结构的单片机内部结构
3.指令流水线
指令的执行需要两个步骤,即取指和执行。AVR单片机采用了指令流水线操作,在前一条指令执行时,就对下一条指令进行预读,这种方式的好处在于一条指令的执行可以在一个时钟周期内完成。AVR系列单片机指令的读取和执行方式如图1-4所示。
早期单片机由于制造工艺等原因,为确保系统的稳定,采用较高的分频系数对时钟分频。外部振荡器的时钟经分频后成为内部指令执行周期,8051单片机的分频比甚至高达1?∶?12。AVR系列单片机CPU的工作是由系统时钟直接驱动的,在片内不再进行分频,所以其时钟周期相当于指令周期。由于其采用了指令流水线操作,使一条指令在一个时钟周期内即可执行完毕,从而获得了高达1MIPS/MHz的执行速度。当芯片使用16M晶体时,单周期指令执行时间仅为62.5ns,其速度之快可见一斑。
4.通用寄存器组
AVR系列单片机使用32个通用工作寄存器代替传统意义上的累加器,这相当于有32条立交桥,可以使数据快速通行,从而避免了单一累加器和存储器之间数据传输的瓶颈现象,提高了指令的运行效率和速度。
5.固定中断向量入口
AVR系列单片机具有多个固定的中断向量入口地址,不同的中断对应不同的地址,这使得中断的响应时间变短而且可以预期,在一些对时间敏感的应用中,可以通过软件方法对时间值进行修正。
6.真正的I/O口
AVR系列单片机的I/O口是真正意义上的I/O口,能正确反映输入、输出的状态。I/O口在作为输出时其驱动负载的能力是8051系列所不能比拟的,单个I/O口输入/输出电流均可达到40mA,这样大的驱动能力完全可以直接点亮发光二极管、触发可控硅甚至是驱动微型继电器等外部器件。当I/O口作为输入使用时,可以设置成三态高阻抗输入或带上拉电阻的输入状态。
7.边界扫描
AVR系列单片机设有JTAG接口,支持符合JTAG标准的边界扫描功能,用于芯片检测和在线调试,也可以对片内FLASH、E2PROM、熔丝位和锁定位进行编程。AVR单片机支持多种方式的程序写入,如并行、串行SPI及JTAG等方式,而且芯片具备在线下载(ISP)和在应用下载(IAP)的功能。
8.位加密锁
AVR单片机采用位加密锁(Lock Bit)技术,保密位单元深藏于芯片的内部,无法用电子显微镜看到,从而大大提升了单片机的破解难度。
1.1.4AVR的产品型号
随着AVR系列单片机产品线的日趋丰富,产品的命名也越来越复杂。在此仅以ATmega32单片机的产品命名为例,说明一下AVR系列产品的命名方法。本书使用的单片机是AVR系列中较有代表性的一款,其完整型号为:“ATMEGA32A – 16PU”,以下我们对产品型号进行说明。
1)开头字母“AT”代表ATMEL公司产品,之后的“MEGA”表示该产品是megaAVR系列。
2)“MEGA”后面的数字“32”是产品代号,AVR单片机的产品代号大多与片内的FLASH存储器容量有关,此处的“32”表示片内FLASH存储器的容量是32KB。
3)型号面的字母表示的是工作电压范围。字母“L”表示的是低电压版本,工作电压为2.7~5.5V,但芯片的最高时钟频率会减半。没有字母的表示工作电压为4.5~5.5V,字母“A”则表示该芯片是改进工艺的新产品,工作电压与“L”版相同,均为2.7~5.5V,但最高时钟频率没有限制。
例如:ATmega32最高时钟频率为16MHz,电源电压为4.5~5.5V,而ATmega32L可以低电压运行,电源电压为2.7~5.5V,但最高时钟频率仅为8MHz。ATmega32A就没有时钟频率限制,在2.7~5.5V电压下时钟频率可以运行在16MHz。
4)“-”以后的部分是后缀。其中数字表示该芯片支持的最高系统时钟频率。“16”表示可支持最高为16MHz的系统时钟。
5)后缀第一个字母表示封装。“P”表示芯片为DIP封装,“A”表示芯片为TQFP封装,“M”表示芯片为MLF封装。
6)后缀第二个字母,表示芯片的应用级别。“C”表示芯片为商业级,“I”表示芯片为工业级(有铅)、“U”表示芯片为工业级(无铅)。
1.2ATmega32单片机简介
通过前面的介绍,你一定对AVR系列单片机有了最基本的认识。在8位AVR系列单片机中,megaAVR系列是极具性价比的产品,不乏像ATmega16这样的明星,几乎所有介绍AVR的书籍都是以它为例的。本书选取的目标芯片是megaAVR系列的ATmega32单片机,它与ATmega16在CPU、外围模块上大致相同,只在存储器配置和中断向量的排列顺序上有所差别。正因如此,本书的内容和示例代码同样适用于ATmega16。
1.2.1片内资源配置
ATmega32单片机片内资源配置如表1-1所示。为了便于对比,我们选取了同一系列的几款有代表性的产品一并列出。
表1-1AVR系列片内资源配置(部分)
型号 FLASH SRAM E2P
ROM I/O口 10位
A/D
通道 PWM
通道 SPI TWI USART RTC 模拟
比较器 8/16
位定
时器
ATtiny13A 1KB 64B 64B 6 4 2 — — — — YES 1/0
ATmega8 8KB 1KB 512B 23 6/8 3 1 YES 1 YES YES 2/1
ATmega32 32KB 2KB 1KB 32 8 4 1 YES 1 TES YES 2/1
ATmega128 128KB 4KB 4KB 53 8 8 1 YES 2 TES YES 2/2
从表1-1中我们可以看出ATmega32单片机片内资源十分丰富。在存储器的配置上,主要有32K字节基于FLASH工艺的程序存储器(擦写寿命10000次)、2K字节的SRAM数据存储器以及1K字节非易失性的E2PROM存储器(擦写寿命100000次);在接口配置上,ATmega32单片机有32个I/O口、1个SPI 串行接口、1个TWI两线串行接口、1个串行USART接口以及用于边界扫描的JTAG接口等,JTAG接口支持片上编程与调试功能;在功能模块配置上,主要有2个具有独立预分频器和比较功能的8位定时/计数器、1个具有比较和捕捉功能的16位定时器/计数器、8 路10位具有可选差分输入及可编程增益的ADC模块、4通道PWM、1个模拟比较器模块。ATmega32单片机片内有经过标定的RC振荡器,在对时钟要求不是很严格的情况下可以作为系统时钟使用。此外还配备了具有独立振荡器的看门狗定时器和仅需两个时钟周期的硬件乘法器等。
1.2.2ATmega32的内部结构
ATmega32单片机的内部结构如图1-5所示。构成ATmega32的核心部分是AVR CPU,它由运算逻辑单元ALU、程序计数器PC、指令寄存器及指令译码器等部件组成。与传统
图1-5ATmega32单片机的内部结构
51系列单片机不同的是,AVR CPU内部使用了32个通用工作寄存器构成快速存取寄存器组,与运算逻辑单元ALU直接相连,代替了传统意义上的累加器,从而避免了由于累加器和存储器之间频繁的数据传送而形成的瓶颈现象,这种结构大大提高了代码的执行效率,具有比CISC微控制器高出约10倍的数据吞吐量。
除了AVR CPU之外,ATmega32单片机对外设的组织采用了类似模块化的结构,不同的功能被定义成相对独立的模块,如定时器、SPI、看门狗、E2PROM等。不同的单片机型号模块的配备不尽相同,CPU通过内部的8位数据总线与这些模块进行数据通信。AVR单片机的这种模块化结构既有利于布局产品线,又方便了不同型号单片机之间的代码移植。
1.2.3ATmega32的封装
ATmega32单片机有三种不同的封装形式,其中PDIP封装的单片机引脚如图1-6所示,TQFP/MLF封装的单片机引脚如图1-7所示。下面我们将以PDIP封装的ATmega32单片机为例对其引脚功能进行说明。
图1-6PDIP封装
PDIP封装的ATmega32单片机是双列直插式结构,共有40个引脚。从图1-6中我们可以看出,ATmega32单片机有四组8位双向I/O端口,分别记作PA、PB、PC、PD。以端口PA为例,它的每一个I/O口从最低位至最高位依次称为PA0、PA1...PA7。AVR单片机的大部分I/O口都具备双重功能,这些功能在特定的条件下会被使能。以PD0(RXD)端口为例,当串行接口USART功能被使能时,PD0端口的I/O功能就会被串行通信的输入功能所取代。ATmega32单片机I/O端口具体功能如下:
图1-7TQFP/MLF封装
Vcc引脚:数字电路的电源。
GND引脚:接地。
RESET引脚:复位输入引脚。在该引脚上出现持续时间超过最小门限时间的低电平将会引起单片机复位。
XTAL1引脚:反向振荡放大器与片内时钟操作电路的输入端。
XTAL2引脚:反向振荡放大器的输出端。
AVCC引脚:A/D转换器的电源端。使用ADC模块时应通过一个低通滤波器与Vcc 连接。
AREF引脚:A/D转换基准电压输入引脚。
PA7-PA0引脚:PORTA端口的8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,可以使能内部上拉电阻,复位时端口A 处于高阻抗的输入状态。PORTA端口与A/D 转换器的模拟输入端复用。
PB7-PB0引脚:PORTB端口的8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,可以使能内部上拉电阻,复位时端口B处于高阻抗的输入状态。PORTB端口与定时/计数器、外部中断以及SPI等功能复用。
PC7-PC0引脚:PORTC端口的8位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,可以使能内部上拉电阻,复位时端口C处于高阻抗的输入状态。PORTC端口与定时/计数器、TWI和JTAG接口功能复用,如果JTAG接口使能,引脚PC5(TDI)、PC3(TMS)、PC2(TCK)的上拉电阻被激活。
PD7-PD0引脚:PORTD端口的8位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,可以使能内部上拉电阻,复位时端口D处于高阻抗的输入状态。PORTD端口与USART、外部中断、定时/计数器等功能复用。
Atmega32单片机I/O 口的复用情况详见表1-2。
表1-2Atmega32单片机端口的第二功能
端口 第二功能
端口 第二功能
PA7 ADC0(ADC 输入通道7)
PA6 ADC0(ADC 输入通道6)
PA5 ADC0(ADC 输入通道5)
PA4 ADC0(ADC 输入通道4)
PA3 ADC0(ADC 输入通道3)
PA2 ADC0(ADC 输入通道2)
PA1 ADC0(ADC 输入通道1)
PA0 ADC0(ADC 输入通道0)
PB7 SCK(SPI 总线的串行时钟)
PB6 MISO(SPI 总线的主机输入/从机输出信号)
PB5 MOSI(SPI 总线的主机输出/从机输入信号)
PB4 SS(SPI从机选择引脚)
PB3 AIN1(模拟比较负输入)/OC0(T/C0 输出比较匹配输出)
PB2 AIN0(模拟比较正输入)/INT2(外部中断2 输入)
PB1 T1(T/C1外部计数器输入)
PB0 T0(T/C0外部计数器输入)/XCK(USART外部时钟输入/输出)
PC7 TOSC2(定时振荡器引脚2)
PC6 TOSC1(定时振荡器引脚1)
PC5 TDI(JTAG 测试数据输入)
PC4 TDO(JTAG 测试数据输出)
PC3 TMS(JTAG 测试模式选择)
PC2 TCK(JTAG 测试时钟)
PC1 SDA(两线串行总线数据输入/输出线)
PC0 SCL(两线串行总线时钟线)
PD7 OC2(T/C2 输出比较匹配输出)
PD6 ICP1(T/C1 输入捕捉引脚)
PD5 OC1A(T/C1 输出比较A 匹配输出)
PD4 OC1B(T/C1 输出比较B 匹配输出 )
PD3 INT1(外部中断1 的输入)
PD2 INT0(外部中断0 的输入)
PD1 TXD(USART 输出引脚)
PD0 RXD(USART 输入引脚)
1.2.4I/O端口的构成
ATmega32单片机的I/O端口等效电路如图1-8所示。我们前面说过,AVR单片机的I/O
口是真正意义上的I/O口,每个I/O口均可单独设置为输入或输出两种状态,每个I/O口都有上下两个钳位二极管用于保护引脚不至于因过压而损坏。与51单片机不同的是,AVR单片机的I/O口在使用前需要设定其输入或输出方向。当I/O口被配置成输出状态时,输出缓冲器具有对称的驱动能力,可以输出或吸收的电流最大可以达到40mA。当I/O口作为输入使用时,端口呈现极高的输入阻抗,端口泄漏电流小于1μA,对输入信号而言,此端口可以认为是开路或浮空,对外围及输入信号影响极小。另外,当端口被设置为输入状态时,片内上拉电阻可以被使能。
ATmega32单片机的每组I/O口都有三个寄存器与其对应,即数据寄存器PORTx、数据方向寄存器DDRx和端口输入引脚寄存器PINx。
数据寄存器PORTx(x可以是A-D)是可读/写寄存器,当为其赋值时,其某一位的电平将反映到与之对应的I/O口上。例如:当PORTA端口被设为输出且赋值为0x01时,PORTA端口的PA0引脚将输出高电平,而其余引脚PA1-PA7将输出低电平。
数据方向寄存器DDRx(x可以是A-D)同样是可读/写寄存器,用于设定与之相对应引脚的输入或输出方向,1对应着输出,0对应输入。例如:当给DDRA寄存器赋值为0x01时,PORTA端口的PA0引脚被设置成输出状态,而其余PA1-PA7引脚将被设定为输入状态。端口输入引脚寄存器PINx(x可以是A-D)是只读寄存器,无论引脚的输入/输出方向如何,读取PINx寄存器即可获取对应引脚的电平状态。例如:我们读取PINA的值为0x01,即表示当前PA0引脚为高电平,其余PA1-PA7引脚均为低电平。
数据寄存器PORTx和数据方向寄存器DDRx对端口引脚的配置状态如表1-3所示。
表1-3端口引脚配置状态
DDxn PORTxn PUD(SFIOR) I/O状态 上拉电阻 说明
0 0 × 输入 NO 高阻态(Hi-Z)
0 1 0 输入 YES 被外部电路拉低时将输出电流
0 1 1 输入 NO 高阻态(Hi-Z)
1 0 × 输出 NO 输出低电平(漏电流)
1 1 × 输出 NO 输出高电平(源电流)
注意:当引脚被配置为输入状态时,若此时PORTx某位为1,则对应引脚的上拉电阻被使能。如果需要关闭这个上拉电阻,可以将PORTx对应位清零,或者将这个引脚配置为输出。特殊功能I/O寄存器SFIOR 的PUD位是上拉禁止位,该位置1时将禁止所有端口引脚的上拉电阻。
第2章
C语言入门
C语言是国际上流行的计算机语言,具有描述能力强、可移植性好、逻辑缜密的特点,其模块化的结构非常适合大型程序的开发,特别是近年来在嵌入式系统的程序开发中有广泛的应用,使用C语言编写单片机程序已经是一个流行的趋势。C语言博大精深,学精不易,但入门却十分简单,本章将带领你快速学习和掌握C语言的精髓,在短时间内编写出C语言的应用程序来。
2.1数据和运算
2.1.1数的进制
我们在日常生活中大多使用十进制,即逢十进一,这主要是由人们的使用习惯决定的。其实在生活中还有许多不同的进位制度,如时间的表示方法是六十进制,即一小时等于六十分,一分钟等于六十秒;还有常用的表示数量的单位“一打”是十二进制等。在计算机中,常用的进位制度有二进制、十进制、八进制和十六进制。
1.二进制(Binary)
二进制数由0和1两个符号来表示,基数为2,按逢2进1,借1算2的规则计数。
2.十进制(Decimal)
十进制数由0、1、2、3、4、5、6、7、8、9十个数字符号表示,基数为10,按逢10进1,借1算10的规则计数。
3.八进制(Octal)
八进制数由0、1、2、3、4、5、6、7八个数字符号表示,基数为8,按逢8进1,借1算8的规则计数。
4.十六进制(Hexadecimal)
十六进制数由0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F十六个数字符号表示,基数为16,按逢16进1,借1算16的规则计数。在C语言中表示十六进制数时,大小写字母的含义相同。
对于不同进制的数字间的转换在这里不做太多的叙述,对于初学者来讲,使用PC中的计算器来进行不同进制数字间的转换是一个方便快捷的办法,如图2-1所示。打开计算器软件,如要将十进制数“254”转换成二进制数,首先在计算器中选择十进制,输入数字“254”,再用鼠标单击选择二进制,这时计算器中即可显示经转换后的二进制数“11111110”。