微机接口端口计算问题
关于 8254 A 8254A 8254A的端口地址的问题
详细的计算出下图中8254的四个端口地址为多少?
答案 : A 0 H , A 2 H , A 4 H , A 6 H A0H, A2H, A4H, A6H A0H,A2H,A4H,A6H
解析: 四个端口地址分别为计数器0, 计数器1, 计数器2, 控制字寄存器的端口地址
而他们的端口地址取决于与CPU相连的地址总线, 根据图所示, 即 A 0 , A 1 , A 2 , A 3 , A 4 , A 5 , A 6 , A 7 , A 8 A0, A1, A2, A3, A4, A5, A6, A7, A8 A0,A1,A2,A3,A4,A5,A6,A7,A8
据上图所示, 三八译码器所对的A5, A4 ,A3 分别为100
该图对应着三八译码器的转换值, 其中 Y 4 Y4 Y4就是相当于上图的 D 4 D4 D4, 即 Y 4 Y4 Y4该位有效;所以对应的 C B A CBA CBA分别为100.
8254 A 8254A 8254A中内部的 A 0 , A 1 A0,A1 A0,A1分别表示选择不同的计数器(或寄存器), 所以外部的 A 1 , A 2 A1,A2 A1,A2分别对应着00, 01, 10, 11
A 7 A7 A7默认高电平有效即为1
综上所述:
计数器0: 00 1010 0000 即 0 A 0 H 0A0H 0A0H
计数器1: 00 1010 0010 即 0 A 2 H 0A2H 0A2H
计数器2: 00 1010 0100 即 0 A 4 H 0A4H 0A4H
控制字寄存器: 00 1010 1100 即 0 A 6 H 0A6H 0A6H
BCD码的用法
BCD码表示的是十进制
一个字节 = 8位
组合BCD码(压缩BCD码)
一个字节包含两位BCD码; 每4位为一个BCD码; 每4位以二进制的形式计算所表示的是十进制的位数. 比如二进制:1000; 十进制是8.
e.g. 1001 0011 表示十进制的93
未组合BCD码(非压缩BCD码)
一个字节包含一个BCD码; 前4位都为0, 后4位表示一位BCD码
e.g. 0000 1001 和0000 0011 一起来表示十进制93
8254A/8253A编程题
假设在一个8086系统中,使用8253控制一个LED的点亮或熄灭。四个端口地址分别是 81 H , 83 H , 85 H , 87 H , C L K 81H,83H,85H,87H, CLK 81H,83H,85H,87H,CLK端输入的是时钟频率为 2 M H z 2MHz 2MHz,LED点亮和熄灭均为10s。设计硬件电路和驱动程序。
解答:
8254 A 8254A 8254A 计数初值 : N = f c l k ÷ f o u t N = f_{clk} \div f_{out} N=fclk÷fout , 其中 f c l k f_{clk} fclk表示的是输入频率, f o u t f_{out} fout为输出频率。
周期与频率之间的转换: f × T = 1 f \times T = 1 f