用一片8253产生周期为20秒的连续方波信号,已知8253端口地址为210-213H,系统

1个回答
展开全部
摘要 8253延时程序:
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,29BH
MOV AL,00110101B;8253初始化,选择通道0,采用BCD计数方式
OUT DX,AL
MOV DX,298H
MOV AL,00H;写计数器初值,先写低字节,后写高字节
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV DX,29BH
MOV AL,01110111B;8253初始化,选择通道1,采用BCD计数方式
OUT DX,AL
MOV DX,299H
MOV AL,00H;写计数器初值,先写低字节,后写高字节
OUT DX,AL
MOV AL,04H
OUT DX,AL
CODE ENDS
END START
硬件延时控制跑马灯:
CODE SEGMENT
ASSUME CS:CODE
MOV AL,10010010H;8255初始化
MOV DX,283H
OUT DX,AL
;8253硬件延时程序
START:
MOV DX,29BH
MOV AL,00110101B;8253初始化,选择通道0,采用BCD计数方式
OUT DX,AL
MOV DX,298H
MOV AL,00H;写计数器初值,先写低字节,后写高字节
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV DX,29BH
MOV AL,01110111B;8253初始化,选择通道1,采用BCD计数方式
OUT DX,AL
MOV DX,299H
MOV AL,00H;写计数器初值,先写低字节,后写高字节
OUT DX,AL
MOV AL,04H
OUT DX,AL
;8255输出程序
MOV AL,01H
MOV BL,AL;将Al值送到BL暂存
;8253输出电平上升沿进入
XUN1:
MOV DX,281H;从8255B口输入
IN AL,DX
TEST AL,01H;测试8253是否为高电平
JNZ XUN1;否,继续循环测试
XUN2:
MOV DX,280H;从8255A口输入
IN AL,DX
TEST AL,01H;测试开关输出是否为高电平
JNZ XUN2;否,继续循环测试
咨询记录 · 回答于2021-12-13
用一片8253产生周期为20秒的连续方波信号,已知8253端口地址为210-213H,系统
8253延时程序:
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,29BH
MOV AL,00110101B;8253初始化,选择通道0,采用BCD计数方式
OUT DX,AL
MOV DX,298H
MOV AL,00H;写计数器初值,先写低字节,后写高字节
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV DX,29BH
MOV AL,01110111B;8253初始化,选择通道1,采用BCD计数方式
OUT DX,AL
MOV DX,299H
MOV AL,00H;写计数器初值,先写低字节,后写高字节
OUT DX,AL
MOV AL,04H
OUT DX,AL
CODE ENDS
END START
硬件延时控制跑马灯:
CODE SEGMENT
ASSUME CS:CODE
MOV AL,10010010H;8255初始化
MOV DX,283H
OUT DX,AL
;8253硬件延时程序
START:
MOV DX,29BH
MOV AL,00110101B;8253初始化,选择通道0,采用BCD计数方式
OUT DX,AL
MOV DX,298H
MOV AL,00H;写计数器初值,先写低字节,后写高字节
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV DX,29BH
MOV AL,01110111B;8253初始化,选择通道1,采用BCD计数方式
OUT DX,AL
MOV DX,299H
MOV AL,00H;写计数器初值,先写低字节,后写高字节
OUT DX,AL
MOV AL,04H
OUT DX,AL
;8255输出程序
MOV AL,01H
MOV BL,AL;将Al值送到BL暂存
;8253输出电平上升沿进入
XUN1:
MOV DX,281H;从8255B口输入
IN AL,DX
TEST AL,01H;测试8253是否为高电平
JNZ XUN1;否,继续循环测试
XUN2:
MOV DX,280H;从8255A口输入
IN AL,DX
TEST AL,01H;测试开关输出是否为高电平
JNZ XUN2;否,继续循环测试
8253延时程序:
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,29BH
MOV AL,00110101B;8253初始化,选择通道0,采用BCD计数方式
OUT DX,AL
MOV DX,298H
MOV AL,00H;写计数器初值,先写低字节,后写高字节
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV DX,29BH
MOV AL,01110111B;8253初始化,选择通道1,采用BCD计数方式
OUT DX,AL
MOV DX,299H
MOV AL,00H;写计数器初值,先写低字节,后写高字节
OUT DX,AL
MOV AL,04H
OUT DX,AL
CODE ENDS
END START
硬件延时控制跑马灯:
CODE SEGMENT
ASSUME CS:CODE
MOV AL,10010010H;8255初始化
MOV DX,283H
OUT DX,AL
;8253硬件延时程序
START:
MOV DX,29BH
MOV AL,00110101B;8253初始化,选择通道0,采用BCD计数方式
OUT DX,AL
MOV DX,298H
MOV AL,00H;写计数器初值,先写低字节,后写高字节
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV DX,29BH
MOV AL,01110111B;8253初始化,选择通道1,采用BCD计数方式
OUT DX,AL
MOV DX,299H
MOV AL,00H;写计数器初值,先写低字节,后写高字节
OUT DX,AL
MOV AL,04H
OUT DX,AL
;8255输出程序
MOV AL,01H
MOV BL,AL;将Al值送到BL暂存
;8253输出电平上升沿进入
XUN1:
MOV DX,281H;从8255B口输入
IN AL,DX
TEST AL,01H;测试8253是否为高电平
JNZ XUN1;否,继续循环测试
XUN2:
MOV DX,280H;从8255A口输入
IN AL,DX
TEST AL,01H;测试开关输出是否为高电平
JNZ XUN2;否,继续循环测试
MOV AL,BL;将暂存在BL中的值送到AL中
MOV DX,282H
OUT DX,AL;C口输出
;8253输出电平下降沿退出
XUN3:
MOV DX,281H;从8255B口输入
IN AL,DX
TEST AL,01H;测试8253是否为高电平
JZ XUN3;是,继续循环测试
;左移一位,暂存在BL中,防止AL被修改
ROL BL,1
JMP XUN1;循环检测该程序
CODE ENDS
END START
好的,谢谢
好的,谢谢
如果我的回答对你有帮助的话,期待你的赞。
已赞过
你对这个回答的评价是?
评论 收起
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消