实验报告.doc

上传人:b****2 文档编号:1643764 上传时间:2022-10-23 格式:DOC 页数:14 大小:300.50KB
下载 相关 举报
实验报告.doc_第1页
第1页 / 共14页
实验报告.doc_第2页
第2页 / 共14页
实验报告.doc_第3页
第3页 / 共14页
实验报告.doc_第4页
第4页 / 共14页
实验报告.doc_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验报告.doc

《实验报告.doc》由会员分享,可在线阅读,更多相关《实验报告.doc(14页珍藏版)》请在冰豆网上搜索。

实验报告.doc

微机原理与接口技术

实验报告

学号:

4091030

姓名:

贤会利

提交日期:

成绩:

东北大学秦皇岛分校

实验1可编程定时器/计时器(8253)

定时器

一、实验目的

掌握8253的基本工作原理和编程方法。

二、实验内容

按图16虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。

三、编程提示

8253控制寄存器地址 283H

计数器0地址 280H

计数器1地址 281H

CLK0连接时钟 1MHZ

四.实验原理图

五.实验流程图

六.原程序代码

;*************************;

;*8253方式0计数器实验*;

;*************************;

io8253a equ283h-0280h

io8253b equ280h-0280h

io_port_addre equ0cf8h ;32位配置地址端口

io_port_data equ0cfch ;32位配置数据端口

io_plx_id equ0540610b5h ;TPC卡设备及厂商ID

datasegment

io_9054base_addressdb4DUP(0) ;TPC卡9054芯片I/O基地址暂存空间

io_base_addressdb4DUP(0) ;TPC卡I/O基地址暂存空间

memory_base_addressdb4DUP(0) ;TPC卡MEMORY基地址暂存空间

interrupt_linedb2DUP(0) ;TPC卡中断号暂存空间

pcicardnotfind db0dh,0ah,'TPCpcicardnotfindoraddress/interrupterror!

!

!

',0dh,0ah,'$'

io9054baseaddressdb0dh,0ah,'TPCpcicard9054ChipI/OBaseAddress:

','$'

iobaseaddress db0dh,0ah,'TPCpcicardI/OBaseAddress:

','$'

memorybaseaddress db0dh,0ah,'TPCpcicardMemoryBaseAddress:

','$'

intnumber db0dh,0ah,'TPCpcicardInterruptLine:

','$'

enter_return db0dh,0ah,'$'

dataends

stackssegment

db100dup(?

stacksends

codesegment

assumecs:

code,ds:

data,SS:

STACKS,es:

data

.386

start:

movax,data

movds,ax

moves,ax

movax,stacks

movss,ax

callfindtpc1 ;查找TPC卡资源并显示

moval,14h;设置8253通道0为工作方式2,二进制计数

movdx,wordptrio_base_address

adddx,io8253a

outdx,al

movdx,wordptrio_base_address

adddx,io8253b;送计数初值为0FH

moval,0fh

outdx,al

lll:

inal,dx;读计数初值

calldisp;调显示子程序

pushdx

movah,06h

movdl,0ffh

int21h

popdx

jzlll

movah,4ch;退出

int21h

dispprocnear;显示子程序

pushdx

andal,0fh;首先取低四位

movdl,al

cmpdl,9;判断是否<=9

jlenum;若是则为'0'-'9',ASCII码加30H

adddl,7;否则为'A'-'F',ASCII码加37H

num:

adddl,30h

movah,02h;显示

int21h

movdl,0dh;加回车符

int21h

movdl,0ah;加换行符

int21h

popdx

ret;子程序返回

dispendp

findtpc1procnear ;查找TPC卡资源并显示

pushad

pushfd

movebx,080000000h

findtpc1_next:

addebx,100h

cmpebx,081000000h

jnzfindtpc1_continue

movdx,offsetpcicardnotfind ;显示未找到tpc卡提示信息

movah,09h

int21h

movah,4ch

int21h ;退出

findtpc1_continue:

movdx,io_port_addre

moveax,ebx

outdx,eax ;写地址口

movdx,io_port_data

ineax,dx ;读数据口

cmpeax,io_plx_id

jnzfindtpc1_next ;检查是否发现tpc卡

movdx,io_port_addre

moveax,ebx

addeax,14h

outdx,eax ;写地址口

movdx,io_port_data

ineax,dx ;读数据口

movdwordptrio_9054base_address,eax

andeax,1

jzfindtpc1_next ;检查是否为i/o基址信息

moveax,dwordptrio_9054base_address

andeax,0fffffffeh

movdwordptrio_9054base_address,eax;去除i/o指示位并保存

movdx,io_port_addre

moveax,ebx

addeax,18h

outdx,eax ;写地址口

movdx,io_port_data

ineax,dx ;读数据口

movdwordptrio_base_address,eax

andeax,1

jzfindtpc1_next ;检查是否为i/o基址信息

moveax,dwordptrio_base_address

andeax,0fffffffeh

movdwordptrio_base_address,eax ;去除i/o指示位并保存

movdx,io_port_addre

moveax,ebx

addeax,1ch

outdx,eax ;写地址口

movdx,io_port_data

ineax,dx ;读数据口

movdwordptrmemory_base_address,eax

andeax,1h

jnzfindtpc1_next ;检查是否为memory基址信息

moveax,dwordptrmemory_base_address

andeax,0fffffff0h

movdwordptrmemory_base_address,eax ;去除memory指示位并保存

movdx,io_port_addre

moveax,ebx

addeax,3ch

outdx,eax ;写地址口

movdx,io_port_data

ineax,dx ;读数据口

andeax,0ffh

movwordptrinterrupt_line,ax ;去除interrupt其它指示位并保存

movdx,offsetio9054baseaddress ;显示i/o提示信息

movah,09h

int21h

movax,wordptrio_9054base_address

callfindtpc1_disp ;显示i/o基地址

movdx,offsetiobaseaddress ;显示i/o提示信息

movah,09h

int21h

movax,wordptrio_base_address

callfindtpc1_disp ;显示i/o基地址

movdx,offsetmemorybaseaddress ;显示memory提示信息

movah,09h

int21h

movax,wordptrmemory_base_address+2

callfindtpc1_disp ;显示memory基地址高16位

movax,wordptrmemory_base_address

shrax,16

callfindtpc1_disp ;显示memory基地址低16位

movdx,offsetintnumber ;显示interrupt提示信息

movah,09h

int21h

movax,wordptrinterrupt_line

callfindtpc1_disp ;显示interrupt号

movdx,offsetenter_return ;加回车符,换行符

movah,09h

int21h

popfd

popad

ret

findtpc1endp

findtpc1_dispprocnear ;显示子程序

pushdx

pushcx

pushbx

movcx,4

movbx,16

findtpc1_disp_loop1:

pushax

pushcx

subbx,4

movcx,bx

shrax,cl

andal,0fh ;首先取低四位

movdl,al

cmpdl,9 ;判断是否<=9

jlefindtpc1_disp_num ;若是则为'0'-'9',ASCII码加30H

adddl,7 ;否则为'A'-'F',ASCII码加37H

findtpc1_disp_num:

adddl,30h

movah,02h ;显示

int21h

popcx

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

当前位置:首页 > 工程科技 > 材料科学

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

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