Tere.
Jupp aega mässanud ühe vana jupiga aga ei saa eluvaimu sisse. Rauapool peaks nagu korras olema enda arust. Kas keegi võiks koodile pilgu peale visata, äkki seal midagi kahe silma vahele jäänud?
Peaks siis juhtima PORTA pinide 0-3 kaudu kahte mootorit. Kummagi mootori jaoks kaks pinni, üks lülitab mootorit sisse välja, teine määrab pöörlemise suuna.
Probleemiks siis see, et pici pinnid jäävad LOW hoolimata koodist ja mootorid käima ei hakka. Programmaatoriks PicKit 2 ja proovisin ka in-circuit-debug modes, aga ei miskit.
Jupp aega mässanud ühe vana jupiga aga ei saa eluvaimu sisse. Rauapool peaks nagu korras olema enda arust. Kas keegi võiks koodile pilgu peale visata, äkki seal midagi kahe silma vahele jäänud?
Peaks siis juhtima PORTA pinide 0-3 kaudu kahte mootorit. Kummagi mootori jaoks kaks pinni, üks lülitab mootorit sisse välja, teine määrab pöörlemise suuna.
Probleemiks siis see, et pici pinnid jäävad LOW hoolimata koodist ja mootorid käima ei hakka. Programmaatoriks PicKit 2 ja proovisin ka in-circuit-debug modes, aga ei miskit.
Kood:
#include "p16f876a.inc" LIST P=16f876a errorlevel -302 ;Suppress bank warning __CONFIG _WDT_OFF & _XT_OSC & _CP_OFF & _LVP_OFF cblock 0x20 ; local variables, only in bank 0 WCYCLE endc ;************************************* ;****** Define stuff ***************** ;************************************* #define RMotor_Dir PORTA,0 #define Enable_RMotor PORTA,1 #define Enable_LMotor PORTA,2 #define LMotor_Dir PORTA,3 ;*****Declaring constants***** CONSTANT PRESCstd=b'00000001' ; Standard prescaler value for TMR0 ;************************************* ;*****Let's get started*************** ;************************************* org 0x00 ; reset vector -- executed on reset goto Start ;=================================================================== ; Interrupts ;=================================================================== Interrupt org 0x04 ; interrupt vector retfie ;********Macros*********** ;***** Bank ***** BANK0 MACRO BCF STATUS,RP1 BCF STATUS,RP0 ENDM BANK1 MACRO BCF STATUS,RP1 BSF STATUS,RP0 ENDM BANK2 MACRO BSF STATUS,RP1 BCF STATUS,RP0 ENDM BANK3 MACRO BSF STATUS,RP1 BSF STATUS,RP0 ENDM ;***** Wait ***** WAIT macro timeconst_1 movlw timeconst_1 call WAITstd endm WAITX macro timeconst_2, PRESCext movlw timeconst_2 movwf WCYCLE movlw PRESCext call WAIT_x endm ;****The main program***** Start BANK0 CLRF PORTA ; Initialize PORTA by ; clearing output ; data latches BANK1 MOVLW 0x06 ; Configure all pins MOVWF ADCON1 ; as digital inputs MOVLW 0xF0 ; Value used to ; initialize data ; direction MOVWF TRISA ; Set RA<5:4> as inputs ; RA<3:0> as outputs ; TRISA<7:6>are always ; read as '0'. MAIN bsf RMotor_Dir bsf Enable_RMotor WAIT .100 bsf LMotor_Dir bsf Enable_LMotor WAIT .100 CLRF PORTA goto MAIN ;****Subprograms**** WAITstd movwf WCYCLE movlw PRESCstd WAIT_x clrf TMR0 BANK1 movwf OPTION_REG BANK0 WAITa bcf INTCON,T0IF WAITb btfss INTCON,T0IF goto WAITb decfsz WCYCLE,1 goto WAITa return END
Comment