⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 acc1-2.asm

📁 基于数据采集中的二次曲线插值算法程序
💻 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 + -