8254 PIT与8085微处理器的接口

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

null

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

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

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

图片[1]-8254 PIT与8085微处理器的接口-yiteyi-C++库

算法-

  1. 将数据76按顺序移动
  2. 显示发送至端口83的数据的内容
  3. 将数据D0按顺序移动
  4. 显示端口81的内容
  5. 将数据07按顺序移动
  6. 显示发送至端口81的数据的内容
  7. 停止

项目-

内存地址 助记符 议论
2000 MVI A 76 A
2002 出局83 CR
2004 MVI A D0 A 2006 出局81 C1 2008 MVI A 07 A 200A 出局81 C1 200C HLT 停止

解释——

  1. MVI A 76 用于将CR(控制寄存器)的内容移动到寄存器A。
  2. 出局83 用于将A的值分配给作为控制寄存器的端口83。
  3. MVI A D0 用于将计数器1数据的低位字节移动到寄存器A。
  4. 出局81 用于将A的值分配给端口81,即计数器1。
  5. MVI A 07 用于将计数器1的数据的较高字节移动到寄存器A。
  6. 出局81 用于将A的值分配给端口81,即计数器1。
  7. HLT 用于结束程序。
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享