单片机原理教程_第1页
单片机原理教程_第2页
单片机原理教程_第3页
单片机原理教程_第4页
单片机原理教程_第5页
已阅读5页,还剩544页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理8位51单片机及PLC何为单片机?计算机系统计算机系统由五大部分--即控制单元(CU)、算术运算单元(ALU)、存储器(Memory)、输入设备(Input)、输出设备(Output)组成.计算机系统的发展早期计算机:CU和ALU分离中央处理单元(CPU)的出现MPU的发展产生了两条分支:一支往高性能、高速度、大容量方向发展;另一支则往多功能方向发展,出现单片机。单片机是计算机发展的一个分支单片机专用于控制目的,嵌入到被控对象中,具有计算机的特点。PC机专用于多功能、海量运算。单片机与PC机是计算机发展史中的两个不同分支。单片机注重小型化,功能上具有明确目的。发展方向是SOC片上系统。计算机能够按照人所设计的工作步骤进行不厌其烦的重复性工作,并能根据不同的外部条件进行正确处理,使得人力可以从大量的事务性工作中解脱出来,而且计算机的准确性和实时性也是人所不能比拟的。单片机系统就是“嵌入式”系统嵌入式系统分为两个层次:自己编写全部控制程序——底层应用。利用实时多任务操作系统RTOS,在操作系统中添加具有针对性的控制任务(程序)——高层应用。“单片机原理”课程教会我们底层应用uc/OS-II是“微控制器操作系统”,它将教会我们高层应用。单片机也称为:微控制器(MCU)单片机应用举例家用电器:全自动洗衣机;微波炉;电视机控制器;空调控制器;DVD/VCD;数码照相机;摄像机;手机……智能玩具汽车控制:发动机电喷控制;ABS防抱死;ASR/TRC牵引力控制;自动变速;车架控制…….计算机智能接口:硬盘控制器;CD控制器;键盘;打印机;显示器控制器……地址总线AB控制总线CBCPU内存智能仪器接口数字化存储示波器、数字化万用表通信接口终端调制解调器TTY电传机过程控制接口A/D转换器开关量I/OD/A转换器输出接口打印机,显示器,绘图仪,记录仪输入接口键盘,数字化仪,光笔,图形/声音输入外存接口硬盘,软盘,光盘,磁带数据总线DB计算机的基本结构计算机主要模块CPU、存储器、接口连接三者用“总线”:数据总线DB;地址总线AB;控制总线CB接口连接外部设备:显示器;键盘;鼠标;打印机;以及硬盘;光盘;软盘;U盘、还有互联网等等地址总线AB控制总线CBCPU内存数据总线DB接口I/O显示器LCD,LED/CRT键盘、鼠标软驱、硬盘、光驱音响,麦克风网络及其他控制单片机浓缩了计算机基本模块两种计算机对比对比项目个人计算机PC单片机CPU位数64位8、16、32位内存大小256MB以上128字节~几百KB工作频率1GHZ以上几十兆赫兹接口类型繁多的基本接口和智能接口只有基本接口基本接口并口、串口、定时器、中断系统并口、串口、定时器、中断系统智能接口FDD、IDE、USB、显示器、声卡少量类型单片机有USB、CAN、等接口结构特点多个IC多个电路板结构单片IC结构计算机的内存内存分为只读存储器ROM和随机存储器RAM两类。ROM存放启动/开机程序以及一些系统子程序。PC机的BIOS就是存放在ROM中。用户编写的单片机程序也是存放在ROM中。RAM存放变量,数据。PC机还要存放从硬盘等处读入的可执行程序。ROM中的程序用于开机时,计算机能引导进入运行状态,这些程序在掉电后应保证不会消失。单片机:麻雀虽小,五脏俱全单片机设计为:专用于控制目的计算机。用于专门目的,为了降低成本,没有必要将不用的功能包含进来。单片机通常只有8位,16位,32位字长,运算速度不是很快,但用于专门的控制足够了。因数据量不大,单片机内存也没有必要做得太大。单片机应用系统功能单一,可见于我们生活中的时时处处:手机、微波炉、洗衣机、电视机、遥控器、电子词典、高档玩具……嵌入式单片机还见于计算机的许多辅助设备:键盘、硬盘、光驱、打印机等等。单片机与PLC信息与码制编者:胡学海1.1信息在计算机中的表示什么是信息?信息:指通信或接收到的有关特定事实或情况的知识。信息是用来消除不确定性的东西。编码编码:为信息分配表示形式的过程——在计算机内部用二进制数以不同形式编码表示和存储信息。这些信息可分为:数值信息,非数值信息1.1.1机器数与真值用二进制数表示带符号数符号怎么表示呢?通常数的最高位为符号位,对于字长8位的机器数:

D7为符号位:0表示“+”,1表示“—”。符号数码化了,D6~D0为数字位。如:X=(01011011)2=+91X=(11011011)2=-91

连同符号位在一起作为一个数称为机器数, 机器数的数值称为的真值。如:N1=+1011011N2=-1011011为真值

01011011 11011011为机器数附十进制数、二进制数与十六进制DecimalBinaryHexDecimalBinaryHex000000810008100011910019200102101010A300113111011B401004121100C501015131101D601106141110E701117151111F1.1.2计算机中的数据类型位(Bit)、字节(Byte)、字(Word)、双字(Doubleword)、四字(Quardword)

1bit=1个二进制位1Byte=8bit1Word=2Byte1Doubleword=2Word=4Byte1Quardword=4Word……0110110001111110101011001111000001010011bit(1B)

Byte(53H)Word(0F053H)Doubleword(7EACF053H)Quardword低字节高字节高字低字1.1.3数字电路与计算机二进制采用2进制最经济:10进制4比特表示3.22比特信息2进制1比特表示1比特信息最方便8位数据就是有序排列的8条导线或者8个触发器按照导线排序,每一条导线分别代表不同的数字“权”值。以4线为基准,分别代表“8,4,2,1”,4线都是高电平,记为“1111”,其代表数字是8+4+2+1=15。我们采用16进制表达为F。4位2进制可以表达数字0~15或者0~9,A~F的16进制数。

