单片机原理及应用(C51版) 课件全套 张春光 第1-8章 单片机基础知识 -单片机串行扩展技术_第1页
单片机原理及应用(C51版) 课件全套 张春光 第1-8章 单片机基础知识 -单片机串行扩展技术_第2页
单片机原理及应用(C51版) 课件全套 张春光 第1-8章 单片机基础知识 -单片机串行扩展技术_第3页
单片机原理及应用(C51版) 课件全套 张春光 第1-8章 单片机基础知识 -单片机串行扩展技术_第4页
单片机原理及应用(C51版) 课件全套 张春光 第1-8章 单片机基础知识 -单片机串行扩展技术_第5页
已阅读5页,还剩476页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及应用课前热身请问:你对单片机有什么了解?请问:单片机可以应用到哪个领域?

请问:学这门课有什么用?单片机是把CPU、RAM、ROM、中断系统、定时器/计数器以及I/O接口电路等集成在一块芯片上的微型计算机。单片机概述-单片机定义AB—地址总线;

CB—控制总线;

DB—数据总线换一种说法:单片机是不包括输入/输出设备、不带外部设备的微型计算机,可称它为单片微型计算机(SingleChipMicro-Computer,SCMC),简称单片机。

—属于微型机的一种

—具有一般微型机的基本组成和功能单片机概述-单片机定义5单片机在应用时通常处于被控系统的核心地位并融入其中,即以嵌入的方式使用。为了强调其“嵌入”的特点,也常常将单片机称为嵌入式微控制器(EmbeddedMicro-ControllerUnit,EMCU)。不同型号不同封装的单片机单片机概述-单片机定义61.集成度高、体积小、可靠性高2.控制功能强3.低电压、低功耗,便于生产便携式产品4.易扩展5.性能价格比优异单片机概述-单片机的特点智能仪器仪表机电一体化产品实时工业控制分布式系统的前端模块家用电器单片机的应用-应用领域通信及电子设备为什么要学这门课?支撑课程体系的需要(大纲)毕业设计的需要创新项目的需要学分的需要......考核方式总成绩=测验×6%

+作业×9%+实验×15%+期末闭卷笔试×70%怎么学?硬件:电脑、单片机学习板、手机软件:KeilµVision4、STC-ISP、Proteus等语言:汇编语言、C语言11单片机单片机单片机内含:CPU存储器I/O接口单片机概述-单片机系统单片机应用系统(学习板)单片机概述-单片机的程序设计语言

程序实际上是一系列计算机指令的有序集合1.汇编语言

汇编语言是用助记符表示的机器指令2.C语言

单片机开发用的C语言是在标准C上经过扩充的C语言,也称为C51语言12应用实例单片机P1口连接了8个发光二极管,若想点亮其中某1个发光二极管,如何编程? ORG 0000HMAIN: MOV

P1,#7FH

LJMP $ END汇编语言程序#include

<reg51.h>voidmain(

) {

while(1)

{

P1=0x7f;

}}C语言程序利用KeilµVision4编写程序新建工程新建文件夹,并给工程命名(无尾缀)选择设备C语言选“是”汇编语言选“否”是否生成初始化文件?新建源程序文件录入程序保存文件C语言:后缀“.c”汇编:后缀“.asm”

保存后的源程序文件,字体和颜色发生改变但与project并没有关联程序保存后的样子将源程序文件加载到项目管理器在“Sourcegroup1”上点右键注意:加载对话框不会自动关闭需要手动关闭默认C语言程序

修改文件类型

Target1处点右键,修改属性设置输出属性,以便生成.hex文件编译、链接,并生成.hex文件将.hex文件下载到单片机学习板按下学习板SW2按键软件仿真——利用keil仿真软件仿真——利用keil仿真软件仿真——利用Proteus仿真新建设计选择模版保存文件选取元器件放置元器件放置后效果编辑属性编辑属性放置电源连线完整电路图双击AT89C51,载入.hex文件加载.hex文件仿真仿真效果思考题若想每隔1s依次点亮8个发光二极管,该如何编程?流水灯程序(汇编语言程序) ORG 0000HMAIN:

MOV

A,#0FEHLOOP:

MOV

P1,A LCALL D_1s RL A

LJMP

LOOPD_1s:

MOV R6,#100D10ms: MOV

R5,#40DL: MOV

R4,#125 DJNZ

R4,$ DJNZ

R5,DL DJNZ

R6,D10ms RET END#include<reg51.h>#include<intrins.h>voiddelay() //延时函数{

unsignedchari,j;

for(i=0;i<255;i++)

for(j=0;j<255;j++);}voidmain() //主函数{

P1=0xfe; //点亮一个发光二极管

while(1){

P1=_crol_(P1,1);

delay();}}流水灯程序(C语言程序)51

单片形成阶段1976年,Intel推出MCS-48列单片机:8位CPU、1KBROM、64BRAM、27根I/O线和1个8位定时器/计数器。特点:存储器容量较小,寻址范围小(不大于4KB),无串行接口,指令系统功能不强。

单片机的历史和发展-单片机的发展历史52特点:结构体系完善,性能已大大提高,面向控制的特点进一步突出。现在,MCS-51已成为公认的单片机经典机种。性能完善提高阶段

1980年,Intel推出MCS-51系列单片机:8位CPU、4KBROM、128BRAM、4个8位并行口、1个全双工串行口、2个16位定时器/计数器。寻址范围64KB,并有控制功能较强的布尔处理器。单片机的历史和发展-单片机的发展历史53微控制器化形成阶段特点:片内增强了面向测控系统外围电路。“微控制器”的称谓更能反应单片机的本质。1982年,Intel推出MCS-96系列单片机:16位CPU、8KBROM、232BRAM、5个8位并行口、1个全双工串行口、2个16位定时器/计数器,寻址范围为64KB,片上还有8路10位ADC、1路PWM输出及高速I/O部件等。单片机的历史和发展-单片机的发展历史54微控制器化完善阶段特点:单片机的综合品质(如成本、性能、体系结构、开发环境、供应状态)有了长足的进步。近期推出的单片机产品,内部集成有高速I/O口、ADC、PWM、WDT等部件,并在低电压、低功耗、串行扩展总线、控制网络总线和开发方式(在系统可编程,ISP)等方面都有了进一步的增强。单片机的历史和发展-单片机的发展历史1.低功耗2.RISC体系结构的发展3.ISP及基于ISP的开发环境55单片机的历史和发展-单片机的发展趋势典型单片机简介-MCS-51系列单片机MCS-51是Intel公司生产的8051单片机系列名称。MCS-51系列单片机采用两种生产工艺:HMOS工艺和CHMOS工艺。其他厂商以8051为基核开发的基于CMOS工艺的单片机产品统称为80C51系列,而MCS-51系列和80C51系列统称为51系列单片机。

