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 + -
显示快捷键?