
通道0::
MOV AL,00110100B ; MOV DX,0FFF6H ;OUT DX,AL; MOV AX,2000; MOV DX,0FFFOH ;OUT DX,AL; MOV AL,AH ;OUT DX,AL
通道1:
MOV DX,0FFF6H; MOV AL,01110000B ; MOV DX,0FFF0H; MOV AX,100 ;OUT DX,AL ;MOV AL,AH ;OUT DX,AL
举例说明如下:.
8253端口地址为180h~183h,从clk1输入2mhz时钟脉冲,
要求输出100khz方波,写出初始化程序。
答:
计数初值=输入脉冲频率/输出方波频率
=2mhz/100khz
=20d
=14h
通道1、仅读写低字节、方式3、二进数,控制字为:01
01
011
0
b
初始化程序如下:
mov
al,
01010110b
工作方式控制字写入al
mov
dx,
183h
8253控制控制口地址送入dx
out
dx,
al
将保存于al中的控制字写入8253控制口
mov
al,
14h
计数初值送入al
mov
dx,
181h
8253通道1地址送入dx
out
dx,
al
将保存于al中的计数初值写入通道1低字节
设8253的选通地址为240H~243H,
240H:计数器0
241H:计数器1
242H:计数器2
243H:控制寄存器
采用BCD计数,计数器2输出用于申请中断。
如果计数器2的输入时钟频率为20KHz,
输出信号每秒引起100次中断。
要求
(1)算出计数初值,
(2)编写初始化程序。
(1)初值为20KHZ/100=200或C8H
(2)编程:
MOV DX,243H-----控制寄存器地址
MOV AL,0B1H-----控制字
OUT DX,AL------写入控制寄存器
MOV DX,242H-----计数器2地址
MOV AL, 8CH-----初值低八位,错!
MOV AL, 0C8H-----初值低八位
OUT DX,AL------写入计数器2
MOV AL,00H------初值高八位
OUT DX,AL------写入计数器2
----------
另外,按照给定的程序,初值是:00C8H。
但是,题目的要求是,用 BCD 码计数,
那么,初值,就应该是:0200H,这才是 200 的 BCD 码。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)