5657

ATMEL公司,AT89系列,Flash存储器技术

Philips公司,80C552系列,含ADC华邦公司,W78C51系列,高速低价

ADI公司,ADµC8xx系列,高精度ADC

LG公司,GMS90/97系列,低压高速

Maxim公司,DS89C420系列,高速(50MIPS)

Cygnal公司,C8051F系列,高速SOC典型单片机简介-80C51系列单片机58典型单片机简介-51系列单片机分类及性能指标分类芯片型号存储器类型及字节数片内其他功能单元数量ROMRAM并行口串行口定时器/

计数器中断源总线型基本型80C31无128B4个1个2个5个80C514KB掩模128B4个1个2个5个87C514KBEPROM128B4个1个2个5个89C51/89S514KBFlashROM128B4个1个2个5个增强型80C32无256B4个1个3个6个80C528KB掩模256B4个1个3个6个87C528KBEPROM256B4个1个3个6个89C52/89S528KBFlashROM256B4个1个3个6个非总线型89C20512KBFlashROM128B2个1个2个5个89C40514KBFlashROM128B2个1个2个5个AT89系列单片机是Atmel公司的8位Flash单片机系列。AT89系列单片机的主要型号有:AT89C51、AT89C52、AT89C2051、AT89S51、AT89S52。AT89系列单片机具有以下优点:

(1)内部含FlashROM

(2)和MCS-51系列单片机引脚兼容

(3)静态时钟方式59典型单片机简介-AT89系列单片机PIC(PeripheralInterfaceController)单片机是一种用来控制外围设备的可编程集成电路,是由Microchip公司推出的采用RISC结构的单片机。PIC系列单片机具有以下优点:

(1)适用性广

(2)运行效率高

(3)开发环境优越

(4)可靠性高

