先决条件—— 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)由下式给出:,
算法-
- 将数据76按顺序移动
- 显示发送至端口83的数据的内容
- 将数据D0按顺序移动
- 显示端口81的内容
- 将数据07按顺序移动
- 显示发送至端口81的数据的内容
- 停止
项目-
内存地址 | 助记符 | 议论 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 | 停止 |
解释——
- MVI A 76 用于将CR(控制寄存器)的内容移动到寄存器A。
- 出局83 用于将A的值分配给作为控制寄存器的端口83。
- MVI A D0 用于将计数器1数据的低位字节移动到寄存器A。
- 出局81 用于将A的值分配给端口81,即计数器1。
- MVI A 07 用于将计数器1的数据的较高字节移动到寄存器A。
- 出局81 用于将A的值分配给端口81,即计数器1。
- HLT 用于结束程序。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END