8253 习题

题目

有如图所示的接口简化图,要使发光二极管亮2秒,熄灭2秒,但该过程共进行20秒即终止,设OUT0输入频率为100HZ。8253端口地址为40H~43H编写出程序

8253控制字及工作方式




0端口分析

根据题目可得
\(\because f_{out0} = 100HZ\)
\(\therefore T_{out0} = \frac{1}{f_{out0}} = \frac{1}{100}s\)
由图可得
\(\because f_{clk0} = 500KHZ\)
\(\therefore T_{clk0} = \frac{1}{f_{clk0}} = \frac{1}{500000}s\)
\(\because 在8253中,有T_{out} = T_{clk} * N(N为计数初值)成立\)
\(\therefore T_{out0} = T_{clk0} * N_0\)
联立\(\begin{cases} T_{out0} = \frac{1}{100}s \\ T_{clk0} = \frac{1}{500000}s\\ T_{out0} = T_{clk0} * N_0 \end{cases}\)
解得 \(N_0 = 5000\)

1端口分析

因为要使发光二极管亮2s,熄灭2s,所以在一个周期里面,2s高电平,2s低电平,可用方式3输出周期为4s的方波,因此,\(T_{out1} = 4s\)
\(\because OUT0\)\(CLK1\)连在一起
\(\therefore T_{clk1} = T_{out0} = \frac{1}{100}s\)
\(\because 在8253中,有T_{out} = T_{clk} * N(N为计数初值)成立\)
\(\therefore T_{out1} = T_{clk1} * N_1\)

联立\(\begin{cases} T_{clk1} = \frac{1}{100}s \\ T_{out1} = 4s\\ T_{out1} = T_{clk1} * N_1 \end{cases}\)
解得 \(N_1 = 400\)

2端口分析

根据题目要求,该过程共进行20秒即终止,使用方式0,当计数器2在工作时,\(OUT_2\)输出低电平,在计数结束后输出高电平,因为\(OUT2\)输出口接了一个反相器,所以低电平有效,因此,\(T_{out2} = 20s\)
\(\because OUT0\)\(CLK2\)连在一起
\(\therefore T_{clk2} = T_{out0} = \frac{1}{100}s\)
\(\because 在8253中,有T_{out} = T_{clk} * N(N为计数初值)成立\)
\(\therefore T_{out2} = T_{clk2} * N_2\)
联立\(\begin{cases} T_{clk2} = \frac{1}{100}s \\ T_{out2} = 20s\\ T_{out2} = T_{clk2} * N_2 \end{cases}\)
解得 \(N_2 = 2000\)

0端口代码

使用BCD码,所以5000H是等于十进制的5000

MOV AL,35H; (00110101B) 计数器0 先低8再高8 方式2 BCD码
OUT 43H,AL; 写入方式控制字
MOV AL,00H
OUT 40H,AL; 先写入低8位
MOV AL,50H
OUT 40H,AL; 再写入高8位

1端口代码

使用BCD码,所以0400H是等于十进制的400

MOV AL,77H; (01110111B) 计数器1 先低8再高8 方式3 BCD码
OUT 43H,AL; 写入方式控制字
MOV AL,00H
OUT 41H,AL; 先写入低8位
MOV AL,04H
OUT 41H,AL; 再写入高8位

2端口代码

使用BCD码,所以2000H是等于十进制的2000

MOV AL,B1H; (10110001B) 计数器2 先低8再高8 方式0 BCD码
OUT 43H,AL; 写入方式控制字
MOV AL,00H
OUT 42H,AL; 先写入低8位
MOV AL,20H
OUT 42H,AL; 再写入高8位
posted @   麻辣猪仔  阅读(1226)  评论(2编辑  收藏  举报
点击右上角即可分享
微信分享提示