(5)保密性好60典型单片机简介-PIC系列单片机MSP430系列单片机是美国德州仪器公司(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(MixedSignalProcessor)。MSP430系列单片机具有以下优点:

(1)处理能力强

(2)运算速度快

(3)超低功耗

(4)片内资源丰富

(5)方便高效的开发环境61典型单片机简介-MSP430系列单片机单片机的应用-应用特点1.控制系统在线应用

2.软/硬件结合

3.应用现场环境恶劣62第2章

单片机基本结构和工作原理主要介绍MCS-51单片机的内部结构及外部引脚、存储器结构及特殊功能寄存器功能、并行I/O端口结构和工作原理、CPU工作时序和工作方式等内容。第2章

单片机的基本结构和工作原理单片机的组成和内部结构2.1单片机的外部引脚及功能2.2单片机的存储器结构2.3单片机的I/O电路2.4单片机的辅助电路2.5单片机的工作时序和工作方式2.62.1单片机的组成和内部结构2.1.1单片机的组成单片机内部通常包含以下部件:一个8位CPU;一个片内振荡器及时钟电路;4KBROM(8031没有片内ROM,增强型为8KB);128BRAM(增强型为256B);两个16位定时器/计数器(增强型为三个);可寻址64KB外部数据存储器和64KB外部程序存储器空间的控制电路;32条可编程的I/O口(四个8位并行I/O端口);一个可编程全双工串行口;具有五个中断源、两个优先级嵌套中断结构(增强型为六个中断源)。2.1.1

单片机的组成2.1.2单片机的内部逻辑结构包括:算术/逻辑运算单元ALU、布尔处理器、累加器、B寄存器、暂存器、程序状态字PSW等部件。功能:实现数据的算术逻辑运算、位变量处理和数据传送等操作。一.运算器2.1.3CPU的内部结构1.算术逻辑单元ALU运算器的核心部件,实质上是全加器。对数据进行加、减、乘、除等算术运算以及对数据进行与、或、异或、循环、置1、清0等逻辑运算。2.累加器ACC或A是一个8位寄存器,很多运算都要通过累加器提供操作数,多数运算结果也在ACC中存放。2.1.3CPU的内部结构3.B寄存器暂时存储数据总线或其他寄存器送来的操作数。4.暂存寄存器(TMP1和TMP2)5.程序状态字寄存器(PSW)一个8位的专用寄存器,主要用于存放当前运算结果的状态。B寄存器是为乘法和除法而设置的,在进行乘法和除法运算时A和B组成寄存器对,记为AB。在不执行乘法和除法时,B寄存器可以作为一个普通寄存器使用。2.1.3CPU的内部结构二.控制器

控制器是单片机的指挥控制部件。功能:接受来自程序存储器中的指令并对指令进行译码和分析并根据指令的性质控制单片机各功能部件从而保证单片机各部分能自动而协调的工作。

包括:程序计数器、指令寄存器、指令译码器、数据指针、堆栈指针、定时与控制逻辑电路等。2.1.3CPU的内部结构1.程序计数器(PC)16位专用寄存器,用于存放一条将要执行指令的地址,具有自动加1功能。执行转移、子程序调用指令和中断响应时,PC内容不再加1。单片机复位时,PC装入0000H。2.指令寄存器(IR)一个8位寄存器,用于寄存等待执行的指令。

2.1.3CPU的内部结构源程序

ORG0000H

LJMPSTARTORG0040HSTART:MOVSP,#5FH;设堆栈

LOOP:NOP

LJMPLOOP

;循环

END

;结束目标文件也就是最终写入EPROM的文件:020040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75815F

00

0200433.指令译码器(ID)对指令寄存器中的指令进行译码。

4.数据指针(DPTR)一个16位专用寄存器,通常在访问外部数据存储器时作地址指针。5.堆栈指针(SP)一个8位专用寄存器,用于存放堆栈栈顶地址。6.定时与控制逻辑电路产生各种控制信号,协调各功能部件的工作。2.1.3CPU的内部结构2.2单片机的外部引脚及功能I/O引脚控制引脚电源与晶振引脚I/O引脚即输入/输出端口,有P0(P0.0~P0.7)、P1(P1.0~P1.7)、P2(P2.0~P2.7)、P3(P3.0~P3.7)4个8位准双向输入/输出端口。P0、P2和P3口可以组成三总线,用于外围芯片扩展。2.2.1I/O引脚地址总线(AB)805187518031P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7PSENEAALERST用户I/O控制总线(CB)锁存器P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALEA15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0VCCVSS数据总线(DB)VCCVSSRST:复位输入端,该引脚出现连续2个周期高电平使单片机复位。ALE/PROG:当访问外部存储器时,ALE为地址锁存器提供锁存信号,用于锁存地址的低位字节,不访问外部存储器时,ALE端仍以不变的频率(为振荡频率的1/6)周期性地出现正脉冲信号。注意:访问外部数据存储器时,将跳过一个ALE脉冲。在对片内ROM编程时,该引脚的第二功能用于输入编程脉冲。2.2.2控制引脚PSEN:外部程序存储器取指使能。在访问外部ROM时,该信号自动产生,每个机器周期输出两个脉冲。EA/Vpp:外部访问允许;当EA为高电平时,CPU从内部程序存储器执行指令,当PC值超过片内程序存储器最大地址范围时,将自动转向外部存储器执行程序。当EA为低电平时,CPU只从外部程序存储器执行指令。在片内ROM编程期间,该引脚的第二功能用于加12V的编程允许电源。思考:8031单片机的EA引脚应该接什么电平?2.2.2控制引脚Vcc:电源端。GND:接地端。XTAL1:接外部晶振的一个引脚。XTAL2:接外部晶振的一个引脚。(后面讲)2.2.3电源与晶振引脚应用举例--P1口驱动流水灯单片机的组成和内部结构-单片机的内部逻辑结构从物理上看,MCS-51单片机有4个存储空间:内部ROM、外部ROM、内部RAM、外部RAM。从用户角度看,MCS-51单片机有3个存储地址空间:片内外统一寻址的ROM空间----用MOVC指令访问片内RAM空间和SFR----用MOV指令访问片外RAM空间----用MOVX指令访问MCS-51单片机的存储器组织采用哈佛结构,即程序存储器与数据存储器使用不同的逻辑空间、不同的物理存储、不同的寻址方式和不同的访问时序。2.3单片机的存储器结构程序存储器00H7FH80HFFH内部RAMSFR内部数据存储器外部ROM60KBEA=0EA=10000H0FFFH1000HFFFFH内部ROM4KB外部ROM4KB外部数据存储器外部RAM64KBFFFFH0000H2.3单片机的存储器结构程序存储器用来存放程序、表格和常数,也称为ROM。以程序计数器PC作为地址指针,通过16位地址总线,可寻址的地址空间为64K字节,地址范围为0000H~FFFFH。对于MCS-51系列单片机,ROM主要有3种形式:80C31/80C32片内无ROM,必须外部扩展80C51/87C51片内有4KB的ROM/EPROM80C52/87C52片内有8KB的ROM/EPROM2.3.1程序存储器要使用外部ROM,

引脚必须接低电平;要使用内部ROM,

引脚必须接高电平。2.3.1程序存储器-片内与片外程序存储器的选择2.3.1程序存储器-程序存储器低端的特殊单元地址功能0000H复位0003H外部中断0000BH定时器/计数器00013H外部中断1001BH定时器/计数器10023H串行口中断程序存储器低端的特殊单元如下表所示:2.3.1程序存储器-程序存储器低端的特殊单元低端几个特殊单元2.3.1程序存储器-程序代码及其观察数据存储器用来存放暂时性的输入输出数据、运算的中间结果或用作堆栈,也称为RAM。内部数据存储器

外部数据存储器2.3.2数据存储器2.3.2数据存储器-工作寄存器区工作寄存器区(4组)寄存器组0:地址00H~07H

寄存器组1:地址08H~0FH寄存器组2:地址10H~17H寄存器组3:地址18H~1FH

PSW寄存器中:

每组又包括8个寄存器,记为R0~R7当前工作寄存器组选择通过RS1和RS0设置内部RAM的20H~2FH区域为位寻址区,只能按位寻址。

2.3.2数据存储器-位寻址区字节地址位地址D7D6D5D4D3D2D1D020H07H06H05H04H03H02H01H00H21H0FH0EH0DH0CH0BH0AH09H08H22H17H16H15H14H13H12H11H10H23H1FH1EH1DH1CH1BH1AH19H18H24H27H26H25H24H23H22H21H20H25H2FH2EH2DH2CH2BH2AH29H28H26H37H36H35H34H33H32H31H30H27H3FH3EH3DH3CH3BH3AH39H38H28H47H46H45H44H43H42H41H40H29H4FH4EH4DH4CH4BH4AH49H48H2AH57H56H55H54H53H52H51H50H2BH5FH5EH5DH5CH5BH5AH59H58H2CH67H66H65H64H63H62H61H60H2DH6FH6EH6DH6CH6BH6AH69H68H2EH77H76H75H74H73H72H71H70H2FH7FH7EH7DH7CH7BH7AH79H78H字节地址位地址D7D6D5D4D3D2D1D020H07H06H05H04H03H02H01H00H21H0FH0EH0DH0CH0BH0AH09H08H22H17H16H15H14H13H12H11H10H23H1FH1EH1DH1CH1BH1AH19H18H24H27H26H25H24H23H22H21H20H25H2FH2EH2DH2CH2BH2AH29H28H26H37H36H35H34H33H32H31H30H27H3FH3EH3DH3CH3BH3AH39H38H28H47H46H45H44H43H42H41H40H29H4FH4EH4DH4CH4BH4AH49H48H2AH57H56H55H54H53H52H51H50H2BH5FH5EH5DH5CH5BH5AH59H58H2CH67H66H65H64H63H62H61H60H2DH6FH6EH6DH6CH6BH6AH69H68H2EH77H76H75H74H73H72H71H70H2FH7FH7EH7DH7CH7BH7AH79H78HMOVA,20HMOVC,20H累加器位累加器位寻址区2.3.2数据存储器-位寻址区内部RAM的30H~7FH区域为普通存储区,只能按字节寻址。

数据缓冲

堆栈

SP指示栈顶复位时SP=07H

系统初始化通常重新设置2.3.2数据存储器-普通存储区基本型单片机有21个SFR离散地分布在80H~FFH空间。与运算器相关3个

ACC

B

PSW与定时/计数器相关6个

TH0,TL0

TH1,TL1

TMODTCON指针类3个

SP

DPH,DPL与口相关7个

P0,P1,P2,P3

SBUFSCON

PCON与中断相关2个

IE

IP2.3.3特殊功能寄存器2.3.3特殊功能寄存器标

符名

称地

址ACC累加器E0HBB寄存器F0HPSW程序状态字寄存器D0HSP堆栈指针81HDPH数据指针DPTR高字节83HDPL数据指针DPTR低字节82HP0P0口80HP1P1口90HP2P2口A0HP3P3口B0HIE中断允许控制寄存器A8HIP中断优先级控制寄存器B8HTMOD定时器/计数器工作方式寄存器89HTCON中断请求标志寄存器88H标

符名

称地

址TH0定时器/计数器0(高字节)8CHTL0定时器/计数器0(低字节)8AHTH1定时器/计数器1(高字节)8DHTL1定时器/计数器1(低字节)8BHSCON串行口控制寄存器98HSBUF串行口收发数据寄存器99HPCON电源控制寄存器87H地址的尾数是0或8的寄存器不仅可以按字节访问,也可以按位寻址,常用的访问方法“寄存器名.位序号”2.3.3特殊功能寄存器1.累加器

8位寄存器,ACC表示地址(E0H),寄存器名称为A。为ALU提供操作数、存放运算结果。大部分指令要通过累加器ACC进行,通常用A表示。2.3.3特殊功能寄存器其中F0、RS1、RS0可以软件设置,Cy、Ac、OV和P由CPU决定。PSWD7D6D5D4D3D2D1D0D0HCyAcF0RS1RS0OV-PCy:进位标志位。当最高位有进位(加法)或有借位(减法)时,Cy=1,否则Cy=0。

在布尔(位)处理器中作位累加器使用,常用“C”表示。Ac:辅助进位标志位。当低4位相加(或相减)时,若D3位向D4位有进位(或借位),AC=1,否则AC=0。2.程序状态字寄存器PSW

2.3.3特殊功能寄存器F0(用户标志位):F0是开发者可以定义的一个状态标记,用软件来使它置1或清0。RS1、RS0:工作寄存器组选择控制位。OV:溢出标志位。用于指示带符号数运算的溢出。

当两个带符号数进行运算时,OV逻辑表达式为OV=C7⊕C6。P:奇偶标志位,ACC中“1”的个数为奇数,P置1。RS1RS0组对应RAM中的地址00000H~07H01108H~0FH10210H~17H11318H~1FH2.3.3特殊功能寄存器有符号二进制数的表示方法及溢出问题

我们假定讨论的数为整数,对8位有符号二进制整数,用下表示:数值部分符号位0:表示正数1:表示负数

这种表示方法称为机器数表示法。有符号二进制数的真值为它对应的十进制数。有符号二进制数的表示方法及溢出问题补码表示法一个数X的补码记为,补码可定义为:补[X]补[x]=x

当(mod)值的注意的是:0的补码只有唯一的形式,符号位和数值位均为0。无正负0之分。有符号二进制数的表示方法及溢出问题负数补码的求法补[x]==,x<0即负数x的补码等于模加上其真值(或减去其真值的绝对值)。补[X](mod)如:x=-1010111B,n=8,则===10000000B-1010111B10101001B有符号二进制数的表示方法及溢出问题有符号数运算的溢出问题

如果计算机的字长为n位,n位二进制数的最高位为符号位,其余n-1位为数值位,采用补码表示法时,可表示的数X的范围为:当n=8时,可表示的有符号数的范围为:-128+127

如果补码的运算结果超出可表示的有符号数的范围时,就会发生溢出,使计算结果出错(举例)。3.数据指针DPTR

16位特殊功能寄存器,可分为2个8位寄存器:高8位字节寄存器用DPH表示;低8位字节寄存器用DPL表示。常用作访问外部存储器的地址寄存器。寻址范围为64KB。

2.3.3特殊功能寄存器

4.堆栈指针SP

8位特殊功能寄存器,总是指向栈顶。

堆栈操作遵循“后进先出”的原则,并由压入指令(PUSH)和弹出指令(POP)完成:

数据入栈时SP先加1,然后压入数据;数据出栈时先弹出数据,SP再减1。

主机复位后,SP的初始值为07H,为避免与工作寄存器、位寄存器重叠,通常设在30H~7FH。工作寄存器一直使用0组时,SP也可默认初始值而不做改变。2.3.3特殊功能寄存器片内RAM30H11H10HSP××片内RAM50H40H11H10HSP××40H30H片内RAM50H40H11H10H50H××SP30H片内RAM40H11H10H34H××SP30H34H34H××××执行前执行前执行前PUSH指令后执行POP指令后指令PUSH40H操作示意图指令POP30H操作示意图2.3.3特殊功能寄存器2.3.3特殊功能寄存器-寄存器在RAM中的映射RAM内容查看2.3.3数据存储器-数据查看单片机的组成和内部结构-单片机的内部逻辑结构有4个8位并行I/O端口,占32根引脚。每位都有自己的锁存器(即特殊功能寄存器P0~P3)、输出驱动器和输入缓冲器。不需外部功能扩展时:都可以作典型的并行I/O端口,P3还可以作第二功能口。需要外部功能扩展时:P2口作高8位地址线,P0口为低8位地址/数据线复用,P1作典型的I/O口。2.4单片机的I/O电路P0、P2和P3口可以组成三总线,用于外围芯片扩展。地址总线(AB)805187518031P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7PSENEARST用户I/O控制总线(CB)锁存器P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALEA15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0VCCVSS数据总线(DB)VCCGND2.4单片机的I/O电路当控制信号为0时,P0口输入数据或作I/O口控制信号为1时,P0口输出地址/数据信息输出锁存器两个输入缓冲器输出驱动电路P0口内部结构输出控制电路2.4.1P0口-P0口的结构截止0控制电平为“0”,锁存器的Q与V2接通与门封锁,V1截止,P0口的输出是漏极开路电路P0作输出口时,要外接上拉电阻,一般选R=4.7KΩ或5.1KΩ。0R2.4.1P0口-P0口的功能1.P0作通用I/O口(1)输出时2.4.1P0口-P0口的功能1.P0作通用I/O口R0100010截止1导通(2)输入时读锁存器(“读-修改-写”类指令,如ANLP0,A)

读引脚(“MOV”类指令,如MOVA,P0),要先写“1”

1.P0作通用I/O口2.4.1P0口-P0口的功能①读引脚时为什么要先给锁存器写“1”?输入操作前,内部总线先输出1,使V2截至,引脚处于悬浮状态,变为高阻抗输入(不接上拉电阻时);或者被上拉为高电平(接上拉电阻时)。因为作输入端口时,要先执行输出“1”的操作,所以这种口不是真正的双向I/O口,被称为准双向口。在读输入端口数据时(MOVA,P0),如果V2导通,就会将输入的高电平(按键没按下)拉成低电平,产生误读。0100010截止1导通有效R典型输入电路2.4.1P0口-P0口的功能②为什么需要读锁存器?对P0口进行“读-修改-写”操作时,如执行“ANLP0,A”指令,此时要读取锁存器的内容。VCC001有效1导通00有效1先修改R因为从引脚读出的电平有时不正确(例如用端口驱动晶体管的基极时)。2.4.1P0口-P0口的功能2.P0作地址数据总线地址或数据信息分时出现在输出引脚。控制电平为“1”,与门打开,地址/数据信息与V1接通。地址/数据信息经反相器与V2接通。上下两个FET处于反相,构成了推拉式的输出电路,其负载能力大大增强。此时,P0口不需要外接上拉电阻!(1)输出时(C=1)2.4.1P0口-P0口的功能数据是从引脚通过输入缓冲器进入内部总线。CPU会在读入数据之前自动向P0口写入“FFH”,V2截止。输入数据前无需额外操作,此时P0口是真正的双向口。2.P0作地址数据总线(2)输入时(C由1变成0)2.4.1P0口-P0口的功能本身有上拉电阻由输出锁存器、输入缓冲器和输出驱动电路组成。只有一种功能——通用I/O口读引脚时先向该口写“1”—准双向I/O口。2.4.2P1口控制信号为0时:为通用I/O口,读引脚时先向该口写“1”—准双向I/O口。输出锁存输入缓冲输出驱动输出控制本身有上拉电阻2.4.3P2口控制信号为1时:为地址总线高8位2.4.3P2口既可作通用I/O口,又可实现变异功能。1.P3作通用I/O口—准双向I/O口变异功能输出端W的状态为“1”1本身有上拉电阻2.4.4P3口

第二功能

P3.0:RxD(串行口输入)

P3.1:TxD(串行口输出)

P3.2:INT0(外部中断0输入)

P3.3:INT1(外部中断1输入)

P3.4:T0(定时器/计数器0的外部输入)

P3.5:T1(定时器/计数器1的外部输入)

P3.6:WR(片外数据存储器“写选通控制”输出)

P3.7:RD(片外数据存储器“读选通控制”输出)2.4.4P3口2.P3实现第二功能输出:Q=1输入:Q=1,W=12.4.4P3口外部扩展ROM或RAM时:P0口和P2口构成16位地址总线P0口分时复用为8位数据总线P3口作第二变异功能P1口作I/O用P0口可驱动8个LSTTL的电路,作通用I/O口时要加上拉电阻,作地址/数据总线时,不必加上拉电阻。P1、P2、P3口可驱动4个LSTTL的电路。2.4单片机的I/O电路-总结单片机的外部引脚单片机的外部引脚及最小系统复位电路时钟电路最小应用系统:维持单片机运行的最简单配置的系统。2.5.3单片机最小系统RSTP1口驱动流水灯的硬件电路P1口驱动流水灯的硬件电路时钟电路:给单片机提供时钟脉冲,保证单片机按照自身的时序自动工作起来。复位电路RST:复位输入端,该引脚连续出现2个机器周期以上的高电平,使单片机复位。时钟电路复位电路2.5单片机的辅助电路辅助电路是单片机正常工作的必要条件。单片机的主要辅助电路为:MCS-51的时钟信号通常有内部方式和外部方式两种产生方式:内部方式:在XTAL1和XTAL2之间连上晶振和电容。内部时钟方式晶体的振荡频率在1.2MHz~24MHz之间,典型值为6MHz、12MHz或11.0592MHz。

C1和C2的作用是稳定频率和快速起振,电容值在10~30pF之间,典型值为30pF。2.5.1时钟电路-内部方式外部时钟方式(CHMOS)外部方式:将外部已有的时钟信号引入单片机。常用于多片单片机同时工作,为使各单片机时序同步。2.5.1时钟电路-外部方式MCS-51单片机的时序定时单位从小到大依次为时钟周期、S状态、机器周期和指令周期。2.6单片机的工作时序和工作方式S1S2S3S4

S5S6S1S2P1P2P1P2P1P2P1P2P1P2P1P2P1P2P1P2一个机器周期X21.时钟周期也称振荡周期、晶振周期,指为单片机提供时钟信号的振荡源的周期或外部输入时钟的周期。若晶体振荡频率为fosc,则时钟周期T=1/fosc。2.6.1时序的基本概念2.机器周期完成一条指令的一个基本操作所需的时间称为机器周期。一个机器周期包含6个S状态,12个节拍:S1P1、S1P2、S2P1、S2P2、…、S6P1、S6P2若晶体振荡频率为fosc,则机器周期=12/fosc。S1S2S3S4

S5S6S1S2P1P2P1P2P1P2P1P2P1P2P1P2P1P2P1P2一个机器周期X22.6.1时序的基本概念3.指令周期单片机CPU执行一条指令所需的时间。执行不同指令所需时间也不尽相同,有单机器周期、双机器周期、四机器周期三种指令周期。MCS-51系列单片机除乘法、除法指令是四周期指令外,其余都是单周期指令或双周期指令。2.6.1时序的基本概念按所占字节分单字节指令双字节指令三字节指令按运行时间分单周期指令双周期指令四周期指令汇编指令的分类单字节单周期指令单字节双周期指令单字节四周期指令双字节单周期指令双字节双周期指令三字节双周期指令2.6.2单片机的工作时序取址和执行指令的时序关系ALE信号是地址锁存信号。该信号每有效一次,就能对程序存储器执行一次读指令操作。ALE信号的频率为1/6振荡频率,即在一个机器周期中,ALE信号两次有效:第一次在S1P2和S2P1期间,第二次在S4P2和S5P1期间,有效宽度为一个状态周期。122.6.2单片机的工作时序地址总线(AB)805187518031P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7PSENEARST用户I/O控制总线(CB)锁存器P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALEA15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0VccVss数据总线(DB)VccGND单片机的I/O引脚组成的三总线P0口既是地址总线,又是数据总线,它如何做到“身兼二职”的?P0口如何做到既是地址总线,又是数据总线的?当ALE输出高电平时,P0口提供低8位地址信号;当ALE变成低电平时,低8位地址信号被存在锁存器中,然后P0口可以当作数据总线使用。地址总线(AB)805187518031P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7PSENEARST用户I/O控制总线(CB)锁存器P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALEA15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0VccVss数据总线(DB)VccGND复位电路RST:复位输入端,该引脚连续出现2个机器周期以上的高电平,使单片机复位。MCS-51单片机启动时需要复位,使CPU及系统各部件处于确定的初始状态,并从初始状态开始工作。如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)或更多,则CPU可响应并将系统复位。2.5.2复位方式和复位电路一.上电复位电路2.5.2复位方式和复位电路-复位电路二.手动复位电路2.5.2复位方式和复位电路-复位电路三.WDT复位电路2.5.2复位方式和复位电路-复位电路单片机复位后的状态如下表所示。寄存器复位后内容寄存器复位后内容PC0000HTH000HACC00HTL000HB00HTH100HPSW00HTL100HSP07HIP×××00000BDPTR0000HIE0××00000BP0~P3FFHSCON00HTMOD00HSBUF不定TCON00HPCON0×××0000B2.5.2复位方式和复位电路-复位状态1.正常工作方式是单片机自动完成任务的工作方式,顺序执行。单片机完成复位后,进入正常工作方式,由Vcc供电。2.掉电工作方式通过对SFR中的电源控制寄存器PCON的操作进入掉电工作方式。SMOD---GF1GF0PDIDLD7D6D5D4D3D2D1D0(87H)PCONPCON不能进行位操作,只能按字节操作SMOD:波特率加倍位GF1、GF0:通用标志位PD:掉电方式控制位。PD=1,启用掉电方式。IDL:待机方式控制位。IDL=1,启用待机模式。2.6.3单片机的工作方式当单片机检测到故障时,立即通过外部中断引脚中断运行程序。CPU转而执行中断服务程序,首先进行信息保护,然后执行一条置PD为1的指令,系统进入掉电工作方式。硬件复位。在准备退出掉电方式前,Vcc必须恢复到正常工作电压值,并维持一段时间,使振荡器重新启动并稳定后,退出掉电方式。掉电方式进入掉电方式退出2.6.3单片机的工作方式3.低功耗工作方式(待机工作方式)当CPU执行完置IDL位为1的指令后,系统进入了待机工作方式。一种方法是任何的中断请求都可由硬件将IDL清0而终止待机工作方式。另一种方法是硬件复位,需要在RST引脚加入正脉冲。低功耗工作方式进入低功耗工作方式退出2.6.3单片机的工作方式第3章

