微机原理与接口技术
实验报告书
学院:xxx
1
班级:xxx 学号:xxx 姓名:xxx 指导老师:xxx
目录
1 实验目的 ................................................ 3
2 实验器材 ................................................ 3
3 实验内容及要求..................................... 3
4 实验原理 ................................................ 4
2
5 编程提示 ................................................ 4
6 实验步骤 ................................................ 5
7 实验总结 .............................................. 11
实验:可编程计数/定时器(8253)扩展
一.实验目的
1.了解8253工作方式的特点和功能; 2.熟悉并掌握计数/定时器8253的编程方法; 3.熟悉并掌握中断控制器8259的编程方法; 4.掌握定时器中断初始化及编程方法。
3
二.实验器材
1.PC机;
2.PD32实验系统; 3.元器件:
计数/定时器8253; 中断控制器8259; 七段码显示器及驱动电路; PC总线。
三.实验内容及要求
试设计能实现电子钟功能的硬件线路和应用程序。 1.设计用8253实现电子钟,定时中断控制电子钟走时; 2.通过七段码显示器观察电子钟变化,时、分、秒在七段码显示器上从左到右各占2位;
3.电子钟的初始值可在实验环境下由外部送入:小时数放在内存4040H、分钟数放在内存4041H、秒钟数放在内存4042H内。
四.实验原理
利用8253定时产生中断,通过调整8253定时中断的时间即可精确调节电子钟的走时精确度。
4
五.编程提示
1.8253的端口地址为 地址控制口:30C H;; 计数器1:300H; 计数器2:304H; 计数器3:308H;
2.8259偶地址:3A0H,奇地址:3A8H; 3.对8253的编程分两部分: ⑴向控制字寄存器写入方式控制字;
⑵根据输入时钟频率向规定的通道写入计数值;
4.如果输入时间的初始值为BCD码,则应在时、分、秒值加1后进行DAA调整;
如果输入时间的初始值为二进制数,则应在拆字子程序中进行二进制到BCD的调整。
六.实验步骤
1.按实验要求设计实验硬件线路并连接该硬件线路; 2.编辑按实验要求设计的汇编语言源程序并汇编、连接成可执行文件;
源程序:
5
.486
DATA SEGMENT AT 0 USE16 ZDXL EQU 20H ;中断向量(20H) OPORT EQU 3A0H ;8259偶地址 JPORT EQU 3A8H ;8259奇地址 PORT1 EQU 340H ;段地址 PORT2 EQU 360H ;位地址 DS0 DSC COUNT
ORG DATA1 ORG DATA2 DATA
CODE BEG: TAB TIMER
START: INIT8253:
EQU 300H ;8253通道0 EQU 30CH ;8253控制口 EQU 50 ;延时、计数终值。50次乘以20毫秒;等于1秒。时钟3Mhz
4000H
DB 6 DUP(?) ;显示缓冲区 4040H
DB 3 DUP(?) ;时、分、秒暂存区 ENDS SEGMENT USE16
CS:CODE,DS:DATA,ES:DATA ORG 2000H CLI
JMP START DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,
DB 7FH,67H,77H,7CH,39H,5EH,79H,71H ;段码表
DB 0 ;延时、计数初值
MOV AX,DATA ;初始化 MOV DS,AX MOV AX,0 MOV SS,AX MOV SP,1000H MOV DATA2,01H MOV DATA2+1,58H MOV DATA2+2,04H MOV AL,0C0H MOV DX,PORT2 OUT DX,AL 6
ASSUME
MOV DX,DSC ;8253初始化,端口地址 MOV AL, 36H ;方式3,方波发生器 OUT DX,AL ;8053通道0地址 MOV DX,DS0 MOV AL,0BH ;先读/装入低字节 OUT DX,AL MOV AL,0E9H ;后读/装入高字节 OUT DX,AL
SETVECT:
MOV DI,0
MOV DX,OFFSET SERVER ;中断服务子程序偏移地址
;送中断向量低位
MOV ZDXL[DI],DX MOV DX,CS ;中断服务子程序段地址
;送中断向量高位
MOV ZDXL[DI+2],DX
INIT8259:
MOV AL,00010011B ;ICW1 MOV DX,OPORT OUT DX,AL
MOV AL,00001000B ;ICW2 MOV DX,JPORT OUT DX,AL
MOV AL,00001101B ;ICW4 MOV DX,JPORT OUT DX,AL
MOV AL,11111110B ;OCW1 MOV DX,JPORT OUT DX,AL MOV AL,20H ;EOI(20H) MOV DX,OPORT OUT DX,AL AGAIN:
STI ;开中断 CALL CZ ;调拆字 CALL DISP ;调显示 JMP AGAIN
CZ PROC
PUSH CX LEA SI,DATA2 ;拆字,取数 LEA DI,DATA1 ;显示缓冲区首址
7
CZ0:
MOV BL,[SI]
AND BL,0F0H MOV CL,4 ROL BL,CL MOV [DI],BL INC DI MOV BL,[SI] AND BL,0FH MOV [DI],BL
INC SI INC DI
CMP SI, 4042H
JBE CZ0 POP CX RET CZ ENDP
DISP PROC PUSH CX PUSH DX
LEA BX,TAB LEA SI,DATA1 MOV AH,0C1H DISP1:
MOV DX,PORT2 MOV AL,[SI] XLAT OUT DX,AL MOV CX,0200H LOOP $ INC SI SAL AH,1 OR AH,0C0H JNZ DISP1 POP DX POP CX RET DISP ENDP
;-------------------------------------- SERVER PROC CLI
PUSH AX PUSH CX
;显示子程序
;显示,取段码首址 ;显示缓冲区首址 ;位码最高位
;取显示数据 ;取段码 ;段输出 ;延时
;未完继续显示
;8253中断入口8
PUSH DX PUSH SI PUSH DI
LEA SI,TIMER MOV AL,[SI] INC AL CMP AL,50H JAE WORK MOV [SI],AL ;延时、计数值地址 ;取延时、计数值 ;延时、计数值加1
;与延时、计数值终值比较 ;大于、等于(到1秒)转移 ;存延时、计数值
WORK:
MINUTE:
HOURE:
NEXT:
JMP EXIT MOV AL,0 MOV [SI],AL LEA SI,DATA2+2 MOV AL,[SI] INC AL DAA CMP AL, 60H JAE MINUTE MOV [SI],AL
JMP EXIT MOV AL,0 MOV [SI],AL LEA SI,DATA2+1 MOV AL,[SI] INC AL DAA CMP AL,60H JAE HOURE MOV [SI],AL
JMP EXIT MOV AL,0 MOV [SI],AL LEA SI,DATA2 MOV AL,[SI] INC AL DAA CMP AL,24H JAE NEXT MOV [SI],AL JMP EXIT ;清延时、计数值 ;取秒数
;秒数加1 ;十进制调整 ;与60秒比较
;大于、等于(60秒)转移
;存秒数
;秒数清零
;取分数 ;分数加1 ;十进制调整 ;与60分比较
;大于、等于(60分)转移 ;存分数
;分数清零
;取小时数 ;小时数加1 ;十进制调整 ;与24小时比较
;大于、等于(24小时)转移 ;存小时数
9
MOV AL,0 MOV [SI],AL EXIT:
MOV AL,20H MOV DX,OPORT OUT DX,AL POP DI POP SI POP DX POP CX POP AX IRET SERVER ENDP
CODE ENDS END BEG
;小时数清零
3.调试、运行程序并检验、记录结果。
实验结果:
程序运行前在内存单元4040H、4041H、4042H中预置BCD 码形式的时、分、秒初值。程序连续运行后,七段码显示器上从左到右显示时、分、秒并能够进位。
程序流程框图:
中断服务子程序
开始 关中断 保护数据地址 延时、计数值加1 计数到1秒? Y 延时、计数值清零 10
主程序
开始 定义数据区: 时、分、秒数据区、 显示缓冲区、 字形代码表、 延时、计数初值、 延时、计数终值 初始化8255 初始化8253 N 秒计数值加1 开中断 等于60秒?
初始化8259 十进制调整 N 显示子程序
N N 恢复现场 中断返回
七.实验总结
通过实验,学会8253芯片和微机接口原理和方法,掌握8253定时器/计数器的基本工作原理、工作方式和编程原理,熟悉汇编代码的编写。实验中,连接电路,利用代码控制实验电路,加深对课本理论的理解。
11
因篇幅问题不能全部显示,请点此查看更多更全内容