利用8086外接8253可编程定时/计数器,可以实现方波的产生。
- 硬件验证实验
- 实验说明
-
8253芯片介绍 8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz, 用+5V单电源供电。
8253的功能用途: ⑴ 延时中断 ⑸ 实时时钟
⑵ 可编程频率发生器 ⑹ 数字单稳
⑶ 事件计数器 ⑺ 复杂的电机控制器
⑷ 二进制倍频器
8253的六种工作方式:⑴ 方式0:计数结束中断 ⑷ 方式3:方波频率发生器
⑵ 方式l:可编程频率发生 ⑸ 方式4:软件触发选通信号
⑶ 方式2:频率发生器 ⑹ 方式5:硬件触发选通信号
-
实验程序流程图
- 实验步骤
1、Proteus仿真
a.在Proteus中打开设计文档“8253_STM.pdsprj”;
b.建立实验程序并编译,仿真;
c.如不能正常工作,打开调试窗口进行调试。
汇编语言参考程序:
CODE SEGMENT ;H8253.ASM
ASSUME CS:CODE
START: JMP TCONT
TCONTRO EQU 0A06H
TCON0 EQU 0A00H
TCON1 EQU 0A02H
TCON2 EQU 0A04H
TCONT: MOV DX,TCONTRO
MOV AL,16H ;计数器0,只写计算值低8位,方式3,二进制计数
OUT DX,AL
MOV DX,TCON0
MOV AX,20 ;时钟为1MHZ,计数时间=1us*20=20us,输出频率50KHZ
OUT DX,AL
JMP $
CODE ENDS
END START
C语言参考程序:
#define TCONTRO 0A006H
#define TCON0 0A000H
#define TCON1 0A002H
#define TCON2 0A004H
void outp(unsigned int addr, char data)
// Write a byte to the specified I/O port
{ __asm
{ mov dx, addr
mov al, data
out dx, al
}
}
char inp(unsigned int addr)
// Read a byte from the specified I/O port
{ char result;
__asm
{ mov dx, addr
in al, dx
mov result, al
}
return result;
}
void main(void)
{
outp(TCONTRO,0x16);//计数器0,只写计算值低8位,方式3,二进制计数
outp(TCON0,20);//时钟为1MHZ ,计数时间=1us*20 =20 us 输出频率50KHZ
while(1){}
}
2、实验板验证
a.通过USB线连接实验箱
b.按连接表连接电路
c.运行PROTEUS仿真,检查验证结果
- 实验结果和体会
通过本次实验学习了8086与8253的连接方法。学习了8253的控制方法。掌握了8253定时器/计数器的工作方式和编程原理。
同时知道了知道了学海无涯这只是仅仅入门阶段,要想学习的更扎实更能熟练运用必须得继续努力,在今后继续努力学习。