
帮忙做一道微机原理题
某一8253的端口地址84H—87H,其中87H为控制口,84H—86H分别为通道0、通道1和通道2。现要求设置通道0的功能为:在外部脉冲信号的作用下,OUT端产生一个宽...
某一8253的端口地址84H—87H,其中87H为控制口,84H—86H分别为通道0、通道1和通道2。现要求设置通道0的功能为:在外部脉冲信号的作用下,OUT端产生一个宽度为20ms的负脉冲,外部时钟fCLK=40kHz。采用BCD计数,试完成其编程。
谢谢大家咯!
miniflydreamer 可否简单讲解一下??? 展开
谢谢大家咯!
miniflydreamer 可否简单讲解一下??? 展开
9个回答
展开全部
8253初始化编程,重点有二:
1、确定控制字
2、计数器计数初值
把这两个搞准了,编程就很简单了。
首先确定控制字。8253芯片有一个8位的控制字寄存器(D7D6D5D4D3D2D1D0),其中,D7D6:计数器(通道)选择,D5D4:计数器读/写方式,D3D2D1:计数器工作方式,D0:计数方式(二进制或BCD计数)。依题意,
D7D6:00(计数器0)
D5D4:11(先读/写低8位,后读/写高8位)
D3D2D1:001(数字单稳)
D0:1(BCD计数)
这样,控制字确定为:00110011B
然后再确定计数器初值。外部时钟fCLK=40kHz,要OUT端产生一个宽度为20ms的负脉冲,则计数初值=40kHz x 20ms=800(十进制)。
下面就可以写初始化程序了,
mov al,33H ;控制字:00110011B
out 87H,al ;写入控制字
xor al,al
out 84H,al ;向计数器0写低8位初值
mov al,8
out 84H,al ;向计数器0写高8位初值
1、确定控制字
2、计数器计数初值
把这两个搞准了,编程就很简单了。
首先确定控制字。8253芯片有一个8位的控制字寄存器(D7D6D5D4D3D2D1D0),其中,D7D6:计数器(通道)选择,D5D4:计数器读/写方式,D3D2D1:计数器工作方式,D0:计数方式(二进制或BCD计数)。依题意,
D7D6:00(计数器0)
D5D4:11(先读/写低8位,后读/写高8位)
D3D2D1:001(数字单稳)
D0:1(BCD计数)
这样,控制字确定为:00110011B
然后再确定计数器初值。外部时钟fCLK=40kHz,要OUT端产生一个宽度为20ms的负脉冲,则计数初值=40kHz x 20ms=800(十进制)。
下面就可以写初始化程序了,
mov al,33H ;控制字:00110011B
out 87H,al ;写入控制字
xor al,al
out 84H,al ;向计数器0写低8位初值
mov al,8
out 84H,al ;向计数器0写高8位初值

2025-08-14 广告
联系电话:19970352726;上海炙云新能源科技有限公司及分公司苏州湛云科技有限公司是国家高新技术企业,也是苏州“姑苏领军人才企业” 主要方向为电池全生命周期的检测设备及服务闭环生态链品牌,主要业务为电池全生命周期的智能检测和评价,是一...
点击进入详情页
本回答由湛云科技提供
展开全部
fclk = 40KHz 和t0=20ms(f0=0.05kHz) 故计数器0初值为:N0=fclk/f0=40kHz/0.05kHz=800 (十进制数)
程序如下:
MOV AL,00110011B;控制字:通道0,先写低8位再写高8位,方式1,BCD计数
OUT 87H,AL ;写入通道0控制字
MOV AL,00H
OUT 84H,AL ;对通道0置低 8位初值
MOV AL,08H
OUT 84H,AL ;置高 8位初值
程序如下:
MOV AL,00110011B;控制字:通道0,先写低8位再写高8位,方式1,BCD计数
OUT 87H,AL ;写入通道0控制字
MOV AL,00H
OUT 84H,AL ;对通道0置低 8位初值
MOV AL,08H
OUT 84H,AL ;置高 8位初值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MOV AL,33H
OUT 87H,AL
MOV AL,00H
OUT 84H,AL
MOV AL,08H
OUT 84H,AL
fclk = 40KHz 和tc=20ms 则计数器初值为:N=800(十进制)所以应置初值为800(十进制)
OUT 87H,AL ;设置计数器 0的操作方式
OUT 84H,AL ;对计数0置低 8位初值
OUT 84H,AL ;置高 8位初值
OUT 87H,AL
MOV AL,00H
OUT 84H,AL
MOV AL,08H
OUT 84H,AL
fclk = 40KHz 和tc=20ms 则计数器初值为:N=800(十进制)所以应置初值为800(十进制)
OUT 87H,AL ;设置计数器 0的操作方式
OUT 84H,AL ;对计数0置低 8位初值
OUT 84H,AL ;置高 8位初值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
回答者: miniflydreamer - 七级 2010-1-14 13:09
写的不错,满足LZ的需求了,但是对我来说不是很全面。
如果我是LZ的微机老师,你提交他写的东西给我,我最多给你63分。
写的不错,满足LZ的需求了,但是对我来说不是很全面。
如果我是LZ的微机老师,你提交他写的东西给我,我最多给你63分。
参考资料: QQ897679
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我可以帮你做,不过要收点小费了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询