[4] 确认WAVE6000与Lab6000p连接; [5] 输入源代码; [6] 编译源代码(F9);
[7] 连续运行程序(Ctrl+F9),按动单脉冲按键观察LED显示情况。 5) 问题思考
[1] 若CS连至地址译码/CS3,程序该如何修改。
[2] 为什么定时/计数器初值赋4,5个脉冲后LED才亮。 2、 8253定时实验 1) 实验要求
在LED上实现1秒钟亮/1秒钟灭。 2) 提示
对标准脉冲信号计数,若一个计数器位数不够2个计数器(2个通道)级连(串连)。 3)程序代码
CONTROL equ 08003h COUNT0 equ 08000h COUNT1 equ 08001h COUNT2 equ 08002h
code segment
assume cs:code start proc near
mov al, 35h ; 通道0,方式0 mov dx, CONTROL out dx, al
mov al, 5000h ; 计数器初始值。 mov dx, COUNT0
out dx, al ; 低八位 mov al, 0
out dx, al ; 高八位
mov al, 77h ; 通道1,方式1
mov dx, CONTROL out dx, al
mov al, 800h ; 计数器初始值。 mov dx, COUNT0
out dx, al ; 低八位 mov al, 0
out dx, al ; 高八位 jmp $ start endp code ends
end start
实验四 8259外部中断实验
一、实验目的
1、 掌握8259芯片结构及工作方式; 2、 熟悉8259的初始化和操作编程。
二、实验设备
1、 Lab6000p实验教学系统; 2、 IBM-PC机
三、系统中8259模块
Lab6000p实验箱中的8259模块连线如图所示:
AD0~AD7、A0、/WR、/RD已分别连至系统总线DB0~DB7、AB0、/IOW、/IOR;引出CS、IR0(即INT0)、INTA留给用户连接。
四、实验内容和实验步骤
1. 8259综合实验 1) 实验要求
用8259和8255实现脉冲个数计数,脉冲个数以二进制形式在LED上显示。 2) 电路连接
3) 程序框图
4) 程序代码
mode equ 82h PA8255 equ 8000h CTL8255 equ 8003h
ICW1 equ 00010011b ; 单片8259, 上升沿中断, 要写ICW4 ICW2 equ 00100000b ; 中断号为20H
ICW4 equ 00000001b ; 工作在8086/88 方式 OCW1 equ b ; 只响应INT0 中断 CS8259A equ 0D000h ; 8259地址 CS8259B equ 0D001h data segment CNT db 0 data ends code segment
assume cs:code, ds: data IEnter proc near push ax push dx
mov dx, PA8255 inc CNT mov al, CNT
out dx, al ; 输出计数值 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 dx, CTL8255 mov al, mode out dx, al cli
mov ax, 0 mov ds, ax
mov bx, 4*ICW2 ; mov ax, code
shl ax, 4 ; x 16 add ax, offset IEnter ; mov [bx], ax mov ax, 0 inc bx inc bx
mov [bx], ax ; call IInit mov ax, data mov ds, ax
mov CNT, 0 ; mov al, CNT mov dx, PA8255 out dx, al sti
LP: ; nop
jmp LP start endp end start
中断号
中断入口地址(段地址为0)代码段地址为0 计数值初始为0 等待中断,并计数。 实验五 综合设计实验
一、实验目的
1、 掌握结构化汇编语言程序设计;
2、 掌握8253、8259的初始化和操作编程; 3、 熟悉LED数码管的动态驱动。
二、实验设备
1、 Lab6000p实验教学系统; 2、 IBM-PC机
三、实验内容
1、 实验要求
以4MHz为时钟基准,设计一个电子钟,在LED数码管显示时钟,格式如下:XX XX XX 由左向右分别为:时、分、秒。 2、 提示
8253工作于定时方式,即对4MHz或分配后的基准时钟脉冲进行计数,8253定时器每100us中断一次,在中断服务程序中,对中断次数进行计数,100us计数10000次就是1秒。然后再对秒计数得到分和小时值,并送入显示缓冲区显示。 3、 程序代码
CONTROL equ 0c003h COUNT0 equ 0c000h COUNT1 equ 0c001h COUNT2 equ 0c002h
md8255 equ 82h ; 8255 工作方式
PA8255 equ 8000h ; 8255 PA口输出地址 CTL8255 equ 8003h ; 8255 控制口地址
OUTBIT equ 08002h ; 位控制口 OUTSEG equ 08004h ; 段控制口
ICW1 equ 00010011b ; 单片8259, 上升沿中断, 要写ICW4 ICW2 equ 00100000b ; 中断号为20H
ICW4 equ 00000001b ; 工作在8086/88 方式 OCW1 equ b ; 只响应INT0 中断 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