东北大学秦皇岛分校微型接口及技术实验报告.doc
文本预览下载声明
微型计算机接口技术实验报告
学 号:
213****
姓 名:
提交日期:
2016-4-22
成 绩:
东北大学秦皇岛分校 计算机与通信工程学院
2016
【实验编号】
1
【实验名称】
实验三 可编程定时器计数器8253
【实验内容】
1. 可编程定时器计数器8253(一)
实验说明
实验原理图:
实验流程图:
ASM程序:
ioport equ 0d400h-0280h
io8253a equ ioport+280h
io8253b equ ioport+281h
io8253c equ ioport+283h
code segment
assume cs:code
start:mov dx,io8253c ;向8253写控制字
mov al,36h ;使0通道为工作方式3
out dx,al
mov ax,1000 ;写入循环计数初值1000
mov dx,io8253a
out dx,al ;先写入低字节
mov al,ah
out dx,al ;后写入高字节
mov dx,io8253c
mov al,76h ;设8253通道1工作方式2
out dx,al
mov ax,1000 ;写入循环计数初值1000
mov dx,io8253b
out dx,al ;先写低字节
mov al,ah
out dx,al ;后写高字节
mov ah,4ch ;程序退出
int 21h
code ends
end start
CPP程序:
/******************************/
/* 可编程定时器/计数器(二) */
/******************************/
#includestdio.h
#includeconio.h
#include ApiEx.h
#pragma comment(lib,ApiEx.lib)
void main()
{
printf(--------------------EXP9_3_8253_2---------------------\n);
printf(1. 8253 (CLK0) === (1MHz) or (2MHz)\n);
printf(2. TPC (+5V) === 8253 (GATE0,GATE1)\n);
printf(3. 8253 (OUT0) === 8253 (CLK1)\n);
printf(4. 8253 (OUT1) === LJB (Ui)\n);
printf(5. I/O (280-287) === 8253 (CS)\n);
printf(Press any key to begin!\n\n);
getch();
if(!Startup()) /*打开设备*/
{
printf(ERROR: Open Device Error!\n);
return;
}
PortWriteByte(0x283,0x36); /*写方式字通道0方式3*/
PortWriteByte(0x280,1000%256); /*送计数初值*/
PortWriteByte(0x280,1000/256);
PortWriteByte(0x283,0x76); /*设置计数器1方式字*/
PortWriteByte(0x281,1000%256); /*送计数初值*/
PortWriteByte(0x281,1000/256);
Cleanup(); /*关闭设备*/
printf(Press any key to exit!);
getch();
}
2. 可编程定时器计数器8253(二)
实验说明:
实验原理图:
实验流程图:
ACM程序:
ioport equ 0d400h-0280h
io8253a equ ioport+283h
io8253b equ ioport+280h
code segment
assume cs:code
start: mov al,14h ;设置8253通道0为工作方式2,二进制计数
mov dx,io8253a
out dx,al
mov dx,io8253b ;送计数初值为0FH
mov al,0fh
out dx,al
lll: in al,dx ;读计数初值
call disp ;调显示
显示全部