微机原理与接口技术课程方案设计书报告电子钟.docx

上传人:b****3 文档编号:2887387 上传时间:2022-11-16 格式:DOCX 页数:19 大小:44.27KB
下载 相关 举报
微机原理与接口技术课程方案设计书报告电子钟.docx_第1页
第1页 / 共19页
微机原理与接口技术课程方案设计书报告电子钟.docx_第2页
第2页 / 共19页
微机原理与接口技术课程方案设计书报告电子钟.docx_第3页
第3页 / 共19页
微机原理与接口技术课程方案设计书报告电子钟.docx_第4页
第4页 / 共19页
微机原理与接口技术课程方案设计书报告电子钟.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术课程方案设计书报告电子钟.docx

《微机原理与接口技术课程方案设计书报告电子钟.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程方案设计书报告电子钟.docx(19页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术课程方案设计书报告电子钟.docx

微机原理与接口技术课程方案设计书报告电子钟

微机原理与接口技术课程设计报告

——电子钟实验

学院:

计算机学院

指导教师:

马学文

 

一实验任务及要求

任务:

1、掌握综合使用基本输入输出设备、通用接口芯片、专用接口芯片的方法;

2、掌握实时处理程序的编制和调试方法。

要求

设计一个定时显示装置,用实验仪左侧的六个LED数码管显示时间,时间显示格式为24小时制。

分秒值为59分55秒时开始报时,每秒钟蜂鸣器鸣叫一声,到整点报时停止。

0

1

2

3

4

5

6

7

8

9

G

S

 

用小键盘控制时钟的启停和时钟的设置,键的定义参见上图

键值具体定义如下:

G键(启停键)——程序启动后,按下该键时钟启动;再次按下该键,暂停计时,显示当前时间。

S键(设置键)——按下S键后,为时钟设置时、分、秒初始值。

 

二硬件连线

键盘的控制、LED显示模块:

采用74系列模块控制

键盘的行信号Q_0、Q_1、Q_2、Q_3分别与开放的输入信号Q0、Q1、Q2、Q3相连,键盘的列信号P_0、P_1、P_2和开放的输出信号P0、P1、P2相连。

74芯片的片选信号CS1接地址译码信号340H,CS2接地址译码信号360H。

时间的精确定时:

用8254定时器0产生25ms的中断信号;

8254的片选CS连地址输出端320H,A0,A1分别连地址总线A2,A3,GATE0连+5V,CLK0连74LS393分频输出的47K输出端,OUT0连接到8259的IRQ0

整点报时控制:

由8255模块控制;

PC0直接与蜂鸣器相连,CS_4连接到实验仪中部的地址输出端CS_4

中断处理模块:

由8259控制

8259的片选CS-1连地址输出300H,INT1连总线输入INTR,8259模块的INT-A连总线的INTA,8259的SP/1连+5V,8259的IRQ0连接到8254的OUT0。

 

三、程序流程图

主程序

 

初始化各阶段寄存器及相关变量

初始化8254、8259、8255芯片

设置中断向量、开放8259中断屏蔽

 

开放处理器中断

扫描键盘

 

G键S键其他键

Stop值取反

Stop置0FF

调用键盘扫描程序设置当前时分秒值

Stop置为0

 

 

 

中断服务程序

保护现场

判断时间是否不小于59分55秒

报时

扫描键盘

G键?

调用启停子程序

S键?

调用设置时间子程序

COUNT加1

COUNT=40?

修改时间,调用ADDONE子程序

COUNT清0

显示时间,调用显示时间子程序

结束中断(发EOI命令)

恢复现场

中断返回

 

四、实验源代码

.486p

DATASEGMENTAT0USE16

ORG1000H

HOURDW?

MINDW?

SECDW?

SLLDB?

COUNTDB?

DATAENDS

CODESEGMENTUSE16

ASSUMECS:

CODE,DS:

DATA

ORG1500H

BEG:

JMPSTART

TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,00H。

0~F的共阴极七段译码表00H表示不显示任何东西

KEYCODDB0EEH,0DEH,0BEH,0EDH,0DDH,0BDH,0EBH,0DBH,0BBH,0E7H,0D7H,0B7H。

行列编码值

KEYVALDB0,1,2,3,4,5,6,7,8,9,0AH,0BH。

所有键的键面值

PORT1EQU340H。

数码管段选端口

PORT2EQU360H。

数码管位选端口,键盘矩阵的行列端口

START:

MOVEAX,60000000H

MOVCR0,EAX

MOVAX,DATA

MOVDS,AX

MOVHOUR,0203H。

小时分钟以及秒的初始化

MOVMIN,0509H

MOVSEC,0502H

LEABX,TAB

MOVSLL,0。

开始暂停标志位置0

MOVCOUNT,0。

中断次数计数初始值为0

8255初始化,用于产生报时的脉冲

MOVEAX,80808080H。

控制字

MOVDX,20CH。

后面的是4个8255的控制端口20C-20F(这个地址由实验台决定)

OUTDX,EAX。

初始化8255,A、B、C口均为方式0输出

MOVDX,20BH

MOVAL,0FFH

OUTDX,AL

8254初始化,用于产生周期为25ms的中断

MOVAL,00110110B。

计数器0,先低后高,方式三,二进制

MOVDX,32cH。

写往控制口

OUTDX,AL

MOVDX,320H。

计数器0写初值:

47KHz*25ms

MOVAX,1175

OUTDX,AL

MOVAL,AH

OUTDX,AL

8259初始化

CLI:

关中断

MOVDX,300H。

ICW1

MOVAL,00010011B

OUTDX,AL

MOVDX,308H。

ICW2

MOVAL,08H。

IR0中断类型号为08H

OUTDX,AL

MOVAL,00000001B。

ICW4

OUTDX,AL

MOVAL,0FEH。

IR0开屏蔽

OUTDX,AL

XORAX,AX。

装载中断向量

MOVES,AX

MOVDI,08H*4

MOVAX,OFFSETINTSR

MOVES:

[DI],AX

MOVAX,SEGINTSR

MOVES:

[DI+2],AX

STI。

开中断

JMP$

INTSRPROC。

中断服务程序

CMPMIN,0509H。

比较当前时间是否在59分55秒~00分00秒之间

JLNEXT1

CMPSEC,0505H

JLNEXT1

MOVDX,20BH

MOVAL,00H。

蜂鸣器低有效,报时

OUTDX,AL

JMPNEXT2

NEXT1:

CMPMIN,0

JNENEXT3

CMPSEC,0

JNENEXT3

MOVDX,20BH

MOVAL,00H。

蜂鸣器低有效,报时

OUTDX,AL

JMPNEXT2

NEXT3:

MOVDX,20BH

MOVAL,0FFH

OUTDX,AL

NEXT2:

CMPCOUNT,20。

用8255产生0.5ms的蜂鸣

JLENEXT4

MOVDX,20BH

MOVAL,0FFH

OUTDX,AL

NEXT4:

CMPSLL,0

JZLOB

CALLTSTART

LOB:

CALLKEYCHECK。

检测有无键按下

CMPAL,0AH。

启停键按下,调用启停程序

JNZNEXT5

CALLTSTART

JMPNEXT6

NEXT5:

CMPAL,0BH。

设置键按下,调用设置时间程序

JNZNEXT6

CALLSETTIME

NEXT6:

INCCOUNT。

当COUNT直为40时,加一秒,之后置0

CMPCOUNT,40。

25ms*40=1s

JBNEXT7

CALLADDONE

MOVCOUNT,0

NEXT7:

CALLSHOW。

显示时间

MOVAL,20H。

发EOI命令,结束中断

MOVDX,300H

OUTDX,AL

IRET

INTSRENDP

 

TSTARTPROC;控制时间暂停和开始。

CMPSLL,0

JNZR1

DECSLL

R1:

CALLKEYCHECK

CMPAL,0AH

JZR2

CALLSHOW

JMPR1

R2:

INCSLL

RET

TSTARTENDP

 

ADDONEPROC。

加1秒子程序

MOVAX,SEC。

当前秒个位为9,加1后变0,十位加1

CMPAL,9

JEN1

INCAL

MOVSEC,AX

JMPN6

N1:

INCAH

MOVAL,0

CMPAH,6。

十位加1后为6,则秒变为00,分钟个位加1

JEN2

MOVSEC,AX

JMPN6

N2:

MOVAX,0

MOVSEC,AX

MOVAX,MIN。

当前分钟个位为9,加1后变0,十位加1

CMPAL,9

JEN3

INCAL

MOVMIN,AX

JMPN6

N3:

INCAH

MOVAL,0

CMPAH,6。

十位加1后为6,则分钟变为00,小时个位加1

JEN4

MOVMIN,AX

JMPN6

N4:

MOVAX,0

MOVMIN,AX

MOVAX,HOUR

INCAL

CMPAX,0204H。

小时加1后与24比,相等,则变为0

JEN5

MOVHOUR,AX

JMPN6

N5:

MOVAX,0

MOVHOUR,AX

N6:

RET

ADDONEENDP

SETTIMEPROC。

设置时间子程序

LEABX,TAB

MOVHOUR,0

MOVMIN,0

MOVSEC,0

NOP

NOP

L1:

CALLKEYCHECK。

调用KEYCHECK,无键按下时,AL中值为0CH

CALLDELAY

CMPAL,0CH

JNZL2

JMPL1

L2:

CMPAL,02H

JGL1。

设置小时十位时,将其他各位数码管灭掉及对应的七段译码表0CH

MOVAH,AL

MOVBYTEPTR[HOUR+1],AL

MOVBYTEPTR[HOUR],0CH

MOVMIN,0C0CH

MOVSEC,0C0CH

L3:

CALLSHOW

CALLKEYCHECK。

设置小时的个位

CALLDELAY

CMPAL,0CH

JZL3

MOVAH,BYTEPTR[HOUR+1]

L4:

CMPAX,0204H

JGEL1

MOVHOUR,AX

L5:

CALLSHOW

CALLKEYCHECK。

设置分钟的十位

CALLDELAY

CMPAL,0CH

JZL5

L6:

CMPAL,06H

JGEL1

MOVAH,AL

MOVBYTEPTR[MIN+1],AL

L7:

CALLSHOW

CALLKEYCHECK。

设置分钟的个位

CALLDELAY

CMPAL,0CH

JZL7

MOVAH,BYTEPTR[MIN+1]

L8:

CMPAX,0509H

JGL1

MOVMIN,AX

L9:

CALLSHOW

CALLKEYCHECK。

设置秒的十位

CALLDELAY

CMPAL,0CH

JZL9

L10:

CMP

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1