C
cheerzmiki
Guest
Здравейте момчета, аз съм новак в ASM език.Аз наскоро написа ASM кодиране да тече ми 2 малки DC мотори чрез използване PWM свързани с моята моторни мост шофьор з.Но аз са срещнали някои грешки, когато стартирате програмата.Двигателят започва да тече преди да натиснете произволен бутон за стартиране на мотора и бутоните не изглежда да се отговори и на моменти те само ще спре след няколко преси.Моля да ми помогнеш.Един милион благодаря.
кодиране:списък р = 18f452
# включват p18f452.inc
; Стартовия код
;************************************************* ***********
Декларираме променливите туксек EQU 0x0000
sec2 EQU 0x0001
Count2 EQU 0x000
Count1 EQU 0x001
;************************************************* ***********
Стартовият код
Org 00000h; Проучване Вектор
Отидох в началото
PROG1 КОД
;************************************************* ***********
; програмен код започва от тук
започвам
;*********** инициализиране *****************
clrf PORTC; initialise PORTC като продукция на пристанището и изчистване на пристанището.
movlw b'00000000 "
movwf TRISC
setf TRISA; първоначален PORTA като входни данни
clrf PORTB; initialise PORTB като вход пристанище.
movlw b'11111111 '; initialise PORTB като вход пристанище.
movwf TRISB; initialise PORTB като вход пристанище.
;*********** основното тяло *************
clrf T2CON
ФБК T2CON, TMR2ON
setf PR2; PR2 = oxFF
movlw 0x7F
movwf CCPR1L
clrf CCP1CON
BSF CCP1CON, CCP1M3
BSF CCP1CON, CCP1M2
BSF CCP1CON, CCP1M0, поставете CCP1 PWM режим
movlw 0x7F
movwf CCPR2L
clrf CCP2CON
BSF CCP2CON, CCP2M3
BSF CCP2CON, CCP2M2
BSF CCP2CON, CCP2M1
BSF CCP2CON, CCP2M0, поставете CCP2 PWM режим
checkSW
btfsc PORTB, 0; проверка за sw.it е нормално висок, нисък, като се натиснат
Отидох в checkSW; проверка за SW2 SW, ако не е натиснат.
BSF T2CON, TMR2ON
movlw 0x7F
movwf CCPR1L
BSF порта, 0; определени посока
movlw 0x7F
movwf CCPR2L
BSF порта, 1; определени посока
Забавяне повикване
wait4SW_release
btfss PORTB, 0; SW провери дали все още се натиснат.
Отидох в wait4SW_release; ако SW е натиснат, проверете отново
ФБК T2CON, TMR2ON
Забавяне повикване
Отидох в checkSW;******************* забавяне *******************
Забавям
movlw 0xFF
movwf Count1
movwf Count2
Повторете
decfsz Count1, F
Отидох в Повторете
movlw 0x01
movwf Count1
decfsz Count2, F
Отидох в Повторете
връщане
приключвам
кодиране:списък р = 18f452
# включват p18f452.inc
; Стартовия код
;************************************************* ***********
Декларираме променливите туксек EQU 0x0000
sec2 EQU 0x0001
Count2 EQU 0x000
Count1 EQU 0x001
;************************************************* ***********
Стартовият код
Org 00000h; Проучване Вектор
Отидох в началото
PROG1 КОД
;************************************************* ***********
; програмен код започва от тук
започвам
;*********** инициализиране *****************
clrf PORTC; initialise PORTC като продукция на пристанището и изчистване на пристанището.
movlw b'00000000 "
movwf TRISC
setf TRISA; първоначален PORTA като входни данни
clrf PORTB; initialise PORTB като вход пристанище.
movlw b'11111111 '; initialise PORTB като вход пристанище.
movwf TRISB; initialise PORTB като вход пристанище.
;*********** основното тяло *************
clrf T2CON
ФБК T2CON, TMR2ON
setf PR2; PR2 = oxFF
movlw 0x7F
movwf CCPR1L
clrf CCP1CON
BSF CCP1CON, CCP1M3
BSF CCP1CON, CCP1M2
BSF CCP1CON, CCP1M0, поставете CCP1 PWM режим
movlw 0x7F
movwf CCPR2L
clrf CCP2CON
BSF CCP2CON, CCP2M3
BSF CCP2CON, CCP2M2
BSF CCP2CON, CCP2M1
BSF CCP2CON, CCP2M0, поставете CCP2 PWM режим
checkSW
btfsc PORTB, 0; проверка за sw.it е нормално висок, нисък, като се натиснат
Отидох в checkSW; проверка за SW2 SW, ако не е натиснат.
BSF T2CON, TMR2ON
movlw 0x7F
movwf CCPR1L
BSF порта, 0; определени посока
movlw 0x7F
movwf CCPR2L
BSF порта, 1; определени посока
Забавяне повикване
wait4SW_release
btfss PORTB, 0; SW провери дали все още се натиснат.
Отидох в wait4SW_release; ако SW е натиснат, проверете отново
ФБК T2CON, TMR2ON
Забавяне повикване
Отидох в checkSW;******************* забавяне *******************
Забавям
movlw 0xFF
movwf Count1
movwf Count2
Повторете
decfsz Count1, F
Отидох в Повторете
movlw 0x01
movwf Count1
decfsz Count2, F
Отидох в Повторете
връщане
приключвам