单片机C51程序设计基础主要结合MCS-51单片机特点介绍C51的基本知识,重点讲述与单片机软件编程密切相关的内容。第3章

单片机C51程序设计基础C51概述3.1C51的编译和编译预处理3.2C51的基本语法3.3C51的程序结构3.4C51的函数3.5C51的数组3.6

读写I/O端口的C51编程3.8C51的指针3.73.1C51概述-程序结构概述#include<reg51.h> //预处理命令//全局变量定义//函数声明charfun() //功能函数定义{ …… //功能函数体}void函数名()interruptx//中断函数定义{ …… //中断函数体}voidmain(

) //主函数{//局部变量定义//单片机寄存器初始化函数

while(1) { …… //主函数体 }}一个C51源程序必须包括一个main函数。“#include<xxx.h>”语句是包含库函数。全局变量在程序的所有地方都可以赋值和读出,包括中断函数、主函数。用户自定义函数是用户自己定义、自己调用的函数。如果使用中断、定时器、串口等功能,则单片机相关寄存器的必须要初始化。主程序必须是闭环结构。注释部分可以用“//注释内容”或“/*注释内容*/”分割。程序中必须采用英文标点。3.1C51概述-程序结构概述#include<reg51.h> //预处理命令//全局变量定义//函数声明charfun() //功能函数定义{ …… //功能函数体}void函数名()interruptx//中断函数定义{ …… //中断函数体}voidmain(

) //主函数{//局部变量定义//单片机寄存器初始化函数

