汇编8279键盘显示控制.docx
《汇编8279键盘显示控制.docx》由会员分享,可在线阅读,更多相关《汇编8279键盘显示控制.docx(6页珍藏版)》请在冰豆网上搜索。
![汇编8279键盘显示控制.docx](https://file1.bdocx.com/fileroot1/2022-10/8/9b81c56e-606a-4d74-b66e-73c9165b93ca/9b81c56e-606a-4d74-b66e-73c9165b93ca1.gif)
汇编8279键盘显示控制
实验三、8279键盘显示控制
一、实验目的
1.掌握8279键盘显示电路的基本功能及编程方法
2.掌握一般键盘盒显示电路的工作原理
3.进一步掌握定时器的使用和中断处理程序的编程方法
二、实验内容:
利用实验台上提供的定时器8253和扩展板上提供的8279以及键盘和数码显示电路,设计一个秒表,由8253中断定时,小键盘控制秒表的启停及初始值的预置。
秒表的显示格式**.**.**由左到右分别为分、秒、百分秒
要求具体如下:
1.C键:
清楚,显示00.00.00
2.G键:
启动,秒表计时
3.D键:
停止,秒表停止计时
4.P键:
设置分、秒、百分秒值。
输入时依次为分、秒、百分秒,同时应有判断输入错误的能力,若输入有错,则显示:
E-----,此时敲P键可重新输入预置值。
5.E键:
程序退出,返回DOS
接线方法
实验台上8253CLK0接1MHz,GATE0和GATE1接+5V,OUT0接CLK1,OUT1接IRQ.CS接
280H~287H.
三、编程提示
程序流程
秒表工作原理
中断处理子程序:
预置秒表各段高位子程序:
预置秒表各段低位子程序LOW0
源程序:
INTA00EQU20H;8259A口地址
INTA01EQU21H;8259A口地址
PORT0EQU2B0H;8279数据口
PORT1EQU2B1H;8279控制口
TIME0EQU280H;8253定时器0口地址
TIME1EQU281H;8253定时器1口地址
TIMECEQU283H;8253控制口地址
STACKSEGMENTSTACK
STADW512DUP(?
)
TOPEQULHNGTHSTA
STACKENDS
DATASEGMENT
BUFDB0;计数单元
SIGHDB0;计数标志
SEC1DB0;秒高位
SEC2DB0;秒低位
MIN1DB0;分高位
MIN2DB0;分低位
HOUR1DB0;时高位
HOUR2DB0;时低位
ERR1DB0;出错标志
HMSDB0;预置时、分、秒标志
LEDDB3FH,06,5BH,4FH,66H,6DH,7DH,07,7FH,6FH,79H,40H
MESDB…PLEASFIRSTCREATETHEIRQ7PULSE!
?
0AH,0DH,0AH,0DH
DB…INSMALLKEYBORD:
?
0AH,0DH
DB…C--CLEARTOZERO;G--GOAHEAD?
0AH,0DH
DB…D--STOPTHEDISPLY;E—EXIT?
0AH,0DH
DB…P—POSITIONTHEBEGINNINGTIME?
0AH,0DH,?
$?
DATAENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
CLI
MOVAX,DATA
MOVDS,AX
MOVBUF,0
MOVSIGH,01
MOVSEC1,0
MOVSEC2,0
MOVMIN2,0
MOVHOUR1,0
MOVHOUR2,0
MOVERR1,0
MOVDX,TIMEC;8253初始化
MOVAL,36H
OUTDX,AL
MOVDX,TIME0
MOVAX,100
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVDX,TIMEC
MOVAL,74H
OUTDX,AL
MOVAX,10
MOVDX,TIME1;定时器每0.1S中断1次OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVAX,STACK
MOVSS,AX
MOVSP,TOP
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMES
MOVAH,09
INT21H
MOVAX,CS
MOVDS,AX
MOVDX,OFFSETINT_PROC
MOVAX,250FH
INT21H;置IRQT中断向量
MOVDX,INTA01
ANDAL,7FH
OUTDX,AL
MOVDX,PORT1
MOVAL,0D3H
OUTDX,AL;8279清零
MOVAL,2AH
OUTDX,AL;置8279时钟命令
MOVAL,40H
OUTDX,AL;读FIFORAM命令
MOVAL,00H
OUTDX,AL;置键盘显示模式
MOVAL,80H
OUTDX,AL;写RAM命令
STI
KEY1:
CALLKET2;调键盘显示子程序CMPHOUR2,0AH
JZNEXT2
NEXT1:
CMPAL,0CH;是否“C”命令
JNZLP0
NEXT2:
MOVSIGH,00H
MOVHOUR2,00H
MOVHOUR1,00H
MOVMIN2,00H
MOVMIN1,00H
MOVSEC2,00H
MOVSEC1,00H
LP0:
CMPAL,0EH;是否“E”命令
JNZLP1
MOVSIGH,00H
CLI
MOVDX,INTA01
INAL,DX
OUTDX,AL
STI
MOVAX,4C00H;是“E”命令返回DOSINT21H
LP1:
CMPAL,10H;是否“G”命令
JNZLP2
MOVSIGH,01H
JMPKEY1
LP2:
CMPAL,0DH;是否“D”命令
JNZSETI
MOVSIGH,00H
KEY3:
JMPKEY1
SETI:
CMPAL,12H;是否“P”命令
JNZKET1
MOVSIGH,00H;“00”为预置时标志
MOVHMS,00H
CALLHIGH0
CMPERR1,01H
JZKEY3
CALLLOW0
CMPERR1,01H
JZKEY3
MOVHMS,11H;“11”为预置分标志CALLHIGH0
CMPERR1,01H
JZKEY3
MOVHMS,22H;“22”为预置秒标志CALLHIGH0
CMPERR1,01H
JZKEY3
CALLLOW0