ctw_dy.asm
来自「线切割机床高频电源脉冲发生器的程序」· 汇编 代码 · 共 1,253 行 · 第 1/2 页
ASM
1,253 行
#include "p16c73b.inc"
REG_BASE EQU 0x20
;===================寄存器定义===================
;============接收参数缓冲区==================
TON EQU REG_BASE ;脉宽
TOFFL EQU REG_BASE+0X1 ;停歇
TOFFH EQU REG_BASE+0X2
IP EQU REG_BASE+0X3 ;低压管数
WAVEFORM EQU REG_BASE+0X4 ;WAVE SELECT
CHECKSUML EQU REG_BASE+0X5
CHECKSUMH EQU REG_BASE+0X6
;=============工作寄存器定义================
TEMP EQU REG_BASE+0X0A
REGL EQU REG_BASE+0X0B
REGH EQU REG_BASE+0X0C
FLAG EQU REG_BASE+0X0D
RECEIVEBYTE EQU REG_BASE+0X0E
COUNTERL EQU REG_BASE+0X0F
COUNTERH EQU REG_BASE+0X10
LOOPREG EQU REG_BASE+0X11
SUML EQU REG_BASE+0X12
SUMH EQU REG_BASE+0X13
PORTB_MAP EQU REG_BASE+0X14
;===========FLAG BIT DEFINE==========
HASMODIFY EQU 0X0 ;加工参数已经修改标志
DATA_BIT_STATUS EQU 0X1 ;接收数据位的状态
;============PORTC======================
SCLK EQU 0X0
SDATA EQU 0X1
SACK EQU 0X2
RETRY EQU 0X3
STOP EQU 0X5
;=============PORTB=====================
IP4 EQU 0X0
IP8 EQU 0X1
IP3 EQU 0X2
IP7 EQU 0X3
IP2 EQU 0X4
IP6 EQU 0X5
IP5 EQU 0X6
IP1 EQU 0X7
ORG 0X0000
GOTO START
ORG 0X0004
RETFIE
ORG 0X0050
START:
;---------------系统初始化---------------------
BSF STATUS,RP0 ;1页
CLRF INTCON ;禁止所有中断
MOVLW B'00000111'
MOVWF ADCON1 ;设置PORT A 为数字I/O口
MOVLW B'00000000' ;设置A 口所有管脚为输出
MOVWF TRISA
MOVLW B'00000000' ;设置B 口所有管脚为输出
MOVWF TRISB
MOVLW B'00100011'
MOVWF TRISC
BCF STATUS,RP0 ;0页
;初始化输出端口的状态
MOVLW 0XFF
MOVWF PORTB
MOVWF PORTA
MOVWF PORTC
CLRF FLAG ;清除标志寄存器
;初始化加工参数表
MOVLW 0X14 ;设置脉宽 = 20
MOVWF TON
;设置停歇 = 20
MOVLW 0X64
MOVWF TOFFL
CLRF TOFFH
MOVLW 0X2
MOVWF IP ;设置IP = 2
CLRF WAVEFORM ;设置无阶梯波
CALL HANDSHAKE ;通信握手
;主程序入口
ENTRY:
BCF FLAG,HASMODIFY
CLRF REGL
MOVF IP,F
BTFSC STATUS,Z
GOTO INIT_PORTB_MAP
MOVF IP,W
MOVWF TEMP
SET_PORTB_MAP:
BSF STATUS,C
RLF REGL,F
DECFSZ TEMP,F
GOTO SET_PORTB_MAP
INIT_PORTB_MAP:
MOVLW 0XFF
MOVWF PORTB_MAP
BTFSC REGL,0X0
BCF PORTB_MAP,IP1
BTFSC REGL,0X1
BCF PORTB_MAP,IP2
BTFSC REGL,0X2
BCF PORTB_MAP,IP3
BTFSC REGL,0X3
BCF PORTB_MAP,IP4
BTFSC REGL,0X4
BCF PORTB_MAP,IP5
BTFSC REGL,0X5
BCF PORTB_MAP,IP6
BTFSC REGL,0X6
BCF PORTB_MAP,IP7
BTFSC REGL,0X7
BCF PORTB_MAP,IP8
MOVLW B'11110000'
ANDWF TON,W
BTFSC STATUS,Z
GOTO WAVEFORM0
MOVF WAVEFORM,F
BTFSS STATUS,Z
GOTO WAVEFORM1
WAVEFORM0:
CALL WAVE_GENERATOR1
GOTO ENTRY
WAVEFORM1:
MOVLW 0X1
SUBWF WAVEFORM,W
BTFSS STATUS,Z
GOTO WAVEFORM2
CALL WAVE_GENERATOR2
GOTO ENTRY
WAVEFORM2:
MOVLW 0X2
SUBWF WAVEFORM,W
BTFSS STATUS,Z
GOTO WAVEFORM3
CALL WAVE_GENERATOR3
GOTO ENTRY
WAVEFORM3:
MOVLW 0X3
SUBWF WAVEFORM,W
BTFSS STATUS,Z
GOTO WAVEFORM4
CALL WAVE_GENERATOR4
GOTO ENTRY
WAVEFORM4:
MOVLW 0X4
SUBWF WAVEFORM,W
BTFSS STATUS,Z
GOTO WAVEFORM5
CALL WAVE_GENERATOR5
GOTO ENTRY
WAVEFORM5:
MOVLW 0X5
SUBWF WAVEFORM,W
BTFSS STATUS,Z
GOTO WAVEFORM6
CALL WAVE_GENERATOR6
GOTO ENTRY
WAVEFORM6:
MOVLW 0X6
SUBWF WAVEFORM,W
BTFSS STATUS,Z
GOTO WAVEFORM7
CALL WAVE_GENERATOR7
GOTO ENTRY
WAVEFORM7:
MOVLW 0X7
SUBWF WAVEFORM,W
BTFSS STATUS,Z
GOTO WAVEFORM8
CALL WAVE_GENERATOR8
GOTO ENTRY
WAVEFORM8:
MOVLW 0X8
SUBWF WAVEFORM,W
BTFSS STATUS,Z
GOTO WAVEFORM9
CALL WAVE_GENERATOR9
GOTO ENTRY
WAVEFORM9:
MOVLW 0X9
SUBWF WAVEFORM,W
BTFSS WAVEFORM,Z
GOTO WAVEFORM0
CALL WAVE_GENERATOR10
GOTO ENTRY
;等频率,无阶梯波脉宽发生程序
WAVE_GENERATOR1:
MOVF TON,W
MOVWF REGL
MOVF PORTB_MAP,W
MOVWF PORTB
GENERATOR_LOOP1:
NOP
NOP
DECFSZ REGL,F
GOTO GENERATOR_LOOP1
MOVLW 0XFF
MOVWF PORTB
CALL OFF_DELAY ;停歇产生
CALL RECEIVE ;接收加工参数
BTFSS FLAG,HASMODIFY
GOTO WAVE_GENERATOR1
RETURN
;============ OFF DELAY =====================
OFF_DELAY:
; CONVERT DIRECTION
MOVF TOFFL,W
MOVWF REGL
MOVF TOFFH,W
MOVWF REGH
MOVLW 0X1
OFF_DELAY1:
NOP
SUBWF REGL,F
BTFSC STATUS,C
GOTO OFF_DELAY1
MOVF REGH,F
BTFSC STATUS,Z
GOTO WAIT
DECF REGH,F
GOTO OFF_DELAY1
WAIT:
BTFSS PORTC,STOP
GOTO WAIT
RETURN
;============OFF DELAY END====================
;======等频率,有阶梯波脉宽发生程序======
WAVE_GENERATOR2:
MOVF TON,W
MOVWF REGL
BTFSS PORTB_MAP,IP1
BCF PORTB,IP1
BTFSS PORTB_MAP,IP2
BCF PORTB,IP2
BTFSS PORTB_MAP,IP3
BCF PORTB,IP3
BTFSS PORTB_MAP,IP4
BCF PORTB,IP4
BTFSS PORTB_MAP,IP5
BCF PORTB,IP5
BTFSS PORTB_MAP,IP6
BCF PORTB,IP6
BTFSS PORTB_MAP,IP7
BCF PORTB,IP7
BTFSS PORTB_MAP,IP8
BCF PORTB,IP8
NOP
NOP
MOVLW 0X4
SUBWF REGL,F
GENERATOR_LOOP2:
NOP
NOP
DECFSZ REGL,F
GOTO GENERATOR_LOOP2
GENERATOR2_END:
MOVLW 0XFF
MOVWF PORTB
CALL OFF_DELAY ;停歇产生
CALL RECEIVE ;接收加工参数
BTFSS FLAG,HASMODIFY
GOTO WAVE_GENERATOR2
RETURN
WAVE_GENERATOR3:
MOVF TON,W
MOVWF REGL
BTFSS PORTB_MAP,IP1
BCF PORTB,IP1
NOP
BTFSS PORTB_MAP,IP2
BCF PORTB,IP2
NOP
BTFSS PORTB_MAP,IP3
BCF PORTB,IP3
NOP
BTFSS PORTB_MAP,IP4
BCF PORTB,IP4
NOP
BTFSS PORTB_MAP,IP5
BCF PORTB,IP5
NOP
BTFSS PORTB_MAP,IP6
BCF PORTB,IP6
NOP
BTFSS PORTB_MAP,IP7
BCF PORTB,IP7
NOP
BTFSS PORTB_MAP,IP8
BCF PORTB,IP8
NOP
MOVLW 0X5
SUBWF REGL,F
GENERATOR_LOOP3:
NOP
NOP
DECFSZ REGL,F
GOTO GENERATOR_LOOP3
GENERATOR3_END:
MOVLW 0XFF
MOVWF PORTB
CALL OFF_DELAY ;停歇产生
CALL RECEIVE ;接收加工参数
BTFSS FLAG,HASMODIFY
GOTO WAVE_GENERATOR3
RETURN
WAVE_GENERATOR4:
MOVF TON,W
MOVWF REGL
BTFSS PORTB_MAP,IP1
BCF PORTB,IP1
NOP
NOP
BTFSS PORTB_MAP,IP2
BCF PORTB,IP2
NOP
NOP
BTFSS PORTB_MAP,IP3
BCF PORTB,IP3
NOP
NOP
BTFSS PORTB_MAP,IP4
BCF PORTB,IP4
NOP
NOP
BTFSS PORTB_MAP,IP5
BCF PORTB,IP5
NOP
NOP
BTFSS PORTB_MAP,IP6
BCF PORTB,IP6
NOP
NOP
BTFSS PORTB_MAP,IP7
BCF PORTB,IP7
NOP
NOP
BTFSS PORTB_MAP,IP8
BCF PORTB,IP8
MOVLW 0X6
SUBWF REGL,F
GENERATOR_LOOP4:
NOP
NOP
DECFSZ REGL,F
GOTO GENERATOR_LOOP4
GENERATOR4_END:
MOVLW 0XFF
MOVWF PORTB
CALL OFF_DELAY ;停歇产生
CALL RECEIVE ;接收加工参数
BTFSS FLAG,HASMODIFY
GOTO WAVE_GENERATOR4
RETURN
WAVE_GENERATOR5:
MOVF TON,W
MOVWF REGL
BTFSS PORTB_MAP,IP1
BCF PORTB,IP1
NOP
NOP
NOP
BTFSS PORTB_MAP,IP2
BCF PORTB,IP2
NOP
NOP
NOP
BTFSS PORTB_MAP,IP3
BCF PORTB,IP3
NOP
NOP
NOP
BTFSS PORTB_MAP,IP4
BCF PORTB,IP4
NOP
NOP
NOP
BTFSS PORTB_MAP,IP5
BCF PORTB,IP5
NOP
NOP
NOP
BTFSS PORTB_MAP,IP6
BCF PORTB,IP6
NOP
NOP
NOP
BTFSS PORTB_MAP,IP7
BCF PORTB,IP7
NOP
NOP
NOP
BTFSS PORTB_MAP,IP8
BCF PORTB,IP8
NOP
NOP
MOVLW 0X8
SUBWF REGL,F
GENERATOR_LOOP5:
NOP
NOP
DECFSZ REGL,F
GOTO GENERATOR_LOOP5
GENERATOR5_END:
MOVLW 0XFF
MOVWF PORTB
CALL OFF_DELAY ;停歇产生
CALL RECEIVE ;接收加工参数
BTFSS FLAG,HASMODIFY
GOTO WAVE_GENERATOR5
RETURN
WAVE_GENERATOR6:
MOVF TON,W
MOVWF REGL
BTFSS PORTB_MAP,IP1
BCF PORTB,IP1
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP2
BCF PORTB,IP2
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP3
BCF PORTB,IP3
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP4
BCF PORTB,IP4
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP5
BCF PORTB,IP5
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP6
BCF PORTB,IP6
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP7
BCF PORTB,IP7
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP8
BCF PORTB,IP8
MOVLW 0X9
SUBWF REGL,F
GENERATOR_LOOP6:
NOP
NOP
DECFSZ REGL,F
GOTO GENERATOR_LOOP6
GENERATOR6_END:
MOVLW 0XFF
MOVWF PORTB
CALL OFF_DELAY ;停歇产生
CALL RECEIVE ;接收加工参数
BTFSS FLAG,HASMODIFY
GOTO WAVE_GENERATOR6
RETURN
WAVE_GENERATOR7:
MOVF TON,W
MOVWF REGL
BTFSS PORTB_MAP,IP1
BCF PORTB,IP1
NOP
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP2
BCF PORTB,IP2
NOP
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP3
BCF PORTB,IP3
NOP
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP4
BCF PORTB,IP4
NOP
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP5
BCF PORTB,IP5
NOP
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP6
BCF PORTB,IP6
NOP
NOP
NOP
NOP
NOP
BTFSS PORTB_MAP,IP7
BCF PORTB,IP7
NOP
NOP
NOP
NOP
NOP
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?