while(1) { …… //主函数体 }}除了ANSIC标准的32个关键字之外,C51还根据MCS-51单片机的特点扩展了相关的关键字。右表按用途列出了KeilC51编译器扩展的关键字。3.1.2

C51对标准C的扩展关键字用途说明_at_地址定位为变量进行存储器绝对空间地址定位alien函数特性声明用于声明与PL/M51兼容函数small存储器模式指定使用内部数据存储器空间compact存储器模式指定使用外部“分页寻址”数据存储器空间large存储器模式指定使用外部数据存储器空间code存储器类型声明声明程序存储器空间data存储器类型声明指定直接寻址的内部数据存储器bdata存储器类型声明指定可位寻址的内部数据存储器idata存储器类型声明指定间接寻址的内部数据存储器pdata存储器类型声明指定“分页寻址”的外部数据存储器xdata存储器类型声明指定外部数据存储器bit位变量声明声明位变量sbit位变量声明声明一个可位寻址变量sfr特殊功能寄存器声明声明一个8位的特殊功能寄存器sfr16特殊功能寄存器声明声明一个16位的特殊功能寄存器interrupt中断函数声明定义一个中断服务函数using工作寄存器组定义定义工作寄存器组R0~R7_priority_多任务优先声明规定RTX或RTX51Tiny的任务优先级reentrant再入函数声明定义一个再入函数_task_任务声明定义实时多任务函数3.1.2

C51对标准C的扩展关键字用途说明_at_地址定位为变量进行存储器绝对空间地址定位alien函数特性声明用于声明与PL/M51兼容函数small存储器模式指定使用内部数据存储器空间compact存储器模式指定使用外部“分页寻址”数据存储器空间large存储器模式指定使用外部数据存储器空间code存储器类型声明声明程序存储器空间data存储器类型声明指定直接寻址的内部数据存储器bdata存储器类型声明指定可位寻址的内部数据存储器idata存储器类型声明指定间接寻址的内部数据存储器pdata存储器类型声明指定“分页寻址”的外部数据存储器xdata存储器类型声明指定外部数据存储器bit位变量声明声明位变量sbit位变量声明声明一个可位寻址变量sfr特殊功能寄存器声明声明一个8位的特殊功能寄存器sfr16特殊功能寄存器声明声明一个16位的特殊功能寄存器interrupt中断函数声明定义一个中断服务函数using工作寄存器组定义定义工作寄存器组R0~R7_priority_多任务优先声明规定RTX或RTX51Tiny的任务优先级reentrant再入函数声明定义一个再入函数_task_任务声明定义实时多任务函数除了ANSIC标准的32个关键字之外,C51还根据MCS-51单片机的特点扩展了相关的关键字。右表按用途列出了KeilC51编译器扩展的关键字。3.3.2变量-存储类型存储类型与存储空间对应关系data直接寻址片内数据存储器区,访问速度最快(128字节)bdata可位寻址片内数据存储区,允许位与字节混合访问(16字节)idata间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)pdata片外RAM的256字节,由MOVX@Ri访问xdata片外64KB的RAM空间,由MOVX@DPTR访问code代码存储区(64KB),由MOVCA,@A+DPTR访问C51存储类型与MCS-51单片机存储空间的对应关系如下所示。在C51中对变量进行定义的格式如下:[存储种类]数据类型[存储类型]变量名;在程序中,用关键字_at_实现对指定存储空间绝对地址的访问,使用_at_的格式如下:

