用8253和8259中断做电子时钟
更新时间:2023-11-06 13:41:01 阅读量: 教育文库 文档下载
实验报告
开课学院及实验室:
学院 年级、专业、班级 姓名 zhirongguo 学号 成绩 指导 老师 实验课程名称 实验项目名称 一、实验目的 微型计算机原理和接口技术 实验六 电子钟实验 1、进一步掌握8253定时器的使用和编程方法。 2、进一步掌握8259中断控制器的编程方法。 3、进一步掌握数码显示电路的驱动方法。
二、实验器材
计算机,汇编相关程序,WAVE6000实验仿真器
三、实验原理
利用8253定时器、8259中断控制器和实验箱上提供的数码显示电路,设计一个电子时钟。格式如下:XX XX XX 由左向右分别为:时、分、秒
定时器每100us中断一次,在中断服务程序中,对中断次数进行计数,100us计数10000次就是1秒。然后再对秒计数得到分和小时值,并送入显示缓冲区。
四、实验步骤
(1) 在实验箱断电的情况下连好线。 连线 1 2 3 4 5 连接孔1 KEY/LED_CS 8253_CS 8253的GATE1 8253的CLK1 4MHZ 连接孔2 CS0 CS4 +5V 1MHZ Fin
连线 6 7 8 9 10 连接孔1 8253的OUT1 8259_CS 右8259的INT 右8259的SP/EN 连接孔2 右8259的IR0 CS5 8088的INTR (在CPU的左侧) +5V
(2) 输入自编程序并检查,保存程序。 (3) 调试程序。
(4) 记录实验结果及分析。
五、实验参考程序、框图 开始 置定时器模式及常数 设置初始常数 启动定时器 读取小时值 转换成显示数据 显示数据送缓冲 读取分钟值 转换成显示数据 显示数据送缓冲 读取秒值 转换成显示数据 显示数据送缓冲 调用显示子程序 主程序框图 CONTROL equ 0c003h COUNT0 equ 0c000h COUNT1 equ 0c001h COUNT2 equ 0c002h md8255 equ 82h ; 8255 工作方式 PA8255 equ 8000h ; 8255 PA口输出地址
中断入口 保护现场 10000次计数值减1 否 计数值为0 是 设置下次10000次计数值 秒值加1 到60秒 否 是 秒值清0,分钟加1 否 到60分钟 分值清0,小时加1 否 到24小时 小时值清0 恢复现场 中断返回 100us定时中断服务程序 CTL8255 equ 8003h ; ICW4 8255 控制口地址 ICW2 equ 00100000b OUTBIT equ 08002h ; 位控制中断号为20H 口 ICW4 equ 00000001b OUTSEG equ 08004h ; 段控工作在8086/88 方式 制口 OCW1 equ 11111110b ICW1 equ 00010011b ; 只响应INT0 中断 单片8259, 上升沿中断, 要写CS8259A equ 0d000h ; ; ; ;
8259地址
CS8259B equ 0d001h data segment CNT db 0
LEDBuf db 6 dup(?) ; 显示缓冲
Num db 1 dup(?) ; 显示的数据
DelayT db 1 dup(?) Hour db 0 Minute db 0 Second db 0
LEDMAP: ; 八段管显示码
db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h data ends code segment
assume cs:code, ds: data Delay proc near
push ax ; 延时子程序
push cx mov al, 0 mov cx,ax loop $ pop cx pop ax ret Delay endp DisplayLED proc near
mov bx, offset LEDBuf mov cl, 6 ; 共6个八段管
mov ah, 00100000b ; 从左边开始显示 DLoop:
mov dx, OUTBIT mov al, 0
out dx,al ; 关所有八段管
mov al, [bx]
mov dx, OUTSEG out dx,al mov dx, OUTBIT mov al, ah
out dx, al ; 显示一位八段管 push ax mov ah, 1 call Delay pop ax shr ah, 1 inc bx dec cl jnz DLoop mov dx, OUTBIT mov al, 0
out dx,al ; 关所有八段管 ret DisplayLED endp IEnter proc near push ax push dx inc Second mov al, Second cmp al, 60 jne Exit mov Second, 0 inc Minute mov al, Minute cmp al, 60 jne Exit mov Minute, 0 inc Hour mov al, Hour cmp al, 24 jne Exit mov Hour, 0 Exit:
mov dx, CS8259A mov al, 20h ; 中断服务程序结束指令 out dx, al pop dx
pop ax iret IEnter endp IInit proc
mov dx, CS8259A mov al, ICW1 out dx, al mov dx, CS8259B mov al, ICW2 out dx, al mov al, ICW4 out dx, al mov al, OCW1 out dx, al ret IInit endp start proc near mov ax, data mov ds, ax mov Hour, 0 mov Minute, 0 mov Second, 0 cli
mov ax, 0 mov ds, ax mov al, 76h;
01110110B ; 计数器1,16位,方式3,二进制
mov dx, CONTROL out dx, al mov ax, 62500 mov dx, COUNT1 out dx,
al ; 计数器低字节 mov al, ah out dx,
al ; 计数器高字节 mov al, MD8255 mov dx, CTL8255 out dx, al mov bx,
4*ICW2 ; 中断号 mov ax, code shl ax,
4 ; x 16
add ax, offset IEnter ; 中断入口地址(段地址为0) mov [bx], ax mov ax, 0 inc bx inc bx mov [bx],
ax ; 代码段地址为0 call IInit mov ax, data mov ds, ax mov CNT,
0 ; 计数值初始为0
mov al, CNT mov dx, PA8255 out dx, al sti
LP: ; 等待中断,并计数。 mov al, Hour mov ah, 0 mov cl, 10 div cl mov ch, ah mov ah, 0 mov bx, offset
LEDMAP
add bx, ax mov al, [bx] mov LEDBuf, al mov bx, offset LEDMAP
mov al, ch mov ah, 0 add bx, ax mov al, [bx] or al, 80h mov LEDBuf+1, al mov al, Minute mov ah, 0 mov cl, 10 div cl mov ch, ah mov ah, 0 mov bx, offset LEDMAP
add bx, ax mov al, [bx] mov LEDBuf+2, al mov bx, offset LEDMAP
mov al, ch mov ah, 0 add bx, ax
mov al, [bx] or al, 80h mov LEDBuf+3, al mov al, Second mov ah, 0 mov cl, 10 div cl mov ch, ah mov ah, 0 mov bx, offset LEDMAP
add bx, ax mov al, [bx] mov LEDBuf+4, al mov bx, offset LEDMAP
mov al, ch mov ah, 0 add bx, ax mov al, [bx] or al, 80h mov LEDBuf+5, al call DisplayLED jmp LP start endp code ends end start
六、实验结果分析
1. 写出实验现象及原因。
实验现象:显示屏亮,刚开始可以看到八段管的第六个管开始显示数字,计时开始,每秒加1,实现了时钟效果。
现象的原因分析:程序写入控制字与计数初值后,定时器启动工作,当计数器减到1时,输出端输出一个CLK周期的低电平,向CPU申请中断,当达到100次时,则输出端输出1s,向CPU申请中断,其中一个数码管显示,当计数到60s时,输出端向CPU申请中断,由另一数码管显示1min,同理由数码管显示1h,CPU处理,使数码管的显示发生变化。电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,依次对秒、分、小时寄存器的内容加一时,六个数码管动态显示时、分、秒的当前值。最大记时59:59:59超过这个时间时分秒位都清零从00:00:00重新开始。 2. 如何调整输出周期,使其2秒输出一次? 修改start段的mov ax,62500为mov ax,125000,修改后理论上是可以实现2秒输出一次,但是实际上并不可以。因为ax储存的十六进制数只是由16个二进制数组成的,62500(10)=1111010000100100(2),而12500(10)=11000011010100(2)超过了其储存范围,所以是不可以实现的。 此程序最多可以每隔1111111111111111(2)=65535(10),即1.04856秒输出。
正在阅读:
用8253和8259中断做电子时钟11-06
招商人员薪酬和佣金提成激励方案05-13
逆波兰转换C语言(带注释)12-16
关于校园安全的作文02-05
电动汽车驱动系统的仿真分析08-17
未来的垃圾箱作文400字06-29
法律制度有效性条件分析04-30
淄川区技术难题项目需求及人才需求汇编04-30
你是我最感激的人作文500字07-14
少年宫阅读活动实施方案03-10
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 时钟
- 中断
- 电子
- 8253
- 8259
- 1200立方米含油污水处理工程设计方案
- 《微机原理与应用》第一次作业答案
- 无人值守过磅管理系统(2016)解决方案 - 图文
- 剑桥阅读真题变身雅思写作素材九
- 2016-2020年中国现代服务业深度调研及投资前景预测报告
- 牧草加工项目 - 图文
- 电子商务概论(宋文官)1-3配套习题
- 做个文明的旅游者(教案)
- 征地计划书
- 四年级科学(上)题纲01.zip
- 新视界大学英语第3册第3单元课文翻译及练习答案
- 塔吊防台风方案和应急救援预案 - 图文
- 江苏省省级水利工程维修养护经费使用管理办法(试行)
- 首次执行企业会计准则指南
- 函电介词填空
- 2011年证券从业资格考试《基础知识》考点一
- 开发公司各部门职能及岗位职责
- 第九章(人力资源管理)习题 文档
- 古代汉语期末考试试题和答案
- 2016年国内外食品安全事件概况及新食品安全法解读