📄 acc1-2.asm
字号:
PUBLIC TK ;声明采样周期TK为全局变量
AD_ADDR EQU 0600H
DA1_ADDR EQU 0640H
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT
TK DB 0AH ;采样周期
UK2 DB 00H ;
UK1 DB 00H ;
UK0 DB 00H ;
KK DB 00H ;
K1 DB 00H ;
K2 DB 00H ;
K3 DB 00H ;
K4 DB 00H ;
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
PUSH DS
MOV AX,0000H
MOV DS,AX
MOV AX,OFFSET IRQ7 ;填写8259的7号中断矢量入口地址的偏移量
MOV SI,003CH ;填写8259中断7的中段矢量
MOV [SI],AX ;填偏移量矢量
MOV AX,CS ;填写8259中断矢量入口地址的段地址
MOV SI,003EH ;填写7号中断段地址矢量
MOV [SI],AX
POP DS
CLI ;关系统总中断
CALL SYSINTI ;系统初始化
MOV DX,0F043H ;初始化定时器1 定时10ms
MOV AL,076H
OUT DX,AL
MOV DX,0F041H
MOV AL,10H
OUT DX,AL
MOV DX,0F041H
MOV AL,27H
OUT DX,AL
MOV DX,DA1_ADDR
MOV AL,80H ;D/A输出零
OUT DX,AL
MOV KK,0000H
MOV BL,01H
AGAIN: STI ;开总中断
HLT ;暂停等待中断
JMP AGAIN
IRQ7: PUSH DS
MOV AX,DATA
MOV DS,AX
DEC BL ;IRQ7中断程序
JNZ LL ;采样周期到否
MOV AL,UK1
MOV UK0,AL
MOV AL,UK2
MOV UK1,AL
MOV DX,AD_ADDR ;采样
IN AL,DX
SUB AL,80H
MOV UK2,AL
MOV AL,UK0
PUSH AX
CALL OUTPUT
POP AX
MOV DL,UK1
XCHG AL,DL
SUB AL,DL
MOV K1,AL
MOV AL,UK2
MOV DL,UK0
SUB AL,DL
MOV K2,AL
MOV BL,TK
MOV AL,00H
MOV KK,AL
FINISH: MOV AL,20H
OUT 20H,AL
POP DS
IRET
LL: INC KK ;计算差值点
MOV AL,KK
MOV CL,TK
SUB AL,CL
MOV DL,K1
IMUL DL
IDIV CL
MOV K3,AL
MOV AL,KK
MOV CL,TK
SUB AL,CL
MOV DL,K2
IMUL DL
SAL CL,01H
IDIV CL
MOV DL,K3
SUB AL,DL
IMUL KK
MOV CL,TK
IDIV CL
MOV K4,AL
MOV AL,K1
IMUL KK
MOV CL,TK
IDIV CL
MOV DL,K4
ADD AL,DL
MOV DL,UK0
ADD AL,DL
CALL OUTPUT
JMP FINISH
OUTPUT: ADD AL,80H ;D/A输出
MOV DX,DA1_ADDR
OUT DX,AL
RET
SYSINTI: MOV AX,8000H ;系统初始化子程序
OUT 23H,AL ;扩展IO使能
XCHG AL,AH
OUT 22H,AL
OUT 22H,AX
MOV DX,0F822H ;初始化管脚配置P2CFG,配置CS0#
MOV AL,70H
OUT DX,AL
MOV DX,0F824H ;初始化管脚配置P3CFG,配置主片IRQ7
MOV AL,0B2H
OUT DX,AL
MOV DX,0F832H ;初始化管脚配置INTCFG
MOV AL,0AH
OUT DX,AL
MOV DX,0F834H ;初始化管脚配置TMRCFG
MOV AL,15H
OUT DX,AL
MOV AL,11H ;初始化主片8259
OUT 20H,AL
MOV AL,08H
OUT 21H,AL
MOV AL,04H
OUT 21H,AL
MOV AL,01H
OUT 21H,AL
MOV AL,6FH ;写主片8259的中断屏蔽字,允许主片的IRQ7(用户程序使用)和IRQ4(系统通讯用)
OUT 21H,AL
MOV AL,11H ;初始化从片8259
OUT 0A0H,AL
MOV AL,30H
OUT 0A1H,AL
MOV AL,02H
OUT 0A1H,AL
MOV AL,01H
OUT 0A1H,AL
MOV AL,0FFH
OUT 0A1H,AL
RET
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -