微机原理题!急!
8253通道2接有一发光二极管要使二极管以点亮3秒熄灭3秒的方式工作请编程实现8253各通道地址分别为ffech——ffefh注假设计时器1工作在方式2其输出频率为1kh...
8253通道2接有一发光二极管要使二极管以点亮3秒熄灭3秒的方式工作请编程实现8253各通道地址分别为ffech——ffefh 注假设计时器1工作在方式2其输出频率为1khz
展开
2个回答
展开全部
例10. 1 用8253监视一个生产流水线,每通过100个工件。蜂鸣器响6s。频率为1000HZ。
① 硬件连接:硬件接口示意图如图10. 20所示,工件从光源与光敏电阻之间通过时,在晶体管的发射极上会产生一个脉冲,此脉冲作为8253计数通道0的计数脉冲,当通道0计数满100后,由OUT0输出负脉冲,经反相后作为8259A的一个中断请求信号,在中断服务程序中,启动8253计数通道1工作,由OUT1连续输出1000HZ的方波,持续6s后停止输出。
② 控制字设置:通道0计数器工作于方式2,采用BCD计数,因计数初值为100,采用RL1RL0=10(读/写计数器的高8位),则方式控制字为00100101B。
通道1计数器工作于方式3,CLK1接2MHZ时钟,要求产生1000HZ的方波,则计数初值应为2000000÷1000=2000,采用RL1RL0=10(只读/写高8位),BCD计数,则方式控制字为01100111B。
③ 程序编制:假设8253通道0的地址为40H,通道1的地址为42H,控制口地址为46H。8255A的A口地址为80H,工作于方式0输出。
则主程序为:
┇
MOV AL,25H ;通道0初始化
OUT 46H,AL
MOV AL,01H ;计数初值高8位,低8位自动清零
OUT 40H,AL
STI ;开中断
LOP: HLT ;等待中断
JMP LOP
中断服务程序为:
MOV AL,01H ;通道1的GATE1置1,启动计数
OUT 80H,AL
MOV AL,67H ;通道1初始化
OUT 46H,AL
MOV AL,20H ;计数初值高8位,低8位自动清零
OUT 42H,AL
CALL DL6s ;延时6s
MOV AL,00H ;通道1的GATE1置0,停止计数
OUT 80H,AL
┇ ;向8259A发中断结束命令
IRET
例10. 2 8253通道2接有一发光二极管,要使发光二极管以点亮2s,熄灭2s的间隔工作,8253各通道端口地址分别为40H、42H、44H、46H,其电路硬件图如图10. 21所示,试编程完成以上工作。
根据要求8253通道2输出一个周期为4s的方波。从图10. 21可知通道1的CLK1输入时钟周期为1μs,若通道1工作为定时,其输出最大定时时间为1×65536μs,仅为65.5ms,因而使用一个通道达不到定时时间4s的要求。此时,采用通道级连的办法,将通道1的输出OUT1作为通道2的输入脉冲。
8253的通道1工作于方式2,其输出端OUT1的输出为相对于1MHZ频率的分频脉冲,若选定OUT1输出脉冲周期为4ms,则通道1的计数初值应为4000。周期为4ms的脉冲作为通道2的输入,要求输出端OUT2的波形为方波且周期为4s,因此通道2应工作于方式3,计数初值为1000。通道1的控制字为01100101B,通道2的控制字为10100111B。
由于计数初值的低8位0,因此采用只读/写高8位的方法,初始化程序如下:
┇
MOV AL,65H ;通道1控制字,只读/写高8位,BCD计数制
OUT 46H,AL
MOV AL,0A7H ;通道2控制字,只读/写高8位,BCD计数制
OUT 46H,AL
MOV AL,40H ;通道1计数初值高8位,低8位自动置0
OUT 42H,AL
MOV AL,10H ;通道2计数初值高8位,低8位自动置0
OUT 44H,AL
┇
例10.3某系统利用8253-5定时器/计数器通道0产生1KHz的重复方波,问通道0应工作在什么工作方式?若CLK0=2MHz,试写出通道0的初始化程序。设8253-5端口地址为2F0H、2F2H、2F4H、2F6H。
解:(1)因为只有方式3可产生重复方波,所以计数通道0应工作在方式3。
(2)首先计算计数初值:
N = (2*106)/(1*103)= 2000
其次确定方式控制字,由于采用BCD计数,只读/写高八位,因而方式控制字为00100111B。
最后编写程序。注意:由于端口地址为2F0H、2F2H、2F4H、2F6H,是16位地址,因此必须采用端口寻址中的DX寄存器间接寻址。程序如下:
MOV DX,2F6H ;通道0初始化
MOV AL,00100111B
OUT DX,AL
MOV DX,2F0H ;写入计数初值高8位,低8位自动清零
MOV AL,20H
OUT DX,AL
① 硬件连接:硬件接口示意图如图10. 20所示,工件从光源与光敏电阻之间通过时,在晶体管的发射极上会产生一个脉冲,此脉冲作为8253计数通道0的计数脉冲,当通道0计数满100后,由OUT0输出负脉冲,经反相后作为8259A的一个中断请求信号,在中断服务程序中,启动8253计数通道1工作,由OUT1连续输出1000HZ的方波,持续6s后停止输出。
② 控制字设置:通道0计数器工作于方式2,采用BCD计数,因计数初值为100,采用RL1RL0=10(读/写计数器的高8位),则方式控制字为00100101B。
通道1计数器工作于方式3,CLK1接2MHZ时钟,要求产生1000HZ的方波,则计数初值应为2000000÷1000=2000,采用RL1RL0=10(只读/写高8位),BCD计数,则方式控制字为01100111B。
③ 程序编制:假设8253通道0的地址为40H,通道1的地址为42H,控制口地址为46H。8255A的A口地址为80H,工作于方式0输出。
则主程序为:
┇
MOV AL,25H ;通道0初始化
OUT 46H,AL
MOV AL,01H ;计数初值高8位,低8位自动清零
OUT 40H,AL
STI ;开中断
LOP: HLT ;等待中断
JMP LOP
中断服务程序为:
MOV AL,01H ;通道1的GATE1置1,启动计数
OUT 80H,AL
MOV AL,67H ;通道1初始化
OUT 46H,AL
MOV AL,20H ;计数初值高8位,低8位自动清零
OUT 42H,AL
CALL DL6s ;延时6s
MOV AL,00H ;通道1的GATE1置0,停止计数
OUT 80H,AL
┇ ;向8259A发中断结束命令
IRET
例10. 2 8253通道2接有一发光二极管,要使发光二极管以点亮2s,熄灭2s的间隔工作,8253各通道端口地址分别为40H、42H、44H、46H,其电路硬件图如图10. 21所示,试编程完成以上工作。
根据要求8253通道2输出一个周期为4s的方波。从图10. 21可知通道1的CLK1输入时钟周期为1μs,若通道1工作为定时,其输出最大定时时间为1×65536μs,仅为65.5ms,因而使用一个通道达不到定时时间4s的要求。此时,采用通道级连的办法,将通道1的输出OUT1作为通道2的输入脉冲。
8253的通道1工作于方式2,其输出端OUT1的输出为相对于1MHZ频率的分频脉冲,若选定OUT1输出脉冲周期为4ms,则通道1的计数初值应为4000。周期为4ms的脉冲作为通道2的输入,要求输出端OUT2的波形为方波且周期为4s,因此通道2应工作于方式3,计数初值为1000。通道1的控制字为01100101B,通道2的控制字为10100111B。
由于计数初值的低8位0,因此采用只读/写高8位的方法,初始化程序如下:
┇
MOV AL,65H ;通道1控制字,只读/写高8位,BCD计数制
OUT 46H,AL
MOV AL,0A7H ;通道2控制字,只读/写高8位,BCD计数制
OUT 46H,AL
MOV AL,40H ;通道1计数初值高8位,低8位自动置0
OUT 42H,AL
MOV AL,10H ;通道2计数初值高8位,低8位自动置0
OUT 44H,AL
┇
例10.3某系统利用8253-5定时器/计数器通道0产生1KHz的重复方波,问通道0应工作在什么工作方式?若CLK0=2MHz,试写出通道0的初始化程序。设8253-5端口地址为2F0H、2F2H、2F4H、2F6H。
解:(1)因为只有方式3可产生重复方波,所以计数通道0应工作在方式3。
(2)首先计算计数初值:
N = (2*106)/(1*103)= 2000
其次确定方式控制字,由于采用BCD计数,只读/写高八位,因而方式控制字为00100111B。
最后编写程序。注意:由于端口地址为2F0H、2F2H、2F4H、2F6H,是16位地址,因此必须采用端口寻址中的DX寄存器间接寻址。程序如下:
MOV DX,2F6H ;通道0初始化
MOV AL,00100111B
OUT DX,AL
MOV DX,2F0H ;写入计数初值高8位,低8位自动清零
MOV AL,20H
OUT DX,AL
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询