方式一:
;8253定时器
;C4区:CS、A0、A1-------A3区:CS2、A0、A1
;C4区:GATE -------C1区:VCC(+5V)
;C4区:CLK0 -------B2区:31250
;C4区:OUT0 -------F4区:LED1
;C4区:OUT0 -------C4区:CLK1
;C4区:OUT1 -------F4区:LED2
.MODEL TINY
T0_8253 EQU 260H
T1_8253 EQU 261H
T2_8253 EQU 262H
CTRL_8253 EQU 263H
.STACK 100
.DATA
.CODE
START:
;对T0初始化
MOV AL,00110110B
;选择计数器0、先读/写低字节,后读写高字节、方式3、二进制
MOV DX,CTRL_8253
OUT DX,AL
;写入T0计数初值
;T0产生1秒的信号、0.5秒高电平、0.5秒低电平
;计数器初值1s*31250=7A12H
;写低字节
MOV AL,12H
MOV DX,T0_8253
OUT DX,AL
;写高字节
MOV AL,7AH
OUT DX,AL
;对T1初始化
MOV AL,01010100B
;选择计数器1、只读/写低8位、方式2、二进制
MOV DX,CTRL_8253
OUT DX,AL
;写入 T1计数初值
;T1产生5秒的信号、4秒高电平、1秒低电平
;计数器初值1s*5=5
MOV AL,5H
MOV DX,T1_8253
OUT DX,AL
JMP $
END START
方式二:
;8253定时器
;C4区:CS、A0、A1-------A3区:CS2、A0、A1
;C4区:GATE -------C1区:VCC(+5V)
;C4区:CLK0 -------B2区:31250
;C4区:OUT0 -------F4区:LED1
;C4区:OUT0 -------C4区:CLK1
;C4区:OUT1 -------F4区:LED2
.MODEL TINY
T0_8253 EQU 260H
T1_8253 EQU 261H
T2_8253 EQU 262H
CTRL_8253 EQU 263H
.STACK 100
.DATA
.CODE
START:
;对T0初始化
MOV AL,00110110B
;选择计数器0、先读/写低字节,后读写高字节、方式3、二进制
MOV DX,CTRL_8253
OUT DX,AL
;写入T0计数初值
;T0产生1秒的信号、0.5秒高电平、0.5秒低电平
;计数器初值1s*31250=7A12H
MOV AX,31250
MOV DX,T0_8253
;写低字节
OUT DX,AL
;写高字节
MOV AL,AH
OUT DX,AL
;对T1初始化
MOV AL,01010100B
;选择计数器1、只读/写低8位、方式2、二进制
MOV DX,CTRL_8253
OUT DX,AL
;写入 T1计数初值
;T1产生5秒的信号、4秒高电平、1秒低电平
;计数器初值1s*5=5
MOV AL,5H
MOV DX,T1_8253
OUT DX,AL
JMP $
END START