资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单片机内资源少,容量小,在进行较复杂过程的控制时,它自身的功能远远不能满足需要。为此,应扩展其功能。,MCS-51,单片机的扩展性能较强,根据需要,,可扩展:,ROM,、,RAM,;,定时,/,计数器;,并行,I/O,口、串行口;,中断系统扩展等。,第,1,页,/,共,69,页,5-1 MCS-51,单片机最小系统,一、,8051/8751,硬件最小系统,对于片内有,ROM,型单片机,其自身可以构成最小系统,第,2,页,/,共,69,页,该系统的资源如下:,4KB ROM,,,256B RAM,;,五源中断系统;,两个十六位加一定时,/,计数器;,一个全双工串行,UART,;,四个并行,I/O,口。,二、,8031,硬件最小系统,8031,单片机片内无,ROM,,若要正常工作,必需外配,ROM,。外接,ROM,后,,P3,口、,P2,口、,P0,口均被占用只剩下,P1,口作,I/O,口用,其它功能不变。,第,3,页,/,共,69,页,图中:,/E,三态门控制端,G,低电平锁存,第,4,页,/,共,69,页,三总线的概念,:,地址总线,AB,,,P0,口提供(,A7 A0,);,P2,口提供(,A15 A8,),共,16,位。,数据总线,DB,,,P0,口提供(,D7 D0,),共,8,位。,控制总线,CB,,,ALE,、,等。,第,5,页,/,共,69,页,5-2,存储器的扩展,一、三总线的连接,1,、数据线的连接,P0,口的八位线承担此任,此时不用外接上拉电阻。,2,、地址线的连接,P0,口承担地址低八位线,,A0 A7,;,P2,口承担地址高八位线。,A8 A15,。,注意:,P0,口线地址,/,数据分时复用,需用地址锁存器,74LS373,锁存地址。,第,6,页,/,共,69,页,A10 A8,A7 A0,D7 D0,CB,第,7,页,/,共,69,页,3,、控制线的连接,对存储器来讲控制线无非是:芯片的,选通,控制、,读写,控制。,单片机与外部器件数据交换要遵循两个重要原则,:,一是,地址唯一性,一个单元一个地址。,二是,同一时刻,,CPU,只能访问一个地址,即只能与一,个单元交换数据。,不交换时,外部器件处于锁闭状态,对总线呈浮空状态。,第,8,页,/,共,69,页,读,/,写,:,CPU,向外部设备发出的读,/,写控制命令。,EPROM,:,/OE /PSEN,SRAM,:,/WE /WR,/OE /RD,选通,:,CPU,与器件交换数据或信息,需先发出选通信号,/CE,或,/CS,,以便选中芯片。,第,9,页,/,共,69,页,二、存储器地址编码,SRAM6116,:“,16”2K8b=2KB 2,1,2,10,=2,11,即,6116,有,11,根地址线。,地址空间:,A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0,最低地址:,0 0 0 0 0 0 0 0,0 0 0 0000H,最高地址:,1 1 1 1 1 1 1 1 1 1 07FFH,MCS-51,单片机寻址范围:,64KB 2,6,2,10,=2,16,即,16,位地址线,地址空间:,A15A14A13A12A11A10A9A8A7A0,单片机,A10A9A8A7A0 6116,2,5,=32,2KB,第,10,页,/,共,69,页,上式中:“,”,表示,0,或,1,。,即单片机地址空间中包含有,32,个,2KB,。某片,6116,占据的是哪,2KB,不能确定,地址浮动。,只有限定,A15A11,的取值才能确定,6116,在系统中的地址范围。如,,P2.6=0,,选中,6116,的,/CS,线。设,P2.7 P2.5 P2.4 P2.3,假定全为,1,则,:6116,地址范围是,B800H BFFFH,。,同理,,P27 P25 P24 P23,假定全为,0,则,:6116,地址范围是,0000H 07FFH,;,再设,P27,选中,6116,(设,P26 P25 P24 P23,全为,1,),则:地址范围是,7800H 7FFFH,第,11,页,/,共,69,页,2,3,=8,8KB,可见:存储器芯片在系统中地址分布由两个因素决定:,一是,芯片本身的地址线(与容量有关),二是,芯片选通信号的获得方式。,扩展存储器时,总是让单片机低位地址与存储器芯片地址线相接;而让单片机剩余的高位地址线(在,P2,口)常作为片选信号线。,这种方法对,SRAM,、,EPROM,、扩展,I/O,芯片、外设同样适用。,P25=0,时,选中,2764,;“,64”8K8b=2,3,2,10,=2,13,A15 A14 A13 A12 A11 A0,第,12,页,/,共,69,页,若取,P27 P26,均为,1,;,则,2764,在本系统内地址范围:,C000H DFFFH,可以。此时,6116,:,D800H DFFFH,2764,:,C000H DB00H,若,6116,与,2764,都用,A13,(,P25,)选中可否,第,13,页,/,共,69,页,6116,与,2764,在,0800H DFFFH,范围内地址重叠,这是不是违反交换原则呢?,不会!因为,,6116,是,SRAM,,,2764,是,EPROM,。除地址和选通信号外,还有读,/,写控制信号起作用。,RAM /WE /WR,/OE /RD,ROM /OE /PSEN,可用来区分,二器件,第,14,页,/,共,69,页,小结:,1,),CPU,与外设数据交换的原则是什么?,2,)决定存储器芯片在系统中地址范围的两个因素是,什么?,布置作业:,P220 5.2,第,15,页,/,共,69,页,5-3,并口的扩展方法,并口扩展常用三种方法:,1,、利用,TTL,、,CMOS,集成电路来扩展,2,、利用单片机串口扩展,3,、利用可编程并行接口芯片来扩展,第,16,页,/,共,69,页,一、利用,TTL,、,CMOS,集成电路来扩展,1,、用锁存器扩展简单的,8,位输出口,8031,P2.7,P0.7,P0.6,P0.5,P0.4,P0.3,P0.2,P0.1,P0.0,/WR,74LS377,/E,D7 Q7,D6 Q6,D5 Q5,D4 Q4,D3 Q3,D2 Q2,D1 Q1,D0 Q0,/CP,输出设备,D7,D6,D5,D4,D3,D2,D1,D0,第,17,页,/,共,69,页,2,、用锁存器扩展简单的八位输入口,外设与单片机在传输数据速度上存在着一定的差异,为了 保证数据能被单片机正确地接收,应采取以下电路:,输入设备,STB,IN7,IN6,IN5,IN4,IN3,IN2,IN1,IN0,8031,P2.6,P0.7,P0.6,P0.5,P0.4,P0.3,P0.2,P0.1,P0.0,74LS373,G,Q7 D7,Q6 D6,Q5 D5,Q4 D4,Q3 D3,Q2 D2,Q1 D1,Q0 D0,例、设将上图,74LS373,中数据送入,8031,片内数据存储器中首地址为,50H,的数据区。写出相应中断系统初始化及中断服务程序,第,18,页,/,共,69,页,例、设将上图,74LS373,中数据送入,8031,片内数据存储器中首地,址为,50H,的数据区。写出相应中断系统初始化及中断服务程序。,中断系统初始化程序:,PINT,:,SETB IT0,;,/INT0,选为下降沿触发方式,SETB EA,;,CPU,开中断,MOV R0,,,#50H,;置数据区首址,SETB EX0,;,/INT0,中断允许,第,19,页,/,共,69,页,中断服务程序:,ORG 0003H,PINT0,:,AJMP INT0,ORG 1000H,INT0,:,MOV DPTR,,,#0BFFFH,;指向,74LS373,扩展输入口,MOVX A,,,DPTR ;8031,读入数据,MOV R0,A ;,输入数据送数据区,INC R0,RETI,第,20,页,/,共,69,页,3,、用三态门扩展,8,位输入并行口,74LS244,是,8,位三态门,当,/1G,、,/2G,均为低电平时,允许输入数据;否则,为高阻态。,输入设备,IN7,IN6,IN5,IN4,IN3,IN2,IN1,IN0,8031,P2.6,P0.7,P0.6,P0.5,P0.4,P0.3,P0.2,P0.1,P0.0,74LS244,1Y1 1A1,1Y2 1A2,1Y3 1A3,1Y4 1A4,2Y1 2A1,2Y2 2A2,2Y3 2A3,2Y4 2A4,第,21,页,/,共,69,页,二、用串行口扩展并行,I/O,接口,如果串口别无他用,则可让其工作于方式,0,,来扩展一个或多个,8,位并行,I/O,口,1,、用,74LS165,扩展并行,I/O,口,8031,P3.0,P3.1,P1.0,H G F E D C B A,QH SIN,/QH 74LS165,(,1,),S/L M CP,H G F E D C B A,QH SIN,/QH 74LS165,(,2,),S/L M CP,D0 .D7,D0 .D7,第,22,页,/,共,69,页,74LS165,是,8,位并入、串出移位寄存器。,其中,,CP,为移位脉冲输入端;,S/L,为移位,/,装入端,以,P1.0,控制。,两片,74LS165,的首尾相连,即,QH,与,SIN,相连。,例、从上图两个八位并行口读入,20H,组(每组两个字节)字节数据,并把它们转存到内部,RAM,(首址为,30H,)的数据区中。,解:以,PSW,中的用,F0,位来标志接收一组数中的前,8,位与后,8,位,,74LS165,(,1,)并行口输入数据时,置,F0,为,1,;,74LS165,(,2,)并行口输入数据时,置,F0,为,0,;,P1.0,高、低变化一次,就控制并行数据装入一次,即串行,口应接收到,2,个,8,位数据(一组)。,串口工作在方式,0,,波特率为,fosc/12=1Mb/s,。,第,23,页,/,共,69,页,MOV R7,,,#20H,;读入字节数组,MOV R0,,,#30H,;内部,RAM,数据区首址,SETB F0,;假定,74LS165,(,1,)先读入,RCV0,:,CLR P1.0,;,165,装入数据,SETB P1.0,;允许,165,串行移位,RCV1:MOV SCON,,,#00010000B,;串行口设定,STP,:,JNB RI,,,STP,;等待接收完一个八位数,CLR RI,;清,RI,标志,以备下次接收,MOV A,,,SBUF,;串口接收数据,第,24,页,/,共,69,页,8031,P3.0,P3.1,P1.0,A B C D E F G H,AB,74LS164,(,1,),/CR CP,A B C D E F G H,AB,74LS164,(,2,),/CR CP,D7 .D0,D7 .D0,2,、用,74LS164,扩展并行输出口,74LS164,是,8,位串入、并出移位寄存器,其中,,CP,为移位脉冲输入端;,/CR,为清除端。,第,25,页,/,共,69,页,上图接法中,由于移位寄存器无并行输出控制,在串行输入过程中,其输出状态会不断变化,故在某些使用场合下,在,74LS164,的输出端应加接输出三态门控制,以便保证串行输入结束后再输出并行数据。,第,26,页,/,共,69,页,小结:为什么要扩展并行,I/O,口?,扩展并行,I/O,口常用的三种方法是什么?,用,TTL,芯片扩展的特点是什么?,用串口扩展时,串口应工作在方式几?,第,27,页,/,共,69,页,5-4,可编程并行接口芯片,8255A,一、,8255A,的结构和操作方式,1,、,8255A,的组成及引脚,引脚图,:,第,28,页,/,共,69,页,组成,:,第,29,页,/,共,69,页,P2.7,P0,8031,ALE,/RD,/WR,RST,/EA,74LS373,1D 8D,2Q,1Q,G /OC,/CS,8255A,PA0PA7,A1,A0,PC7,PC0,D0 D7,/RD,/WR,RESET,微型打印机,DB0DB7,BUSY,/STB,8,8,8,第,30,页,/,共,69,页,分三部分:,总线接口部分;内部逻辑部分,;,外设接口部分,(,1,)总线接口部分,/CS,片选线,A1,、,A0,端口选择线(选片内四个端口寄存器),/RD,读信号线,/WR,写信号线,(,2,)内部逻辑部分,PA,PC7 PC4,PB,PC3 PC0,输入,A,组控制电路,控制,8255A,工作方式,二者合一成为端口控制寄存器。,B,组控制电路,第,31,页,/,共,69,页,(,3,)外设接口部分,可由编程决定三个端口的功能,输入 输出 其它,A,口,8,位锁存,/,缓冲,8,位锁存 双向,B,口,8,位锁存,/,缓冲,8,位缓冲,C,口,8,位锁存,/,缓冲,8,位缓冲 可分成两组分别作,A,口、,B,口的选通联络线,第,32,页,/,共,69,页,2,、,8255A,的端口操作,A1 A0,选中,0 0 PA,口,0 1 PB,口,1 0 PC,口,1,控制,寄存,器,第,33,页,/,共,69,页,二、,8255A,的工作方式及方式选择,1,、,8255A,的工作方式,(,1,)方式,0,基本输入,/,输出方式,A,口、,B,口、,C,口均有此方式,无选通,,是单片机与外部设备之间的直接数据通道。,(,2,)方式,1,选通输入,/,输出方式,仅,PA,口、,PB,口有此方式,,PC,口中若干位作联络信号线,联络信号的组,合情况见,P164,图,5-18,。,第,34,页,/,共,69,页,第,35,页,/,共,69,页,各联络信号线的意义,:,/STB,输入选通信号,外设发来。,IBF,输入缓冲器满信号,发给外设(通知外,设数据未被取走,暂不能接收新数据),INTR,中断请求信号,外部设备发给单片机,INTE,中断允许信号,/OBF,输出缓冲器满信号,发给外设(单片机将数据已送,到指定口,外部设备可以取走),/ACK,外设响应信号,由外部设备发来(数据已送到外部,设备),第,36,页,/,共,69,页,(,3,)方式,3,双向方式,仅,PA,口有此方式。,PC3 PC7,作联络线,此时,,PB,口可以是方式,0,;也可以是方式,1,(,PC0,PC1,作联络线)。,2,、,8255A,的方式控制字,用编程方法向,8255A,的控制口写控制字,可决定它的工作 方式。,有两个控制字:,(,1,)方式选择控制字,1,D6,D5,D4,D3,D2,D1,D0,第,37,页,/,共,69,页,“,1,”,方式控制标志位,D6,、,D5,决定,A,组的工作方式,,0 0,方式,0,0 1,方式,1,1,方式,2,D4 A,口的传输方向,,1,入,,0,出。,D3 PC7 PC4,的传输方向,,1,入,,0,出。,D2,决定,B,组的工作方式,,0,方式,0,,,1,方式,1,。,D1 B,口的传输方向,,1,入,,0,出。,D0 PC3 PC0,传输方向,,1,入,,0,出。,第,38,页,/,共,69,页,(,2,),PC,口置位,/,复位控制字,0,D6,D5,D4,D3,D2,D1,D0,“0”,标志位。,D6,、,D5,不使用位。,D3,、,D2,、,D1,位选择位,,000 111,分别对应,PC7 PC0,。,D0,位状态位,,1,置位,,0,复位。,第,39,页,/,共,69,页,三、,8031,和,8255A,的连接及应用,单片机,8255A,A0 A0,A1 A1,A15 A2,中任一线,/CS,P0 D7 D0,/RD /RD,/WR /WR,RST RESET,第,40,页,/,共,69,页,应用,第,41,页,/,共,69,页,上图中,地址线连接采用线选法。,8255A,的地址分布:,A15 A14 A13A8 A7A1 A0,0 0 0 0 0 0 0 0000H,0 1 0001H,1 0 0002H,1 1 0003H,或,0 1 1 1 1 0 0 7FFCHPA,0 1 7FFDHPB,1 0 7FFEHPC,1 1 7FFFH,控制,第,42,页,/,共,69,页,例、设单片机,8031,与微型打印机之间的数据传送采用查询方式。要求将存放在,8031,单片机内,RAM,中以,30H,为首地址的,64,个连续单元中的内容打印输出,试编程。,P2.7,P0,8031,ALE,/RD,/WR,RST,/EA,74LS373,1D 8D,2Q,1Q,G /OC,/CS,8255A,PA0PA7,A1,A0,PC7,PC0,D0 D7,/RD,/WR,RESET,微型打印机,DB0DB7,BUSY,/STB,8,8,8,第,43,页,/,共,69,页,解,:因为,PC0,连接,BUSY,,所以,,PC3 PC0,为输入,又因,PC7,连接,/DATA STROBE,,所以,PC7 PC4,为输出,,STROBE,表示重复的意思。,/DATA STROBE,数据选通信号。作用是通知打印机,,8255A,要给它传数。,PA,口输出,,PB,口未用。,故,8255A,的控制字可设为:,1 0 0 0 0 0 0 1B=81H,第,44,页,/,共,69,页,PA,口地址:,7FFCH,PB,口地址:,7FFDH,PC,口地址:,7FFEH,控制口:,7FFFH,ORG 1000H,PRINT,:,MOV DPTR,,,#7FFFH,;控制口地址,MOV A,,,#81H,;控制字,MOVX DPTR,,,A,;写入控制字,MOV R1,,,#30H,;数据指针,MOV R2,,,#40H,;,64,个数,第,45,页,/,共,69,页,NEXT,:,MOV DPTR,,,#7FFEH,;,PC,口地址,MOV A,,,#80H,;使,PC7,为高电平,MOVX DPTR,,,A,;输出,/DATA STR OBE,为,;高电平,;无效,不准备送数,WAIT,:,MOVX A,,,DPTR,;查询打印机状态,JB ACC.0,WAIT,;若,PC0,即,BUSY=1,忙,则等待,MOV DPTR,#7FFCH,;若,BUSY=0,空闲,则指向,PA,口,MOV A,R1,;输出数据,MOVX DPTR,A,MOV DPTR,#7FFEH,;指向,PC,口,MOV A,#00H,;,8255A,输出,/DATA STR OBE,信号,;通知打印机,给它传数。,第,46,页,/,共,69,页,MOVX DPTR,A,ACALL PDELAY,;调延时子程序,以形成一个宽度,;定时值的负脉冲为,INC R1,DJNZ R2,NEXT,;判断打印输出完成否?,SJMP$,PDELAY,:(延时程序略),END,第,47,页,/,共,69,页,小结:,1,、,8255A,有几个并行,I/O,口?几种工作方式?,2,、工作方式控制字、置位,/,复位控制字是如何定义的?,第,48,页,/,共,69,页,5-5,可编程并行接口芯片,8155,包括:,256B,静态,RAM,;,2,个,8,位和,1,个,6,位可编程并行,I/O,口;,1,个,14,位定时器(减,1,计数);,1,个,8,位地址锁存器;,一些控制逻辑电路等。,第,49,页,/,共,69,页,一、引脚,AD0 AD7,地址,/,数据线。,传送地址、数据、命令、状态等。,ALE,地址锁存(输入),IO/M IO,口,/RAM,选择;,0,:选内,RAM,;,1,:选内,IO,口,/CE,片选线,/RD,、,/WR,读、写控制,PA7 PA0 A,口输入,/,输出线,PB7 PB0 B,口输入,/,输出线,PC5 PC0 C,口输入,/,输出线,TIMERIN,定时器输入(输入定时器所需时钟),TIMEROUT,定时器输出(输出所产生的方波脉冲),第,50,页,/,共,69,页,二、,8155,的,RAM,和,I/O,口地址编码,包括:内,RAM 256B,对应,256,个地址,命令,/,状态寄存器地址,1,个地址,PA,口地址,1,个地址,PB,口地址,1,个地址,PC,口地址,1,个地址,定时器低,8,位地址,1,个地址,定时器高,8,位地址,1,个地址,由,AD7 AD0,及,IO/M,决定。,第,51,页,/,共,69,页,三、,8155,的工作方式与基本操作,有三种基本操作,:,1,、作单片机片外,256B,数据存储器,IO/M=0,,与其它数据存储器统一编址。用,MOVX,访问。,2,、作扩展,I/O,口使用,IO/M=1,,,PA,口、,PB,口、,PC,口,可通过编程决定如何使用。,命令寄存器(命令控制字),I/O,口工作方式,状态标志寄存器,PA,口、,PB,口状态标志。,第,52,页,/,共,69,页,I/O,口工作方式有四种:,A,口、,B,口 基本,I/O,口,,C,口输入;,A,口、,B,口 基本,I/O,口,,C,口输出;,A,口选通,I/O,、,B,口基本,I/O,、,C,口作联络线;,A,口、,B,口选通,I/O,、,C,口作联络线。,状态标志寄存器:,BF,缓冲器满标志;,INTR,端口中断请求标志;,INTE,端口中断允许标志;,TIMER,定时器中断请求。,命令寄存器,只写不读,状态标志寄存器,只读不写,二者使用同一地址,第,53,页,/,共,69,页,3,、作定时器扩展使用,可以通过编程决定输出,4,种信号,即有四种工作台方式,单方波;连续方波;,单脉冲;连续脉冲。,由两个,8,位寄存器,决定,14,位定时器计数常数及四种工作方式。,由命令寄存器的最高两位对定时器进行四种控制。,第,54,页,/,共,69,页,T7,T6,T5,T4,T3,T2,T1,T0,(a),定时器格式,T7,T6,T5,T4,T3,T2,T1,T0,D7 D7 D7 D7 D7 D7 D7 D7,减,1,计数器低,8,位,减,1,计数器低,6,位,定时器方式编辑位,D7 D7 D7 D7 D7 D7 D7 D7,M2 M1,方式,定时器输出波形,0 0,单波形,0 1,连续波形,1 0,单脉冲,1 1,连续脉冲,(b),定时器方式及输出波形,第,55,页,/,共,69,页,M2,,,M1,定义定时,/,计数器从,TIMEROUT,输出信号的形式:,M2,,,M1,=00,单负方波,M2,,,M1,=01,连续方波,M2,,,M1,=10,单负脉冲,M2,,,M1,=11,连续脉冲,计数开始,计数结束,常常用作分频器,(,自动重装初值,),常常用作分频器,(,自动重装初值,),负脉冲宽度约等于输入,TI,的时钟周期,单方波宽度约等于初值的一半,第,56,页,/,共,69,页,四、单片机与,8155,的接口及操作软件,如图连线后地址分布是:内,RAM,地址,7E00H 7EFFH,I/O,口地址:,命令状态口,7F00H,PA,口,7F01H,PB,口,7F02H,PC,口,7F03H,定时器低,8,位,7F04H,定时器高,8,位,7F05H,第,57,页,/,共,69,页,第,58,页,/,共,69,页,操作软件:,MOV DPTR,,,#RAM,或,I/O,口地址,MOV A,,,#,欲写内容或命令字,MOV DPTR,,,A,第,59,页,/,共,69,页,8155,的单片机键盘接口应用举例,1.,单片机的键盘接口处理,单片机的键盘接口处理的内容包括以下几个方面:,(,1,)键扫描,键扫描示意图,第,60,页,/,共,69,页,(,2,)去抖动,(3),键码计算,如图,所示的键号是按从左到右、从上向下的顺序编排的。,键码图,第,61,页,/,共,69,页,(4),等待键释放,计算键码后,再以延时后进行行扫描的方法等待键释放。等待释放是为了保证键的一次闭合仅进行一次处理。,2.,键盘接口的控制方式,在单片机的运行过程中,何时执行键盘扫描和处理,可有下列三种情况:,l,随机方式,每当,CPU,空闲时执行键盘扫描程序,l,中断方式,每当有键闭合时才向,CPU,发出中断请求中断响应后执行键盘扫描程序,l,定时方式,每隔一定时间执行一次键盘扫描程序,定时可由单片机的定时器完成。,第,62,页,/,共,69,页,3.,键处理程序,在计算机中每一个键都对应一个处理子程序,得到闭合键的键码后,就可以根据键码,转到相应的键处理子程序(分支以,JMP,等散转指令实现),进行字符、数据的输入或命令处理。这样就可以实现该键设定的功能。,键处理的流程图,第,63,页,/,共,69,页,4.,用,8155,作单片机键盘接口,接口电路逻辑图,8155,作键盘接口,则,A,口地址为,0FDF9H,,,C,口地址为,0FDFBH,。,判定有无闭合键的子程序,判定有无闭合键的子程序为,KSI,,供在键盘扫描程序中调 用。程序如下:,第,64,页,/,共,69,页,KSI,:,MOV,DPTR,,,#0FDF9H,;,A,口地址,MOV,A,,,#00H,MOVX,DPTR,,,A,;,A,口送,00H,INC,DPTR,INC,DPTR,;,C,口地址,MOVX,A,,,DPTR,;读,C,口,CPL,A,ANL,A,,,#0FH,;屏蔽高四位,RET,执行,KSI,子程序的结果是:有键闭合则,A0,无 则,A=0,第,65,页,/,共,69,页,键盘扫描程序,如前所述,在单片机应用系统中常常是键盘和显示器同时存在,因此可以把键盘扫描程序和显示程序配合起来使用,即:把显示程序作为键扫描程序的延时子程序。这样做既省去了一个专门的延时子程序,又能保证显示器常亮的可观效果。,假定本系统中显示程序为,DIR,,执行时间约为,6ms,。键盘扫描程序如下:,第,66,页,/,共,69,页,KEY1,:,ACALL,KSI,;检查是否有键闭合,JNZ,LK1,;,A,非“,0”,则转移,ACALL,DIR,;显示一次(“延时,6s,),AJMP,KEY1,LK1,:,ACALL,DIR,;有键闭合二次延时,ACALL,DIR,;共,12ms,去抖动,ACALL,KSI,;再检查是否有键闭合,JNZ,LK2,;有键闭合转移到,LK2,ACALL,DIR,AJMP,KEY1,;无键闭合,延时,6ms,后转,KEY1,LK2,:,MOV,R,2,,,#0FEH,;扫描初值送,R,2,MOV,R,4,,,#00H,;扫描列号送,R,4,LK4,:,MOV,DPTR,,,#0FDF9H,;,A,口地址,MOV,A,,,R,2,MOVX,DPTR,,,A,;扫描初值送,A,口,INC,DPTR,INC,DPTR,;,C,口地址,MOVX,A,,,DPTR,;读,C,口,第,67,页,/,共,69,页,JB,ACC.0,,,LONE,;,ACC.0=1,,第,0,行无键闭合,转,MOV,A,,,#00H,;装第,0,行值,AJMP,LKP,LONE,:,JB,ACC.1,,,LTWO,;,ACC.1=1,,第,1,行无键闭合,转,MOV,A,,,#08H,;装第,1,行值,AJMP,LKP,LTWO,:,JB,ACC.2,,,LTHR,;,ACC.2=1,,第,2,行无键闭合,转,LTHR,MOV,A,,,#10H,;装第,2,行值,AJMP,LKP,LTHR,:,JB,ACC.3,,,NEXT,;,ACC.3=1,,第,3,行无键闭合,转,MOV,A,,,#18H,;装第,3,行值,LKP,:,ADD,A,,,R,4,;计算键码,PUSH,ACC,;保护键码,第,68,页,/,共,69,页,LK3,:,ACALL,DIR,;延时,6ms,ACALL,KSI,;检查是否继续闭合,若闭合再延时,JNZ,LK3,POP,ACC,;若键起,则键码送,A,RET,NEXT,:,INC,R,4,;扫描列号加,1,MOV,A,,,R,2,JNB,ACC.7,,,KND,;若第,7,位,=0,,已扫完最高列则转,RL,A,MOV,R,2,,,A,AJMP,LK4,;进行下一行扫描,KND,:,AJMP,KEY1,;扫描完毕,开始新一轮,键盘扫描程序的运行结果是把闭合键的键码放在累加器,A,中。,第,69,页,/,共,69,页,
展开阅读全文