了解定时器 / 计数器 8253 的原理,掌握编制定时器 / 计数器程序设计方法。编程
设计连线和程序,以 1MHz
的信号为时钟信号,利用 8253 产生 1s
的定时控制发光二极管变化。设计
1MHz
输出接 8253 的 CLK1
。GATE1
接 +5V
(在实验箱的左上角和右上角)。OUT1
接 8253 的 CLK2
。GATE2
接 +5V
。OUT2
的输出为 1s
方波,接 M 区的一个发光二极管。OE#
接实验箱的地线(在实验箱的左下角和右下角)。模块电源部分( L 区)的 JP7
(控制 LED)短接。J1
的插头插上扁平电缆和微机相连。CODE SEGMENT 'code' ASSUME CS:CODE START: MOV DX,307H ; MOV AL,01110110B ;计数器一,先读写低八位,后读写高八位,方式 3,二进制计数 OUT DX,AL ; MOV DX,305H ;一号计数器 MOV AL,0E8H ; OUT DX,AL ; MOV AL,03H ; OUT DX,AL ;送计数初值 03E8H = 1000 MOV DX,307H ; MOV AL,10110110B ;计数器二,先读写低八位,后读写高八位,方式 3,二进制计数 OUT DX,AL ; MOV DX,306H ;二号计数器 MOV AL,0E8H ; OUT DX,AL ; MOV AL,03H ; OUT DX,AL ;送计数初值 03E8H=1000 MOV AH,4CH ; INT 21H ; CODE ENDS END START
OUT2
的输出为 1s
方波,接 8255 的 PC4
。PA0~PA7
接 M 区的发光二极管 L1~L8
。JP7
。PORTA=300H PORTB=301H PORTC=302H CONTROL=303H CODE SEGMENT 'code' ASSUME CS:CODE START: MOV DX,307H ;{工做方式初始化 MOV AL,01110110B ;计数器一,先读写低八位,后读写高八位,方式3,二进制计数 OUT DX,AL ;} MOV DX,305H ;{一号计数器 MOV AL,0E8H ; OUT DX,AL ; MOV AL,03H ;送计数初值 03E8H = 1000 OUT DX,AL ;} MOV DX,307H ;{工做方式初始化 MOV AL,10110110B ;计数器二,先读写低八位,后读写高八位,方式3,二进制计数 OUT DX,AL ;} MOV DX,306H ;{二号计数器 MOV AL,0E8H ; OUT DX,AL ; MOV AL,03H ;送计数初值 03E8H = 1000 OUT DX,AL ;} MOV DX,CONTROL ;{工做方式初始化 MOV AL,88H ;A 口输出,C 口高四位输入 OUT DX,AL ;} MOV BL,11111110B ;二极管初始显示状态 MOV DX,PORTC ;{ L1: IN AL,DX ; TEST AL,10H ;判断 AL 第 5 位是否为 1 JNZ L1 ;ZF = 0 转移到标号地址} MOV DX,PORTA ;{ MOV AL,BL ;将 BL 的值输出到二极管 OUT DX,AL ;} ROL BL,1 ;循环左移一位 L2: MOV DX,PORTC ;{ IN AL,DX ; TEST AL,10H ;判断 AL 第 5 位是否为 1 JZ L2 ;ZF = 1 转移到标号地址} JMP L1 ; MOV AH,4CH ; INT 21H ; CODE ENDS END START
本次实验,加深了我对定时器 / 计数器 8253 的原理的了解,掌握了编制定时器 / 计数器程序设计方法。在最后的思考题中,经过不断的尝试、修改连线和程序,我对接口编程更加熟练了,为我从此的实验及课程设计打下了良好的基础。code