微机原理与接口设计课程设计闹钟设计.docx
《微机原理与接口设计课程设计闹钟设计.docx》由会员分享,可在线阅读,更多相关《微机原理与接口设计课程设计闹钟设计.docx(11页珍藏版)》请在冰豆网上搜索。
微机原理与接口设计课程设计闹钟设计
微机原理与接口设计课程设计闹钟设计
微机原理与接口技术
实验报告
学院:
计算机科学与技术学院
班级:
计算机科学与技术0903班
姓名:
一、课程题目:
闹钟设计
二、设计任务:
利用唐都实验箱,完成以下功能:
(1)设计一个钟表。
在数码管上显示时间。
(2)定时时间到,屏幕显示“getup!
”字符串。
(3)显示同时,流水灯闪烁,蜂鸣器响1秒钟。
三、设计方案:
1.主程序
在内存里存两个数,分别除10,用于数码管显示。
2.8253定时器的设计
用通道2做计数,clk接cpclk,1.193MHZ,工作在方式2,每次技术完毕进入IRQ7子程序。
1s的最大计数初值为:
1s/1/1193000s1193000D
由于AL最多8位,最大记到65536,小于1s的最大计数初值,所以给初值为11930D,在IRQ7子程序中给出计数次数100D,小于100时,中断返回,继续计数。
当等于100时响应中断。
3.8255输入输出B口输出,用于输出数码管的数;A口输出,低四位用于数码管片选,最高位用于蜂鸣器响,其他三位用于流水灯;C口输入,用于接收开关的数,通过除以60分别与内存中的分和秒比较
4.8259中断
IRQ0给内存中的数UU置1,从而控制在IRQ7中接收数据并比较,蜂鸣器响,流水灯亮。
如果比较相等给AA置1,从而给UU,AA置0。
IRQ7用于定义8253的计时个数,修改时间,1s内存中的秒加1,直到60,分加1。
5.接收数据用8253的C口接收数据,接收的是秒,除以60,余数是秒,商是分,分别和内存中的分和秒比较,都相等时,屏幕上显示getup,给DI和AA置1,控制蜂鸣器和流水灯。
6.蜂鸣器,流水灯
在IRQ7中的UU等于1时,也就是按下了开关,响应了IRQ0中断之后,每次中断都扫描开关,看是否到达给定的时间,到了的话给DI和AA置1,DI控制蜂鸣器和哪个流水灯亮,AA1时给UU和AA复位为0,以便下一次中断使用。
IRQ7中每次都call流水灯,只有当DI大于等于1时,DI才加1,第一次DI0时跳出流水灯程序;在主程序的display中,由于A口低四位同时片选,为了让蜂鸣器响1s钟并且给流水灯加延时,所以要对A口进行与控制,不对其控制时A口高四位输出全为1。
当DI等于2时蜂鸣器响,同时流水灯第一个灯亮,给AL与上10111111B,当DI等于3时,已经是下一秒钟了,蜂鸣器不响下一个流水灯亮,AL与上01011111B,同理DI等于4时AL与上01101111B,否则,就是其他数,蜂鸣器不响,流水灯全灭,当下一次中断时,再给DI置1。
四、硬线连接图:
用protues画出了基本的连线
五、程序流程图:
主程序
IRQ0
IRQ7
接收数据
流水灯
六、源程序:
STACKSEGMENTSTACK
DW64DUP?
STACKENDS
DATASEGMENTTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
GETDB'GETUP!
',0AH,0DH,00H
DW0000H
WWDW0000HBMDB00H
BFDB00H
UUDB00H
AADB00H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
PUSHDS;8259
MOVAX,0000H
MOVDS,AX
MOVAX,OFFSETIRQ7;;;;;IRQ7的中断初始化
ADDAX,2000H
MOVSI,003CH
MOV[SI],AX
MOVAX,0000H
MOVSI,003EH
MOV[SI],AX
MOVAX,OFFSETIRQ0;;;;;IRQ0的中断初始化
ADDAX,2000H
MOVSI,0020H
MOV[SI],AX
MOVAX,0000H
MOVSI,0022H
MOV[SI],AX
CLI
POPDS
MOVAL,00H
OUT21H,AL
MOVAL,89H;8255OUT63H,ALMOVCX,0000H;JISHU
MOVDI,0000H
MOVAL,10110100B;8253DINGSHI
OUT43H,AL
MOVAX,11930D
OUT42H,AL
MOVAL,AH
OUT42H,AL
MAIN:
CALLDISPLAYCALLCLEAR
JMPMAIN
DISPLAY:
STI;;;;数码管显示
PUSHAX
PUSHBX
MOVSI,3000H
MOVAX,
MOVBL,10D
DIVBL
MOV[SI],AH
MOV[SI+1],AL
MOVAX,WW
MOVBL,10D
DIVBL
MOV[SI+2],AH
MOV[SI+3],AL
MOVDL,0F7H
MOVAL,DL
AGAIN:
CMPDI,0002H;;;;;控制流水灯与掉其他位
JNZTT1
PUSHAX
ANDAL,10111111B
ORAL,00110000B
OUT60H,AL
POPAX
JMPTIAO
TT1:
CMPDI,0003H
JNZTT2
PUSHAX
ANDAL,01011111B
ORAL,01010000B
OUT60H,AL
POPAX
JMPTIAO
TT2:
CMPDI,0004H
JNZTTT
PUSHAX
ANDAL,01101111B
ORAL,01100000B
OUT60H,AL
POPAX
JMPTIAO
TTT:
PUSHAX
ANDAL,7FH
ORAL,01110000B
OUT60H,AL
POPAX
TIAO:
MOVAL,[SI]
MOVBX,OFFSETTABLE
ANDAX,00FFH
ADDBX,AX
MOVAL,[BX]
OUT61H,AL
CALLCLEAR
MOVAL,DL
TESTAL,01H
JZJIESHU
INCSI
RORAL,1
MOVDL,AL
JMPAGAIN
JIESHU:
POPBX
POPAX
RET
;;数码管全灭
CLEAR:
MOVAL,00H
OUT61H,AL
RET
IRQ7:
INCCX;;8253定时个数
CMPCX,100D
JZXIANSHI
MOVAL,20H
OUT20H,AL
IRET
;;数码管显示数据
XIANSHI:
PUSHAX
PUSHBX
MOVAX,
INCAX
MOV,AX
CMPAX,003CH
JNZCHULAI
MOVAX,0
MOV,AX
MOVBX,WW
INCBX
MOVWW,BX
CMPBX,003CH
JNZCHULAI
MOVBX,0
MOVWW,BX
CHULAI:
MOVCX,0000H;JISHU
MOVAL,20H
OUT20H,AL
CMPUU,01H
JNZUUU
CALLJIES
UUU:
POPBX
CMPAA,01H
JNZHH
MOVUU,00HMOVAA,00H
HH:
CALLLSD
POPAXIRET
;;从开关接受时间
JIES:
PUSHAX
PUSHBX
INAL,62H;JIESHOUSHIJIAN
ANDAX,00FFH
MOVBL,60D
DIVBL
MOVBM,AH
MOVBF,AL
;;比较秒
MOVAL,BM
ANDAX,00FFH
CMPAX,
JNZPP
;;比较分
MOVAL,BF
ANDAX,00FFH
CMPAX,WW
JNZPP
;;A口高位输出为1,蜂鸣器响
;;;MOVAL,0F0H
;;ORAL,00110000B
;;OUT60H,AL
CALLGETUP
MOVDI,0001H
MOVAA,01H
PP:
;;;;CALLLSD
POPBX
POPAX
RET
;;流水灯
LSD:
PUSHAX
CMPDI,0000H
JZT2
T1:
INCDI
T2:
POPAX
RET
;;屏幕显示getup
GETUP:
MOVAH,06H
MOVBX,OFFSETGET
INT10H
RET
IRQ0:
PUSHAX
MOVUU,01H
MOVAL,20H
OUT20H,AL
POPAX
IRET
CODEENDS
ENDSTART
七、心得与体会: