概述
两种控制字:
方式控制字:
8位,D7D6用于选择计数器
D5D4用于选择读写方式
D3D2D1用于选择工作方式
D0用于选择数制
如果使用二进制计数,计数初值最大值为65536(0000H) 初值取值范围为0000H~FFFFH
如果使用BCD计数,计数初值最大值为10000,(0000H) 初值取值范围为0000H~9999H
读出控制字:
D7D6为11,表示为读出控制字
D5,COUNT 非为0表示锁存计数值
D4,STATUS 非为0表示锁存计数器状态信息
如果读出命令仅锁存相应计数器的状态信息,则对相应计数器端口进行一次读操作,即可读出状态信息
如果读出命令仅锁存相应计数器的计数值,则对相应计数器端口进行两次读操作,依次读出计数值的低8位和高8位
如果读出命令仅锁存相应计数器的计数值,则对相应计数器端口执行三次读操作,第一次读出状态信息,第二次读出当前计数器的低8位,第三次读出当前计数器的高8位。
读出命令能同时锁存几个计数器的计数值。?????
8254初始化编程:
(1)向控制字寄存器写入方式控制字
(2)向使用的计数器写入计数初值
设8254端口地址为40H~43H,要求2号计数器工作在方式1,计数初值为十进制数4000,试写出初始化程序段。
40H:0号计数器,41H:1号计数器,42H:2号计数器,43H:控制字寄存器
2号计数器:D7D6=10
方式1:D3D2D1=001
解法一:
使用BCD计数:D0=1
十进制数4000,BCD表示为4000H,高8位为40H,低8位为00H。所以可以只写高8位,D5D4=10
所以方式控制字为10100011即0A3H(注意前面带0)
;写入端口43H
MOV AL,0A3H
OUT 43H,AL; AL/AX用来IO端口的读写
;写计数器的高8位,低8位自动补0
MOV AL,40H
OUT 42H,AL;
解法二:
使用BCD计数,D0=1,可以先写低8位,后写高8位,D5D4=11
方式控制字为10110011即B3H
注意:!!!D5D4先写低8位后写高8位,而不是先写高8位,后写低8位。
MOV AL,B3H
OUT 43H,AL
MOV AL,0
OUT 42H,AL
MOV AL,40H
OUT 42H,AL
注意:程序中BCD码的表示
MOV AX,1234H 1234H表示BCD码(注意加H)
MOV AX,1234 1234表示二进制数
当计数初值大于9999时,只能使用二进制,否则使用BCD码和二进制都可以。
解法三:
使用二进制数,D0=0,D5D4=11,低8位和高8位不能不写
方式控制字:10110010B即B2H
A:1010,B:1011,C:1100,D:1101,E:1110,F:1111
MOV AL,0B2H
OUT 43H,AL
MOV AX,4000 ;4000为二进制数
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
读取当前计数值:
方法1:D7D6=计数器编号,D5D4=00,D3D2D1D0=XXXX,锁存相应计数器的当前计数值,然后对相应的计数器端口进行两次读操作,依次读出计数值的低8位和高8位。
方式2:通过读出命令
例:设8254端口地址为40H~43H,试写出程序段,读取2号计数器当前计数值
读出命令:10,00, 0000=80H
;读出命令
MOV AL,80H
OUT 43H,AL
;读取低8位
IN AL,42H
MOV CL,AL
;读取高8位
IN AL,42H
MOV CH,AL
外扩8254应用举例:
给定2兆信号,在ISA总线上外扩一片8254。口地址为218H~21BH,要求:
设计硬件电路,编程产生8KHZ方波和1.6KHZ的连续脉冲。
解:
0号计数器初值N0=2兆/8k=250<256(所以最多只有8位),工作在方式3、
1号计数器初值N0=2兆/1.6K=1250,有16位,工作在方式2。
所以0号计数器方式控制字 : 00(0号计数器),01(只写低8位), 011(方式3) 0(二进制)
所以1号计数器方式控制字 : 01(1号计数器),11(高8位和低8位),010(方式2),0(二进制)
8254的初始化:
;写入方式控制字
MOV DL,21BH;出错
MOV DX,21BH
MOV AL,16H
OUT AL,DX;出错
OUT DX,AL;CPU把AL的内容送入端口DX
;0号计数器写入计数初值
MOV AL,250
MOV DX,218H
OUT AL,DL;出错
OUT DX,AL
;写入方式控制字
MOV DX,21BH
MOV AL,74H
OUT AL,DL;出错
OUT DX,AL
;1号计数器写入计数初值
MOV AX,1250
MOV DX,219H
;写低8位
OUT AL,DX;出错
OUT DX,AL
;写高8位
MOV AL,AH
OUT AL,DX;出错
OUT DX,AL
in、out 方向从右向左
使用DX存放4字节的端口地址
最后
以上就是搞怪荷花为你收集整理的【微机接口】8254的控制字与编程方法的全部内容,希望文章能够帮你解决【微机接口】8254的控制字与编程方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复