1.设8251A为异步方式,1个停止位,偶校验,7个数据位,波特率因子为16,请写出其方式字。若发送使能,接收使能,DTR端输出低电平,TXD端发送空白字符,RTS端输出低电平,内部不复位,出错标志复位,请写出控制字;并编写程序完成其初始化设置。
方式字=01111010B 控制字=00111111B 关于控制字的格式可参考这篇文章:8251A查询法收发数据的通信程序 设端口地址为 40H、42H
MOV AL,01111010B
OUT 42H,AL
MOV AL,00111111B
OUT 42H,AL
2.要求计数器0工作于方式3,输出方波的重复频率为2KHZ,计数脉冲输入为2.5MHZ,采用BCD计数,试写出初始化程序段。
8253计数器的计数初值=分频系数=fclk/fout=时钟脉冲/输出频率=(波特率*波特率因子)/输出频率 计算计数初始值 TC=2.5MHz/2KHz=1250 方式控制字为00110111=37H,即计数器0,写16位,方式3,BCD计数。 设8253的端口地址为80H,81H,82H,83H。 则初始化程序段为
MOV AL,37H ;写入方式控制字
OUT 83H,AL
MOV AL,50H ;写入计数初始值低8位
OUT 80H,AL
MOV AL,12H ;写入计数初始值高8位
OUT 80H,AL
3.某系统中8253芯片的通道02和控制端口地址分别为FFF0HFFF3H。定义通道0工作在方式2,CLK0=2MHz,要求输出OUT0为1kHz的速率波;定义通道l工作在方式0,其CLKl输入外部计数事件,每计满100个向CPU发出中断请求。试写出8253通道1,0和通道1的初始化程序。
通道0的计数值为:2MHz/1kHz = 2000 8253初始化程序如下:
MOVAL,00110100B ;计数器0,先读/写低8位,再读/写高8位,模式2,二进制
MOVDX,0FFF3H
OUTDX,AL
MOVAX,2000
MOVDX,0FFFOH
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVDX,0FFF3H
MOVAL,01110000B ;计数器1,先读/写低8位,再读/写高8位,模式0,二进制
OUTDX,AL
MOV DX,0FFF1H
MOVAX,100
OUTDX,AL
MOVAL,AH
OUTDX,AL
4&#x