每4线代表1位16进制数据。8线就是2位16进制数据,称为“1字节”我们学习计算机知识,一定要掌握2进制-16进制-10进制之间的换算关系。2进制数用B结尾,16进制数用H结尾,10进制不加结尾,或者加D结尾以示区别。数制及其转换数制3要素:基,权,进制基:计数制中每个数位所使用的数符的总数;权:数符所在位置表示数值的大小,当数符为“1”时所表征的数值即该位的权值;进制:进位规律,如逢基进一(十进制、二进制、十六进制)。数制及其转换其它进制转换为十进制转换方法:权值法例1.1将二进制数(11010.011)B转换为十进制数(1010.011)B=1×24+1×23+0×22+1×21+0×20+0×2-1+1×2-2+1×2-3=16+8+0+2+0+0+0.25+0.125=(26.375)D例1.2将八进制数(37.01)O转换为十进制数(37.01)O=3×81+7×80+0×8-1+1×8-2=24+7+0.015625=31.015625例1.3将十六进制数(1DF)H转换为十进制数。

(1DF)H=2×162+13×161+1×160=256+208+15=(479)D十进制转换为其它进制:取余法运算口诀:整数除基取余,余数倒排;小数乘基取整,整数倒排;例1.4将(39)D转换为2进制

故(39)D=(100111)B。

例1.5将(68.125)转换为8进制D整数部分小数部分二进制和十六进制的相互转换运算口诀:4合1,1分4,不足补零例1.8将二进制数(11011011011010)B转换为十六进制数。解:(11011011011010)B=(0011,0110,1101,1010)B=(36DA)H

例1.10将十六进制数(0F81)H转换为二进制数。解:(0F81)H=(1111,1000,0001)B=(111110000001)B二进制和八进制的相互转换运算口诀:3合1,1分3,不足补零;例1.11将二进制数(11011011011010)B转换为八进制数。解:(11011011011010)B=(011,011,011,011,010)B=(33332)O常见三种数制转换的方法总结如图1.1.4原码、反码与补码符号数码化后,对数据进行运算时,符号位应如何处理?

把符号位和数值位一起编码:原码,反码,补码。

1.原码: 正数符号位用“0”表示,负数符号用“1”表示, 这种表示法称为原码。

X=+105[X]原=01101001 X=-105[X]原=11101001

符号数值 原码表示简单,真值转换方便,减法不方便。 引进反码,补码。2.

反码:正数反码表示与原码相同,

(最高位“0”表示正,其余位为数值位。)

负数的反码表示为负数原码的符号位不变,尾数按位取反。例: [+4]反

=00000100 [-4]反

=11111011 [+127]反=01111111 [-127]反=10000000 [+0]反

=00000000 [-0]反

=111111113.补码:

正数的补码表示与原码相同。负数的补码表示为它的反码+1。

