8086数字电子钟的设计 附程序代码文档格式.docx
- 文档编号:20500694
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:21
- 大小:464.88KB
8086数字电子钟的设计 附程序代码文档格式.docx
《8086数字电子钟的设计 附程序代码文档格式.docx》由会员分享,可在线阅读,更多相关《8086数字电子钟的设计 附程序代码文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
图1.1七段数码管
图1.2伟福实验台六位LED的电路图及寻址空间
实验箱提供了6位八段数码LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。
将KEY/LEDCS接到CS0上,则实验箱中八位段码输出地址为08004H,位码输出地址为08002H。
实验箱提供了一个6×
4的小键盘,将KEY/LEDCS信号接到CS0上,则列扫描地址为08002H,行码地址为08001H。
向列扫描码地址逐列输入低电平,然后从行码地址读回。
如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。
这样就可以通过输出的列码和读取的行码来判断按下的是什么键。
在判断有键按下后,要有一定的时延,防止键盘抖动。
2.硬件连接
图2.1伟福实验台内部总线连接
8253用定时器/计数器1,8253片选接CS1,地址为09000H,8253时钟源CLK1接分频电路的F/64输出,频器的Fin接4MHz时钟,8253的GATE1接VCC;
8259中断INT0接8253的OUT1,片选接CS2,地址为0A000H。
显示电路的KEY/LEDCS接CS0,地址为08000H。
如下图:
D.运行界面
三、课程设计总结或结论
四、参考文献
[1]王保义,张少敏接口与通信.北京-中国电力出版社,2008
[2]沈美明,温冬婵IBM-PC汇编语言程序设计.清华大学出版社,第二版.2002
[3]陆红伟微机原理实验与课程设计指导书.中国电力出版社,2006.8
附录(设计流程图、程序等)
CONTROLEQU09003H
COUNT1EQU09001H
IN_KEYEQU08001H;
键盘读入口
OUTBITEQU08002H;
位控制口
OUTSEGEQU08004H;
段控制口
ICW1EQU00010011B;
单片8259,上升沿中断,要写ICW4
ICW2EQU00100000B;
中断号为20H
ICW4EQU00000001B;
工作在8086/88方式
OCW1EQU11111110B;
只响应INT0中断
CS8259AEQU0A000H;
8259地址
CS8259BEQU0A001H
DATASEGMENT
CNTDB0;
闹铃显示
RHOURDB1
RMINUTEDB0
HOURDB0
MINUTEDB0
SECONDDB0
NUMDB0;
判断闹铃
LEDBUFDB6DUP(?
);
显示缓冲
RINGBUFDB6DUP(?
)
SETBUFDB6DUP(?
LEDMAP:
;
八段管显示码
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
KEYTABLE:
;
键码定义
DB16H,15H,14H,0FFH
DB13H,12H,11H,10H
DB0DH,0CH,0BH,0AH
DB0EH,03H,06H,09H
DB0FH,02H,05H,08H
DB00H,01H,04H,07H
SET:
DB6DH,79H,07H,01H,00H,00H;
字符显示SET
BELL:
DB7FH,79H,38H,38H,00H,00H;
字符显示BELL
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
DELAYPROCNEAR
PUSHAX;
延时子程序
PUSHCX
MOVAL,0
MOVCX,AX
LOOP$
POPCX
POPAX
RET
DELAYENDP
DISPLAYLEDPROCNEAR
MOVCL,6;
共6个八段管
MOVAH,00100000B;
从左边开始显示
DLOOP:
MOVDX,OUTBIT
MOVAL,0
OUTDX,AL;
关所有八段管
MOVAL,[BX]
MOVDX,OUTSEG
OUTDX,AL
MOVDX,OUTBIT
MOVAL,AH
OUTDX,AL;
显示一位八段管
PUSHAX
MOVAH,01H
CALLDELAY
SHRAH,1
INCBX
DECCL
JNZDLOOP
OUTDX,AL;
DISPLAYLEDENDP
TESTKEYPROCNEAR
输出线置为0
MOVDX,IN_KEY
INAL,DX;
读入键状态
NOTAL
ANDAL,0FH;
高四位不用
TESTKEYENDP
GETKEYPROCNEAR
MOVCH,00100000B
MOVCL,6
KLOOP:
MOVAL,CH;
找出键所在列
OUTDX,AL
SHRCH,1
INAL,DX
ANDAL,0FH
JNEGOON_;
该列有键入
JNZKLOOP
MOVCL,0FFH;
没有键按下,返回0FFH
JMPEXIT1
GOON_:
SHLCL,2;
键值=列*4+行
MOVCH,4
LOOPC:
TESTAL,1
JNZEXIT1
SHRAL,1
INCCL
DECCH
JNZLOOPC
EXIT1:
MOVCH,0
MOVBX,OFFSETKEYTABLE
ADDBX,CX
MOVAL,[BX];
取出键码
MOVBL,AL
WAITRELEASE:
等键释放
MOVAH,10
CALLTESTKEY
JNEWAITRELEASE
MOVAL,BL
GETKEYENDP
IENTERPROCNEAR
PUSHDX
MOVNUM,0
INCSECOND
MOVAL,SECOND
CMPAL,60
JNEJ0
MOVSECOND,0
INCMINUTE
MOVAL,MINUTE
MOVMINUTE,0
INCHOUR
MOVAL,HOUR
CMPAL,24
MOVHOUR,0
J0:
MOVAL,HOUR
CMPAL,RHOUR
JNEJ1
INCNUM
J1:
MOVAL,MINUTE
CMPAL,RMINUTE
JNEJ2
J2:
CMPNUM,2
JNEEXIT
MOVCNT,0EH
L33:
MOVDX,0D000H
OUTDX,AL
MOVBX,OFFSETBELL
CALLDISPLAYLED
DECCNT
JNEL33
EXIT:
MOVDX,CS8259A
MOVAL,20H;
中断服务程序结束指令
POPDX
IRET
IENTERENDP
IINITPROC
MOVAL,ICW1
MOVDX,CS8259B
MOVAL,ICW2
MOVAL,ICW4
MOVAL,OCW1
IINITENDP
STARTPROCNEAR
MOVAX,DATA
MOVDS,AX
MOVNUM,0
MOVLEDBUF,03FH;
显示00.00.00
MOVLEDBUF+1,03FH
MOVLEDBUF+2,03FH
MOVLEDBUF+3,03FH
MOVLEDBUF+4,03FH
MOVLEDBUF+5,03FH
CLI;
关中断
MOVAX,0
MOVAL,76H;
01110110B;
计数器1,16位,方式3,二进制
MOVDX,CONTROL
MOVAX,65500
MOVDX,COUNT1
计数器低字节
计数器高字节
MOVBX,4*ICW2;
中断号
MOVAX,CODE
SHLAX,4;
*16
ADDAX,OFFSETIENTER;
中断入口地址(段地址为0)
MOV[BX],AX
INCBX
INCBX
MOV[BX],AX;
代码段地址为0
CALLIINIT
STI;
开中断
LOOP2:
MOVAH,0
MOVCL,10
DIVCL
MOVCH,AH
MOVBX,OFFSETLEDMAP
ADDBX,AX
MOVLEDBUF,AL
MOVAL,CH
ORAL,80H
MOVLEDBUF+1,AL
MOVLEDBUF+2,AL
ORAL,80H
MOVLEDBUF+3,AL
JMPL3
LOOP1:
JMPLOOP2
L3:
MOVLEDBUF+4,AL
MOVLEDBUF+5,AL
MOVBX,OFFSETLEDBUF
D0:
MOVBX,OFFSETLEDBUF
CALLDISPLAYLED;
显示
CALLTESTKEY;
有键入?
JELOOP1;
无键入,继续显示
CALLGETKEY;
读入键码
显示键码
MOVAH,0
CMPAL,0AH
JESET0
CMPAL,0BH
JEBELL01
CMPAL,0CH
JESTOP1
CMPAL,0DH
JECLEAR1
JMPD0
STOP1:
CLI
STOP2:
JESTOP2
CALLGETKEY
CMPAL,0CH
JNESTOP2
STI
CLEAR1:
MOVHOUR,0
MOVMINUTE,0
MOVSECOND,0
SET0:
MOVBX,OFFSETSET
JESET0
MOVSETBUF[0],AL
MOVBX,OFFSETLEDMAP
ADDBX,AX
MOVAL,[BX]
MOVLEDBUF,AL
SET1:
MOVBX,OFFSETLEDBUF
CALLDISPLAYLED
CALLTESTKEY
JESET1
CALLGETKEY
ANDAL,0FH
MOVAH,0
MOVSETBUF[1],AL
MOVLEDBUF+1,AL
JMPSET2
BELL01:
JMPBELL02
SET2:
JESET2
MOVSETBUF[2],AL
MOVLEDBUF+2,AL
SET3:
JESET3
MOVSETBUF[3],AL
MOVLEDBUF+3,AL
JMPSET6
BELL02:
JMPBELL03
SET6:
JESET6
CMPAL,0AH
JETIMESET
JMPD0
TIMESET:
MOVAL,SETBUF[0]
MOVCL,10D
MULCL
MOVBL,SETBUF[1]
ADDAL,BL
MOVHOUR,AL
CMPHOUR,24
JLLP1
MOVHOUR,0
LP1:
MOVAL,SETBUF[2]
MOVBL,SETBUF[3]
MOVMINUTE,AL
CMPMINUTE,60
JLLP2
MOVMINUTE,0
LP2:
MOVSECOND,0
BELL03:
MOVBX,OFFSETBELL
CALLDISPLAYLED;
CALLTESTKEY;
JEBELL03;
CALLGETKEY;
ANDAL,0FH;
MOVRINGBUF[0],AL
BELL1:
JEBELL1;
MOVRINGBUF[1],AL
BELL2:
JEBELL2;
MOVRINGBUF[2],AL
BELL3:
JEBELL3;
MOVRINGBUF[3],AL
BELL4:
JEBELL4
CMPAL,0BH
JEBELLSET
BELLSET:
MOVNUM,0
MOVAL,RINGBUF[0]
MOVBL,RINGBUF[1]
MOVRHOUR,AL
CMPRHOUR,24
JLLP3
MOVRHOUR,0
LP3:
MOVAL,RINGBUF[2]
MOVBL,RINGBUF[3]
MOVRMINUTE,AL
CMPRMINUTE,60
JLLP4
MOVRMINUTE,0
LP4:
STARTENDP
CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8086数字电子钟的设计 附程序代码 8086 数字 电子钟 设计 程序代码
![提示](https://static.bdocx.com/images/bang_tan.gif)