Fórum témák
» Több friss téma |
Sziasztok!
Megépítettem egy fordulatszámmérőt,3 digit kijelzésű, elvileg 99900 f/mint mér(az első 3 számjegyet írja ki. Működött is rendesen,de átalakítás közben zárlatot csináltam,amit nem vettem észre és félig megedta magát a 16F84A. csináltam másik nyákot,beégettem egy másik PIC-et és nem műxik,az MPLAB lefordítja az asm-et,de elakad a program egy pontján(main2) és nem megy tovább.beillesztem ide az ASM-et és megkérnék egy hozzáértőt,hogy nézzen rá,lehet neki 2 perc,mig rájön mi a hiba,nekem 2 hét sem elég. ; ; TMR0 EQU H'0001' PC EQU H'0002' STATUS EQU H'0003' FSR EQU H'0004' PORTA EQU H'0005' PORTB EQU H'0006' EEDATA EQU H'0008' EEADR EQU H'0009' PCLATH EQU H'000A' INTCON EQU H'000B' OPTION_REG EQU H'0081' TRISA EQU H'0085' TRISB EQU H'0086' EECON1 EQU H'0088' EECON2 EQU H'0089' RB EQU H'0006' RA EQU H'0005' ;---- USER DEFINE ------ TCNT0 EQU H'C' ;= (0.6SEC /INT* PRESCAL*CLOCK) INTR0 EQU H'D' ;AFTER INT, SAVE W VALUE INTR1 EQU H'E' ;AFTER INT, SAVE STATUS DD1 EQU H'F' ;DATA FOR INPUT RPM DD2 EQU H'10' DD3 EQU H'11' DS1 EQU H'12' ;DTAT FOR DISPLAY DS2 EQU H'13' DS3 EQU H'14' ; ; ; DEINE VARIABLES ; TMR EQU H'B5' ;(PRESCALE 64*1uS) * 75 = 4800 uS TCNT EQU H'7D' ;(256-125),4.8mS*125=600mS ; ; DEFINE BIT ; W EQU 0 ;d VALUE FOR INCF...... F EQU 1 ;d VALUE OFF EQU 0 ;FLAG BIT 0, RP0 EQU 5 ;STATUS BIT 5 & 6 =REGISTER BANK SELECT RP1 EQU 6 INPUT EQU 7 ;RB7 AS INPUT PORT TOIF EQU 2 ;INTCON TMR0 OVERLOW INT FLAG TOIE EQU 5 ;INTCON TOIF ENABLE GIE EQU 7 ;INTCON GLOBAL INT ENABLE ; ; ;========== MAIN PROGRAM ========= ; ; ORG 0 GOTO START ; ;---------------------------------------- ; ORG 4 ;INTERRUPT BEGIN INTB MOVWF INTR0 ; SAVE W MOVF STATUS,W ; SAVE STATUS MOVWF INTR1 BCF STATUS,RP0 ; MAKE SURE SELECT BANK0 MOVLW TMR ; RESTORE TIMER0 MOVWF TMR0 ; DECFSZ TCNT0,F ;SKIP IF ZERO GOTO SWEEP RELOAD MOVLW TCNT ;RELOAD TCNT0 MOVWF TCNT0 MOVF DD3,W ;MOVE COUNTER DATA TO DISPLAY MOVWF DS3 MOVF DD2,W MOVWF DS2 MOVF DD1,W MOVWF DS1 CLRF DD1 CLRF DD2 CLRF DD3 ;--------------------------------------------------- SWEEP MOVLW H'FF' MOVWF RB ;OFF ALL DIGITALS BTFSS RA,1 ;IS RA1 LIGHT ON? GOTO RA1 ;IF YES GOTO RA1 BTFSS RA,2 GOTO RA2 RA3 BSF RA,3 ;RA,1 & 2 ARE OFF, MUST BE RA,3 BCF RA,2 ;NEXT TIME SHOULD BE RA,2 MOVF DS2,W CALL TABLE ;HEX TO BCD CODE GOTO DISP ;PISPLAY DS3 RA2 BSF RA,2 BCF RA,1 ;NEXT TIME SHOULD BE RA,1 MOVF DS1,W CALL TABLE GOTO DISP RA1 BSF RA,1 BCF RA,3 ;NEXT TIME SHOULD BE RA,3 MOVF DS3,W CALL TABLE DISP MOVWF RB ;------------------------------------- INTE MOVF INTR1,W ; RESTORE STATUS MOVWF STATUS MOVF INTR0,W ; RESTORE W BCF INTCON,TOIF ; RESET FLAG OF INT T0 RETFIE ; ; ;------------------------------------------------- ; TABLE ADDWF PC,F ; REMEBER PCH=00000B RETLW H'C0' ; 0 RETLW H'F9' ; 1 RETLW H'A4' ; 2 RETLW H'B0' ; 3 RETLW H'99' ; 4 RETLW H'92' ; 5 RETLW H'82' ; 6 RETLW H'F8' ; 7 RETLW H'80' ; 8 RETLW H'90' ; 9 ; ; ;======================================= ;---------- PROGRAM BEGIN ----------- ;---------------------------------------- ; START BSF STATUS,RP0 ;SET 3,5 ENABLE BANK1 MOVLW H'80' MOVWF TRISB ;SET PORTB 0-6 OUTPUT, 7 INPUT MOVLW 0 MOVWF TRISA ;SET RA0-RA4 TO BE OUTPUT MOVLW B'10000101' MOVWF OPTION,F ;INTERNAT CLOCK,TRM0,1:64 BCF STATUS,RP0 ;ENABLE BANK0 MOVLW H'F7' MOVWF RA ;RA,3=0, OTHERS=1 MOVLW H'7F' MOVWF RB ;SET DISPLAY 000 CLRF DD1 ;DISPLAY DATA CLRF DD2 CLRF DD3 MOVLW TMR ;75 MOVWF TMR0 MOVLW TCNT ;128 MOVWF TCNT0 BCF INTCON,TOIF BSF INTCON,TOIE BSF INTCON,GIE ;ENABLE INT ;---------- MOVLW 1 MOVWF DS1 MOVLW 2 MOVWF DS2 MOVLW 3 MOVWF DS3 ;---------------------------------- MAIN1 BTFSC RB,7 ;IF INPUT=0, SKIP GOTO MAIN1 MAIN2 BTFSS RB,7 ;IF INPUT=1, SKIP GOTO MAIN2 MAIN3 INCF DD3,F MOVLW H'0A' SUBWF DD3,W SKPZ ;DIGITAL 1 =A, MUST AJUST GOTO MAIN1 CLRF DD3 INCF DD2,F MOVLW H'0A' SUBWF DD2,W SKPZ ;DIGITAL 1 =A, MUST AJUST GOTO MAIN1 CLRF DD2 INCF DD1,F ;DIGITAL 3 WILL NOT >9, SO NO CHECK GOTO MAIN1 END ;============================================== előre is kössz.Ja,még annyit,hogy az A port első 3 bitje a multiplex, a B port 0-6 bitje a szegmens, a B port 7 bitje a bemenet. A mért jel a bemenet előtt 2-vel osztva van (2 ágú légcsavar) .
Helló!
Egy picit belenéztem, de igy nem látok semmit sem, viszont, ha komoly a dolog emilben elküldhetem a saját változatomat. PIC16F628-ra készült 2x16-os LCD-re és 1-255 jel/fordulat állitható be rajta. (nekem is 2 az alapbeállitás a szokásos légcsavar miatt.) Minimálisan mérhető fordulatszám 60/perc. (ha több a bemenőjel fordulatonként akkor kisebbet is lehet mérni) emailom: gynemeshazi@vnet.hu
Szia!
Ebben a sorban van szintaktikai hiba és így nem fordul le: MOVWF OPTION,F ;INTERNAT CLOCK,TRM0,1:64 Helyesen: MOVWF OPTION_REG ( A pontos vessző utáni rész csak megjegyzés, ha akarod akkor azt is beírhatod, de nem kell!). Jó munkát! Steve
Köszi,kipróbáltam,ez valóban el van irva,főleg mert OPTION_REG-nek van deklarálva,de nem itt áll meg,ettől függetlenül tényleg ez is okozhat rossz működést.Bekapcsolás után kiír 123-at,utánna,ha jól műxik kialszik jel nélkül a kijelző,de ez nem alszik ki,marad a 123 a kijelzőn,innen nem lép tovább.
Ha valamikor ment, akkor gondolom most is menni kellene... Ugyanazt a projektet égetted be, vagy megint be kellett gépelned? A konfigurációs bitek és a fordítási paraméterek jól lettek beállítva, mert szerintem ezt könnyebb eltéveszteni?!
Steve
Hát ez-az!
Meg van az ASM és a HEX file is az eredeti tömörítve,inkább kicsomagoltam mégegyszer és az istennek sem megy,holott elsőre jó volt.Igaz,közben újra telepítettem a gépem,bár annak itt nem hiszem,hogy lenne jelentősége. ![]()
Helló!
Érdekelne az általad készitett LCD-s fordulatmérő. Van egy bigfoot modellem (sebváltós), és épitenék hozzá egy fordulatmérőt. Sikerült szereznem ilyen PICet, el tudnád küldeni a kapcs rajzot, meg a programot? Zoli (tothz26@yahoo.com)
Mindenki okulására megírom a megoldást is.
Igazából jó az ASM és a HEX file is,jó volt a beégetés is. Ami nem volt jó, az a labortápom, ami idáig hibátlanul működött,de ezt abbahagyta. Van a kimenetén feszültségtől függetlenül 40 mV szélessávú zaj és úgy látszik,hogy a PIC-nek ez bőven elég,hogy megbolonduljon.Akkura kapcsolva hibátlanul működik és másik tápról is! Köszönöm a segítőkész hozzászólásokat,ezekből én is és ha mások olvasták azok is tanulhattak talán újat. |
Bejelentkezés
Hirdetés |
A használat feltételei
• Adatvédelem
• GY.I.K., Használati útmutató és szabályok
• Impresszum
• Elosztó
• Hiba jelentése
K�rlek v�rj...