[存储类型]数据类型变量名_at_地址常数;寻址:寻找操作数所在单元的地址。寻址方式:CPU寻找操作数所在地址的方法。MCS-51有7种寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。单片机的寻址方式(了解)寻址方式使用的变量寻址空间立即寻址直接给出数值,无变量ROM直接寻址直接给出地址,无变量片内RAM低128字节、SFR寄存器寻址R0~R7、A、B、DPTR、位累加器C工作寄存器R0~R7,部分SFR寄存器间接寻址@R0、@R1、SP或@DPTR片内RAM或片外RAM变址寻址@A+DPTR、@A+PCROM相对寻址PC+偏移量ROM位寻址直接给出位地址或位符号片内RAM的位寻址区、SFR的可寻址位指令中直接给出操作数的寻址方式,经典指令MOVA,#data。【例1】执行MOVA,#68H结果:(A)=68H单片机的寻址方式-立即寻址注意:在立即数前必须使用“#”标志。寻址空间:ROM指令中直接给出操作数所在存储单元的地址,经典指令MOVA,direct。【例2】若(30H)=56H,执行MOVA,30H后,(A)=56H单片机的寻址方式-直接寻址寻址空间:片内RAM低128字节SFR(一般采用符号形式替代直接地址,例:一般将MOVA,80H写成MOVA,P0)操作数存放在寄存器中,指令中直接给出该寄存器名称,经典指令MOVA,Rn。【例3】若(R1)=80H,执行MOVA,R1后,(A)=80H单片机的寻址方式-寄存器寻址指令中给出的寄存器中存放的不是操作数,而是操作数所在单元的地址。为了与寄存器寻址区别,应在寄存器的名称前面加前缀标志“@”,经典指令MOVA,@Ri。

单片机的寻址方式-寄存器间接寻址【例4】若(R0)=40H,(40H)=30H,执行MOVA,@R0后,(A)=30H。寻址空间:片内RAM(@Ri、SP)通用形式:MOV指令@Ri(i=0,1)PUSH/POPdirect(SP发生相应变化)52系列内部RAM的高128B只能用该寻址方式片外RAM(@Ri、@DPTR)通用形式:MOVX指令@DPTR

MOVX指令@Ri(i=0,1)单片机的寻址方式-寄存器间接寻址以数据指针DPTR或程序计数器PC作基址寄存器,以累加器A作变址寄存器,并以两者内容相加形成操作数所在单元的地址,经典指令MOVCA,@A+DPTR。寻址空间:ROM,寻址范围可达到64KB。单片机的寻址方式-变址寻址【例5】若(DPTR)=1234H,(A)=60H,执行MOVCA,@A+DPTR后,(A)=78H将程序计数器PC的当前值加上指令中给出的偏移量rel,结果作为目标地址的寻址方式。用于跳转指令,实现程序的分支跳转。单片机的寻址方式-相对寻址【例6】若JCL1存于0200H开始的单元,而L1对应的地址是0277H单元,则可计算出rel为75H,该指令的机器码是40H75H。如果PSW.7为1,执行JCL1指令后,程序将跳转到0277H单元。因为SJMP是双字节指令,则目标地址=(PC)+2-2=(PC)即转移的目标地址就是SJMP指令的地址,在汇编指令中该偏移地址可用$符号表示。若在程序的末尾加上SJMP$指令,则程序将在该处进行无限循环,进入等待状态。若SJMPrel中的rel=FEH(-2),目标地址=?单片机的寻址方式-相对寻址对片内RAM的位寻址区和某些可位寻址的特殊功能寄存器进行位操作时的寻址方式,经典指令MOVC,bit。【例7】若位地址20H内容为1,执行MOVC,20H后,位地址PSW.7的内容为1。单片机的寻址方式-位寻址在C51中的关键字除了ANSIC标准的32个关键字之外,还根据MCS-51单片机的特点扩展了相关的关键字,右表按用途列出了KeilC51编译器扩展的关键字。3.1.2

C51对标准C的扩展关键字用途说明_at_地址定位为变量进行存储器绝对空间地址定位alien函数特性声明用于声明与PL/M51兼容函数small存储器模式指定使用内部数据存储器空间compact存储器模式指定使用外部“分页寻址”数据存储器空间large存储器模式指定使用外部数据存储器空间code存储器类型声明声明程序存储器空间data存储器类型声明指定直接寻址的内部数据存储器bdata存储器类型声明指定可位寻址的内部数据存储器idata存储器类型声明指定间接寻址的内部数据存储器pdata存储器类型声明指定“分页寻址”的外部数据存储器xdata存储器类型声明指定外部数据存储器bit位变量声明声明位变量sbit位变量声明声明一个可位寻址变量sfr特殊功能寄存器声明声明一个8位的特殊功能寄存器sfr16特殊功能寄存器声明声明一个16位的特殊功能寄存器interrupt中断函数声明定义一个中断服务函数using工作寄存器组定义定义工作寄存器组R0~R7_priority_多任务优先声明规定RTX或RTX51Tiny的任务优先级reentrant再入函数声明定义一个再入函数_task_任务声明定义实时多任务函数3.3.2变量-C51扩展数据类型数据类型位数字节数值域bit1/0或1sfr810~255sfr161620~65535sbit1/0或1(1)位变量bitbit用于定义位变量的名字,编译器会对其分配地址。位变量分配在内部RAM的20H~2FH单元相应的位区域,位地址范围是00~7FH,共128个。用bit定义位变量的值可以是1,也可以是0。定义方法如下:针对MCS-51单片机的硬件特点,C51在标准C的基础上,扩展了4种数据类型,主要针对单片机片内存储区RAM。bit 位变量;(2)特殊功能寄存器sfr和sfr16特殊功能寄存器分布在片内数据存储区的地址单元80H~FFH之间。“sfr”数据类型占用一个内存单元,利用它可以直接对MCS-51单片机的特殊功能寄存器进行定义。“sfr16”数据类型则占两个内存单元,利用它可以定义占两个字节的特殊功能寄存器,在定义时的地址选用低位地址。定义方法如下:sfr

特殊功能寄存器名=地址;sfr16

特殊功能寄存器名=地址;3.3.2变量-C51扩展数据类型(3)特殊功能位sbitsbit用于定义位变量的名字和地址。被定义的位变量是SFR中的可以进行位寻址的确定位,该位变量的绝对地址是确定的且不用编译器分配。利用sbit定义位变量名字和地址的方法有如下三种。①第一种方法(将位的绝对地址赋给位变量,位地址必须位于80H~FFH之间)。注意:不要把bit与sbit混淆。bit直接用于定义位变量,而sbit用于定义位变量的名字和地址。sbit 位变量名=位地址;②第二种方法(可寻址位位于特殊功能寄存器中)sbit 位变量名=特殊功能寄存器名^位位置;③第三种方法sbit 位变量名=字节地址^位位置;3.3.2变量-C51扩展数据类型文件包含是将另一个指定的文件内容包含进来。文件包含命令的一般格式为:#include的功能是用指定文件的全部内容替换该预处理行。采用<文件名>格式时,在头文件目录中查找指定文件;采用"文件名"格式时,在当前目录中査找指定文件,若没找到,再到头文件目录中查找。#include通常放在C语言程序的开头,被包含文件的类型通常为以“.h”为后缀的头文件和以“.c”为后缀的源程序文件。#include<文件名>或#include"文件名"3.2.2C51的编译预处理-文件包含3.2.2C51的编译预处理-宏定义宏定义命令为#define,作用是用一个标识符替换一个字符串。(1)不带参数的宏定义。不带参数的宏定义又称符号常量定义,一般格式为:#define标识符常量表达式(2)带参数的宏定义。带参数的宏定义与符号常量定义的不同之处在于,对于源程序中出现的宏符号名不仅进行字符串替换,而且还进行参数替换。带参数宏定义的一般格式为:#define宏符号名(参数表)表达式3.3.1常量常量又称为标量,它的值在程序执行过程中不能改变。常量的数据类型有:1.整型。1234(十进制整数)、0x123(十六进制整数)、0123L(长整数)。2.浮点型。有十进制数表示形式和指数表示形式两种。3.字符型。单引号内的字符,如'a','b'等。对于不可显示的控制字符,可以在该字符前面加一个反斜杠“\”组成转义字符。4.字符串型。由双引号""内的字符组成,如"ABCD"、"$1234"等。3.3C51的基本语法变量是一种在程序执行过程中其值能不断变化的量。在使用一个变量之前,必须要进行定义,用一个标识符作为变量名并指出它的数据类型和存储类型,以便编译系统为它分配相应的存储单元。在C51中对变量进行定义的格式如下:3.3.2变量[存储种类]数据类型[存储类型]变量名;变量的存储种类有四种:自动(auto)、外部(extern)、静态(static)和寄存器(register)。3.3.2变量-标准C数据类型数据类型位数字节数值域signedchar81-128~+127,有符号字符变量unsignedchar810~25

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论