汇编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)
输入时依次为分、秒、百分秒,同时应有判断输入错误的能力,若输入有错,则显示:
E-----,此时敲P键可重新输入预置值。
5.E键:
程序退出,返回DOS
接线方法
实验台上8253CLK0接1MHz,GATE0和GATE1接+5V,OUT0接CLK1,OUT1接IRQ.CS接
280H~287H.
三、编程提示
程序流程
秒表工作原理
中断处理子程序:
预置秒表各段高位子程序:
预置秒表各段低位子程序LOW0
源程序:
INTA00EQU20H;
8259A口地址
INTA01EQU21H;
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?
DB…D--STOPTHEDISPLY;
E—EXIT?
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
MOVAL,AH
MOVDX,TIMEC
MOVAL,74H
MOVAX,10
MOVDX,TIME1;
定时器每0.1S中断1次OUTDX,AL
MOVAX,STACK
MOVSS,AX
MOVSP,TOP
MOVDX,OFFSETMES
MOVAH,09
INT21H
MOVAX,CS
MOVDX,OFFSETINT_PROC
MOVAX,250FH
INT21H;
置IRQT中断向量
MOVDX,INTA01
ANDAL,7FH
MOVDX,PORT1
MOVAL,0D3H
OUTDX,AL;
8279清零
MOVAL,2AH
置8279时钟命令
MOVAL,40H
读FIFORAM命令
MOVAL,00H
置键盘显示模式
MOVAL,80H
写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
INAL,DX
MOVAX,4C00H;
是“E”命令返回DOSINT21H
LP1:
CMPAL,10H;
是否“G”命令
JNZLP2
MOVSIGH,01H
JMPKEY1
LP2:
CMPAL,0DH;
是否“D”命令
JNZSETI
KEY3:
JMPKEY1
SETI:
CMPAL,12H;
是否“P”命令
JNZKET1
MOVSIGH,00H;
“00”为预置时标志
MOVHMS,00H
CALLHIGH0
CMPERR1,01H
JZKEY3
CALLLOW0
MOVHMS,11H;
“11”为预置分标志CALLHIGH0
MOVHMS,22H;
“22”为预置秒标志CALLHIGH0