📄 mm401_2.asm
字号:
;mm401_2.asm
;for 锯齿波16次<8086>
;2005-05
;p_Sa/lcy
data SEGMENT
PA EQU 280h
PB EQU 281h
PC EQU 282h
PCTL EQU 283h ;Y0(280h-287h)
T0 EQU 288H
T1 EQU 289H
T2 EQU 28aH
TCTL EQU 28bH ;Y1(288h-28bh)
PORT EQU 290H ;Y2(290h-297h)
data ENDS
stack0 SEGMENT para stack
DW 20h DUP(0)
stack0 ENDS
coseg SEGMENT
ASSUME CS:coseg,DS:data,SS:stack0
start: MOV AX, data
MOV DS, AX
;================MOV-DS-AX==============
;;8253和8255的初始化:
MOV DX, TCTL
MOV AL, 25h ;00-10-010-1B:0通道,高8位,方式(频率发生器),BCD记数
OUT DX, AL
MOV DX, T0
MOV AL, 10h ;1us=>1ms频率
OUT DX, AL
MOV AL, 98h ;1-0011-000B:A口方式0输入,B口方式0输出
MOV DX, PCTL
OUT DX, AL
;;总的波形次数ffffh次:
MOV SI, 0
l0:MOV CX, 16
;MOV CX, 32
MOV BL,7fh ;从2.5V开始
L1:MOV DX, PC
p1:IN AL, DX ;p1循环判断pc7的脉冲是否到来
TEST AL, 80h
JE p1
MOV DX, PORT
MOV AL, BL
OUT DX, AL
ADD BL, 08H ;16次循环16×08h=80h,80h+7fh=ffh,达到5V
MOV DX, PC
p2:IN AL, DX ;p2循环判断pc7的脉冲是否已经过去
TEST AL, 80h
JNE p2
LOOP l1
DEC SI
JNE l0
;================INT-21H================
MOV AH, 4ch
INT 21h
coseg ENDS
END start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -