一点点看!一定可以看懂!考试没有问题的!加油
前面知识写的详细,看不懂可以先看典例,回头来梳理就明白了【典例就是常考的题】
目录
Part 1: 芯片知识总结
(一)8253 芯片特点
(二) 8253芯片引脚功能 知道才好编程
(三) 8253编程
(1)8253 初始化
① 工作方式控制字
② 计数初始值
③ 初始化流程
(四) 单位转换
Part 2 : 经典考题典例
Part 1: 芯片知识总结
1. 可编程的逻辑器件
2. 8位并行接口,但内容计数寄存器是16位的
3. 非通道型的接口,控制型的即具有特定功能(计数、定时等)
4. 工作方式:
减法计数: 计数值减为0时输出相应控制系统
输出控制系统的形式可通过软件设置(工作方式)
上述解释补充:
二进制计数: 为0000H~FFFFH,其中0000H为最大值,代表65536; (默认)
十进制(BCD码): 计数为0000~9999,其中0000为最大值,代表10000
1kHz = 1000Hz 3
1MHz = 1000 000Hz 6
1GHz = 1000 000 000GHz 9
1s = 1000ms = 1000 000μs = 1000 000 000ns
Part 2 : 经典考题典例
考题1难,后面基础方便理解
【考题1】
(一)分析计算 : 设定CNTO工作于方式3,输出方波信号,其周期为10ms,那么,其计数初值计算如下:
(二)工作方式分析:周期性:方式2(周期性负脉冲发生器)或 方式3(方波信号发生器)
CNT1 : 周期性秒脉冲:方式2
CNT0 : 方式3
(三)CNT0 : 初值 = 输入信号 频率 f × 输出信号 周期T
= 250KHZ × 10ms
=( 250HZ × 1000 ) × (10 × 0.0001 S)
= 2500 = 09C4H 十进制转16进制
CNT1 : 初值 = CNT0的输出频率 × 输出信号 周期T
= (1 / 0.001) 100HZ × 1s
= 100 = 64H
2500/16 = 156......4 同理
156/16 = 9......C
9/16 = 9......9
(四)地址规则:
每个CNT编程:
1.选定控制寄存器地址,为控制寄存器写控制字(查功能8位),选定该CNT,并将控制字输出至I/O端口(OUT)
2.选定CNT地址,算出该CNT的计数初值,并将初值输出至I/O端口 (OUT)
START: MOV AX,DATA
MOV DS,AX
CLI
;CNT0
MOV DX,0203H ;CNT0初始化编程 ,产生方波信号 ,周期为10ms
MOV AL,36H ;CNT0方式3控制字 , 0011 0110
OUT DX,AL ;控制字CPU传入8253
MOV DX,0200H
MOV AL,0C4H
OUT DX,AL ;写入低字节计数值
MOV AL,09H
OUT DX,AL ;写入高字节计数值
;CNT1
MOV DX,0203H ;CNT1初始化编程 , 产生周期性负脉冲信号 ,周期为1s
MOV AL,74H ;CNT1方式2控制字 , 0111 0100
OUT DX,AL
MOV DX,0201H
MOV AL,064H
OUT DX,AL ;写入低字节计数值
MOV AL,00H
OUT DX,AL ;写入高字节计数值
1. 已知,某外设需要8253提供频率为1Hz方波,现8253的CLK0输入频率为2MHZ,其
端口地址为40H-43H试给出实现方案,并编写相关程序段。
输入频率: 2MHZ=2000 000HZ
输出频率: 1HZ
CLK0:40H
CLK1:41H
CLK2:42H
寄存器地址:43H
2. 设8253的端口地址为40~43H,选择计数器1工作于方式2,计数初值为1024,二进制计数方式,试编写其初始化编程:
3.已知芯片8253的端口地址为4F0H 4F3H,设计数器1工作在方式1,计数器初值为3060H,
采用二进制计数,请设计实现上述功能的8253初始化程序。