收藏 分销(赏)

第五章-基本IO控制.ppt

上传人:仙人****88 文档编号:13343209 上传时间:2026-03-04 格式:PPT 页数:61 大小:1.21MB 下载积分:10 金币
下载 相关 举报
第五章-基本IO控制.ppt_第1页
第1页 / 共61页
第五章-基本IO控制.ppt_第2页
第2页 / 共61页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第五章 基本,I/O,控制,跑马灯,4,位,7,段,LED,显示,键盘扫描,说明,:,PAPA7,对应,LED1LED8,对应,I/O,口输出高电平时,LED,不亮,对应,I/O,口输出低电平时,LED,亮,.,在本例中,LED,的显示有八种状态循环,流程如下,全亮,LED2,亮,其余灭,LED3,亮,其余灭,LED1LED4,亮,其余灭,LED5,亮,其余灭,LED6,亮,其余灭,LED5LED8,亮,其余灭,LED8,亮,其余灭,全亮,(,从头又开始循环,),跑马灯,普通延时方式,#INCLUDE ht48r70a-1.inc,NUM1 EQU 03H ;,常量参数,NUM1,定义,NUM2 EQU 02H ;,常量参数,NUM2,定义,DELAYRAM1 EQU 20H ;DELAYRAM1,定义,DELAYRAM2 EQU 21H ;DELAYRAM2,定义,LEDRAM1 EQU 22H ;LEDRAM1,定义,LEDNUM1 EQU 23H ;LEDNUM1,定义,ORG 000H ;,伪指令,JMP START ;,程序上电开始地址,;-,ORG 020H ;,伪指令,START:MOV A,00H ;,MOV PAC,A ;,设置,PA,口为输出口,MOV A,0FFH ;,MOV PA,A ;,初始设置,PA,口全为高电平,(LED,全灭,),CLR LEDRAM1 ;,初始化,:LEDRAM1,清,0,CLR LEDNUM1 ;,初始化,:LEDNUM1,清,0,MAIN:CALL DELAY ;,调用,DELAY,延时子程序,MOV A,LEDNUM1 ;,MOV TBLP,A ;,循环位置给查表指令的偏移量,TABRDL LEDRAM1 ;,查显示的状态,(,结果放入,LEDRAM1),MOV A,LEDRAM1 ;,MOV PA,A ;,在,PA,口输出查表所得内容,INC LEDNUM1 ;,循环位置指向下一个,MOV A,LEDNUM1 ;,SUB A,08H ;,判断循环是否到第,9,状态,?,SNZ C ;,JMP MAIN1 ;,没到第,9,状态,跳去,MAIN1,MOV A,00H ;,MOV LEDNUM1,A ;,到第,9,状态,回零,重新到第一状态,MAIN1:NOP ;,JMP MAIN ;,跳去,MAIN,主程序反复循环,DELAY PROC ;,MOV A,NUM1,MOV DELAYRAM1,A ;,给,DELAYRAM1,赋值,NUM1,DELAY0:MOV A,NUM2 ;,MOV DELAYRAM2,A ;,给,DELAYRAM2,赋值,NUM2,DELAY1:DEC DELAYRAM2 ;DELAYRAM2-1,SZ DELAYRAM2 ;,判断,DELAYRAM2=0?,JMP DELAY1 ;DELAYRAM2,不等于,0,跳去,DELAY1,SZ DELAYRAM1 ;DELAYRAM2=0,时判断,DELAYRAM1=0?,JMP DELAY2 ;DELAYRAM1,不等于,0,跳去,DELAY2,JMP DELAY3 ;DELAYRAM1=0,跳去,DELAY3,DELAY2:DEC DELAYRAM1 ;DELAYRAM1-1,JMP DELAY0 ;,跳去,DELAY0,继续循环,DELAY3:NOP ;,RETI ;,子程序返回,DELAY ENDP ;,ORG 1f00H,TABLE:DW 0000H,00FDH,00FBH,00F0H,00EFH,00DFH,000FH,007FH,END,定时器中断方式,4MHZ,系统频率,定时,1S,includeht48r50a-1.inc,data.section data,ACCBUF db?,statusbuf,db?,TIMER1 db?,LEDNUM DB?,code.sectionat 0code,org 0,jmp,start,org 004h,RETI,org 008h,JMP ISR_TIMER0,org 00ch,reti,org 010h,start:,mov,a,00h,mov,pac,a,mov,a,0ffh,mov,pa,a,call,clrmem,mov,a,05h,mov,intc,a,mov,a,8fh,mov,tmr0c,a,mov,a,256-156,mov,tmr0,a,mov,a,100,mov,timer1,a,set tmr0c.4,main:,mov,a,table,add,a,lednum,mov,tblp,a,tabrdl,acc,mov,pa,a,jmp,main,isr_timer0 proc,mov,accbuf,a,mov,a,status,mov,statusbuf,a,sdz,timer1,jmp,exit,mov,a,100,mov,timer1,a,inc,lednum,mov,a,lednum,sub a,08h,snz,c,jmp,exit,mov,a,00h,mov,lednum,a,exit:,mov,a,statusbuf,mov,status,a,mov,a,accbuf,RETI ;,中断返回,isr_timer0,endp,Clrmem,proc,mov,a,60h,mov,mp0,a,Loop:,clr,r0,inc mp0,mov,a,mp0,sz,acc,jmp,loop,ret,Clrmem,endp,org 0f20h,table:dw,0000h,00fdh,00fbh,00f0h,00efh,00dfh,000fh,007fh,END,TBLP EQU 07H ;,特殊寄存器,TBLP,定义,STATUS EQU 0AH,INTC EQU 0BH,TMR0 EQU 0DH,TMR0C EQU 0EH,PA EQU 12H ;,特殊寄存器,PA,定义,PAC EQU 13H ;,特殊寄存器,PAC,定义,C EQU 0AH.0 ;,状态寄存器中进位,C,定义,NUM1 EQU 0FFH ;,常量参数,NUM1,定义,NUM2 EQU 0FFH ;,常量参数,NUM2,定义,NUM3 EQU 7DH,DELAYRAM1 EQU 60H ;DELAYRAM1,定义,DELAYRAM2 EQU 61H ;DELAYRAM2,定义,LEDRAM1 EQU 62H ;LEDRAM1,定义,LEDNUM1 EQU 63H ;LEDNUM1,定义,RAM_ACC EQU 64H,RAM_STATUS EQU 65H,RAM_TIME EQU 66H,T_FLAG EQU 67H.0,INT_FLAG EQU 67H.1,;*,外部中断方式,ORG 000H ;,伪指令,JMP START ;,程序上电开始地址,ORG 0004H,JMP INT,ORG 008H,JMP TIME0,ORG 020H ;,伪指令,START:MOV A,00H,MOV PAC,A,MOV A,0FFH,MOV PA,A,CLR LEDRAM1,CLR LEDNUM1,CLR RAM_TIME,CLR T_FLAG,CLR INT_FLAG,MOV A,07H,MOV INTC,A,MOV A,85H,MOV TMR0C,A,MOV A,6,MOV TMR0,A,MAIN:,SZ INT_FLAG,JMP MAIN1,CLR TMR0C.4,JMP MAIN2,MAIN1:SET TMR0C.4,SNZ T_FLAG,JMP MAIN2,CLR T_FLAG,MOV A,LEDNUM1,MOV TBLP,A,JMP MAIN2,CLR T_FLAG,MOV A,LEDNUM1,MOV TBLP,A,TABRDL LEDRAM1,MOV A,LEDRAM1,MOV PA,A,INC LEDNUM1,MOV A,LEDNUM1,SUB A,08H,SNZ C,JMP MAIN,MOV A,00H,MOV LEDNUM1,A,MAIN2:JMP MAIN,TIME0:MOV RAM_ACC,A,MOV A,STATUS,MOV RAM_STATUS,A,INC RAM_TIME,MOV A,RAM_TAIME,SUB A,NUM3,SNZ C,JMP TIME1,CLR RAM_TIME,SET T_FLAG,TIME1:MOV A,RAM_STATUS,MOV STATUS,A,MOV A,RAM_ACC,RETI,INT:SZ INT_FLAG,JMP INT1,SET INT_FLAG,JMP INT2,INT1:CLR INT_FLAG,INT2:RETI,org of00h,table:dw,0000h,00fdh,00fbh,00f0h,00efh,00dfh,000fh,007fh,END,4,位七段,LED,显示,发光二极管(,LED,),及其驱动方式,LED,具有许多优点,它不仅有工作电压低,(1.5,3V),、体积小、寿命长、可靠性高等优点,而且响应速度快,(,100ns,),、亮度比较高。,一般,LED,的工作电流选在,510mA,,但不允许超过最大值(通常为,50mA,)。,LED,可以直接由门电路驱动。,LED,(Light Emitting Diode),:发光二极管的缩写。,显示器前面冠以“,LED”。,图(,a,)是输出为低电平时,,LED,发光,称为,低电平驱动,;,图(,b,)是输出为高电平时,,LED,发光,称为,高电平驱动,;,图,3-13,门电路驱动,LED,(a),低电平驱动,(b),高电平驱动,图,七段显示,LED,数码管,(a),外形图,(b),共阴型,(c),共阳型,(2)LED,数码管,LED,数码管又称为半导体数码管,它是由多个,LED,按分段式封装制成的。,LED,数码管有两种形式:,共阴型和共阳型,。,公共阴极,公共阳极,高电平驱动,低电平驱动,常用的,LED,显示器为,8段,(或,7段,,8段比7段多了一,个小数点,“,dp,”,段)。,为使,LED,显示不同的符号或数字,,要为,LED,提供,段码,(或称,字型码,)。,提供给,LED,显示器的段码,(,字型码,),正好是一个字,节(8段),。各段与字节中各位对应关系如下:,按上述格式,8段,LED,的段码如表所示。,显示字符,共阴极段码,共阳极段码,显示字符,共阴极段码,共阳极段码,0,3FH,C0H,c,39,H,C6H,1,06,H,F9H,d,5EH,A1H,2,5BH,A4H,E,79,H,86,H,3,4FH,B0H,F,71,H,8EH,4,66,H,99,H,P,73,H,8CH,5,6DH,92,H,U,3EH,C1H,6,7DH,82,H,T,31,H,CEH,7,07,H,F8H,y,6EH,91,H,8,7FH,80,H,H,76,H,89,H,9,6FH,90,H,L,38,H,C7H,A,77,FH,88,H,“灭”,00,H,FFH,b,7CH,83,H,表,LED,段码(8段),表只列出了部分段码,,可根据实际情况选用,。,另外,,段码是相对的,,它由各字段在字节中所处的,位决定。例如表中8段,LED,段码是按格式,:,而形成的,,“0”的段码为3,FH(,共阴)。,反之,如,将格式改为下列格式:,则,“0”的段码为7,EH(,共阴),。,字型及段码由设计者自行设定,,习惯上还是以“,a”,段对应段码的最低位。,N,个,LED,显示块有,N,位位选线,和,8,N,根段码线,。,LED,显示器工作原理,图是4位,LED,显示器的结构原理图。,段码线,控制,显示的字型,,,位选线,控制,该显示位的亮或暗。,静态显示,和,动态显示,两种显示方式。,1.,静态显示方式,各位的公共端连接在一起(接地或+5,V)。,每位的段码线(,adp,),分别,与一个8位的锁存器,输出相连。,显示字符一确定,相应锁存器的段码输出将维持,不变,直到送入另一个段码为止。,显示的亮度高,。,4位静态,LED,显示器电路。该电路各位可独立显示。,静态显示,虽然数据稳定,占用很少的,CPU,时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;,所有位的段码线相应段并在一起,由一个8位,I/O,口控制,形成段码线的多路复用,各位的公共端分别由相应的,I/O,线控制,形成各位的分时选通。,动态显示方式,图:,4位8段,LED,动态显示电路。其中段码线占用一个8位,I/O,口,而位选线占用一个4位,I/O,口。,动态显示,:,单片机应用系统中常使用,LED,作为显示器,在需多位,LED,显示时,为了简化电路,降低成本,常将所有门的选线并联在一起,由一个,8,位,I/O,口控制,而共阴,(,阳,)I/O,线受控制,实现各部分时选通,图为,8,位,LED,动态显示2003.10.10的过程,。,图(,a),是显示过程,,某一时刻,,只有一位,LED,被选通,显示,其余位则是熄灭的;,图,(,b),是实际显示结果,人的眼睛具有视觉暂留现象,若轮流显示的速度够快的话,让人眼睛不会感觉到闪烁现象(通常以,50Hz,以上的轮流显示速度来驱动),人眼看到的是,8位稳定,的,同时显示,的字符。,4,位七段,LED,显示,说明,:,四位七段,LED,显示电路如图所示,四个数码管为共阳型,.,PA0PA7,对应七段,LED,码的,a,b.c.d.e.f.g,h,PC2PC5,控制数码管,1,数码管,4,的电源,该试验是,:,四个数码管固定显示 ”,1234”,DISP_NUM2=NUM2,开始,1,开,LED1,电源,2,写,LED1,显示数据,延时,关,LED1,显示,1,开,LED2,电源,2,写,LED2,显示数据,延时,关,LED2,显示,LED3,显示,LED4,显示,DEC DISP_NUM2,DISP_NUM2=0?,RET(,结束,),设置每次显示中循环次数,显示第一个数码管,显示第二个数码管,显示第三个数码管,显示第四个数码管,判断循环结束,?,;*,;,四位数码管固定显示,1234,;*,ACC EQU 05H ;,定义专用寄存器,ACC,PCL EQU 06H ;,定义专用寄存器,PCL,PA EQU 12H ;,定义专用寄存器,PA,PAC EQU 13H ;,定义专用寄存器,PAC,PB EQU 14H ;,定义专用寄存器,PB,PBC EQU 15H ;,定义专用寄存器,PBC,PC EQU 16H ;,定义专用寄存器,PC,PCC EQU 17H ;,定义专用寄存器,PCC,TBLP EQU 07H ;,定义专用寄存器,TBLP,DISP_RAM EQU 78H ;,查表得到显示代码,DISP_RAM1 EQU 79H ;,数码管,1,显示内容寄存器,DISP_RAM2 EQU 7AH ;,数码管,2,显示内容寄存器,DISP_RAM3 EQU 7BH ;,数码管,3,显示内容寄存器,DISP_RAM4 EQU 7CH ;,数码管,4,显示内容寄存器,DISP_NUM1 EQU 7DH ;,每个数码管显示时延时寄存器,DISP_NUM2 EQU 7EH ;,一次调用显示时延时寄存器,NUM1 EQU 20H ;,每个,LED,显示时延时参数,NUM2 EQU 30H ;,一次调用显示时延时参数,;-,ORG 000H,JMP START ;,芯片上电程序开始执行地址,ORG 004H,RETI ;,外中断子程序开始地址,ORG 008H,RETI ;,定时器中断子程序开始地址,;-,ORG 010H,START:MOV A,00H ;,MOV PAC,A ;,设置,PA,口为输出口,MOV PCC,A ;,设置,PC,口为输出口,SET PA ;PA,口为高,关,LED,数码管,CLR PC ;PC,口为低,关四个三极管,MAIN:MOV A,01H,MOV DISP_RAM1,A ;,数码管,1,显示,1,MOV A,02H,MOV DISP_RAM2,A ;,数码管,2,显示,2,MOV A,03H,MOV DISP_RAM3,A ;,数码管,3,显示,3,MOV A,04H,MOV DISP_RAM4,A ;,数码管,4,显示,4,MAIN1:CALL DISPLAY ;,调显示子程序,JMP MAIN1 ;,反复循环,.,;*,;DISPLAY DISP_RAM1=LED1 DISP_RAM2=LED2,;DISP_RAM3=LED3 DISP_RAM4=LED4,;*,DISPLAY PROC ;,显示子程序,MOV A,NUM2 ;,MOV DISP_NUM2,A ;,四个数码管循环显示的次数,.,LOOP:MOV A,NUM1 ;,MOV DISP_NUM1,A ;,数码管,1,显示的延时时间设置,.,MOV A,04H ;,MOV PC,A ;PC.2=1,数码管,1,的,VDD,接通,MOV A,DISP_RAM1 ;,MOV TBLP,A ;,取显示值,放入查表的偏移量寄存器,TABRDL DISP_RAM ;,查表,取显示代码,MOV A,DISP_RAM ;,MOV PA,A ;,将显示代码输出到,PA,口,LOOP1:DEC DISP_NUM1 ;,SZ DISP_NUM1 ;,JMP LOOP1 ;,延时功能,SET PA ;,关显示,CLR PC.2 ;PC.2=0,数码管,1,的,VDD,断开,MOV A,NUM1 ;,MOV DISP_NUM1,A ;,数码管,2,显示的延时时间设置,.,MOV A,08H ;,MOV PC,A ;PC.3=1,数码管,2,的,VDD,接通,MOV A,DISP_RAM2 ;,MOV TBLP,A ;,取显示值,放入查表的偏移量寄存器,TABRDL DISP_RAM ;,查表,取显示代码,MOV A,DISP_RAM ;,MOV PA,A ;,将显示代码输出到,PA,口,LOOP2:DEC DISP_NUM1 ;,SZ DISP_NUM1 ;,JMP LOOP2 ;,延时功能,SET PA ;,关显示,CLR PC.3 ;PC.3=0,数码管,2,的,VDD,断开,MOV A,NUM1 ;,MOV DISP_NUM1,A ;,数码管,3,显示的延时时间设置,.,MOV A,10H ;,MOV PC,A ;PC.4=1,数码管,3,的,VDD,接通,MOV A,DISP_RAM3 ;,MOV TBLP,A ;,取显示值,放入查表的偏移量寄存器,TABRDL DISP_RAM ;,查表,取显示代码,MOV A,DISP_RAM ;,MOV PA,A ;,将显示代码输出到,PA,口,LOOP3:DEC DISP_NUM1 ;,SZ DISP_NUM1 ;,JMP LOOP3 ;,延时功能,SET PA ;,关显示,CLR PC.4 ;PC.4=0,数码管,3,的,VDD,断开,MOV A,NUM1 ;,MOV DISP_NUM1,A ;,数码管,4,显示的延时时间设置,.,MOV A,20H ;,MOV PC,A ;PC.5=1,数码管,4,的,VDD,接通,MOV A,DISP_RAM4 ;,MOV TBLP,A ;,取显示值,放入查表的偏移量寄存器,TABRDL DISP_RAM ;,查表,取显示代码,MOV A,DISP_RAM ;,MOV PA,A ;,将显示代码输出到,PA,口,LOOP4:DEC DISP_NUM1 ;,SZ DISP_NUM1 ;,JMP LOOP4 ;,延时功能,SET PA ;,关显示,CLR PC.5 ;PC.5=0,数码管,4,的,VDD,断开,DEC DISP_NUM2 ;,循环显示次数,-1,SZ DISP_NUM2 ;,判断循环结束否,?,JMP LOOP ;,没结束,跳去,LOOP,继续循环,RET ;,循环结束,子程序返回,.,DISPLAY ENDP,;*,;,表格区,09,对应的显示代码,.,;*,ORG 700H,;0 1 2 3 4 5 6 7 8 9,TABLE:DW 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,;*,END,键盘扫描,识别键盘上哪个键被按下的过程称为,键盘扫描,键盘接口原理,1.键盘输入的特点,键盘:一组按键开关的集合,。,行线电压信号通过键盘开关机械触点的断开、闭合,,输出波形如图10-6。,2.按键的确认,检测,行线,电平,高电平:,断开;,低电平,:闭合,,常用,软件来消除按键抖动。,基本思想,:,检测到有键按下,键对应的行线为低,软,件延时10,ms,后,行线如仍为低,则确认该行有键按下。,3.如何消除按键的抖动,当键松开时,,行线变高,软件延时10,ms,后,行线仍为,高,说明按键已松开。,采取以上措施,,躲开了两个抖动期,t1,和,t3,的影响,。,键盘接口的分类,独立式,按键接口和,行列式,键盘接口。,1.独立式键盘接口,各键相互独立,每个按键各接一根输入线,通过,检,测输入线的电平状态,可很容易判断那个键被按下。,此种接口,适于键数较少,或,操作速度较高,的场合。,图(,a),为,中断方式的独立式,键盘工作电路,图(,b),为,查询方式的独立式,键盘工作电路,。,2.行列式(矩阵式)键盘接口,用于按键数目较多的场合,,由,行线和列线组成,,,按键位于行、列的交叉点上。如图所示。,按键数目较多的场合,,行列式键盘与独立式键盘,相比,要,节省很多的,I/O,口线,。,(1)行列式键盘工作原理,无键按下,该行线为高电平,,当有键按下时,行线电平由列线的电平来决定,。,由于行、列线为多键共用,各按键彼此将相互发,生影响,必须,将行、列线信号配合起来并作适当的处,理,才能确定闭合键的位置,。,识别键盘有无键被按下的方法,分两步进行:,第1步:,识别键盘有无键按下;,第2步:,如有键被按下,识别出具体的按键。,把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。,上述方法称为,扫描法,,即,先把某一列置低电平,,其余各列为高电平,检查各行线电平的变化,,如果某,行线电平为低,可确定,此行列交叉点,处的按键被按,下。,图(,b),中3号键被按下为例,来说明此键,时如何被识别出来的。,扫描法,(2),按键的识别方法,软件编程:,MOV A,0F0H,MOV PAC,A,MOV A,0FEH,MOV PA,A,扫描法,键盘扫描例,PB,口做键盘扫描,.PB0PB3,做输出口,.PB4PB7,做输入口,特别注意蜂鸣器与,PB,口共享情况,(PB0/BZ,和,PB1/BZB),所以在,Mask,Option,选项中要设置,BUZZER:ALL Disable,由于此种方法只适合按键少的情况,所以在本范例中只做,S1S8,共,8,个按键功能,.,其余按键无效,.,程序执行四个数码管默认显示 ”,0000”,S1,按下 数码管,1,显示”,1”,S2,按下 数码管,2,显示”,2”,S3,按下 数码管,3,显示”,3”,S4,按下 数码管,4,显示”,4”,S5,按下 数码管,1,显示”,5”,S6,按下 数码管,2,显示”,6”,S7,按下 数码管,3,显示”,7”,S8,按下 数码管,4,显示”,8”,;*,;SCAN1.ASM VER1.0,;*,PA EQU 12H ;,定义专用寄存器,PA,PAC EQU 13H ;,定义专用寄存器,PAC,PB EQU 14H ;,定义专用寄存器,PB,PBC EQU 15H ;,定义专用寄存器,PBC,PC EQU 16H ;,定义专用寄存器,PC,PCC EQU 17H ;,定义专用寄存器,PCC,TBLP EQU 07H ;,定义专用寄存器,TBLP,DISP_RAM EQU 78H ;,查表得到显示代码,DISP_RAM1 EQU 79H ;,数码管,1,显示内容寄存器,DISP_RAM2 EQU 7AH ;,数码管,2,显示内容寄存器,DISP_RAM3 EQU 7BH ;,数码管,3,显示内容寄存器,DISP_RAM4 EQU 7CH ;,数码管,4,显示内容寄存器,DISP_NUM1 EQU 7DH ;,每个数码管显示时延时寄存器,DISP_NUM2 EQU 7EH ;,一次调用显示时延时寄存器,KEY_RAM1 EQU 70H ;,KEY_RAM2 EQU 71H ;,KEY_RAM3 EQU 72H ;,KEY_RAM4 EQU 73H ;,KEY_RAM EQU 74H ;,NUM1 EQU 20H ;,每个,LED,显示时延时参数,NUM2 EQU 30H ;,一次调用显示时延时参数,;-,ORG 000H,JMP START ;,芯片上电程序开始执行地址,ORG 004H,RETI ;,外中断子程序开始地址,ORG 008H,RETI ;,定时器子程序开始地址,;-,ORG 010H,START:MOV A,00H,MOV PAC,A ;,设置,PA,口为输出口,MOV PCC,A ;,设置,PC,口为输出口,SET PA ;,设置,PA,口为高电平,关显示,CLR PC ;PC,口输出,0,关数码管电源,MOV A,0F0H ;,MOV PBC,A ;,设置,PB,高四位为输入口,PB,低四位为输出口,SET PB ;PB,低四位输出高电平,MOV A,00H,MOV DISP_RAM1,A ;,数码管,1,显示,0,MOV DISP_RAM2,A ;,数码管,2,显示,0,MOV DISP_RAM3,A ;,数码管,3,显示,0,MOV DISP_RAM4,A ;,数码管,4,显示,0,;*,MAIN:NOP,MOV A,0EH,MOV PB,A ;PB3 PB2 PB1 PB0=1110,MOV A,PB ;,按键扫描输入,(,高四位,),AND A,0F0H ;,SNZ PB.4 ;,判断,S1,键按下否,?,JMP KEY1 ;,有低电平,跳去,KEY1,SNZ PB.5 ;,判断,S2,键按下否,?,JMP KEY2 ;,SNZ PB.6 ;,判断,S3,键按下否,?,JMP KEY3 ;,SNZ PB.7 ;,判断,S4,键按下否,?,JMP KEY4 ;,MOV A,0DH ;PB3 PB2 PB1 PB0=1101,MOV PB,A ;,SNZ PB.4 ;,判断,S5,键按下否,?,JMP KEY5 ;,SNZ PB.5 ;,判断,S6,键按下否,?,JMP KEY6 ;,SNZ PB.6 ;,判断,S7,键按下否,?,JMP KEY7 ;,SNZ PB.7 ;,判断,S8,键按下否,?,JMP KEY8 ;,JMP MAIN1 ;,没按键按下,跳去,MAIN1.,;-,KEY1:CALL DISPLAY ;,延时作用,防抖动处理,SZ PB.4 ;,判断,S1,键按下否,?,JMP MAIN1 ;,没有按下,跳去,MAIN1,KEY11:SZ PB.4 ;,判断,S1,键有没有释放,JMP KEY12 ;S1,键释放,跳去,KEY12,进行功能处理,CALL DISPLAY ;,调用显示子程序,JMP KEY11 ;,循环等待,S1,键释放,KEY12:MOV A,01H ;,MOV DISP_RAM1,A ;,数码管,1,显示,1,JMP MAIN1 ;,;-,KEY2:CALL DISPLAY ;,延时作用,防抖动处理,SZ PB.5 ;,判断,S2,键按下否,?,JMP MAIN1 ;,KEY21:SZ PB.5 ;,判断,S2,键有没有释放,JMP KEY22 ;S2,键释放,跳去,KEY22,进行功能处理,CALL DISPLAY ;,调用显示子程序,JMP KEY21 ;,循环等待,S2,键释放,KEY22:MOV A,02H ;,MOV DISP_RAM2,A ;,数码管,2,显示,2,JMP MAIN1 ;,;-,KEY3:CALL DISPLAY ;,延时作用,防抖动处理,SZ PB.6 ;,判断,S3,键按下否,?,JMP MAIN1 ;,KEY31:SZ PB.6 ;,判断,S3,键有没有释放,JMP KEY32 ;S3,键释放,跳去,KEY32,进行功能处理,CALL DISPLAY ;,调用显示子程序,JMP KEY31 ;,循环等待,S3,键释放,KEY32:MOV A,03H ;,MOV DISP_RAM3,A ;,数码管,3,显示,3,JMP MAIN1,;-,KEY4:CALL DISPLAY ;,延时作用,防抖动处理,SZ PB.7 ;,判断,S4,键按下否,?,JMP MAIN1 ;,KEY41:SZ PB.7 ;,判断,S4,键有没有释放,JMP KEY42 ;S4,键释放,跳去,KEY42,进行功能处理,CALL DISPLAY ;,调用显示子程序,JMP KEY41 ;,循环等待,S4,键释放,KEY42:MOV A,04H ;,MOV DISP_RAM4,A ;,数码管,4,显示,4,JMP MAIN1,;-,KEY5:CALL DISPLAY ;,延时作用,防抖动处理,SZ PB.4 ;,判断,S5,键按下否,?,JMP MAIN1 ;,KEY51:SZ PB.4 ;,判断,S5,键有没有释放,JMP KEY52 ;S5,键释放,跳去,KEY52,进行功能处理,CALL DISPLAY ;,调用显示子程序,JMP KEY51 ;,循环等待,S5,键释放,KEY52:MOV A,05H ;,MOV DISP_RAM1,A ;,数码管,1,显示,5,JMP MAIN1,;-,KEY6:CALL DISPLAY ;,延时作用,防抖动处理,SZ PB.5 ;,判断,S6,键按下否,?,JMP MAIN1 ;,KEY61:SZ PB.5 ;,判断,S6,键有没有释放,JMP KEY62 ;S6,键释放,跳去,KEY62,进行功能处理,CALL DISPLAY ;,调用显示子程序,JMP KEY61 ;,循环等待,S6,键释放,KEY62:MOV A,06H ;,MOV DISP_RAM2,A ;,数码管,2,显示,6,JMP MAIN1,;-,KEY7:CALL DISPLAY ;,延时作用,防抖动处理,SZ PB.6 ;,判断,S7,键按下否,?,JMP MAIN1 ;,KEY71:SZ PB.6 ;,判断,S7,键有没有释放,JMP KEY72 ;S7,键释放,跳去,KEY72,进行功能处理,CALL DISPLAY ;,调用显示子程序,JMP KEY71 ;,循环等待,S7,键释放,KEY72:MOV A,07H ;,MOV DISP_RAM3,A ;,数码管,3,显示,7,JMP MAIN1,;-,KEY8:CALL DISPLAY ;,延时作用,防抖动处理,SZ PB.7 ;,判断,S8,键按下否,?,JMP MAIN1 ;,KEY81:SZ PB.7 ;,判断,S8,键有没有释放,JMP KEY82 ;S8,键释放,跳去,KEY82,进行功能处理,CALL DISPLAY ;,调用显示子程序,JMP KEY81 ;,循环等待,S8,键释放,KEY82:MOV A,08H ;,MOV DISP_RAM4,A ;,数码管,4,显示,8,JMP MAIN1,;-,MAIN1:CALL DISPLAY ;,主程序循环中调用显示子程序,JMP MAIN ;,调去,MAIN,实现主程序连续循环,;*,;DISPLAY DISP_RAM1=LED1 DISP_RAM2=LED2,;DISP_RAM3=LED3 DISP_RAM4=LED4,;*,DISPLAY PROC ;,显示子程序,MOV A,NUM2,MOV DISP_NUM2,A ;,四个数码管循环显示的次数,.,;-,LOOP:MOV A,NUM1,MOV DISP_NUM1,A ;,数码管,1,显示的延时时间设置,.,MOV A,04H,MOV PC,A ;PC.2=1,数码管,1,的,VDD,接通,MOV A,DISP_RAM1,MOV TBLP,A ;,取显示值,放入查表的偏移量寄存器,TABRDL DISP_RAM ;,查表,取显示代码,MOV A,DISP_RAM,MOV PA,A ;,将显示代码输出到,PA,口,LOOP1:DEC DISP_NUM1,SZ DISP_NUM1,JMP LOOP1 ;,延时功能,SET PA ;,关显示,CLR PC.2 ;PC.2=0,数码管,1,的,VDD,断开,;-,MOV A,NUM1,MOV DISP_NUM1,A ;,数码管,2,显示的延时时间设置,.,MOV A,08H,MOV PC,A ;PC.3=1,数码管,2,的,VDD,接通,MOV A,DISP_RAM2,MOV TBLP,A ;,取显示值,放入查表的偏移量寄存器,TABRDL DISP_RAM ;,查表,取显示代码,MOV A,DISP_RAM,MOV PA,A ;,将显示代码输出到,PA,口,LOOP2:DEC DISP_NUM1,SZ DISP_NUM1,JMP LOOP2 ;,延时功能,SET PA ;,关显示,CLR PC.3 ;PC.3=0,数码管,2,的,VDD,断开,;-,MOV A,NUM1,MOV DISP_NUM1,A ;,数码管,3,显示的延时时间设置,.,MOV A,10H,MOV PC,A ;PC.4=1,数码管,3,的,VDD,接通,MOV A,DISP_RAM3,MOV TBLP,A ;,取显示值,放入查表的偏移量寄存器,TABRDL DISP_RAM ;,查表,取显示代码,MOV A,DISP_RAM,MOV PA,A ;,将显示代码输出到,PA,口,LOOP3:DEC DISP_NUM1,SZ DISP_NUM1,JMP LOOP3 ;,延时功能,SET PA ;,关显示,CLR PC.4 ;PC.4=0,数码管,3,的,VDD,断开,;-,MOV A,NUM1,MOV DISP_NUM1,A ;,数码管,4,显示的延时时间设置,.,MOV A,20H,MOV PC,A ;PC.5=1,数码管,4,的,VDD,接通,MOV A,DISP_RAM4,MOV TBLP,A ;,取显示值,放入查表的偏移量寄存器,TABRDL DISP_RAM ;,查表,取显示代码,MOV A,DISP_RAM,MOV PA,A ;,将显示代码输出到,PA,口,LOOP4:DEC DISP_NUM1,SZ DISP_NUM1,JMP LOOP4 ;,延时功能,SET PA ;,关显示,CLR PC.5 ;PC.5=0,数码管,4,的,VDD,断开,;-,DEC DISP_NUM2 ;,循环次数,-1,SZ DISP_NUM2 ;,判断循环结束否,?,JMP LOOP ;,循环没结束,跳去,LOOP,继续循环,RET ;,循环结束子程序返回,.,DISPLAY ENDP,;*,;09,对应的显示代码,.,;*,ORG 700H,;0 1 2 3 4 5 6 7 8 9,TABLE:DW 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,;*,END,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服