一、实验目的及要求:
目的:通过本次综合实验,使学生综合运用《计算机接口与通信技术》、汇编语言以及电子技术等课程的内容,为以后从事计算机检测与控制工作奠定一定的基础。
要求:
1.主要掌握并行I/O接口芯片8253、8255A、中断控制芯片8259A等可编程器件的使用。
2.学会用汇编语言编写一个较完整的实用程序。
3.了解微机接口应用开发过程:分析需求、设计原理图、编程、调试、撰写报告等。
二、实验内容:
利用《计算机接口与通信技术》课程中所学的主要可编程接口芯片8253、8255A和微机内部的中断控制器8259A设计并实现一个模拟的电子时钟,通过小键盘控制在LED数码管上显示时间。
功能要求:
1.采用8253定时功能进行计时,每秒钟通过8259A向CPU发一次中断请求;
2.用6个LED数码管分别显示时间的分和秒,如0点0分显示为00——00;
3.设计一个小键盘来进行控制:
C键:清除,显示00——00;
G键:启动,开始计时;
D键:停止,时钟显示值保持不变;
E键:终止程序;
P键:设置分、秒的初始值。
三、实验连线:
1.8255A连线
1)将8255A的CS端与218~21F插孔相连
2.8253连线(构成一个方波发生器或分频器)
1)将分频器74LS393的B端与8MHz信号相连
2)将分频器74LS393的A端接 +5V
3)将8253的 CLK0与8MHz分频得到的250KHz信号(74LS393的Q4端)相连
4)将8253的OUT0和CLK1相连
5)将8253的GATE0、GATEl 接+5V
6)将8253的CS插孔接200~207
3.8259A连线
1)8253的OUT1和62芯总线槽IRQ2(B4)连接
4.LED连线
1)将数码显示器左边的CS端(在 U27和U28之间)接210~217
5.总连线图
见附录图1程序连线图
四、程序设计:
1.流程图:
见附录图2程序主流程图、图3键盘识别流程图
2.源程序:
见附录源程序
五、实验方法及步骤:
1.按照实验连线要求完成实验硬件连线
2.运用x86汇编语言知识,进行软件编程,实现各按键功能的汇编程序
1)编辑8255A的程序来实现实验板小键盘的输入识别。
2)编辑8253的程序将定时器0设为模式3(方波发生器),定时器1设为模式2(分频器),定时器0的输出脉冲作为定时器1的时钟输入。
3)编辑8259A的程序,中断请求通过62芯总线的 IRQ2端输入,用8253做中断源,并把8253的OUT1和62芯总线槽IRQ2(B4)连接好。
4)编辑LED的程序,实现7段数码管显示,位选锁存器(PORTBLT)地址为210H,段选锁存器(PORTSEG)地址为211H。
3.在DOS环境下完成软件程序的编译(TASM)、连接(LINK)
1)将编辑好的程序存放在含TASM、LINK可执行文件的目录下。
2)使用TASM *.ASM编译源文件形成*.OBJ。
3)使用LINK *.OBJ连接形成可执行文件*。
4.执行程序可执行文件,在实验板上进行相应的测试操作
1)运行可执行文件*。
2)观察实验板LED显示情况。
3)对C,D,G,E,P及各数字键进行测试。
六、实验结果:
经过对实验结果的分析,总结如下:
1)程序刚启动时LED自动从00--00开始计时
2)使用C键LED显示清零
3)使用P键可逐位设置电子时钟初始时间
4)使用G键可依据设置的初始时间开始计时
5)使用D键电子时钟计时暂停,可用G键继续执行
6)使用E键可退出程序
本次实验所要求的各项功能均经过测试且显示无误。
七、小组分工:
罗江:完成最终实验程序整合及机器调试,程序流程图及操作设计。
刘晨莹:完成最终实验连线及最终实验操作,连线图设计。
梁颖薇:完成4个基础实验程序调试及操作,实验报告整合。
赖宝亮:完成4个基础实验程序整合及连线,实验报告整合。
附录:
连线图
图1 程序连线图
流程图
图2 程序主流程图
图3 键盘识别流程图
源程序
data segment
min1 db 0
min2 db 0
gap1 db 10
gap2 db 10
sec1 db 0
sec2 db 0
count dw 0
count2 dw 0
temp db 0
temp2 db ?
flag db 1
flag2 db 0
code1 db 0
LED db 3fh,6,5bh,4fh,66h,6dh,7dh,7,7fh,6fh,40h
mes2 db 'Press anykey can return to dos!',0ah,0dh,'$'
table1 db 'cdefba9845673210wxysrpmg'
data ends
code segment
assume cs:code,ds:data
start:
mov ax, data
mov ds, ax
cli ;interrupt off
mov temp, 0
mov dx, 0dc03h
mov al, 36h
out dx, al
mov dx, 0dc00h
mov al, 8
out dx, al
mov al, 0
out dx, al
mov dx, 0dc03h
mov al, 74h
out dx, al
mov dx, 0dc01h
mov al, 160
out dx, al
mov al, 0
out dx, al
;counter0 and counter1 initialization 100*50--250 000/5 000
;50 interruptions per second
mov ah, 35h
mov al, 72h
int 21h
push es
push bx ;store former interrupt vector
push ds
mov dx, seg interrup
mov ds, dx
lea dx, interrup
mov ah, 25h
mov al, 72h
int 21h ;new interrupt vector
pop ds
in al, 21h;master 8259 interrupt enable
and al, 11111011b
; 76543210
out 21h, al
in al, 0a1h
and al, 11111011b
; 76543210
out 0a1h, al
;slavery 8259 interrupt enable
lea dx, mes2
mov ah, 9
int 21h
mov dx, 0d468h
in ax, dx
or ax, 0900h
out dx, ax
;9054 interrupt enable
;interrupt enable
agn:
in al, 21h
or al, 100b
out 21h, al
mov code1, 0
mov dx, 0dc1bh
mov al, 10000010b
;pa:out,pb:in 76543210
out dx, al
mov al, 0
mov dl, 18h
out dx, al
inc dx
in al, dx
;read port B
and al, 7
cmp al, 7
jz yzj
call mother
yzj: in al, 21h
and al, 11111011b
out 21h, al
cmp flag2, 1
jz outside
mov cx, 1000
yzj2:
mov ah, 1
int 16h
loop yzj2
jz agn
outside:
mov dx, 0d468h
in ax, dx
and ax, 0f6ffh
out dx, ax
;9054 interrupt disable
in al, 21h
or al, 100b
out 21h, al
;master 8259 interrupt disable
in al, 0a1h
or al, 100b
out 0a1h, al
;slavery 8259 interrupt disable
pop dx
pop ds
mov al, 72h
mov ah, 25h
int 21h
mov ax, 4c00h
int 21h
;缺省执行子程序
mother proc
mov cx, 3
agn2: shr al, 1
jnc out1
add code1, 8
loop agn2
out1:
mov dx, 0dc1bh
mov al, 10010000b
;pb:out,pa:in, 76543210
out dx, al
mov dx, 0dc18h
in al, dx
;read port A
cmp al, 0ffh
jz exit
mov cx, 8
agn3: shr al, 1
jnc out2
inc code1
loop agn3
out2:
mov bx, offset table1
mov al, code1
xlat
call father
exit: ret
mother endp
;按键判断子程序
father proc
cmp al, 'c'
jnz mm1
call wifec
jmp exit1
mm1: cmp al, 'g'
jnz mm2
call wifeg
jmp exit1
mm2: cmp al, 'd'
jnz mm3
call wifed
jmp exit1
mm3: cmp al, 'e'
jnz mm4
call wifee
jmp exit1
mm4: cmp al, 'p'
jnz exit1
call wifep
exit1: ret
father endp
;清空子程序
wifec proc
mov min1, 0
mov min2, 0
mov sec1, 0
mov sec2, 0
mov flag, 0
ret
wifec endp
;继续执行子程序
wifeg proc
mov flag, 1
ret
wifeg endp
;中断暂停子程序
wifed proc
mov flag, 0
ret
wifed endp
;退出子程序
wifee proc
mov flag2, 1
ret
wifee endp
;时间设置子程序
wifep proc
mov dx, 0dc10h
mov al, 1
mov temp2, al
out dx, al
syq1: call readkey
cmp al, '6'
jl syq2
call error
jmp syq1
syq2: sub al, 30h
mov min1, al
mov dx, 0dc10h
mov al, 2
mov temp2, al
out dx, al
syq3: call readkey
cmp al, ':'
jl syq4
call error
jmp syq3
syq4: sub al, 30h
mov min2, al
mov dx, 0dc10h
mov al, 16
mov temp2, al
out dx, al
syq5: call readkey
cmp al, '6'
jl syq6
call error
jmp syq5
syq6: sub al, 30h
mov sec1, al
mov dx, 0dc10h
mov al, 32
mov temp2, al
out dx, al
syq7: call readkey
cmp al, ':'
jl syq8
call error
jmp syq7
syq8: sub al, 30h
mov sec2, al
mov flag, 0
ret
wifep endp
;出错子程序
error proc
push ax
push bx
push cx
push dx
mov dx, 0dc11h
mov al, 11111111b
out dx, al
mov dx, 0dc10h
mov al, 0ffh
out dx, al
mov cx, 6
uuu: call delay2
loop uuu
mov al, temp2
out dx, al
pop dx
pop cx
pop bx
pop ax
ret
error endp
;读实验板小键盘子程序
readkey proc
begin1: mov code1, 0
mov dx, 0dc1bh
mov al, 10000010b
;76543210
out dx, al
agn11: mov dx, 0dc19h
in al, dx
;read port b
and al, 7
cmp al, 7
jz agn11
mov cx, 3
agn22: shr al, 1
jnc out11
add code1, 8
loop agn22
out11:
mov dx, 0dc1bh
mov al, 90h
;pb:out,pa:in
out dx, al
mov dx, 0dc18h
in al, dx
;read port A
cmp al, 0ffh
jz begin1
mov cx, 8
agn33: shr al, 1
jnc out22
inc code1
loop agn33
out22:
mov bx, offset table1
mov al, code1
mov code1, 0
xlat
mov cx, 5
agn66: call delay2
loop agn66
ret
readkey endp
;parameter:al
;ASCII of The Charater pressed in the key board
;读小键盘延时子程序
delay2 proc
push ax
push bx
push cx
push dx
mov ah, 2ch
int 21h
mov bl, dl
agn55: int 21h
cmp bl, dl
jz agn55
pop dx
pop cx
pop bx
pop ax
ret
delay2 endp
;中断子程序
interrup proc far
push ax
push bx
push cx
push dx
push si
push di
push bp
push ds
push es
mov ax, data
mov ds, ax
mov si, 1
mov ch, 0
mov cl, temp
mov di, cx
inc cx
agn1: rol si, 1
loop agn1
ror si, 1
mov cx, si
mov al, cl
mov dx, 0dc10h
out dx, al
mov bl, temp
mov bh, 0
mov di, bx
mov al, [di]
lea bx, led
xlat
mov dx, 0dc11h
out dx, al
chg:
inc temp
cmp temp, 6
jnz kkk
mov temp, 0
kkk:
cmp flag, 0
jz quit
inc count
cmp count, 1000
jl quit
mov count, 0
inc sec2
cmp sec2, 10
jl quit
mov sec2, 0
inc sec1
cmp sec1, 6
jl quit
mov sec1, 0
inc min2
cmp min2, 10
jl quit
mov min2, 0
inc min1
cmp min1, 6
jl quit
mov min1, 0
quit:
pop es
pop ds
pop bp
pop di
pop si
pop dx
pop cx
pop bx
pop ax
mov al, 20h
out 0a0h, al
out 20h, al
iret
interrup endp
code ends
end start
一实验目的1掌握8255A编程原理2掌握键盘的输入和数码管的显示3提高理论与实践相结合的能力强化所学内容二实验要求用8255A实现…
上海大学计算机学院计算机接口技术实验4专业计算机科学与技术班级周一13节姓名学号计算机工程与科学学院报告日期20xx年10月29日…
实验一:显示程序实验(20##年4月22日)1、实验目的及实验内容实验目的:1.掌握在PC机上以十六进制数形式显示数据的方法2.掌…
现代微机原理与接口技术接口部分实验报告学号09008112姓名马京亚成绩学号东南大学计算机科学与工程学院二一年十二月微机原理与接口…
武汉轻工大学现代微机原理与接口技术报告学号姓名班级成绩20xx年5月15日110511313王雪瑞网工一班实验1定时与中断接口程序…
微机原理与接口技术实验报告微机原理与接口技术系别专业班级姓名学号指导教师学年第学期微机原理与接口原理实验报告微机原理与接口技术实验…
《微机原理与接口技术》课程设计报告交通灯控制系统班级:学号:姓名:指导教师:成绩:20##年7月1日目录1、课程设计的目的和要求3…
实验一8255A应用数码管动态显示一实验目的1掌握8255A的工作方式编程原理和微机接口方法2了解LED数码管动态显示的工作原理及…
微机原理与接口技术实验报告安徽工业大学计算机学院姓名专业班级学号指导教师实验一8255A应用数码管动态显示一实验目的1掌握8255…