📜  接口8254 PIT与8085微处理器

📅  最后修改于: 2021-06-28 16:13:26             🧑  作者: Mango

先决条件– 8254控制寄存器和操作模式
问题–在8085微处理器中编写汇编语言程序,如果8254的时钟频率为2 MHz,则使用计数器1作为二进制计数器来生成1 KHz方波。

假设–假设C0(计数器0),C1(计数器1),C2(计数器2),CR(控制寄存器)的端口地址分别为80 H,81 H,82 H,83H。

对于上述问题,8254必须在模式3(方波发生器)中工作。
寄存器的计数为时钟频率/方波频率
计数= 2 MHz / 1 KHz
= 2000
=(07D0)高
现在数据为16位,因此控制寄存器中RW1 = 1和RW0 = 1的值。因为我们要选择C1(计数器1),所以控制寄存器中的SC1 = 0且SC0 = 1。对于控制寄存器中的模式3,M2 = 0,M1 = 1和M2 = 1的值。对于CR中LSB的二进制计数器,其值为0。

因此,控制寄存器(CR)由下式给出:

算法 –

  1. 在A中移动数据76
  2. 显示A到端口83的内容
  3. 将数据D0移动到A
  4. 显示A到端口81的内容
  5. 将数据07移动到A中
  6. 显示A到端口81的内容
  7. 停止

程序 –

MEMORY ADDRESS MNEMONICS COMMENT
2000 MVI A 76 A <- 76
2002 OUT 83 CR <- A
2004 MVI A D0 A <- D0 2006 OUT 81 C1 <- A 2008 MVI A 07 A <- 07 200A OUT 81 C1 <- A 200C HLT Stop

解释-

  1. MVI A 76用于将CR(控制寄存器)的内容移至寄存器A。
  2. OUT 83用于将A的值分配给控制寄存器的端口83。
  3. MVI A D0用于将计数器1的数据的低字节移至寄存器A。
  4. OUT 81用于将A的值分配给作为计数器1的端口81。
  5. MVI A 07用于将计数器1的数据的高字节移到寄存器A。
  6. OUT 81用于将A的值分配给作为计数器1的端口81。
  7. HLT用于结束程序。