微机原理 8253/8254编程示例

微机原理 8253/8254编程示例

题目

已知8254各通道时钟接8MHz信号,端口地址为700H,702H,704H和706H。

1、 在OUT0产生周期为10µs的方波

2、 OUT1产生2KHz的连续脉冲信号

3、 OUT2产生一个最大的负脉冲

答案:

第一问

方式3可以产生方波,初始值n = 10µs * 8MHz = 80。所以我们的程序为:

MOV DX,706H ; 控制端口地址
MOV AL,00010110B ;输入控制字 通道0 只读/写计数器低字节 方式3 二进制计数
OUT DX,AL
MOV DX,700H ; 端口地址
MOV AX,80D ; 输入初值
OUT DX,AL ; 写入初值

第二问:

方式2可以产生连续脉冲信号,初始值n = 8MHz / 2KHz = 4000D。所以我们的程序为:

MOV DX,706H ; 控制端口地址
MOV AL,01110100B ; 输入控制字 通道1 先读/写计数器低字节 后读/写计数器高字节 方式2 二进制计数
OUT DX,AL ; 将控制字输入到DX
MOV DX,702H ; 通道1端口地址
MOV AX,4000D ; 输入初值到AX
OUT DX,AL ; 先写低字节
MOV AL,AH ; 取高字节
OUT DX,AL ; 后写高字节

第三问:

产生负脉冲我们可以使用方式2,这里需要注意的是,我们输出最大的负脉冲,初值n应为0。程序为:

MOV DX,706H ; 控制端口地址
MOV AL,10110010 ; 控制字 通道2 先读/写计数器低字节 后读/写计数器高字节 方式2 二进制计数
OUT DX,AL
MOV DX,704H ; 端口地址
MOV AL,0 ; 写入初值
OUT DX,AL ;先写低字节
OUT DX,AL; 后写高字节
原创文章 258 获赞 3107 访问量 46万+

猜你喜欢

转载自blog.csdn.net/qq_43422111/article/details/105914947