GOTO CHKPROG ; 22-23
MOV LW 0x2B ; BT2 + FSR,5 23
MOV WF FSR ; to 2. byte 24
BSF STATUS,SEITE ; 25
GOTO DECOD ; 26-27
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;--------------------------------
NEXT NOP ; 15
RLF INDF,1 ; 1.Byte zusammenbauen 16
DECFSZ HI,0 ; HI=1? 17
GOTO INTEST1 ; next bit 18-19
GOTO START21 ; 19-20
;....................................................................
VMIDHI EQU 0x0A ; BT1
VMIDLO EQU 0x0B ; BT2
MULT1 EQU 0x0C ; BT3
MULT2 EQU 0x0D ; BT4
COUNT EQU 0x0E ; BT5
TEMP EQU 0x0F ; BT6
;--------------------------------
RSPEED MOV F CV55,1 ;
BTFSC STATUS,ZERO ;
GOTO FSPEED ;
SUBWF CV55,0 ;
GOTO RSPDEX ;
CV2CV5 MOV F CV2,0 ; CV2CV5
MOV F CV51,1 ;
BTFSS SPEED2 ; activ low
BTFSC STATUS,ZERO ; 2nd Vmax for direction if CV51 not set
BTFSC DIR ;
BTFSC FLAGS2 ; flag for 2nd FS
GOTO RSPEED ;
FSPEED SUBWF CV5,0 ;
RSPDEX MOV WF MULT1 ;
MOV WF VMIDHI ; CV5-CV2
;................................ correction 28->32 .................
BCF STATUS,CARRY ;
RRF MULT1,1 ; /2 (127)
SWAPF VMIDHI,0 ; /16
ANDLW 00001111b ;
ADDWF MULT1,1 ; 127+15
MOV WF TEMP ;
RRF TEMP,0 ;
ADDWF MULT1,1 ; 142+7
INCF MULT1,1 ;
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
MOV LW 4 ; 4-31 -> 0-27
SUBWF S31,0 ;
MOV WF MULT2 ;
;-------
CALL MULTIP ; 104-105 (1-86)
;-------
RRF MULT1,1 ; 77
RRF MULT2,1 ; /4 78
RRF MULT1,1 ; 79
RRF MULT2,1 ; /8 80
RRF MULT1,1 ; 81
RRF MULT2,1 ; /16 82
RRF MULT1,1 ; 83
RRF MULT2,1 ; /32 84
;-------
BTFSC MULT1,0 ; > 255 ?
GOTO BORROW ;
MOV F CV2,0 ;
ADDWF MULT2,0 ;
BTFSC STATUS,CARRY ;
BORROW MOV LW 255 ;
MOV WF SOLL ;
;----------------------------------------------VMID------------------
VMID BCF FSR,5 ;-------------------
CALL STEP ; for better PWM
BSF FSR,5 ;-------------------
CLRF VMIDLO ;
MOV F CV6,0 ;
BTFSC STATUS,ZERO ;
GOTO VMIDEND ; no VMID
ANDLW 01111111b ;
MOV WF MULT1
MOV F VMIDHI,0 ; CV5-CV2
MOV WF MULT2
;-------
CALL MULTIP
;-------
MOV F MULT1,0 ; CV6*(CV5-CV2)/255
MOV WF VMIDHI ;
BTFSS CV6,7 ;
GOTO NEGVMID ;
MOV LW 4 ;
SUBWF S31,0 ; 4-31 > 0-27
GOTO VMID1 ;
NEGVMID COMF S31,0 ;
ANDLW 00011111b ;
VMID1 MOV WF COUNT ;
BTFSS COUNT,4 ;
BTFSC COUNT,3 ;
GOTO VMIDMUL ; > 7 lin
MOV WF TEMP ;
BTFSC STATUS,ZERO ;
GOTO VMID3 ;
BCF STATUS,CARRY ;
VMID2 RRF VMIDHI,1 ; ->c log
RRF VMIDLO,1 ; c-> /2
DECFSZ COUNT,1 ;
GOTO VMID2 ;
VMID3 MOV F VMIDHI,0 ;
SUBWF MULT1,0 ;
GOTO VMIDEND ;
;--------------------------------
VMIDMUL BCF STATUS,CARRY
RRF VMIDHI,0 ; CV6 /2
ADDWF VMIDHI,0 ; CV6 - CV6 / 2
MOV WF MULT1 ;
MOV LW 7 ;
SUBWF COUNT,0 ; (S31)
MOV WF MULT2 ;
BCF STATUS,CARRY ;
RRF MULT2,0 ; /2
ADDWF MULT1,1 ;
BTFSC MULT2,0 ; odd
INCF MULT1,1 ;
;-------
CALL MULTIP ; 248-249 (1-86)
;-------
RLF MULT2,1 ;
RLF MULT1,1 ; /128
RLF MULT2,1 ;
RLF MULT1,1 ; /64
RLF MULT2,1 ;
RLF MULT1,1 ; /32
INCF MULT1,0 ;
SUBWF VMIDHI,0 ;
;------------
VMIDEND BTFSS CV6,7 ;
GOTO SUBVMID ;
ADDWF SOLL,0 ;
BTFSS STATUS,CARRY ;
MOV WF SOLL ;
SUBEX BSF FS126 ;
BCF FSR,5 ;
GOTO START ;
SUBVMID SUBWF SOLL,0 ;
BTFSC STATUS,CARRY ;
MOV WF SOLL ;
GOTO SUBEX ;
;------------------------------------------END VMID------------------
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;--------------------------------------------------------------------
START1. NOP ; 1.
START2. GOTO $+1 ;* 2.-3.
START4. GOTO $+1 ; 4.-5.
START6. CALL STEP ; 6.-7.
START1 GOTO $+1 ; 1-2
START3 GOTO $+1 ; 3-4
START5 GOTO $+1 ; 5-6
START7 GOTO $+1 ; 7-8
START9 NOP ; 9
START10 GOTO START ; 10-11
START11 GOTO $+1 ; 11-12
START13 GOTO $+1 ; 13-14
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
本文关键字:单片机 程序 玩具 PIC单片机,单片机-工控设备 - PIC单片机