还剩47页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
单片机基本知识第一节单片机的发展与应用
一、什么是单片机单片机即单片机微型计算机,是将计算机主机CPU、内存和I/O接口集成在一小块硅片上的微型机
二、单片机的发展第一阶段(1976~1978年)低性能单片机的探索阶段以Intel公司的MCS-48为代表,采用了单片结构,即在一块芯片内含有8位CPU、定时/计数器、并行I/O口、RAM和ROM等主要用于工业领域第二阶段(1978~1982年)高性能单片机阶段,这一类单片机带有串行I/O口,8位数据线、16位地址线可以寻址的范围达到64K字节、控制总线、较丰富的指令系统等这类单片机的应用范围较广,并在不断的改进和发展第三阶段(1982~1990年)16位单片机阶段16位单片机除CPU为16位外,片内RAM和ROM容量进一步增大,实时处理能力更强,体现了微控制器的特征例如Intel公司的MCS-96主振频率为12M,片内RAM为232字节,ROM为8K字节,中断处理能力为8级,片内带有10位A/D转换器和高速输入/输出部件等第四阶段(1990年~)微控制器的全面发展阶段,各公司的产品在尽量兼容的同时,向高速、强运算能力、寻址范围大以及小型廉价方面发展
三、单片机的应用
1、单片机在仪器仪表中的应用
2、单片机在机电一体化中的应用
3、单片机在智能接口和多机系统中的应用
4、单片机在生活中的应用第二节单片机结构MCS51单片机的特点特点
(1)一个8位微处理器CPU
(2)数据存储器RAM和特殊功能寄存器SFR
(3)内部程序存储器ROM
(4)两个定时/计数器,用以对外部事件进行计数,也可用作定时器
(5)四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做输出
(6)一个串行端口,用于数据的串行通信
(7)中断控制系统
(8)内部时钟电路
一、单片机内部结构
二、CPU结构1中央处理器(CPU)中央处理器是单片机的核心,完成运算和控制功能MCS-51的CPU能处理8位二进制数或代码2内部数据存储器(内部RAM)8051芯片中共有256个RAM单元,但其中后128单元被专用寄存器占用,能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据因此通常所说的内部数据存储器就是指前128单元,简称内部RAM3内部程序存储器(内部ROM)8051共有4KB掩膜ROM,用于存放程序、原始数据或表格,因此,称之为程序存储器,简称内部ROM4定时/计数器8051共有两个16位的定时/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制5并行I/O口MCS-51共有4个8位的I/O口(P
0、P
1、P
2、P3),以实现数据的并行输入/输出在实训中我们已经使用了P1口,通过P1口连接8个发光二极管
三、单片机存储器结构
1、MCS51单片机存储器的特点MCS-51单片机的芯片内部有RAM和ROM两类存储器,即所谓的内部RAM和内部ROMMCS-51内部程序存储器MCS-51的程序存储器用于存放编好的程序和表格常数8051片内有4KB的ROM,8751片内有4KB的EPROM,8031片内无程序存储器MCS-51的片外最多能扩展64KB程序存储器,片内外的ROM是统一编址的如端保持高电平,8051的程序计数器PC在0000H~0FFFH地址范围内即前4KB地址是执行片内ROM中的程序,当PC在1000H~FFFFH地址范围时,自动执行片外程序存储器中的程序;当保持低电平时,只能寻址外部程序存储器,片外存储器可以从0000H开始编址MCS-51的程序存储器中有些单元具有特殊功能,使用时应予以注意其中一组特殊单元是0000H~0002H系统复位后,PC=0000H,单片机从0000H单元开始取指令执行程序如果程序不从0000H单元开始,应在这三个单元中存放一条无条件转移指令,以便直接转去执行指定的程序还有一组特殊单元是0003H~002AH,共40个单元这40个单元被均匀地分为5段,作为5个中断源的中断地址区其中0003H~000AH外部中断0中断地址区000BH~0012H定时/计数器0中断地址区0013H~001AH外部中断1中断地址区001BH~0022H定时/计数器1中断地址区0023H~002AH串行中断地址区中断响应后,按中断种类,自动转到各中断区的首地址去执行程序,因此在中断地址区中理应存放中断服务程序但通常情况下,8个单元难以存下一个完整的中断服务程序,因此通常也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过中断地址区,再转到中断服务程序的实际入口地址MCS-51内部数据存储器内部数据存储器低128单元8051的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分低128单元(单元地址00H~7FH)和高128单元(单元地址80H~FFH)如图所示为低128单元的配置图寄存器区8051共有4组寄存器,每组8个寄存单元(各为8),各组都以R0~R7作寄存单元编号寄存器常用于存放操作数中间结果等由于它们的功能及使用不作预先规定,因此称之为通用寄存器,有时也叫工作寄存器4组通用寄存器占据内部RAM的00H~1FH单元地址在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器组到底是哪一组,由程序状态字寄存器PSW中RS
1、RS0位的状态组合来决定通用寄存器为CPU提供了就近存储数据的便利,有利于提高单片机的运算速度此外,使用通用寄存器还能提高程序编制的灵活性,因此,在单片机的应用编程中应充分利用这些寄存器,以简化程序设计,提高程序运行速度位寻址区内部RAM的20H~2FH单元,既可作为一般RAM单元使用,进行字节操作,也可以对单元中每一位进行位操作,因此把该区称之为位寻址区位寻址区共有16个RAM单元,计128位,地址为00H~7FHMCS-51具有布尔处理机功能,这个位寻址区可以构成布尔处理机的存储空间这种位寻址能力是MCS-51的一个重要特点用户RAM区在内部RAM低128单元中,通用寄存器占去32个单元,位寻址区占去16个单元,剩下80个单元,这就是供用户使用的一般RAM区,其单元地址为30H~7FH对用户RAM区的使用没有任何规定或限制,但在一般应用中常把堆栈开辟在此区中内部数据存储器高128单元内部RAM的高128单元是供给专用寄存器使用的,其单元地址为80H~FFH因这些寄存器的功能已作专门规定,故称之为专用寄存器(SpecialFunctionRegister),也可称为特殊功能寄存器
2、特殊功能存储器SFR8051共有21个专用寄存器,现把其中部分寄存器简单介绍如下程序计数器(PC—ProgramCounter)在实训中,我们已经知道PC是一个16位的计数器,它的作用是控制程序的执行顺序其内容为将要执行指令的地址,寻址范围达64KBPC有自动加1功能,从而实现程序的顺序执行PC没有地址,是不可寻址的,因此用户无法对它进行读写,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移因地址不在SFR(专用寄存器)之内,一般不计作专用寄存器累加器(ACC—Accumulator)累加器为8位寄存器,是最常用的专用寄存器,功能较多,地位重要它既可用于存放操作数,也可用来存放运算的中间结果MCS-51单片机中大部分单操作数指令的操作数就取自累加器,许多双操作数指令中的一个操作数也取自累加器B寄存器B寄存器是一个8位寄存器,主要用于乘除运算乘法运算时,B存乘数乘法操作后,乘积的高8位存于B中,除法运算时,B存除数除法操作后,余数存于B中此外,B寄存器也可作为一般数据寄存器使用程序状态字(PSW—ProgramStatusWord)程序状态字是一个8位寄存器,用于存放程序运行中的各种状态信息其中有些位的状态是根据程序执行结果,由硬件自动设置的,而有些位的状态则使用软件方法设定PSW的位状态可以用专门指令进行测试,也可以用指令读出一些条件转移指令将根据PSW有些位的状态,进行程序转移PSW的各位定义如下除PSW.1位保留未用外,其余各位的定义及使用如下CY(PSW.7)——进位标志位CY是PSW中最常用的标志位其功能有二一是存放算术运算的进位标志,在进行加或减运算时,如果操作结果的最高位有进位或借位时,CY由硬件置“1”,否则清“0”;二是在位操作中,作累加位使用位传送、位与位或等位操作,操作位之一固定是进位标志位AC(PSW.6)——辅助进位标志位在进行加减运算中,当低4位向高4位进位或借位时,AC由硬件置“1”,否则AC位被清“0”在BCD码调整中也要用到AC位状态F0(PSW.5)——用户标志位这是一个供用户定义的标志位,需要利用软件方法置位或复位,用以控制程序的转向RS1和RS0(PSW.4,PSW.3)——寄存器组选择位它们被用于选择CPU当前使用的通用寄存器组通用寄存器共有4组,其对应关系如下000组011组102组113组这两个选择位的状态是由软件设置的,被选中的寄存器组即为当前通用寄存器组但当单片机上电或复位后,RS1RS0=00OV(PSW.2)——溢出标志位在带符号数加减运算中,OV=1表示加减运算超出了累加器A所能表示的符号数有效范围(-128~+127),即产生了溢出,因此运算结果是错误的,否则,OV=0表示运算正确,即无溢出产生P(PSW.0)——奇偶标志位表明累加器A中内容的奇偶性如果A中有奇数个“1”,则P置“1”,否则置“0”凡是改变累加器A中内容的指令均会影响P标志位此标志位对串行通信中的数据传输有重要的意义在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性数据指针(DPTR)数据指针为16位寄存器编程时,DPTR既可以按16位寄存器使用,也可以按两个8位寄存器分开使用,即DPHDPTR高位字节,DPLDPTR低位字节DPTR通常在访问外部数据存储器时作地址指针使用由于外部数据存储器的寻址范围为64KB,故把DPTR设计为16位堆栈指针(SP—StackPointer)堆栈是一个特殊的存储区,用来暂存数据和地址,它是按“先进后出”的原则存取数据的堆栈共有两种操作进栈和出栈由于MCS-51单片机的堆栈设在内部RAM中,因此SP是一个8位寄存器系统复位后,SP的内容为07H,从而复位后堆栈实际上是从08H单元开始的但08H~1FH单元分别属于工作寄存器1~3区,如程序要用到这些区,最好把SP值改为1FH或更大的值对专用寄存器的字节寻址问题作如下几点说明121个可字节寻址的专用寄存器是不连续地分散在内部RAM高128单元之中,尽管还余有许多空闲地址,但用户并不能使用2程序计数器PC不占据RAM单元,它在物理上是独立的,因此是不可寻址的寄存器3对专用寄存器只能使用直接寻址方式,书写时既可使用寄存器符号,也可使用寄存器
四、输入输出端口单片机芯片内还有一项主要内容就是并行I/O口MCS-51共有4个8位的并行I/O口,分别记作P
0、P
1、P
2、P3每个口都包含一个锁存器、一个输出驱动器和输入缓冲器实际上,它们已被归入专用寄存器之列,并且具有字节寻址和位寻址功能在访问片外扩展存储器时,低8位地址和数据由P0口分时传送,高8位地址由P2口传送在无片外扩展存储器的系统中,这4个口的每一位均可作为双向的I/O端口使用
五、80C51单片机的引脚功能MCS-51是标准的40引脚双列直插式集成电路芯片,引脚排列请参见图P
0.0~P
0.7P0口8位双向口线P
1.0~P
1.7P1口8位双向口线P
2.0~P
2.7P2口8位双向口线P
3.0~P
3.7P3口8位双向口线ALE地址锁存控制信号在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲使用PSEN外部程序存储器读选通信号在读外部ROM时,PSEN有效(低电平),以实现外部ROM单元的读操作EA访问程序存储控制信号当信号为低电平时,对ROM的读操作限定在外部程序存储器;当信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器RST复位信号当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作XTAL1和XTAL2外接晶体引线端当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号VSS地线VCC+5V电源以上是MCS-51单片机芯片40条引脚的定义及简单功能说明,读者可以对照实训电路找到相应引脚,在电路中查看每个引脚的连接使用P3口线的第二功能P3的8条口线都定义有第二功能
六、时钟电路在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟电路1.振荡周期为单片机提供时钟信号的振荡源的周期2.时钟周期是振荡源信号经二分频后形成的时钟脉冲信号3.机器周期通常将完成一个基本操作所需的时间称为机器周期4.指令周期是指CPU执行一条指令所需要的时间一个指令周期通常含有1~4个机器周期
七、复位电路单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第一个单元取指令实训中已经看出,无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以我们必须弄清楚MCS-51型单片机复位的条件、复位电路和复位后状态第三节单片机开发系统单片机开发系统的组成与功能单片机系统的组成单片机开发系统的功能在线仿真功能调试功能辅助设计功能程序固化功能单片机开发系统的调试硬件调试常见的硬件故障硬件调试方法
2.软件调试单片机开发系统举例单片机开发系统的连接工具软件的安装输入、编辑汇编语言源程序汇编源程序用户程序的装载第二章单片机指令系统第一节指令简介和格式采用助记符表示的汇编语言指令格式如下标号是程序员根据编程需要给指令设定的符号地址,可有可无;标号由1~8个字符组成,第一个字符必须是英文字,不能是数字或其它符号;标号后必须用冒号操作码表示指令的操作种类,如MOV表示数据传送操作,ADD表示加法操作等操作数或操作数地址表示参加运算的数据或数据的有效地址操作数一般有以下几种形式没有操作数项,操作数隐含在操作码中,如RET指令;只有一个操作数,如CPLA指令;有两个操作数,如MOVA#00H指令,操作数之间以逗号相隔;有三个操作数,如CJNEA#00HNEXT指令,操作数之间也以逗号相隔注释是对指令的解释说明,用以提高程序的可读性;注释前必须加分号第二节寻址方式寻找操作数地址的方式称为寻址方式
1.寄存器寻址寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器R0~R
7、累加器A、通用寄存器B、地址寄存器DPTR等例如,指令MOVR1A的操作是把累加器A中的数据传送到寄存器R1中,其操作数存放在累加器A中,所以寻址方式为寄存器寻址如果程序状态寄存器PSW的RS1RS0=01(选中第二组工作寄存器,对应地址为08H~0FH),设累加器A的内容为20H,则执行MOVR1,A指令后,内部RAM09H单元的值就变为20H
2.直接寻址直接寻址是指把存放操作数的内存单元的地址直接写在指令中在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器SFR区例如,指令MOVA,3AH执行的操作是将内部RAM中地址为3AH的单元内容传送到累加器A中,其操作数3AH就是存放数据的单元地址,因此该指令是直接寻址
3.立即数寻址立即数寻址是指将操作数直接写在指令中例如,指令MOVA,#3AH执行的操作是将立即数3AH送到累加器A中,该指令就是立即数寻址
4.寄存器间接寻址 寄存器间接寻址是指将存放操作数的内存单元的地址放在寄存器中,指令中只给出该寄存器执行指令时,首先根据寄存器的内容,找到所需要的操作数地址,再由该地址找到操作数并完成相应操作在MCS-51指令系统中,用于寄存器间接寻址的寄存器有R
0、R1和DPTR,称为寄存器间接寻址寄存器设R0=3AH,内部RAM3AH中的值是65H,则指令MOVA,@R0的执行结果是累加器A的值为65H
5.变址寻址变址寻址是指将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址DPTR或PC是基址寄存器,累加器A是变址寄存器该类寻址方式主要用于查表操作例如,指令MOVCA,@A+DPTR执行的操作是将累加器A和基址寄存器DPTR的内容相加,相加结果作为操作数存放的地址,再将操作数取出来送到累加器A中设累加器A=02H,DPTR=0300H,外部ROM中,0302H单元的内容是55H,则指令MOVCA,@A+DPTR的执行结果是累加器A的内容为55H
6.相对寻址相对寻址是指程序计数器PC的当前内容与指令中的操作数相加,其结果作为跳转指令的转移地址(也称目的地址)该类寻址方式主要用于跳转指令例如,指令SJMP54H执行的操作是将PC当前的内容与54H相加,结果再送回PC中,成为下一条将要执行指令的地址设指令SJMP54H的机器码80H54H存放在2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行
7.位寻址位寻址是指按位进行的寻址操作,而上述介绍的指令都是按字节进行的寻址操作MCS-51单片机中,操作数不仅可以按字节为单位进行操作,也可以按位进行操作当我们把某一位作为操作数时,这个操作数的地址称为位地址位寻址区包括专门安排在内部RAM中的两个区域一是内部RAM的位寻址区,地址范围是20H~2FH,共16个RAM单元,位地址为00H~7FH;二是特殊功能寄存器SFR中有11个寄存器可以位寻址,参见有关章节中位地址定义第三节指令系统MCS-51单片机指令系统包括111条指令,按功能可以划分为以下5类数据传送指令(29条) 算术运算指令(24条)逻辑运算指令(24条)控制转移指令(17条)位操作指令(17条)
二、数据传送类指令数据传送指令是MCS-51单片机汇编语言程序设计中使用最频繁的指令,包括内部RAM、寄存器、外部RAM以及程序存储器之间的数据传送数据传送操作是指把数据从源地址传送到目的地址,源地址内容不变
1.以累加器A为目的操作数的指令MOVA#data;A←#dataMOVARn;n=0~7,A←RnMOVA@Ri;i=01,A←RiMOVAdirect;A←Rndirect为内部RAM或SFR地址
2.以Rn为目的操作数的指令MOVRn,A;Rn←A,n=0~7MOVRn,direct;Rn←directMOVRn,#data;Rn←#data
3.以直接地址为目的操作数的指令MOVdirectA;direct←AMOVdirectRn;direct←Rn,n=0~7MOVdirect@Ri;direct←Ri,i=01MOVdirectdirect;direct←directMOVdirect#data;direct←#data
4.以寄存器间接地址为目的操作数指令MOV@Ri,A;Ri←A,i=01MOV@Ri,direct;Ri←directMOV@Ri,#data;Ri←#data字节交换指令XCHARn;A←→RiXCHAdirect;A←→directXCHA@Ri;A←→Ri半字节交换指令XCHDA@Ri;A0-3←→Ri0-3累加器A与外部数据传输指令MOVXA@DPTR;A←DPTR地址范围64KMOVXA@Ri;A←Ri地址范围0~255MOVX@DPTRA;DPTR←AMOVX@RiA;Ri←A查表指令1)MOVCA@A+DPTR;A←A+DPTR2)MOVCA@A+PC;A←A+pc
三、算术运算指令加法指令(Addtion)ADDARn;A←(A)+(Rn)ADDA@Ri;A←(A)+(Ri)ADDAdirect;A←(A+directADDA#data;A←(A+#data带进位加法指令ADDCARn;A←A+Rn+CyADDCA@Ri;A←A+Ri+CyADDCAdirect;A←(A+direct+CyADDCA#data;A←(A+#data+Cy加1指令INCA;A←A+1INCRi;Ri←(A+1INCdirect;direct←(direct+1INC@Ri;Ri←Ri+1INCDPTR;DPTR←DPTR+1十进制调整指令DAA带借位减法指令(Subtraction)SUBBARn;A←(A-Rn-Cy)SUBBA@Ri;A←(A-Ri-Cy)SUBBAdirect;A←(A-direct-Cy)SUBBA#data;A←(A-#data-Cy)减1指令(Decrease)DECA;A←A-1DECRi;Ri←(A-1DECdirect;direct←(direct-1DEC@Ri;Ri←Ri-1乘法指令(Multiplication)MULAB除法指令(Division)DIVAB
四、逻辑运算及移位类指令简单逻辑操作指令CLRA;A←“0”CPLA;A←ASWAPA;A0~3A4~7左循环指令(RotateAccumulatorLeft)RLA带进位左循环指令(RotateAccumulatorLeftthroughCarryflag)RLCA右循环指令(RotateAccumulatorRight)RRA带进位右循环指令(RotateARightwithC)RRCA逻辑与指令ANLARnANLAdirectANLA#dataANLA@RiANLdirectAANLdirect#data逻辑或指令ORLARnORLAdirectORLA#dataORLA@RiORLdirectAORLdirect#data逻辑异或指令XRLARnXRLAdirectXRLA#dataXRLA@RiXRLdirectAXRLdirect#data
五、控制转移类指令跳转指令短跳指令AJMPaddr11PC←addr11,跳转范围2k长跳指令LJMPaddr16PC←addr16,跳转范围64k间接跳转指令JMP@A+DPTRPC←(A)+(DPTR相对转移指令SJMPrel条件转移指令JZrel;(A)=0,转移JNZrel;(A)≠0,转移JCrel;如C=1转移JNCrel;如C=0转移JBbit,rel;如bit=1转移JNBbit,rel;如bit=0转移JBCbit,rel;如bit=1转移并bit=0比较不相等转移指令CJNEA,#data,rel;A=#data,继续C←0A>#data,转C←0A<#data,转C←1特点只有<时,C←1CJNEA,direct,relCJNERn,#data,relCJNE@Ri,#data,rel减1不为0转移指令DJNZRn,rel;DJNZdirect,rel例延时子程序delay MOVR7#03Hdelay0MOVR6#19Hdelay1DJNZR6delay1DJNZR7delay0RET调用子程序指令短调用指令ACALLaddr11长调用指令LCALLaddr16子程序返回指令RET中断返回指令RETI空操作指令NOP
六、位操作类指令数据位传送指令MOVCbit;bit可直接寻址位C←bitMOVbit,C;C进位位bit←C位变量修改指令CLRC;将C=0CLRbitCPLC;将C求反再存入CCPLbit;将bit求反再存入bitSETBC;将C=1SETBbit;bit←1位变量逻辑指令ANLCbitANLCbitORLCbitORLCbit第三章汇编语言程序设计第一节汇编语言伪指令
1.定位伪指令ORG
2.定义字节数据伪指令DB
3.定义字数据伪指令DW
4.符号定义伪指令EQU
5.数据赋值伪指令DATA
6.汇编结束伪指令END第二节汇编语言程序设计过程
1.分析任务
2.确定算法
3.画程序流程图
4.分配资源
5.编写代码
6.程序修改与调试
一、顺序结构程序设计
二、分支程序设计
三、循环程序设计
四、子程序设计(各种例题见书或课件)第三节应用程序举例从实用角度,分类给出一些在单片机应用系统软件设计中经常用到的汇编语言子程序实例
1.代码转换程序
2.算数运算子程序
3.查找、排序子程序第四章定时与中断系统第一节中断概述
一、中断的概念中断是通过硬件来改变CPU的运行方向的计算机在执行程序的过程中,当出现CPU以外的某种情况时,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序这种程序在执行过程中由于外界的原因而被中间打断的情况称为“中断”与中断有关的寄存器有4个,分别为中断源寄存器TCON和SCON、中断允许控制寄存器IE和中断优先级控制寄存器IP;中断源有5个,分别为外部中断0请求、外部中断1请求、定时器0溢出中断请求TF
0、定时器1溢出中断请求TF1和串行中断请求RI或TI5个中断源的排列顺序由中断优先级控制寄存器IP和顺序查询逻辑电路共同决定,5个中断源分别对应5个固定的中断入口地址第二节单片机的中断系统单片机的中断系统
1.中断源和中断标志中断源1外部中断0请求,由P
3.2脚输入通过IT0脚(TCON.0)来决定是低电平有效还是下跳变有效一旦输入信号有效,就向CPU申请中断,并建立IE0标志2外部中断1请求,由P
3.3脚输入通过IT1脚TCON.2)来决定是低电平有效还是下跳变有效一旦输入信号有效,就向CPU申请中断,并建立IE1标志3 TF0定时器T0溢出中断请求当定时器0产生溢出时,定时器0中断请求标志位(TCON.5)置位(由硬件自动执行),请求中断处理4 TF1定时器1溢出中断请求当定时器1产生溢出时,定时器1中断请求标志位(TCON.7)置位(由硬件自动执行),请求中断处理5 RI或TI串行中断请求当接收或发送完一串行帧时,内部串行口中断请求标志位RI(SCON.0)或TI(SCON.1)置位(由硬件自动执行),请求中断中断标志 TCON寄存器中的中断标志TCON为定时器0和定时器1的控制寄存器,同时也锁存定时器0和定时器1的溢出中断标志及外部中断和的中断标志等与中断有关位如下1TCON.7TF1定时器1的溢出中断标志T1被启动计数后,从初值做加1计数,计满溢出后由硬件置位TF1,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清0也可由软件查询该标志,并由软件清02 TCON.5TF0定时器0溢出中断标志其操作功能与TF1相同3 TCON.3IE1中断标志IE1=1,外部中断1向CPU申请中断4 TCON.2IT1中断触发方式控制位当IT1=0时,外部中断1控制为电平触发方式5 TCON.1IE0中断标志其操作功能与IE1相同6 TCON.0IT0中断触发方式控制位其操作功能与IT1相同 SCON寄存器中的中断标志SCON是串行口控制寄存器,其低两位TI和RI锁存串行口的发送中断标志和接收中断标志1 SCON.1TI串行发送中断标志CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧,硬件将使TI置位但CPU响应中断时并不清除TI,必须由软件清除
2.中断控制IE寄存器中断的开放和禁止标志1 IE.7EA总中断允许控制位EA=1,开放所有中断,各中断源的允许和禁止可通过相应的中断允许位单独加以控制;EA=0,禁止所有中断2IE.4ES串行口中断允许位ES=1,允许串行口中断;ES=0,禁止串行口中断3IE.3ET1定时器1中断允许位ET1=1,允许定时器1中断;ET1=0,禁止定时器1中断4IE.2EX1外部中断1()中断允许位EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断5 IE.1ET0定时器0中断允许位ET0=1,允许定时器0中断;ET0=0,禁止定时器0中断6 IE.0EX0:外部中断0()中断允许位EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断8051单片机系统复位后,IE中各中断允许位均被清0,即禁止所有中断IP寄存器中断优先级标志8051单片机有两个中断优先级,每个中断源都可以通过编程确定为高优先级中断或低
(1)IP.4PS串行口中断优先控制位PS=1,设定串行口为高优先级中断;PS=0,设定串行口为低优先级中断
(2)IP.3PT1定时器T1中断优先控制位PT1=1,设定定时器T1中断为高优先级中断;PT1=0,设定定时器T1中断为低优先级中断
(3)IP.2PX1外部中断1中断优先控制位PX1=1,设定外部中断1为高优先级中断;PX1=0,设定外部中断1为低优先级中断
(4)IP.1PT0定时器T0中断优先控制位PT0=1,设定定时器T0中断为高优先级中断;PT0=0,设定定时器T0中断为低优先级中断
(5)IP.0PX0外部中断0中断优先控制位PX0=1,设定外部中断0为高优先级中断;PX0=0,设定外部中断0为低优先级中断当系统复位后,IP低5位全部清0,所有中断源均设定为低优先级中断如果几个同一优先级的中断源同时向CPU申请中断,CPU通过内部硬件查询逻辑,按自然优先级顺序确定先响应哪个中断请求自然优先级由硬件形成,排列如下中断源同级自然优先级外部中断0最高级定时器T0中断外部中断1定时器T1中断串行口中断最低级中断处理过程中断处理过程可分为中断响应、中断处理和中断返回三个阶段中断响应中断响应是CPU对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序的入口地址(通常称矢量地址)中断响应过程中断响应过程包括保护断点和将程序转向中断服务程序的入口地址首先,中断系统通过硬件自动生成长调用指令(LACLL),该指令将自动把断点地址压入堆栈保护(不保护累加器A、状态寄存器PSW和其它寄存器的内容),然后,将对应的中断入口地址装入程序计数器PC(由硬件自动执行),使程序转向该中断入口地址,执行中断服务程序MCS-51系列单片机各中断源的入口地址由硬件事先设定,分配如下中断源入口地址外部中断00003H定时器T0中断000BH外部中断10013H定时器T1中断001BH串行口中断0023H使用时,通常在这些中断入口地址处存放一条绝对跳转指令,使程序跳转到用户安排的中断服务程序的起始地址上去中断返回中断返回是指中断服务完后,计算机返回原来断开的位置(即断点),继续执行原来的程序中断返回由中断返回指令RETI来实现该指令的功能是把断点地址从堆栈中弹出,送回到程序计数器PC,此外,还通知中断系统已完成中断处理,并同时清除优先级状态触发器特别要注意不能用“RET”指令代替“RETI”指令中断请求的撤除CPU响应中断请求后即进入中断服务程序,在中断返回前,应撤除该中断请求,否则,会重复引起中断而导致错误MCS-51各中断源中断请求撤消的方法各不相同,分别为1)定时器中断请求的撤除对于定时器0或1溢出中断,CPU在响应中断后即由硬件自动清除其中断标志位TF0或TF1,无需采取其它措施2)串行口中断请求的撤除对于串行口中断,CPU在响应中断后,硬件不能自动清除中断请求标志位TI、RI,必须在中断服务程序中用软件将其清除3)外部中断请求的撤除外部中断可分为边沿触发型和电平触发型对于边沿触发的外部中断0或1,CPU在响应中断后由硬件自动清除其中断标志位IE0或IE1,无需采取其它措施中断应用举例定时器/计数器
一、定时器/计数器结构实质是计数器,脉冲每一次下降沿,计数寄存器数值将加1计数的脉冲如果来源于单片机内部的晶振由于其周期极为准确,这时称为定时器计数的脉冲如果来源于单片机外部的引脚,由于其周期一般不准确,这时称为计数器定时/计数器方式寄存器TMOD1 M1和M0方式选择位2c/T功能选择位时,设置为定时器工作方式;时,设置为计数器工作方式3GATE门控位当GATE=0时,软件控制位TR0或TR1置1即可启动定时器;当GATE=1时,软件控制位TR0或TR1须置1,同时还须(P
3.2)或(P
3.3)为高电平方可启动定时器,即允许外中断、启动定时器定时器/计数器控制寄存器TCON1TCON.7TF1定时器1溢出标志位当定时器1计满数产生溢出时,由硬件自动置TF1=1在中断允许时,向CPU发出定时器1的中断请求,进入中断服务程序后,由硬件自动清0在中断屏蔽时,TF1可作查询测试用,此时只能由软件清02TCON.6TR1定时器1运行控制位由软件置1或清0来启动或关闭定时器1当GATE=1,且为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1即可启动定时器13TCON.5TF0定时器0溢出标志位其功能及操作情况同TF14TCON.4TR0定时器0运行控制位其功能及操作情况同TR15TCON.3IE1外部中断1()请求标志位6TCON.2IT1外部中断1触发方式选择位7TCON.1IE0外部中断0()请求标志位8TCON.0IT0外部中断0触发方式选择位
二、定时/计数器的工作方式1.方式0方式0构成一个13位定时/计数器图是定时器0在方式0时的逻辑电路结构,定时器1的结构和操作与定时器0完全相同2.方式1定时器工作于方式1时由图可知,方式1构成一个16位定时/计数器,其结构与操作几乎完全与方式0相同,惟一差别是二者计数位数不同3.方式2定时/计数器工作于方式2时,由图可知,方式2中,16位加法计数器的TH0和TL0具有不同功能,其中,TL0是8位计数器,TH0是重置初值的8位缓冲器4.方式3定时/计数器工作于方式3时,其逻辑结构图如图所示
三、编程和使用1.计数器初值的计算把计数器计满为零所需要的计数值设定为C,计数初值设定为TC,由此可得到公式TC=M-C式中,M为计数器模值,该值和计数器工作方式有关在方式0时M为213;在方式1时M为216;在方式2和方式3时M为282.定时器初值的计算在定时器模式下,计数器由单片机主脉冲经12分频后计数因此,定时器定时时间T的公式T=(M-TC)T计数,上式也可写成TC=M-T/T计数式中,M为模值,和定时器的工作方式有关;T计数是单片机振荡周期TCLK的12倍;TC为定时器的定时初值应用程序举例(略)第五章单片机的系统扩展第一节系统扩展概述
一、单片机系统扩展的结构对于没有内部ROM的单片机或者当程序较长、片内ROM容量不够时,用户必须在单片机外部扩展程序存储器MCS-51单片机片外有16条地址线,即P0口和P2口,因此最大寻址范围为64KB(0000H~FFFFH)系统总线及总线构造MCS-51系列单片机片外引脚可以构成如图所示的三总线结构地址总线(AB)数据总线(DB)控制总线(CB)所有外部芯片都通过这三组总线进行扩展第二节存储器的扩展
一、程序存储器的扩展扩展程序存储器常用的芯片是EPROM(ErasableProgrammableReadOnlyMemory)型(紫外线可擦除型),如2716(2K×8)、2732(4K×8)、2764(8K×8)、27128(16K×8)、27256(32K×8)、27512(64K×8)等另外,还有+5V电可擦除EEPROM,如2816(2K×8)、2864(8K×8)等等紫外线擦除电可编程只读存储器EPROM是国内用得较多的程序存储器EPROM芯片上有一个玻璃窗口,在紫外线照射下,存储器中的各位信息均变1,即处于擦除状态擦除干净的EPROM可以通过编程器将应用程序固化到芯片中如果程序总量不超过4KB,一般选用具有内部ROM的单片机8051内部ROM只能由厂家将程序一次性固化,不适合小批量用户和程序调试时使用,因此选用
8751、8951的用户较多如果程序超过4KB,用户一般不会选用
8751、8951,而是直接选用8031,利用外部扩展存储器来存放程序实例在8031单片机上扩展4KBEPROM程序存储器选择芯片本例要求选用8031单片机,内部无ROM区,无论程序长短都必须扩展程序存储器(目前较少这样使用,但扩展方法比较典型、实用)在选择程序存储器芯片时,首先必须满足程序容量,其次在价格合理情况下尽量选用容量大的芯片这样做的话,使用的芯片少,从而接线简单,芯片存储容量大,程序调整余量也大如估计程序总长3KB左右,最好是扩展一片4KB的EPROM2732,而不是选用2片2716(2KB)在单片机应用系统硬件设计中应注意,尽量减少芯片使用个数,使得电路结构简单,提高可靠性,这也是8951比8031使用更加广泛的原因之一硬件电路图8031单片机扩展一片2732程序存储器电路如图所示芯片说明
①74LS37374LS373是带三态缓冲输出的8D锁存器,由于片机的三总线结构中,数据线与地址线的低8位共用P0口,因此必须用地址锁存器将地址信号和数据信号区分开74LS373的锁存控制端G直接与单片机的锁存控制信号ALE相连,在ALE的下降沿锁存低8位地址
②EPROM2732EPROM2732的容量为4K×8位4K表示有4×1024(22×210=212)个存储单元,8位表示每个单元存储数据的宽度是8位前者确定了地址线的位数是12位(A0~A11),后者确定了数据线的位数是8位(O0~O7)目前,除了串行存储器之外,一般情况下,我们使用的都是8位数据存储器2732采用单一+5V供电,最大静态工作电流为100mA,维持电流为35mA,读出时间最大为250ns2732的封装形式为DIP24,管脚如图所示其中,A0~A11为地址线;O0~O7为数据线;为片选线;OE/VPP为输出允许/编程高压除了12条地址线和8条数据线之外,CE为片选线,低电平有效也就是说,只有当CE为低电平时,2732才被选中,否则,2732不工作OE/VPP为双功能管脚,当2732用作程序存储器时,其功能是允许读数据出来;当对EPROM编程(也称为固化程序)时,该管脚用于高电压输入,不同生产厂家的芯片编程电压也有所不同当我们把它作为程序存储器使用时,不必关心其编程电压连线说明
①地址线单片机扩展片外存储器时,地址是由P0和P2口提供的图
6.2中,2732的12条地址线(A0~A11)中,低8位A0~A7通过锁存器74LS373与P0口连接,高4位A8~A11直接与P2口的P
2.0~P
2.3连接,P2口本身有锁存功能注意,锁存器的锁存使能端G必须和单片机的ALE管脚相连
②数据线2732的8位数据线直接与单片机的P0口相连因此,P0口是一个分时复用的地址/数据线
③控制线CPU执行2732中存放的程序指令时,取指阶段就是对2732进行读操作注意,CPU对EPROM只能进行读操作,不能进行写操作CPU对2732的读操作控制都是通过控制线实现的2732控制线的连接有以下几条CE直接接地由于系统中只扩展了一个程序存储器芯片,因此,2732的片选端直接接地,表示2732一直被选中若同时扩展多片,需通过译码器来完成片选工作OE接8031的读选通信号端在访问片外程序存储器时,只要端出现负脉冲,即可从2732中读出程序扩展程序存储器地址范围的确定单片机扩展存储器的关键是搞清楚扩展芯片的地址范围,8031最大可以扩展64KB(0000H~FFFFH)决定存储器芯片地址范围的因素有两个一个是片选端的连接方法,一个是存储器芯片的地址线与单片机地址线的连接在确定地址范围时,必须保证片选端为低电平本例中,2732的地址范围为0000H~0FFFH EPROM的使用存储器扩展电路是单片机应用系统的功能扩展部分,只有当应用系统的软件设计完成了,才能把程序通过特定的编程工具(一般称为编程器或EPROM固化器)固化到2732中,然后再将2732插到用户板的插座上(扩展程序存储器一定要焊插座)
二、数据存储器的扩展RAM是用来存放各种数据的,MCS-51系列8位单片机内部有128BRAM存储器,CPU对内部RAM具有丰富的操作指令但是,当单片机用于实时数据采集或处理大批量数据时,仅靠片内提供的RAM是远远不够的此时,我们可以利用单片机的扩展功能,扩展外部数据存储器常用的外部数据存储器有静态RAM(StaticRandomAccessMemory—SRAM)和动态RAM(DynamicRandomAccessMemory—DRAM)两种前者读/写速度高,一般都是8位宽度,易于扩展,且大多数与相同容量的EPROM引脚兼容,有利于印刷板电路设计,使用方便;缺点是集成度低,成本高,功耗大后者集成度高,成本低,功耗相对较低;缺点是需要增加一个刷新电路,附加另外的成本MCS-51单片机扩展片外数据存储器的地址线也是由P0口和P2口提供的,因此最大寻址范围为64KB(0000H~FFFFH)一般情况下,SRAM用于仅需要小于64KB数据存储器的小系统,DRAM经常用于需要大于64KB的大系统实例在一单片机应用系统中扩展2KB静态RAM芯片选择单片机扩展数据存储器常用的静态RAM芯片有6116(2K×8位)、6264(8K×8位)、62256(32K×8位)等根据题目容量的要求,我们选用SRAM61166116的管脚与EPROM2716管脚兼容,管脚如图所示硬件电路单片机与6116的硬件连接如图所示连线说明6116与单片机的连线如下地址线A0~A10连接单片机地址总线的A0~A10,即P
0.0~P
0.
7、P
2.
0、P
2.
1、P
2.2共11根数据线I/O0~I/O7连接单片机的数据线,即P
0.0~P
0.7控制线CE片选端连接单片机的P
2.7,即单片机地址总线的最高位A15;OE读允许线连接单片机的读数据存储器控制线RD;写允许线WE连接单片机的写数据存储器控制线WR片外RAM地址范围的确定及使用按照上图的连线,片选端直接与某一地址线P
2.7相连,这种扩展方法称为线选法显然,只有P
2.7=0,才能够选中该片6116,故其地址范围确定如下如果与6116无关的管脚取0,那么,6116的地址范围是0000H~07FFH;如果与6116无关的管脚取1,那么,6116的地址范围是7800H~7FFFH单片机对RAM的读写除了可以如下指令MOVX@DPTRA;64KB内写入数据MOVXA@DPTR;64KB内读取数据外,还可以使用以下对低256B的读写指令MOVX@RiA;低256B内写入数据MOVXA,@Ri;低256B内读取数据片外RAM地址范围的确定及使用按照上图的连线,片选端直接与某一地址线P
2.7相连,这种扩展方法称为线选法显然,只有P
2.7=0,才能够选中该片6116,故其地址范围确定如下如果与6116无关的管脚取0,那么,6116的地址范围是0000H~07FFH;如果与6116无关的管脚取1,那么,6116的地址范围是7800H~7FFFH单片机对RAM的读写除了可以如下指令MOVX@DPTRA;64KB内写入数据MOVXA@DPTR;64KB内读取数据外,还可以使用以下对低256B的读写指令MOVX@RiA;低256B内写入数据MOVXA,@Ri;低256B内读取数据综合扩展综合扩展实例第三节I/O口扩展概述51系列单片机内部有4个双向的并行I/O端口P0~P3,共占32根引脚P0口的每一位可以驱动8个TTL负载,P1~P3口的负载能力为三个TTL负载有关4个端口的结构及详细说明,在前面的有关章节中已作过介绍,这里不再赘述在无片外存储器扩展的系统中,这4个端口都可以作为准双向通用I/O口使用我们知道,在具有片外扩展存储器的系统中,P0口分时地作为低8位地址线和数据线,P2口作为高8位地址线这时,P0口和部分或全部的P2口无法再作通用I/O口P3口具有第二功能,在应用系统中也常被使用因此在大多数的应用系统中,真正能够提供给用户使用的只有P1和部分P
2、P3口综上所述,MCS-51单片机的I/O端口通常需要扩充,以便和更多的外设(例如显示器、键盘)进行联系在51单片机中扩展的I/O口采用与片外数据存储器相同的寻址方法,所有扩展的I/O口,以及通过扩展I/O口连接的外设都与片外RAM统一编址,因此,对片外I/O口的输入/输出指令就是访问片外RAM的指令第四节8255可编程通用并行接口芯片所谓可编程的接口芯片是指其功能可由微处理机的指令来加以改变的接口芯片,利用编程的方法,可以使一个接口芯片执行不同的接口功能目前,各生产厂家已提供了很多系列的可编程接口,MCS-51单片机常用的两种接口芯片是8255以及81558255和MCS-51相连,可以为外设提供三个8位的I/O端口A口、B口和C口,三个端口的功能完全由编程来决定
一、 8255的内部结构和引脚排列下图7为8255的内部结构和引脚图1A口、B口和C口A口、B口和C口均为8位I/O数据口,但结构上略有差别A口由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲/锁存器组成B口由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲器组成三个端口都可以和外设相连,分别传送外设的输入/输出数据或控制信息2A、B组控制电路这是两组根据CPU的命令字控制8255工作方式的电路A组控制A口及C口的高4位,B组控制B口及C口的低4位3数据缓冲器这是一个双向三态8位的驱动口,用于和单片机的数据总线相连,传送数据或控制信息4读/写控制逻辑这部分电路接收MCS-51送来的读/写命令和选口地址,用于控制对8255的读/写5数据线8条D0~D7为数据总线,用于传送CPU和8255之间的数据、命令和状态字6控制线和寻址线6条RESET复位信号,输入高电平有效一般和单片机的复位相连,复位后,8255所有内部寄存器清0,所有口都为输入方式WR和RD读/写信号线,输入,低电平有效当为0时(必为1),所选的8255处于读状态,8255送出信息到CPU反之亦然6CS片选线,输入,低电平有效7A
0、A1地址输入线当=0,芯片被选中时,这两位的4种组合
00、
01、
10、11分别用于选择A、B、C口和控制寄存器8I/O口线24条PA0~PA
7、PB0~PB
7、PC0~PC7为24条双向三态I/O总线,分别与A、B、C口相对应,用于8255和外设之间传送数据9电源线2条VCC为+5V,GND为地线
二、8255的工作方式8255有三种工作方式方式
0、方式
1、方式2方式的选择是通过上述写控制字的方法来完成的
三、8255的控制字8255的三个端口具体工作在什么方式下,是通过CPU对控制口的写入控制字来决定的8255有两个控制字方式选择控制字和C口置/复位控制字用户通过程序把这两个控制字送到8255的控制寄存器(A0A1=11),这两个控制字以D7来作为标志1方式选择控制字方式选择控制字的格式和定义如下图所示2 C口置/复位控制字C口置/复位控制字的格式和定义如下图所示C口具有位操作功能,把一个置/复位控制字送入8255的控制寄存器,就能将C口的某一位置1或清0而不影响其它位的状态8155可编程通用并行接口芯片另一种可编程的接口芯片8155,Intel公司研制的8155不仅具有两个8位的I/O端口A口、B口和一个6位的I/O端口C口,而且还可以提供256 B的静态RAM存储器和一个14位的定时/计数器8155和单片机的接口非常简单,目前被广泛应用 8155的结构和引脚8155有40个引脚,采用双列直插封装,其引脚图和组成框图如下图所示我们对8155的引脚分类说明如下1地址/数据线AD0~AD7(8条)是低8位地址线和数据线的共用输入总线,常和51单片机的P0口相连,用于分时传送地址数据信息,当ALE=1时,传送的是地址2I/O口总线(22条)PA0~PA
7、PB0~PB7分别为A、B口线,用于和外设之间传递数据;PC0~PC5为C端口线,既可与外设传送数据,也可以作为A、B口的控制联络线3控制总线(8条)RESET复位线,通常与单片机的复位端相连,复位后,8155的3个端口都为输入方式WRRD读/写线,控制8155的读、写操作ALE地址锁存线,高电平有效它常和单片机的ALE端相连,在ALE的下降沿将单片机P0口输出的低8位地址信息锁存到8155内部的地址锁存器中因此,单片机的P0口和8155连接时,无需外接锁存器CS片选线,低电平有效IO/M RAM或I/O口的选择线当=0时,选中8155的256BRAM;当=1时,选中8155片内3个I/O端口以及命令/状态寄存器和定时/计数器TIMERIN、TIMEROUT定时/计数器的脉冲输入、输出线TIMERIN是脉冲输入线,其输入脉冲对8155内部的14位定时/计数器减1;为输出线,当计数器计满回0时,8155从该线输出脉冲或方波,波形形状由计数器的工作方式决定作片外RAM使用当CE=0,IO/M=0时,8155只能做片外RAM使用,共256B其寻址范围由以及AD0~AD7的接法决定,这和前面讲到的片外RAM扩展时讨论的完全相同当系统同时扩展片外RAM芯片时,要注意二者的统一编址对这256BRAM的操作使用片外RAM的读/写指令“MOVX”作扩展I/O口使用当CE=0,IO/M=1时,此时可以对8155片内3个I/O端口以及命令/状态寄存器和定时/计数器进行操作与I/O端口和计数器使用有关的内部寄存器共有6个,需要三位地址来区分1命令/状态寄存器和接口芯片8255一样,芯片8155I/O口的工作方式的确定也是通过对8155的命令寄存器写入控制字来实现的8155控制字的格式如下图所示命令寄存器只能写入不能读出,也就是说,控制字只能通过指令MOVX@DPTRA或MOVX@RiA写入命令寄存器状态寄存器中存放有状态字,状态字反映了8155的工作情况,状态字的各位定义如下图所示状态寄存器和命令寄存器是同一地址,状态寄存器只能读出不能写入,也就是说,状态字只能通过指令MOVXA,@DPTR或MOVXA,@Ri来读出,以此来了解8155的工作状态2计数器高、低8位寄存器关于计数器高、低8位寄存器的使用,我们将在后面讲到定时器使用时再作介绍
4. I/O口的工作方式当使用8155的三个I/O端口时,它们可以工作于不同的方式,工作方式的选择取决于写入的控制字,如图
6.21所示其中,A、B口可以工作于基本I/O方式或选通I/O方式,C口可工作于基本I/O方式,也可以作为A、B选通方式时的控制联络线
5.定时/计数器使用8155的可编程定时/计数器是一个14位的减法计数器,在TIMERIN端输入计数脉冲,计满时由TIMEROUT输出脉冲或方波,输出方式由定时器高8位寄存器中的M
2、M1两位来决定当TIMERIN接外脉冲时为计数方式,接系统时钟时为定时方式,实际使用时一定要注意芯片允许的最高计数频率!定时/计数器的初始值和输出方式由高、低8位寄存器的内容决定,初始值14位,其余两位定义输出方式 MCS-51单片机和8155的接口MCS-51和8155的接口非常简单,因为8155内部有一个8位地址锁存器,故无需外接锁存器在二者的连接中,8155的地址译码即片选端可以采用线选法、全译码等方法,这和8255类似在整个单片机应用系统中要考虑与片外RAM及其它接口芯片的统一编址此时,8155内部RAM的地址范围为0000H~00FFH,8155各端口的地址(设无关位为0,这些地址都不是惟一的)为命令/状态口0400HA口0401HB口0402HC口0403H定时器低字节 0404H定时器高字节 0405H扩展实例简单的I/O口扩展通常是采用TTL或CMOS电路锁存器、三态门等作为扩展芯片,通过P0口来实现扩展的一种方案它具有电路简单、成本低、配置灵活的特点下图为采用74LS244作为扩展输入、74LS273作为扩展输出的简单I/O口扩展芯片及连线说明图中电路中采用的芯片为TTL电路74LS
244、74LS273其中,74LS244为8缓冲线驱动器三态输出,、为低电平有效的使能端当二者之一为高电平时,输出为三态74LS273为8D触发器,为低电平有效的清除端当=0时,输出全为0且与其它输入端无关;CP端是时钟信号,当CP由低电平向高电平跳变时刻,D端输入数据传送到Q输出端P0口作为双向8位数据线,既能够从74LS244输入数据,又能够从74LS273输出数据输入控制信号由P
2.0和相“或”后形成当二者都为0时,74LS244的控制端有效,选通74LS244,外部的信息输入到P0数据总线上当与74LS244相连的按键都没有按下时,输入全为1,若按下某键,则所在线输入为0输出控制信号由P
2.0和相“或”后形成当二者都为0后,74LS273的控制端有效,选通74LS273,P0上的数据锁存到74LS273的输出端,控制发光二极管LED,当某线输出为0时,相应的LED发光 I/O口地址确定因为74LS244和74LS273都是在P
2.0为0时被选通的,所以二者的口地址都为FEFFH(这个地址不是惟一的,只要保证P
2.0=0,其它地址位无关)但是由于分别由和控制,因而两个信号不可能同时为0(执行输入指令,如MOVXA,@DPTR或MOVXA,@Ri时,有效;执行输出指令,如MOVX@DPTR,A或MOVX@Ri,A时,有效),所以逻辑上二者不会发生冲突特殊功能寄存器通用RAM区位寻址区00H1FH20H2FH30H7FH80HFFH80H88H90H98HA0HA8HB0HB8HD0HE0HF0H特殊功能寄存器中位寻址外部ROM内部ROMEA=1外部ROMEA=00000H0000H0FFFH0FFFH1000HFFFFH外部RAMI/O口地址0000HFFFFH内部数据存储器(a)外部数据存储器(b)程序存储器(c)工作寄存器区PSW位地址D7HD6HD5HD4HD3HD2HD1HD0H字节地址CYACF0RS1RS0OVF1PXTAL2XTAL1MCS-51C1C2CYSXTAL2XTAL1MCS-51+5VVSSTTL外部时钟源P1P2S1P2振荡周期时钟周期机器周期机器周期指令周期XTAL2OSCS2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2断点主程序中断服务程序中断请求对外设进行处理继续执行返回断点。