[+127]原=01111111[+0]原=00000000 [-127]反=10000000[-0]反=11111111 [-127]补=10000001[-0]补=00000000[x]补=x2n-|x|(x<0)x>=0(2n–1)为n个1,(2n–1)-|x|为|x|的反码,所以求负数的补码可按“按位取反,末位加1”的方法进行。微机中采用补码来表示带符号数利用补码将减法运算转化为加法运算:X=[[X]补]补[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补8位二进制数表示的原码、反码与补码8位二进制数十六进制数无符号数原码补码反码0000000000H0+0+0+00000000101H1+1+1+10000001002H2+2+2+2····································011111017DH125+125+125+125011111107EH126+126+126+126011111117FH127+127+127+1271000000080H128-0-128-1271000000181H129-1-127-1261000001082H130-2-126-125····································11111101FDH253-125-3-211111110FEH254-126-2-111111111FFH255-127-1-0例:求+20,-20的原码、反码、补码。

解:[+20]原=+10100=00010100(“+”的符号位用0代替)

[-20]原=-10100=10010100(“-”的符号位用1代替)[+20]反=[+20]原=+10100=00010100(正数的反码和原码相同)

[-20]反=-10100=(10010100)原=11101011(符号位为1,其余取反)[+20]补=[+20]原=+10100=00010100(正数的补码同原码相同)

[-20]补=[-20]反+1=11101011+1=11101100(负数的补码为反码最低位加1)

1.1.5定点数与浮点数

定点数—小数点位置固定(例如纯整数和纯小数)

浮点数—小数点位置不固定(充分利用有限位数,扩大数的表示范围和精度)浮点数的表示方法SE1E2E3E4…Eib1b2b3b4…bp-1(-1)S2E(b0

b1b2b3…bp-1)S=0正数S=1负数小数点位置与b0=1省略符号指数尾数微机系统的三种浮点数类型浮点数中的参数单精度浮点数双精度浮点数扩充精度浮点数浮点数长度32位64位80位尾数长度p23位52位64位符号位S1位1位1位指数长度E8位11位15位最小指数-126-1022-16382最大指数+127+1023+16383指数的偏移量值+127+1023+16383【例1.3】将十进制数219.125表示成单精度浮点数。219.125D=11011011.001B=1.1011011001

27E=7+127=134=10000110B。得到二进制表示的规格化的浮点数形式:尾数(共23位),包括隐含的b0共24位指数符号010000110101101100100000000000001.1.6计算机中常用码制1.BCD码(BinaryCodedDecimal)

用二进制编码表示十进制数称为BCD码。一位十进制数需要用4位二进制编码表示。例如(0100100101111000.000101001001)BCD

(4978.149)D压缩BCD码:一个字节表示两位十进制数非压缩BCD码:一个字节表示一位十进制数(使用低四位)BCD码加法,可以通过半字节(四位二进制数)BCD码的加法实现,规则:和≤9不调整;9<和≤15先加6调整,有AC=1(低4位)或CY=1(高4位);15<和有AC=1(低4位)或CY=1(高4位),后加6调整。表1-3几种常见的BCD编码

十进制数常见的编码842154212421631-1余3码73210000000000000000000110000100010001000100100100000120010001010000101010100103001100111001010001100011601101001110010001001011181000101111101101101110019100111001111110011001010

2.ASCII码美国国家信息交换标准代码ASCII(AmericanStandardCodeforInformationInterchange)已成为计算机字符编码的国际标准。它由7位2进制数码构成,共128个字符。

ASCII码主要用于微机与外设通信ASCII码表

012345670NULDLESP0@P`P1SOHDC1!1AQaQ2STXDC2“2BRbR3ETXDC3#3CScS4EOTDC4$4DTdT5ENQNAK%5EUeU6ACKSYN&6FVfV7BELETB‘7GWgW8BSCAN(8HXhX9HTEM)9IYiYALFSUB*:JZjZBVTESC+;K[k{CFFFS,<L\l|DCRGS-=M]m}ESORS.>N^n~FSIUS/?O_oDELNUL空SOH标题开始STX正文结束ETX本文结束EOT传输结束ENQ询问ACK承认BEL报警符BS退格HT横向列表LF换行VT垂直制表FF走纸控制CR回车SO移位输出SI移位输入SP空格DLE数据链换码DC1设备控制1DC2设备控制2DC3设备控制3DC4设备控制4NAK否定SYN空转同步ETB信息组传送结束CAN作废EM纸尽SUB减ESC换码FS分隔符GS组分隔符RS记录分隔符US单元分隔符DEL作废控制符号的定义3.中文编码

中文字符用二个字节表示,每个字节的最高位置1,余下的14位表示字符,构成汉字内码(GB2312-80)。汉字内码是对汉字的唯一标识。汉字输入码各种输入法所采用的汉字编码统称为输入码

汉字内码

输入的汉字在机器中必须转换为统一的机内码汉字输出码

用于输出汉字字型的点阵编码

4.奇偶校验码在数据的存取、运算和传送过程中,难免会发生错误,把“1”错成“0”或把“0”错成“1”。奇偶校验码是一种能检验这种错误的代码。它分为两部分;信息位和奇偶校验位。一些常用数据1字节=8位,即:1BYTE=8BIT1024字节称为1KB(YTE)1024KB=1MB1024MB=1GB有时商家把1000也称为1K,于是80G硬盘在电脑中就识别为76G地址线条数对应可寻址(访问)的存储器大小具有如下关系:1线1字节,10线1KB,20线1MB,30线1GB显然:11线2KB,12线4KB,..16线64KB。PC机地址线32线(位),可以组装的最大内存是:4GB单片机与PLC8位51单片机基本结构编者:胡学海单片机的学习重点CPU+内存:寄存器应用,指令集和寻址方式接口:各种可编程接口的应用特点及初始化方法。基本接口包含:通用并行接口、串行接口、定时器、中断控制。以上3点是学习的重点单片机的数据交换接口尽管外部设备多种多样,根本上来说就是数据的传输:外部设备把指令、数据送到单片机内让单片机进行处理单片机把处理情况和处理结果,以及需要保存的数据送到外部设备:显示;打印;保存;交换……单片机还需要读取外部状态信息和输出控制信息。单片机接口就是完成以上数据传输任务的基本电路模块。单片机基本接口并行接口:多条线(8线)同时传输数据。一次传输一字节。串行接口:单线传输,一次传输一位,分时传送。定时器:产生设定的时间间隔信号,用于安排计算机的多种任务执行时间,也可以测量外部信号的宽度,周期,功能强的定时器,还可以产生多种波形输出,例如PWM等。中断控制器:用于使CPU能及时响应多种外部设备申请的服务。配合外部低速设备的数据交换。其他接口:DMA直接存储器存取,AD/DA数字/模拟接口等,随不同型号不同而不同。通讯接口举例并行接口:LPT打印机;内部FDD软驱;IDE光驱/硬盘……串行接口:COM1/COM2串行接口;USB通用串行接口;键盘、鼠标接口;红外线接口;网络接口……串行接口还有更广泛的应用:手机,数字电视,卫星通讯……属串行接口的还有一些其它名称:I2C,SPI,SMBus,通讯协议有些差异。RS485,RS232等,传送的驱动方式和数据电平有些差异。单片机的其他接口扩展的其它接口如:A/D;D/A接口;I2C接口,CAN接口;SPI接口;DMA接口等不同厂家的产品具有不同的特点,但基本结构框架类似,一通百通。如果使用C语言编程,只要了解对应接口的初始化代码就可以对不同型号单片机进行编程了!基于51单片机核,英飞凌infeineon,AD,ATMEL,PHILIPS等公司还提供了更多的接口功能,使之应用更广泛和灵活。单片机不同型号间的主要差异CPU字长:4位;8位;16位;32位ROM容量:没有(需要外部扩展);1K;2K;4K;8K…64K,128K…,工艺上分EPROM;E2PROM;FLASHROMRAM容量:128B;256B;1K;2K…,基本RAM和片内扩展XRAM接口数量和种类:并口;串口;定时器;中断控制器。好的芯片还集成了AD/DA接口,DMA,PWM,CAN,I2C,……。同时增加更多引脚。常见的8位16位单片机Intel8051系列和96系列Motolola的MC68H系列Microchip的PIC系列ATMEL的89系列,ATMEGA系列PHILIPS的P89/P87C5系列SiliconLaborratories的C8051F..系列亿恒C500/166系列(原西门子,infineon)8/16位三菱740族8位,M16C/62系列16位TI的MSP430系列内部总线地址寄存器(段寄存器)程序计数器数据寄存器通用寄存器总线缓冲总线缓冲数据总线地址总线累加器ALU暂存器状态寄存器器指令寄存器指令译码时序逻辑控制信号CPU的一般结构CPU主要结构和功能ALU:算术逻辑单元。它是一个集:加、减、乘、除、移位、与、或、非、异或等多种功能模块的电路单元。选择ALU的某项功能是通过“指令译码器”送出的控制信号决定的。指令寄存器存放着从存储器读回的操作指令,它被“指令译码器”译成操作ALU的控制信号。地址寄存器/程序计数器自动计算CPU要执行的下一条指令的存放地址,并产生相应地址信号用于选择程序存储器。指令译码器在执行完当前指令时,发出“读指令”信号,把下一条指令读入指令寄存器。新型单片机采用“流水线”方式,执行指令的同时就可以读取新的指令。状态寄存器存放着ALU运算的状态标志。通用寄存器存放一些最常用的运算数据或地址。运算前,数据会转存到暂存器中累加器是最常用的运算寄存器。通常,运算前是运算数据,运算后存放运算结果。它配合暂存器通过ALU进行运算。存储器数据存储器:RAM程序存储器:ROM两类存储器的编址方法有两种:线性统一编址和分区编址。IntelMCS-51为“分区编址”,ROM和RAM各自占用一个独立地址空间。IntelX86采用线性统一编址。ROM和RAM分布于同一个地址空间的不同地址段。许多计算机都采用线性统一编址,称为“冯·涅曼”体系结构。例如亿恒C164CI系列单片机。地址:就像门牌号或者密码锁,每一个存储单元应当具有独立的唯一的地址代码。单片机的RAM特点单片机的RAM又分为“片内”和“片外”两种。片内RAM包含两种应用类型:①通用寄存器+片内RAM。②特殊功能寄存器SFR。SFR是特殊功能寄存器(SpecialFunctionRegisters),而且是专用的!它们控制着单片机的各种接口功能,也存放着接口的输入输出数据。这些寄存器都有特定的地址。片外RAM通常指外部扩展的RAM。一些性能较好的单片机片内也集成了“片外”RAM,称为:XRAM,实际上还是集成在片内。片内RAM和片外RAM也分为统一编址和独立编址两种51单片机RAM属于独立编址,而ROM则为统一编址。后续详细解说。单片机的接口单片机的基本接口就是前面讲过的:并行接口;串行接口;定时器和中断控制器。性能好的单片机除了增加接口数量之外,还增加了许多专用接口,例如模数/数模转换器接口,USB接口,CAN接口,I2C接口,PWM接口等等。所有接口的控制寄存器和数据寄存器都安排在SFR区。它们同片内RAM那样都有具体的地址安排,并有相应的寄存器名称。各生产厂家会提供“寄存器名=地址”的文件或编译器。各接口引脚往往是多功能的,用软件选择它的某一功能。(配合硬件连接)特别值得注意的是:可以直接对一个引脚进行控制!这是其它计算机没有的。一些并行接口常作为外部扩展时的数据线、地址线和控制线使用。(当需要时)51系列单片机最早以8031为代表,后来派生出许多型号,它们的基本结构和指令代码相同。甚至引脚也相同,可以直接互换。这类系列统称为MCS-51系列,常见型号有:8031,8032,8751,8752,8051,8052…89C51,89C52,97C51,97C52,89C2051……生产51系列单片机的许多厂家还推出了性能更好的型号,这些厂家有:Philips,Dallas,SIMENS,AMD,Atmel,NEC,HARRIS,WinBond,YHUNDAI,ADI,SiliconLaborratories等,产品名称变化也大,例如:Dallas的DS80C320,WinBond的W78E58,SiliconLaborratories的C8051F0XX,Philips的P89LPCXXX等。51单片机代表型号及资源型号ROM(KB)RAM字节并口引脚数串口定时器中断源8031无1284×81258032无2564×813680514KPROM1284×812589514K1284×812589528K2564×813689C5832K2564×813687C5416K2564×813689C20512K1282×812587C514K1284×8125常见代号分析80C31的C字表示CMOS工艺,通常忽略不讲。第二个字:0,7,9等,表示ROM的工艺,0为PROM,7为EPROM,9为E2PROM或flashROM。第三个字:3:无ROM,5:有ROM第四个字n:n=1:RAM128字节,定时器2个,ROM4Kn=2:RAM256字节,定时器3个,ROM=8Kn>2:RAM256字节,定时器3个,ROM=n*4K注:此方法不完全通用,可以参考。希望大家记住此方法。例:89C5187C5251单片机引脚和封装封装的英文缩写意义DIP双列直插式封装PDIPPlasticDual-In-LinePackage塑料双列直插式组件TQFPThinQuadFlatPack薄型四方扁平封装

PQFPPlasticQuadFlatPack塑料四方扁平封装

PLCCPlasticLeadedChipCarrier/PlasticLeadlessChipCarrier塑料式引线芯片载体封装/塑料无引线芯片承载封装BGABallGridArray球栅阵列(封装)

PGAPinGridArray栅格阵列接脚

TSOPThinSmall-OutlinePackage薄型小外型封装

SOTSmall-OutlineTransistor小外型晶体管

封装的意义做PCB图,要根据封装尺寸和间距做,选择封装时要考虑产品的尺寸.不同封装的成品率和散热性能不同.DIP40封装的51单片机引脚定义P1.0~P1.7 并行口P1,其中P1.0和P1.1可能作为定时器T2的功能引脚。P0.1~P0.7 并行口P0,当需要扩展存储器或接口时,可以作为数据/地址(低8位)总线。P2.0~P2.7 并行口P2,当需要扩展存储器或接口时,可以作为地址总线高8位。P3.0~P3.7 并行口P3,通常单独使用它们的第二功能:

P3口特殊功能P3.0 RXD,异步通讯接口的数据输入端。

P3.1 TXD,异步通讯接口的数据输出端。

P3.2 INT0,外部中断0申请的输入端。

P3.3 INT1,外部中断1申请的输入端。

P3.4 T0,定时器T0外部时钟输入端。

P3.5 T1,定时器T1外部时钟输入端。

P3.6 WR,对外部存储器/接口的“写”信号。

P3.7 RD,对外部存储器/接口的“读”信号。51单片机的其它引脚VCC 工作电源,常为+5V,某些型号可以工作在2.7~8V之间。VSS GND,接地端。XTAL1 外接晶体振荡器,当使用外部时钟时,此脚应接地。XTAL2 外接晶体振荡器。也作外部时钟输入。PSEN 读外部ROM信号。RST 复位输入端,高电平复位,低电平时CPU工作。ALE/PROG 地址锁存信号输出(正脉冲)/编程脉冲输入(负脉冲),用户一般不考虑后者。此信号控制外接的74LS373锁存器把P0口的地址分量分离出来作为扩展地址的低8位。EA/VPP 片内片外ROM选择/编程电压输入,用户一般不考虑后者。当接GND时,表示使用外部程序存储器;当接VCC时,使用片内程序存储器。MCS-51单片机最小系统举例

拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为8951的芯片,下面我们就看一下如何给它连线。

1、电源:单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。

2、振蒎电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。只要买来晶振,电容,连上就可以了,按下图接上即可。3、复位引脚:按图中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。

4、EA引脚:EA引脚接到正电源端。至此,一个单片机就接好。5、编程并汇编为机器语言,写入8751片内程序存储器。6、通电,单片机就开始工作了,即从地址0000开始执行程序。

如要求8个LED灯间隔轮流亮灭,程序为:

MOVA,#10101010B;LOOP:MOVP1,A ;(A)->(P1)CPLA;A求反

SJMPLOOP;跳转到LOOP51单片机内部结构框图1存储器结构51单片机的“地址重叠”片内RAM地址:00H~7FH(52系列为00H~FFH)位地址:00H~7FH片外扩展RAM地址:0000H~FFFFH(扩展)ROM地址:0000H~FFFFH单片机对其访问时,各使用不同的指令就可区别!片内:MOV指令等,因对象不同使用不同寄存器或寻址方式就可区分:位或者字节。片外RAM用MOVX,控制信号:WR和RD访问ROM用MOVC,控制信号:PSEN。ROM以线性方式编址,无论EA脚接高电平或低电平8051片内有128字节数据存储器RAM(不包括特殊寄存器),4K字节的程序存储器ROM。可在片外扩展RAM和ROM,并各有64KB的寻址范围。64K字节的ROM空间中,有4K字节地址对于片内ROM和片外ROM是公共的。EA控制信号用来区分内部ROM和外部ROM。程序存储器ROM保留单元:0000~0002单元是所有执行程序的入口地址。0003~002AH单元均匀地分为五段,用作五个中断服务程序的入口。数据存储器RAM128字节(不包括特殊寄存器):00~7FH是真正的RAM区,可以读写各种数据,分为三个区域:从00~1FH安排了四组工作寄存器;第二个区域是位寻址区,占用地址20~2FH;第三个区域就是一般的RAM,地址为30~7FH。特殊寄存器RAM128字节:80~FFH是专门用作特殊功能寄存器(SFR)的区域。CPU由运算器、控制器和若干特殊功能寄存器组成。运算器可完成加、减及各种逻辑运算,还可直接完成乘除运算。控制器在单片机内部协调各功能部件之间的数据传送、数据运算等操作。特殊功能寄存器有ACC,B,PSW,SP和DPTR。ACC就是累加器,在乘除运算时,B寄存器用来存放一个操作数,也用来存放运算后的一部分结果。PSW为标志寄存器。SP为堆栈指针。DPTR为数据指针。

PSW::(ProgramStateWord)程序状态字,8位。其中存放着当前ALU的一些操作状态特征。其字节地址是D0H。2.CPU

PC:(ProgramCounter)程序计数器,16位。它与8086CPU的IP(InstructionPointer)意义类似。PC中存放着CPU要执行的下一条指令地址,CPU通过它产生ROM地址从而读取指令。每执行一条指令,它都会自动增加。增加的数值依照已读指令的长短而变化。只有中断、跳转和调用指令才能使其作其它变化。每当开机或者复位时,它的起始值为0000H。ACC:累加器,8位。51单片机大多数指令都必须使用ACC,它是使用最频繁的寄存器。它与ALU直接相连,加、减、乘、除、移位以及其它逻辑运算都要使用ACC,特别是:外部数据的读写也都必须使用ACC。ACC有两个名字:A和ACC。A表示寄存器,ACC表示用地址表达的寄存器(存储器)。除入栈出栈指令使用ACC这个名字外,其它指令中都用A。DPTR:数据指针16位,主要用于指出外部RAM的数据地址或ROM数据表的基地址。内存中将其分为两个8位寄存器,分别叫DPL和DPH,DPH存放地址的高8位,DPL存放低8位。程序状态字PSWC:也叫CY,进位标志或借位标志。当运算产生进位或借位时:C=1,否则C=0。C位还有一个特殊意义:它是1位计算机的“累加器”,CPU作布尔运算时,需要C的介入。同时C还可以读取一个引脚的数据或者把C的数据从引脚送出。AC:半进位。当AC=1时,表明运算使低4位向高4位产生了进位。F0:用户标志位。用户可以用于存1位数据。RS1和RS0:(RegistersSelection)寄存器选择位。用于选择寄存器组。OV:溢出标志。对符号数的运算,当结果超出-128~+127时,产生溢出,此时OV=1。F1:用户标志位。用户可以用于存1位数据。(有些品种不支持)P:奇偶标志,反映ACC中数据的奇偶性。若ACC中有奇数个1,则P=1。位地址D7HD6HD5HD4HD3HD2HD1HD0H位符号CACF0RS1RS0OVF1P51单片机内部RAM地址名称/用途PSW/说明00~07R0R1R2R3R4R5R6R70组RS1=0,RS0=008~0FR0R1R2R3R4R5R6R71组RS1=0,RS0=110~17R0R1R2R3R4R5R6R72组RS1=1,RS0=018~1FR0R1R2R3R4R5R6R73组RS1=1,RS0=120~2F位寻址区,地址00~7FH共128位,占16字节不用的字节作RAM30~7F用户RAM区,存变量、缓冲、堆栈等80~FF51、52单片机为SFR特殊功能寄存器采用直接地址(名称)80~FF52单片机作RAM采用寄存器间接寻址

内部RAM的读写采用“MOV”指令,操作数分为:字节或位,其操作对象随之不同。

R0-R7通用寄存器部分,不用的字节也做RAM。通用寄存器的使用51单片机留了4组寄存器,它们都叫做:R0,R1~R7。它们在各种运算中起着参与运算的作用。主程序只用0组寄存器。其它组用于不同的中断服务程序。目的是互不破坏数据。如何切换到另一组呢?用程序改变PSW中的RS1和RS0就可。记住:主程序默认使用:寄存器组0。中断服务程序开始时,先保存PSW,然后改写RS1和RS0。退出服务时恢复原来的PSW。一般只要使用两组就可以了。SFR简介

地址:80H~FFH并口数据寄存器:P0;P1;P2;P3累加器ACC和寄存器B定时器T0(TH0;TL0),T1(TH1;TL1)定时器控制寄存器:TMOD;TCON串行口控制SCON和数据SBUF中断控制:IE,IP电源控制:PCON程序状态字:PSW堆栈指针:SP数据指针:DPTR(DPH和DPL)单片机的“位”单片机特色之一是使用“位”变量并可以直接操作。“位”存在于各个并口(引脚),累加器,PSW以及若干寄存器中;同时在RAM中也预留了“可位寻址”的空间:20H~2FH。位空间占用16字节,每个字节8位共128位,用地址00H~7FH表达。换算关系:字节地址=20H+(位地址/8),余数就是此字节的位号。“位”可以设为变量、标志、LED显示缓冲区等。51单片机的堆栈SP:stackPointer堆栈指针,8位。用于指出当前堆栈的顶部地址,当有入栈操作时,SP自动+1,出栈时SP=SP-1。堆栈:在RAM中划分一个“块”作为堆栈。堆栈的作用有两个:1.用于保存子程序返回时的程序地址信息。2.数据暂存。调用子程序或者响应中断时,断点的地址被CPU自动存入堆栈,程序返回时,此地址能自动恢复,从而继续执行被打断处的程序。堆栈的操作是通过“堆栈指针SP”记录的,它永远指出下一个空闲的存储器地址。51单片机的堆栈为“上涨”型,入栈时SP=SP+1。因为51机RAM很少,堆栈空间的预留需要精打细算。计算的依据:考虑子程序嵌套的最大可能层数,同时还要考虑中断服务程序的子程序嵌套层数,两个层数相加后乘2,再留一点余量。128字节RAM空间,扣除必须使用的通用寄存器组数;堆栈;位变量占用的字节数,剩余部分才能设定为变量;缓冲区等。3并行接口

从外部来看,共有4组8位并行接口,占用32个引脚,另:两个引脚作晶振接入,电源,地各一个脚及4个控制脚共计40个引脚。

4组并行接口分别称为:P0;P1;P2和P3,每一个单独引脚由小数点后的数字确定。例如:P1.0;P3.2等。

4组并口,除P1为专门的并口外,其它3个并口还有第二功能:P0可以作为外部的数据总线和地址低8位;P2作为地址高8位。P3的每一个引脚都有不同的第2功能:串行接口的输入输出;外部中断输入;定时器外部钟输入以及外部接口存储器的读写信号。单片机内部除CPU的主要结构外,还有128B(256B)的RAM,一定数量的ROM。RAM和ROM的多少随芯片型号不同而不同。

P0口和P2口可以作为外部扩展的数据总线和地址总线使用。P0口分时作为数据线(8位)和地址线低8位使用,通过外部地址分离电路将其分离。分离信号就是ALEP2口作为地址线高8位使用P0和P2可以组合成16位地址,因而可以对外部的64KB空间进行寻址访问。他们可以同时连接ROM和RAM(访问操作各自不同)4.定时/计数器8051内部有两个16位可编程定时/计数器,最大计数模式为216-1。在定时工作时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟。计数工作时,计数脉冲由T0和T1输入。8051的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时/计数器中断以及一个串行口中断。MCS-51单片机可以设置两个中断优先级,即高优先级和低优先级。5.中断系统8051单片机内部有一个可编程的、全双工的串行接口。串行收发数据存储在特殊功能寄存器中的串行数据缓冲器SBUF中,占用内部RAM地址99H。6.串行口51结构小结RAM128字节,地址00~7FH,可用作:1.通用寄存器R0~R7。2.堆栈区域划分。3.位变量。4.字节变量和数据暂存(缓冲区)。SFR,地址80~FFH。含端口控制寄存器和数据寄存器,以及其他专用寄存器如:累加器ACC,寄存器B,程序状态字PSW,堆栈指针SP,程序计数器PC等。40个引脚:4×8个并行口引脚,晶振2引脚、电源2引脚、复位、PSEN、EA、ALE。P0,P2可扩展为地址/数据线,P3口功能最多。习题(1)堆栈的存取原则是

(2)已知[X]=+0110101,[Y]=-0010011,求[X]补+[Y]补=

。(3)51单片机位变量占用地址为(),寻址范围(),特殊寄存器占用地址为()A00H~1FH,B20H~2FH,C00H~FFHD80H~FFHE00H~7FHF80H~90H(4)微处理器或CPU主要由3部分组成,即

和寄存器组。

(5)存储器的编址方法有两种__________、__________。(6)51单片机的堆栈入栈时SP=

。(7)51单片机位,如果已经使用了片内ROM,片外ROM的首地址是(),如果已经使用了片内RAM,片外RAM的首地址是()A0000H,B2000H,C4000HD8000H单片机原理及应用2单片机基本结构(2)(51单片机并口及并口应用)(51单片机晶振和复位)(工作状态和时序)151单片机的并行接口51单片机I/O具有4组,每组8位,共32位并行接口,按“第二功能”不同,结构也稍有不同。P0口:并口/数据地址总线P1口:并行接口P2口:并口/地址高8位P3口:并口,每个引脚还有不同功能:RXD;TXD;INT0;INT1;T0;T1;WR;RD标准并行接口电路框图

引脚锁存器RD数据WR方向DIR(需要设定方向)三态门51单片机P1口引脚锁存器读寄存器数据WRQQVCCRT读引脚51单片机P0口引脚锁存器读寄存器数据WRQQVCCT多路器MUX地址/数据控制(H)读引脚51单片机P2口引脚锁存器RD数据WRQQVCCT多路器MUX地址/数据控制(H)R读引脚51单片机P3口引脚锁存器RD数据WRQQVCCT第二输出功能第二输入功能读引脚51单片机并口应用小结并口基本功能:作为输出口用时,直接和外设相连;作为输入口时,有读端口和读引脚两种工作方式;读端口时实际上并不从外部读入数据,而只是把端口锁存器中内容对如到内部总线,对引脚时才真正地把从外部加到引脚上的数据读入到内部总线;对引脚时,要先通过指令,把端口锁存器置1,然后再实行读引脚操作。

四个通道特性上的差别主要是通道0、通道1、通道2、通道3都还有第二功能,而通道1则只能用作I/O口:通道0还可作为低8位地址总线和8位数据总线使用;通道2的第二功能是作为高8位地址总线使用;通道3的每一位都有各自的第二功能。并口第二功能随指令变化:使用MOVX/MOVC指令时,P0/P2口自动切换到“地址、数据”方式P3口第二功能是“直通”的,可以直接输出:WR、RD、TXD,直接输入:INT0、INT1、T0、T1、RXD。由程序和电路直接相应(预先设定功能,采用相应指令)其他:通道0作为I/O输出时,需要上拉电阻。驱动MOS电路时,阻值为4.7K欧姆,驱动LED显示器时为470欧姆;通道0作为数据/地址线工作时,不需要上拉电阻;并口输出应用举例VCCR2kPx.xOUTVCC220LED继电器单片机连接光耦合器件289C51晶振电路电容:20~33pf(常:30pf)晶体:1.2~16MHZ(常:12M)XTL1XTL2XTL1XTL2外接时钟不接3MCS-51单片机的工作方式复位方式--下面细讲程序执行方式单步执行方式:需要用到中断,在“中断系统”中讨论掉电和节电方式:在“串行接口”波特率设定中讲编程和校验方式:指固化程序和读出已经固化的程序功能,本课程不作讨论。复位电路上电复位时序时间t上电电容充电复位结束,单片机工作大于24个晶振周期宽度(复位期)Vcc电容电压RES引脚电压复位后寄存器状态PC=0000程序从0000开始执行,ROM的这个地址也称为“复位地址”PSW=0其中RS0,RS1=0,默认主程序使用寄存器组0SP=07堆栈从RAM的07地址开始,一般需要更改堆栈栈底值P0~P3=FFH引脚输出高电平IE=0X000000B所有中断被关闭IP=0X000000B所有中断无优先级TMOD=00定时器T0,T1模式0……TCON=00定时器不工作…….SCON=00串行口默认使用方式0PCON=0XXX0000B无电源管理,无波特率2倍设置……其他如ACC;DPTR;TH0;TL0;TH1;TL1;SBUF等可以不关心。在复位后,程序计数器PC的值是0000H,这表明程序的第一条指令必须存入内存的0000H单元,程序才可能在复位后,直接运行。复位不影响RAM的内容。自动上电复位。单片机的基本工作方式。执行的程序可以放在内部ROM、外部ROM或者同时放在内外ROM中。真正的程序一般不可能从0000H开始存放,因此需要在0000H单元可是存放一条转移指令,从而使程序跳转到真正的程序入口地址。单步执行方式按一次键,执行一条指令。可以利用MCS-51的中断控制来实现。一般用于调试。掉电和节电方式在掉电方式下,片上的时钟振荡电路停止工作,CPU也停止各种活动。在节电方式下,内部时钟并不停止工作,只是去CPU的路径被门电路切断,但仍然供应中断电路、定时器和串行口。可产生中断来结束节电方式。CPU的所有工作都是在时钟信号控制下进行的。CPU发出的控制信号有两类:一类是用于CPU内部的;另一类通过控制总线送到片外。4.MCS-51单片机的时序4.1机器周期和指令周期在讨论时序时,以机器周期作为单位。MCS-51的一个机器周期包括12个振荡周期(时钟周期),分为6个S状态:S1~S6。每个状态又分为两拍,称为P1和P2。每条指令都由一个或几个机器周期组成,在MCS-51Hong,有单周期指令、双周期指令和四周期指令。

指令时序振荡周期ALE输出状态周期读操作码(无效)读第二字节ADDA,#dataS1S2S3S4S5S6读操作码S1S2S3S4S5S6读操作码(单周期)机器周期时序要点:一个指令周期=1,2或者4个机器周期一个机器周期=12个晶振周期一个机器周期输出两个ALE脉冲即:ALE的输出频率fALE=(1/6)fOSC如果使用晶振频率为12MHZ,则fALE=2MHZ,指令执行时间=1,2,4微秒。4.2MCS-51指令的取指/执行时序4.3访问外部ROM和外部RAM的时序对MCS-51系统的存储器扩展,有以下几点需要注意:(1)存储器芯片。ROM和RAM都有独立的数据线、地址线和若干控制线,而MCS-51芯片则没有。因此需要锁存器来形成16位地址。5.MCS-51单片机外部存储器的扩展(2)在扩展外部ROM时,用控制信号PSEN,而在扩展外部RAM时,用控制信号RD和WR。(3)在选用外接存储器时,应注意ALE信号与锁存器选通信号的配合。地址数据扩展电路A8~A15A8~A15A8~A15A0~A7A0~A7A0~A7扩展后的地址数据时序P0D0~D7A0~A7D0~D7A0~A7D0~D7A0~A7ALEP2373出74LS373是一种“透明”的8D锁存器,当LE引脚为“高”时,输出=输入。低电平时锁定数据。

Intel8282类似,但引脚不一样。不能用其它锁存器代替。5.1程序存储器的扩展3.5.2数据存储器的扩展8031和AT29LV040A的连接512KB分为8个64KB,使用P1的3根口线来选择FLASH既作程序存储器(PSEN),地址为0000~FFFFH(64KB),又作数据存储器(RD和ER),地址为10000~FFFFFH(448KB)3.5.3单片机和FLASH存储器的连接8031和AM29F016B的连接AM29F016容量为2MB,地址线21根,分为32K一段,段内使用A0~A14。共分为64段,,由P2.7的高脉冲选通74374锁存器,P0口送段地址A15~A20。单片机原理及应用451单片机指令集51单片机(汇编)指令集任何CPU的指令都使用“二进制”机器码!用数字(代码)表达需要CPU执行的功能显然是极不方便的!采用“助记符”表达“二进制机器码”,便于编写程序。“助记符”也称为“助记符指令”。用“助记符”编写的程序,称为“汇编语言程序”“助记符→二进制机器码”过程称为“汇编”“二进制机器码→助记符”过程称为“反汇编”常用的指令表达方式为:

[标号:]助记符

操作对象1(结果),操作对象2寻址方式Addressing地址(动名词),翻译为“寻址”一般意义:可以访问的所有地址空间的“地址表达式”指令中的意义:“地址”的表达形式:直接用“地址码”表达——称为“直接寻址”用“寄存器内容”表达——称为“寄存器间接寻址”寄存器作为访问对象——称为“寄存器寻址”直接使用常数(立即数)——称为“立即寻址”固定地址+偏移——称为“变址寻址”,也称:基址+变址当前程序地址±相对偏移——相对寻址操作数是位寄存器或者位变量——位寻址不同CPU还有其它表达方式(寻址方式)51单片机指令通用符号Rn代表R0,R1~R7中任意一个,即:n=0,1~7Ri代表R0或R1,即:i=0.1#data代表8位立即数(常数)#data16代表16位立即数(常数)Direct代表直接地址:8位地址码(变量名)或寄存器名:寄存器除A,Rn外)rel带符号的8位相对偏移地址Addr11addr1611位或者16位地址@Ri用Ri的内容表达地址(8位地址)@DPTR用DPTR的内容表达地址(16位地址)LABEL程序入口的名称BIT位变量、位寄存器,如:P1.0,C,ACC.7等51单片机寻址表达式1直接寻址:操作对象是地址、变量名、SFR中的寄存器名。例如:

MOV20H,AMOVSP,#30HPUSHACC(寄存器)间接寻址:通过寄存器指出访问地址,寄存器只能使用R0,R1或DPTR,在寄存器前面冠以符号@。例如:MOV@R1,AMOVX@DPTR,A此表达方法可以方便地用于循环程序51单片机寻址表达式2寄存器寻址:对寄存器操作。寄存器指:Rn和A,其余“寄存器”不算。例如:MOVR4,AINCR7立即寻址:操作数是常数(立即数)。常数前冠以符号#,例如:MOVA,#30MOV20H,#30H位寻址:操作数是位寄存器或者位变量,例如:MOVP1.0,CSETBP1.151单片机寻址表达式3变址寻址:基本地址+偏移量。基本地址用DPTR表达,偏移量用A表达,在寄存器前面冠以符号@。例如:MOVCA,@A+DPTRMOVCA,@A+PCJMP@A+DPTR相对寻址:当前程序地址+(±相对偏移)即PC+rel,相对偏移是一个8位符号数rel,其范围-128~+127之间,表达为另一个程序入口的label,此label的距离不能太远,汇编器自动计算出相对偏移。主要用于“条件转移”指令,例如:DJNZR7,labelJNClabel51单片机指令-内部传送指令立即寻址MOVA,#DATAMOVRn,#DATAMOV@Ri,#DATAMOVDirect,#DATA直接寻址:MOVA,DirectMOVDirect,AMOVDirect,RnMOV@Ri,DirectMOVDirect1,Direct251单片机指令-内部传送指令间接寻址MOVA,@RiMOV@Ri,AMOVDirect1,@Ri寄存器寻址MOVA,RnMOVRn,AMOVDirect1,Rn51单片机指令-外部传送指令MOVX@DPTR,AMOVX@Ri,A页面由P2确定MOVXA,@DPTRMOVXA,@Ri页面由P2确定MOVCA,@A+DPTR查表指令MOVCA,@A+PC补充:MOVDPTR,#data16唯一16位传送注意:当使用Ri作外部访问时,只能访问256字节空间,我们称之为1页,页面地址可以送到P2口锁定,因此同样可以访问64K空间(256页)。许多增强内核的51单片机具有两个DPTR,功能改善很多。51单片机指令-堆栈操作指令PUSHDirect存储器内容存入堆栈POPDirect堆栈内容回存到存储器注意,累加器A出入栈时,写为:PUSHACC和POPACC堆栈指令只对“直接地址”有效!对A、Rn无效51单片机指令-数据交换指令XCHA,RnXCHA,directXCHA,@Rn半字节交换指令:XCHDA,@Ri只交换低四位

SWAPA累加器A的高4位和低4位交换,相当于字节循环移位4次字节拆分程序举例MOVMEM,#0MOVMEM+1,#0 ;对MEM的连续两个存储器清零MOVR0,#MEM ;用R0表达MEM地址MOVA,HEX ;读取待拆数据,假定为“0ABH”XCHDA,@R0 ;MEM中为“0BH”,A中为“A0H”INCR0SWAPA ;A中高低4位互换,“A0H”变“0AH”MOV@R0,A ;存“0AH”到MEM+1此程序常用作显示前的处理,一个数码管只能显示1个16进制数据,1字节数据要用2个数码管才能显示。51单片机指令-算术运算指令加法:带进位加法:ADDA,RnADDCA,RnADDA,directADDCA,directADDA,@RnADDCA,@RnADDA,#dataADDCA,#data后者吧“C”作为最低位连同数据一起进行相加,常用于16位加法的高8位相加。C是真正意义上的“进位”-低8位相加后的进位。51单片机指令-算术运算指令减法,必须带上“借位”SUBBA,RnSUBBA,directSUBBA,@RnSUBBA,#data一般使用时,先要使C=0即:CLRC,16位减法时,高8位运算不要清除C51单片机指令-加1减1指令INCADECAINCRnDECRnINCdirectDECdirectINC@RiDEC@Ri它们的操作不影响状态标志PSW,即:FFH+1=0或0-1=FFH,不会产生进位或者借位标志51单片机指令-乘除法指令等乘除法指令:MULABA*B=BA结果:高8位在B,低8位在ADIVABA/B=A……B结果:商在A,余数在B十进制调整指令DAABCD码加减之后,将结果又恢复成BCD码数据指针加1指令INCDPTR16位数据指针只能加1,不能减11字节16进制数转

温馨提示

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

评论

0/150

提交评论