有如图所示的接口简化图,要使发光二极管亮2秒,熄灭2秒,但该过程共进行20秒即终止,设OUT0输入频率为100HZ。8253端口地址为40H~43H编写出程序
由图可得
\(T_0 = \frac{1}{500KHZ}\)
\(OUT_0 = T_0 * N_0\)
\(OUT_1 = OUT_0 * N_1\)
\(OUT_2 = OUT_0 * N_2\)
因为要使发光二极管亮2s,熄灭2s,所以2s高电平,2s低电平,可用方式3输出周期为4s的方波,因此,\(OUT_1 = 4\)
根据题目要求,该过程共进行20秒即终止,使用方式0,当计数器2在工作时,\(OUT_2\)输出低电平,在计数结束后输出高电平,因为\(OUT2\)输出口接了一个反相器,所以低电平有效,因此,\(OUT_2=20\)
使用BCD码,所以5000H是等于十进制的5000
\(OUT_0 = T_0 * N_0 = \frac{1}{500K} * 5000 = \frac{1}{100}\)
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位
使用BCD码,所以0400H是等于十进制的400
\(OUT_1 = OUT_0 * N_1 = \frac{1}{100} * 400 = 4\)
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位
使用BCD码,所以2000H是等于十进制的2000
\(OUT_2 = OUT_0 * N_2 = \frac{1}{100} * 2000 = 20\)
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位
原文:https://www.cnblogs.com/wstong/p/13124075.html