📄 pic12ce519
字号:
COMF BT1,1 ; 9.Bit=1 (inverting BYTE) 1.
COMF BT2,1 ; (inverting BYTE) 2.
COMF BT3,1 ; (inverting BYTE) 3.
COMF BT4,1 ; (inverting BYTE) 4.
COMF BT5,1 ; (inverting BYTE) 5.
CALL STEP ; 6.-7.
DECF FSR,1 ; auf vorletztes Byte 1
BSF STATUS,SEITE ; 11
GOTO CV ; 12-13
;--------------------------------
; 0_____________<_PWM_______255
; off ^on off
; PWM=IST
EQUIL MOVF IST,0 ; 4
SUBWF PWM,0 ; 5
BTFSS STATUS,CARRY ; PWM > IST? 6
MOVF PWM,0 ; PWM > 8? 7
ANDLW 11111000b ; 8
BTFSC STATUS,ZERO ; difference > 8? 9
GOTO NEQUIL ; 10-11
BSF STATUS,SEITE ; 11
GOTO CV ; 12-13
NEQUIL MOVLW 6 ; 12
MOVWF PRE ; 13
LEQUIL DECFSZ PRE ; 14 17 20 23 2. 5.
GOTO LEQUIL ; 15-16 18-19 21-22 24-1. 3.-4. 6.
CALL STEP ; 7.-8.
GOTO EQUIL ; 2-3
;--------------------------------
NEXT BTFSC FLACKER ; 16
BSF LED ; 17
RLF INDF,1 ; 1.Byte zusammenbauen 18
GOTO INTEST1 ; n鋍hstes Bit 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
;-------------------------------
TEST MOVLW 1 ;
MOVWF CV2 ;
MOVLW 255 ;
MOVWF CV5 ;
MOVLW 0 ;
MOVWF CV6 ;
;--------------------------------
BORROW BTFSC S31,4 ; 198
MOVF CV5,0 ; 199
GOTO BBACK ; 200-201
;--------------------------------
CV2CV5 MOVF CV2,0 ; CV2CV5 94
SUBWF CV5,0 ; 95
MOVWF MULT1 ; 96
BCF STATUS,CARRY ; 97
RRF MULT1,1 ;/2 98
MOVLW 24 ; correction 28/32 99
ADDWF MULT1,1 ; 100
MOVLW 3 ;4-31 -> 1-28 101
SUBWF S31,0 ; 102
MOVWF MULT2 ; 103
;-------
CALL MULTIP ; 104-105 (1-86)
;-------
MOVLW 9 ; correction 28/32 192
SUBWF MULT2,1 ; 193
MOVF CV2,0 ; 194
BTFSS STATUS,CARRY ; 195
GOTO BORROW ; 196-197
NOP ; 197
NOP ; 198
ADDWF MULT2,0 ; 199
BTFSC STATUS,CARRY ; 200
MOVF CV5,0 ; 201
BBACK MOVWF SOLL ; 202
;----------------------------------------------VMID------------------
VMID CLRF VMIDLO ; 200
MOVF CV6,0 ; 201
BTFSC STATUS,ZERO ; 202
GOTO VMIDEND ; no VMID 203
ANDLW 01111111b ; 204
MOVWF VMIDHI ; 205
BTFSS CV6,7 ; 206
GOTO NEGVMID ; 207-208
MOVLW 4 ; 208
SUBWF S31,0 ; 4-32 > 0-27 209
GOTO VMID1 ; 210-211
NEGVMID COMF S31,0 ; 211
ANDLW 00011111b ; 212
NOP ; 213
VMID1 MOVWF COUNT ; 214
BTFSS COUNT,4 ; 215
BTFSC COUNT,3 ; 216
GOTO VMIDMUL ; 217-218
MOVWF TEMP ; 218
BTFSC STATUS,ZERO ; 219
GOTO VMID3 ; 220
BCF STATUS,CARRY ; 221
VMID2 RRF VMIDHI,1 ; ->c 222
RRF VMIDLO,1 ; c-> /2 223
DECFSZ COUNT,1 ; 224
GOTO VMID2 ; 225
VMID3 COMF TEMP,0 ; 226
ANDLW 00000111b ; 227
MOVWF COUNT ; 228
BTFSC STATUS,ZERO ; 229
GOTO VMID5 ; 230
VMID4 NOP ; 231
NOP ; 232
DECFSZ COUNT,1 ; 233
GOTO VMID4 ; 234
VMID5 MOVF CV6,0 ; 235
ANDLW 01111111b ; 236
MOVWF TEMP ; 237
MOVF VMIDHI,0 ; 238
SUBWF TEMP,0 ; 239
GOTO VMIDEND ; 240-241
;--------------------------------
VMIDMUL SWAPF VMIDHI,0 ; 241
ANDLW 00000111b ; 242
ADDWF VMIDHI,0 ; CV6 + CV6 / 16 243
MOVWF MULT1 ; 244
MOVLW 7 ; 245
SUBWF COUNT,0 ; 246
MOVWF MULT2 ; 247
;-------
CALL MULTIP ; 248-249 (1-86)
;-------
MOVF MULT2,0 ; 336
MOVWF TEMP ; 337
RRF MULT1,1 ; 338
RRF MULT2,1 ;/2 339
RRF MULT1,1 ; 340
RRF MULT2,1 ;/4 341
DECF MULT2,0 ; 342
SUBWF TEMP,0 ; 343
SUBWF VMIDHI,0 ; 344
;------------
VMIDEND BTFSS CV6,7 ; 1 345
GOTO SUBVMID ; 2-3 346-347
ADDWF SOLL,0 ; 3 347
BTFSS STATUS,CARRY ; 6 350
MOVWF SOLL ; 7 351
NOP ; 8 352
SUBEX BSF FS126 ; 9 353
;-------------------------------
; NOP ; test
; GOTO CV2CV5 ; test
;-------------------------------
BCF FSR,5 ; 354
GOTO START ; 355-356
SUBVMID SUBWF SOLL,0 ; 4 348
BTFSC STATUS,CARRY ; 5 349
MOVWF SOLL ; 350
GOTO SUBEX ; 7-8 351-352
;------------------------------------------END VMID------------------
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;....................................................................
INIT MOVLW 11010111b ; no wakeup, no pullup, T0 int., hightolow, T0, 1:256
OPTION
; -----------------------------------
COMF XOR,0 ; inverted stored for reset conditions (all zero)
XORWF SOLL,0 ; for brown out to start
XORWF IST,0 ; with same speed
BTFSS STATUS,ZERO ; all Bytes ok?
GOTO CLEAR
MOVLW 00001000b ; GP3 input, rest output
TRIS GPIO ; set port GPIO
GOTO START ; -----------------------------------
CLEAR CLRF IST ; -----------------------------------
CLRF SOLL ; set all register to start condition
CLRF S31 ;
CLRF LO ;
CLRF HI ; set PWM to 1 to force a jump
CLRF PWM ; in STEP for stop condition
INCF PWM ; -----------------------------------
BEGIN MOVLW 00001011b ; STEPPER off and GP3 Input
TRIS GPIO ; tristate port GPIO
CLRF GPIO
; EEPROM ............................................................
LOADREG MOVLW 0x30 ;
MOVWF FSR ; Pointer for indirect Adressing
CLRF EEADDR ;
EEREAD BSF STATUS,SEITE ; set to 200H begin EEPROM
CALL READ_RANDOM ;
BCF STATUS,SEITE ; auf ROM seite 0
BTFSC STATUS,ZERO ; ERROR?
GOTO EEREAD ;
MOVF EEDATA,0 ;
MOVWF INDF ;
MOVLW 0x3F ;
XORWF FSR,0 ;
ANDLW 00111111b ;
BTFSC STATUS,ZERO ;
GOTO EEEXIT ;
INCF FSR,1 ;
INCF EEADDR ;
GOTO EEREAD ;
EEEXIT MOVF CV3,0 ;
BTFSC STATUS,ZERO ;
IORLW 1 ;
XORLW 0xFF ; complement W
BCF FSR,5 ; rampage back to 0x10..
MOVWF ACC ;
BSF FSR,5 ; rampage to 0x30..
MOVF CV4,0 ;
BTFSC STATUS,ZERO ;
IORLW 1 ;
XORLW 0xFF ; complement W
CLRF MAPCV ; for old acknowledge
BCF FSR,5 ; rampage back to 0x10..
MOVWF DEC ;
MOVLW 0x09 ; adress = BT1 - 1
MOVWF FSR ; Pointer for indirect Adressing
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -