[Programmation] modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628 - Page 3
Répondre à la discussion
Page 3 sur 7 PremièrePremière 3 DernièreDernière
Affichage des résultats 61 à 90 sur 208

modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628



  1. #61
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628


    ------

    L'histoire des déclaration il veut un espace ou pas sur la première colonne, c est erreur de syntaxe
    C'est redondant leur truc, entre le PROCESSOR et l'include , mais si on ne met pas le même, il n’apprécie pas...

    Entre les 2, 628 et le 628A, il n'y a pas de différence soft, c'est juste des caractéristique hard qui change du genre plus de courant sur les I/O , conso différentes.
    Sur le prog JDM la version 84 fonctionnait mais pas la 84A qui consommait plus. Mais bon, le JDM était une bidouille...

    Pour le warning , il dit de faire attention aux changements de bank ram, (l'assembleur, ne sait pas interpréter les bsf status,rp0 par exemple, c est à la charge de l'auteur de vérifier), mais normalement le prog est déjà testé donc c est OK !
    C'est utile juste pour le développement, il nous dit de bien vérifier, ça évite de se planter quand on change de bank.

    Si l'erreur est fatale le hex n'est pas généré, c est vrai qu'on néglige souvent les warnings à force d'en avoir une tartine inutile, mais ça peut cacher une grosse erreur comme l'emplacement ram, lors de la première compile.

    -----
    A+, pat

  2. #62
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    pour ce que tu demandes, peux tu m'indiquer la façon dont je dois m'y prendre?:
    Il faut un oscilloscope .
    Visualiser les créneaux et voir quelle tension à le niveau bas et le niveau haut.
    En théorie ce sont les tensions d'alime , ce qu'on appelle "rail to rail" soit par exemple 0 et 5V pour du TTL.
    Dans le cas ou l'alime est 1.5V , on dira 0-1.5V.

    Mais en réalité il y a un décalage, ça peut être de 0.6V par exemple, tension de seuil de diode.
    Ce qui ferait 0.6V - 0.9V
    Avec un seuil de 0.3V
    ça ferait 0.3V-1.2V
    On peut avoir moins avec des MOS , et la différence n'est pas forcément la même entre le 0 et le plus.
    ça va dépendre de la technologie.

    Le principale c'est le seuil de basculement qui est mesurable sur la 47K.
    A+, pat

  3. #63
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    bonjour et merci freepicbasic
    Citation Envoyé par freepicbasic Voir le message
    Il faut un oscilloscope .
    j'ai (mais je metrise pas ou presque cet appareil de mesure!)
    Visualiser les créneaux et voir quelle tension à le niveau bas et le niveau haut.
    En théorie ce sont les tensions d'alime , ce qu'on appelle "rail to rail" soit par exemple 0 et 5V pour du TTL.
    Dans le cas ou l'alime est 1.5V , on dira 0-1.5V.

    Mais en réalité il y a un décalage, ça peut être de 0.6V par exemple, tension de seuil de diode.
    Ce qui ferait 0.6V - 0.9V
    Avec un seuil de 0.3V
    ça ferait 0.3V-1.2V
    On peut avoir moins avec des MOS , et la différence n'est pas forcément la même entre le 0 et le plus.
    ça va dépendre de la technologie.
    je suis totalement largué.
    Le principale c'est le seuil de basculement qui est mesurable sur la 47K.
    en gros je fais quoi? je place la sonde aux bornes de la 47K?
    si tu pouvais me décrire précisément comment faire ces mesures, parce que là c'est le noir total.

  4. #64
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    re,
    Citation Envoyé par freepicbasic Voir le message
    .......mais normalement le prog est déjà testé donc c est OK !..........
    sur le moment je n'ai pas vu, qu'en fait, l'afficheur indique la valeur presque double de ce qu'indique le PAC, comme l'affichage externe ne se fixe pas, difficile de s'en apercevoir.
    pour -10.02 au PAC
    19.91 à l'afficheur pas de signe -.
    il y a bien un truc que déconne non?
    Images attachées Images attachées  

  5. #65
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    Prend le signal qui sort du pied à coulisse
    essai de prendre une photo

    Si tu as un oscillo double trace
    L'autre trace sur la sortie de l'AOP (ou entrée du pic)
    A+, pat

  6. #66
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    sur l'aop en sortie .............
    donc ?????
    pin3 du pic =clock photo n°1
    pin 2 du pic = data photo n°2
    pour les 2 clichés
    base de temps 1ms
    amplitude /division 0.2v (sonde sur 1/10 pas vu de suite)
    pour les données du pac, j'arrive pas à faire de mesure.
    je t'avais prévenu!
    Images attachées Images attachées

  7. #67
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    La forme des signaux semble correct , quant au contenu, il faudrait la doc qui explique comment c est codé.
    Essais de la trouver.
    Possible que la transmission soit différente de celui qu'il a utilisé sur le site.
    Je jette un œil sur le soft en attendant.
    A+, pat

  8. #68
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    Dans le soft, il se synchronise avec un pulse clock qui devrait être plus long.
    Le problème c est que dans le soft il est très court.
    Sur ton scope tu dit 1ms par carreau ce qui fait des pulses à environ 500µs.
    Vraiment plus long que ceux attendu.

    Essai de savoir à quelle vitesse (bauds) sont transmis les bits.
    Et la vitesse de celui du site
    Et j'espère que le codage est le même...

    Essais de voir si tu vois un pulse plus long.
    Il lit une série de 6 octets soit 6x8 pulses Le premier des 40 pulses devrait être plus long .
    A+, pat

  9. #69
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    re,
    Citation Envoyé par freepicbasic Voir le message
    ..............Essai de savoir à quelle vitesse (bauds) sont transmis les bits.
    Et la vitesse de celui du site..................
    désolé, mais je ne sais plus de quoi tu me parles.
    le site d'où vient le tout donne des infos, est-ce de cela dont t-il est question dans ton propos? http://pcbheaven.com/exppages/Digita...pic=chinesebcd.

    The communication Protocol
    [Click to enlarge]
    The caliper that i have sends data in BCD nibbles!
    So, let's take a look in this protocol. The caliper is already connected to the oscilloscope. There are two channels activated. The GREEN channel is connected to the RED wire, and that is the CLOCK of the port. The YELLOW channel is connected to the ORANGE wire and that is the DATA of the port. Looking to the oscilloscope's screen, the top channel is the CLOCK and the bottom is the DATA.

    The Clock

    Looking at the CLOCK of the signal, it looks like that it sends 7 sets of 4 bits each, plus one long bit at the end. Each set (nibble) starts with a long bit, and then follows another 3 bits much faster. All 28+1 bits takes about 780 uSec. The long pulse takes about 59uSec, and each small pulse has a period of about 12uSec. This data series is non-stop repeated every 320mSec. Here are some interesting screenshots from the oscilloscope:


    [Click to enlarge]
    Each data series is composed of 7 4-bit nibbles plus a long pulse at the end

    [Click to enlarge]
    Each long pulse has a period of 59 uSec

    [Click to enlarge]
    Each short pulse has a period of 12 uSec

    [Click to enlarge]
    The whole series is repeated every 320 mSec

    The CLOCK line sends the same data all the time (as expected to do so), even when changing the measure of the caliper.



    The Data

    What changes when changing the measurement of the caliper, is the DATA line. The DATA line is always LOW when the caliper measurement is 0.00mm. But there are always 5 bits at the end of the DATA with a strange behavior. I will check them later. Also, the 6th nibble (bits number 21 to 24) are always low, no matter what i change to the caliper. So, i will first work with the 5 first nibbles that makes more sense when i change the measurement of the caliper.

    Before, take a look at some interesting screenshots of the oscilloscope. They show the first 5 nibbles of the DATA line, while on the bottom left corner you can see the caliper with it's measurement:


    [Click to enlarge]

    [Click to enlarge]

    [Click to enlarge]
    [Click to enlarge]

    [Click to enlarge]

    [Click to enlarge]

    Now everything makes sense. The first five nibbles, are just the five numbers of the display! The most left nibble (bits 0 to 3) is the most right digit of the display (10-2), the second nibble (bits 4 to 7) represents the 0.1mm, the third nibble (bits 8 to 11) represents the millimeters and so on. The caliper has indeed 5 digits. I suppose that if it had 6 digits, the 6th nibble would also be active, but this one is capable of only 5 digits.

    Check this photo. This is one of the previous screen-shots with comments added. I have separate all 5 nibbles with orange lines. Also, i have the binary and decimal representation of this nibble. Note that the binary numbers that i have written, are reversed to the transmission of the signal. The BITS on the signal should be read from RIGHT to LEFT and written from LEFT to RIGHT, in order to have a normal binary number:


    [Click to enlarge]


    The strange nibble

    But what about the last nibble plus the last bit? Well, this nibble has many functions. First of all, it send info for the units, if it is milliliters or inches. It also has a bit that shows if the number is positive or negative. Finally, there is also another bit, that indicates the 4th decimal when measuring in inches. This can be 0 or 5. Here are the 4 bits of this nibble, from LEFT to RIGHT as shown on the oscilloscope:


    # Name When 0 When 1
    0 Sign Positive Negative
    1 Inches 4th decimal 0 5
    2 Units Inches Millimeters

    The fourth bit is always 1. Also, the very last bit in the data series is unknown. I have not figure out what is this for. It could be nothing more than a Stop Condition, similar to the I2C protocol.

    I should note here that this protocol seems to have valid data on HIGH to LOW clock transition.
    Bellow i have attach some very interesting screenshots from the last nibble. These are the 6 states that this nibble can take:

    [Click to enlarge]
    Units: Millimeters
    Sign: Positive

    [Click to enlarge]
    Units: Millimeters
    Sign: Negative

    [Click to enlarge]
    Units: Inches
    Sign: Positive
    4th decimal: 0
    [Click to enlarge]
    Units: Inches
    Sign: Positive
    4th decimal: 5

    [Click to enlarge]
    Units: Inches
    Sign: Negative
    4th decimal: 0

    [Click to enlarge]
    Units: Inches
    Sign: Negative
    4th decimal: 5

  10. #70
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    Impec !
    j'étudie ça demain !
    A+, pat

  11. #71
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    Bon ça s'annonce mal, le protocole est totalement différent.

    il y a 7 salves de 4 bits synchrone en BCD
    + 4 bits asynchrones (de 12µs) à la fin , avec le signe , millimetre/inche, décimal, stop bit.

    3 envoies par seconde

    il faut donc réécrire la partie du code qui lit les données, car pas compatible.
    Pas facile de tester sans le matériel...
    A+, pat

  12. #72
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    bonjour,
    c'est dû au changement de pic, ou le défaut y serait même si j'utilisais un pic16f84-20?
    ou bien ???????????????
    cordialement

  13. #73
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    C est pas le même pied à coulisse !

    Je regarde ce que je peux faire.
    Celui ci se lit plus facilement.
    A+, pat

  14. #74
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    il est écrit pour le type A et tu as le type B;

    http://www.caliper2pc.de/schieblehre...per_types.html
    A+, pat

  15. #75
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    re,
    Citation Envoyé par freepicbasic Voir le message
    C est pas le même pied à coulisse !
    pourtant ça lui ressemble fortement.
    Citation Envoyé par freepicbasic Voir le message
    Je regarde ce que je peux faire.
    merci beaucoup.
    Citation Envoyé par freepicbasic Voir le message
    Celui ci se lit plus facilement.
    il me faudrais comprendre pourquoi je n'arrive pas à voir facilement ni la clock, ni les data du pac, lorsqu'il est raccordé au montage, alors que je n'ai pas réessayé depuis que le montage "fonctionne", lorsque le pac est déconnecté, j'arrivais à "lire" qqc sur l'oscillo, désadptation d'impédance?, pourtant il y a des signaux en sorties de l'aop?????????????.
    j'ai l'intention de refaire le cablage à l'aide de cable écranté, qd j'irai mieux, (grippe+fièvre).
    cordialement

  16. #76
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    c est quoi le "pac" ?

    J ai modifié , c est assez lourd comme modifs , résultat pas garantie du tout , vu que je ne peux pas tester.
    tu me dis ce qui se passe avec photo si besoin.

    Faudra surement corriger...

    Tu compile avec MPLAB.

    sauve l'ancien !


    Code:
    ; PROCESSOR PIC16F628
    		#define __16F628
    		#include <P16F628.INC>
    
    
    	__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC & _LVP_OFF &_BODEN_OFF
    
    	CBLOCK 0x20
    
    		Delay
    		X_Delay
    		Temp
    		Ctrl
    		Char
    		SignFlag
    		TempByte2
    		rData
    
    	ENDC
    	
    LCD_PORT	EQU	PORTB
    LCD_TRIS	EQU	TRISB
    Cmd			EQU	Char
    rBin		EQU	rData+4
    rBCD		EQU	rData
    rCnt		EQU	Char
    rPto		EQU	TempByte2
    rPti		EQU	Ctrl
    mFactor		EQU	Char
    rProduct	EQU	rData+4
    TempByte	EQU	Temp
    rBitCnt		EQU	Ctrl
    rDataCnt	EQU	Char
    TempW		EQU	Temp
    TempS		EQU	TempByte
    
    #define	Clock	PORTA, 3
    #define	Data	PORTA, 4
    #define	E		PORTB, 1
    #define	RW		PORTB, 2
    #define	RS		PORTB, 3
    #define	RL		PORTA, 0
    	
    	
    
    Start	ORG 0
    		GOTO Main
    
    Interrupt	ORG 4
    			GOTO ISR
    
    Main	
    		CLRF	PORTA		;
    		CLRF	PORTB		;
    		MOVLW	7
    		MOVWF	CMCON
    		BSF		STATUS, RP0	;
    		MOVLW	B'00000001'	;
    		MOVWF	TRISB		;
    		
    		MOVLW	B'00011000'	;
    		MOVWF	TRISA		;
    		
    		MOVLW	B'00000000'	;
    		MOVWF	OPTION_REG	;
    		BCF		STATUS, RP0	;
    		MOVLW	D'200'		;
    		CALL	X_Delay100	;
    		MOVLW	0x30		;
    		IORWF	LCD_PORT,F 	;
    		CALL	Toggle_E	;
    		MOVLW	D'50'		;
    		CALL	X_Delay100	;
    		CALL	Toggle_E	;
    		MOVLW	D'1'		;
    		CALL	X_Delay100	;
    		CALL	Toggle_E	;
    		MOVF	LCD_PORT, W	;Get lower nibble of PORTB
    		ANDLW	0x0f		;
    		MOVWF	Ctrl		;
    		MOVLW	0x20		;
    		IORWf	Ctrl,W	;
    		MOVWF	LCD_PORT	;
    		CALL	Toggle_E	;
    		MOVLW	0x20		;Set datalength to 4, 1 line, 5x7 font
    		CALL	Send_Cmd	;
    		MOVLW	0x0c		;
    		CALL	Send_Cmd	;
    		MOVLW	0x06		;
    		CALL	Send_Cmd	;
    		MOVLW	0x03		;
    		CALL	Send_Cmd	;
    		MOVLW	'm'			;
    		MOVWF	rData+0x0f	;
    		MOVLW	'm'			;
    		MOVWF	rData+0x0e	;
    		MOVLW	' '			;
    		MOVWF	rData+0x0d	;
    		MOVLW	B'10010000'	;
    		MOVWF	INTCON	;Initialise INTCON register
    
    FillSpace
    		MOVLW	0x10		; Write first 8 chars
    		MOVWF	TempByte2	;
    		MOVLW	rData		;
    		MOVWF	FSR			;
            MOVLW   0x20
    FillSpace2
            MOVWF   0
    		DECFSZ	TempByte2,1	;
    		GOTO	FillSpace2	;
    
    
    Restart	BSF	INTCON,GIE		;Enable interrupts
    Repeat	CALL	GetData		;
    		CALL	FormatStr	;
    
    		MOVLW	0x80		; Cursor at 0x00
    		CALL	Send_Cmd	;
    
    		MOVLW	0x08		; Write first 8 chars
    		MOVWF	TempByte2	;
    		MOVLW	rData		;
    		MOVWF	FSR			;
    
    		CALL	Send_next_Char	;
    
    		MOVLW	0xc0		;Cursor at 0x40
    		CALL	Send_Cmd	;
    		
    		MOVLW	0x08		;Write second 8 chars
    		MOVWF	TempByte2	;
    		CALL	Send_next_Char	;
    
    		GOTO	Repeat		;
    
    Send_next_Char	MOVF	INDF, W	;
    				CALL	Write_Char	;
    				INCF	FSR,F		;
    				DECFSZ	TempByte2,1	;
    				GOTO	Send_next_Char	;
    				RETURN
    
    Write_Char	MOVWF	Char		; Character to be sent is in W
    			CALL	Check_BF	; Wait for LCD to be ready
    			MOVF	LCD_PORT, W	; Get lower nibble of PORTB
    			ANDLW	0x0F
    			MOVWF	Ctrl		;
    			MOVF	Char, W		;
    			ANDLW	0xF0		; Get upper nibble
    			IORWF	Ctrl,W		; Combine data with Ctrl
    			MOVWF	LCD_PORT	;
    			BCF		RW			; Set LCD to write
    			BSF		RS			; Set LCD to data mode
    			CALL	Toggle_E	;
    			MOVLW	0x0F		;
    			ANDWF	LCD_PORT,F	;
    			SWAPF	Char,W		;
    			ANDLW	0xF0		; Get lower nibble
    			IORWF	LCD_PORT,F
    			CALL	Toggle_E
    			RETURN
    
    Clear_Display	MOVLW	0x01	;
    				CALL	Send_Cmd	;
    				RETURN
    
    Send_Cmd	MOVWF	Cmd			;Put command byte in Temporary variable
    			CALL	Check_BF	;Check if LCD is ready
    			MOVF	LCD_PORT, W	;Get lower nibble of PORTB
    			ANDLW	0x0F		;
    			MOVWF	Ctrl		;
    			MOVF	Cmd, W		;
    			ANDLW	0xF0		;Get upper nibble
    			IORWF	Ctrl,W		;Combine command with Ctrl
    			MOVWF	LCD_PORT	;
    			BCF		RW			;
    			BCF		RS			;
    			CALL	Toggle_E	;
    			MOVLW	0x0F		;
    			ANDWF	LCD_PORT,F	;
    			SWAPF	Cmd,W		;Swap nibbles
    			ANDLW	0xF0		;
    			IORWF	LCD_PORT,F	;
    			CALL	Toggle_E	;
    			RETURN
    		
    Check_BF	BSF	STATUS, RP0	; Select bank 1
    			MOVLW	0xF0		; Make high nibble of PORTB output
    			IORWF	LCD_TRIS,F
    			BCF	STATUS, RP0	; Select bank 0
    			BCF	RS		; Set LCD for command mode
    			BSF	RW		; Setup to read busy flag
    			BSF	E		;
    			CALL	Delay100	;
    			MOVF	LCD_PORT, W	;Read upper nibble busy flag
    			BCF	E		;
    			ANDLW	0xF0		; Mask out lower nibble
    			MOVWF	Temp		;
    			CALL	Toggle_E	; "read" lower nibble
    			BTFSC	Temp, 7	; Check busy flag, high = busy
    			GOTO	Check_BF	; If busy, check again
    			BCF	RW
    			BSF	STATUS, RP0	; Select bank 1
    			MOVLW	0x0F		; Make high nibble of PORTB input
    			ANDWF	LCD_TRIS,F
    			BCF	STATUS, RP0	; Select bank 0
    			RETURN
    
    X_Delay100		MOVWF	X_Delay
    X_Delay100_LOOP	CALL	Delay100
    				DECFSZ	X_Delay,F
    				GOTO	X_Delay100_LOOP
    				RETURN	
    
    Delay100		MOVLW	D'80'		;100 microseconds timeDelay
    				MOVWF	Delay
    Delay100_LOOP	DECFSZ	Delay,F
    				GOTO	Delay100_LOOP
    				RETURN
    
    Delay10	    	MOVLW	D'4'		;100 microseconds timeDelay
    				MOVWF	Delay
    Delay10_LOOP	DECFSZ	Delay,F
    				GOTO	Delay10_LOOP
    				RETURN
    
    
    Toggle_E	BSF	E
    			NOP
    			BCF	E
    			RETURN
    
    GetData 	MOVLW	rData+6
    			MOVWF	FSR
    			MOVLW	7
    			MOVWF	rDataCnt
    			CLRF	rBitCnt
    			MOVLW	38
    Init		MOVWF	TempByte
    CountDown	BTFSC	Clock		; Check clock for low
    			GOTO	Init		; Clock high, start over again
    			DECFSZ 	TempByte,F	; Clock low, start countdown
    			GOTO	CountDown	;
    Get_Byte	BSF	rBitCnt,2		; Initialize bitcount to 8
    			CLRF	TempByte	; Initialize receiving byte
    Wait_Clock_High	BTFSS	Clock			; Check clock for high
    				GOTO	Wait_Clock_High	; Clock low, wait for clock to go high
    Clock_Low	BTFSC	Clock		; Clock high, wait for clock to go low
    			GOTO	Clock_Low	; 
    			BTFSC	Data		; Check data signal for low
    			BSF	STATUS,C		; Set Carry bit
    			RRF	TempByte,1		; Shift in a bit
    			DECFSZ	rBitCnt,1	; Decrement bitcounter
    			GOTO	Clock_High	; Repeat for next bit
    			GOTO	Save_Byte	; 8 bits done
    Clock_High	BTFSS	Clock		; Check clock for high
    			GOTO	Clock_High	; Clock high, wait for low
    			GOTO	Clock_Low	; Repeat waiting for clock low
    Save_Byte
    
                SWAPF TempByte,1
                MOVLW 0xF
    			ANDWF	TempByte,1		; Shift in a bit
    
     			MOVF	TempByte, W	; TempByte holds data
    			MOVWF	0		; Move data in rData
    			DECFSZ	FSR,1		; Point to next byte in rData
    			DECFSZ	rDataCnt,1	; Decrement datacounter
    			GOTO	Get_Byte	; Get next byte
    					; All bytes done
    
                CALL	Delay10
    			CLRF 	SignFlag	; Assume positive
    			BTFSC	Data		; Check data signal for low
    			BSF	SignFlag,0		; Flag negative
    								;
    Not_Neg		RETURN				;
    		
    FormatStr
    
    	 		MOVLW	rData
    			MOVWF	FSR
    			MOVLW	7
    			MOVWF	rCnt
    
    BintoBCD	MOVLW	0x30
    			ADDWF	INDF,F
    			DECFSZ	rCnt,F
    			GOTO	BintoBCD
    
                MOVLW	    rData + 6
    			MOVLW	7
    			MOVWF	rCnt
    
    BintoBCD2	
    			MOVF	0,W
                INCF    rData,f
                INCF    rData,f
                MOVWF   0
                DECF    rData,f
                DECF    rData,f
                DECF    rData,f
    			DECFSZ	rCnt,F
    			GOTO	BintoBCD
    
    			MOVLW	'0'			;
    			MOVWF	rData	;
    			MOVLW	','			;
    			MOVWF	rData+0x06	;
    
    		
    			MOVLW	5			;
    			MOVWF	rCnt		;
    ReplaceZero	MOVLW	'0'			;
    			XORWF	INDF,W		;
    			BTFSS	STATUS,Z	;
    			GOTO	PutSign		;
    			MOVLW	' '			;
    			MOVWF	INDF		;
    			INCF	FSR,F			;
    			DECFSZ	rCnt,1		;
    			GOTO 	ReplaceZero	;
    
    PutSign		BTFSS	SignFlag,0	; Test if negative
    			GOTO	Done		; No sign to put
    			MOVLW	'-'			; Put negative sign before
    			DECF	FSR,F			;
    			MOVWF	INDF		;
    Done		RETURN
    		
    
    ISR			MOVWF	TempW		;store W temporarily
    			MOVF	STATUS,W	;get status in W
    			MOVWF	TempS		;store it temporarily
    		
    			BCF		INTCON,GIE	;disable further interrupts
    			BCF		INTCON,INTF	;disable interrupt from RB0
    			BSF		RL			;activate relay
    			MOVLW	D'250'		;
    			CALL	X_Delay100	;wait 25 ms
    			MOVLW	D'250'		;
    			CALL	X_Delay100	;wait 25 ms
    			MOVLW	D'250'		;
    			CALL	X_Delay100	;wait 25 ms
    			MOVLW	D'250'		;
    			CALL	X_Delay100	;wait 25 ms
    			MOVLW	D'250'		;
    			CALL	X_Delay100	;wait 25 ms
    			MOVLW	D'250'		;
    			CALL	X_Delay100	;wait 25 ms
    			BCF		RL			;deactivate relay
    			MOVF	TempS,W		;put status back
    			MOVWF	STATUS
    			SWAPF	TempW,F		;put W back
    			SWAPF	TempW,W
    			GOTO	Restart
    			RETFIE
    
    			END
    A+, pat

  17. #77
    antek

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    Citation Envoyé par freepicbasic Voir le message
    c est quoi le "pac" ?
    Pied A Coulisse !

  18. #78
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    P.A.C. pied à coulisse

  19. #79
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    ça coince


    CLEAN SUCCESSFUL (total time: 359ms)
    make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
    make[1]: Entering directory 'C:/docperso/divers patrick/electronique/pied a coulisse sortie rs232/Digital Caliper/futura/code caliper freepicbasic 14 11 2015/code caliper freepicbasic 14 11 2015.X'
    make -f nbproject/Makefile-default.mk dist/default/debug/code_caliper_freepicbasic_14_1 1_2015.X.debug.cof
    make[2]: Entering directory 'C:/docperso/divers patrick/electronique/pied a coulisse sortie rs232/Digital Caliper/futura/code caliper freepicbasic 14 11 2015/code caliper freepicbasic 14 11 2015.X'
    make[2]: *** [build/default/debug/_ext/1472/code caliper freepicbasic 14 11 2015.o] Error 1
    make[1]: *** [.build-conf] Error 2
    make: *** [.build-impl] Error 2
    "C:\Program Files\Microchip\MPLABX\v3.15\m pasmx\mpasmx.exe" -d__DEBUG -d__MPLAB_DEBUGGER_ICD3=1 -q -p16f628a -l"build/default/debug/_ext/1472/code caliper freepicbasic 14 11 2015.lst" -e"build/default/debug/_ext/1472/code caliper freepicbasic 14 11 2015.err" -o"build/default/debug/_ext/1472/code caliper freepicbasic 14 11 2015.o" "../code caliper freepicbasic 14 11 2015.asm"
    Error[129] ..\CODE CALIPER FREEPICBASIC 14 11 2015.ASM 2 : Expected (END)
    nbproject/Makefile-default.mk:86: recipe for target 'build/default/debug/_ext/1472/code caliper freepicbasic 14 11 2015.o' failed
    make[2]: Leaving directory 'C:/docperso/divers patrick/electronique/pied a coulisse sortie rs232/Digital Caliper/futura/code caliper freepicbasic 14 11 2015/code caliper freepicbasic 14 11 2015.X'
    nbproject/Makefile-default.mk:78: recipe for target '.build-conf' failed
    make[1]: Leaving directory 'C:/docperso/divers patrick/electronique/pied a coulisse sortie rs232/Digital Caliper/futura/code caliper freepicbasic 14 11 2015/code caliper freepicbasic 14 11 2015.X'
    nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

    BUILD FAILED (exit value 2, total time: 1s)

  20. #80
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    Code:
    :020000040000fa
    :020000000528d1
    :08000800f22885018601073092
    :100010009f00831601308600183085000030810073
    :100020008312c8308f20303086049e2032308f20db
    :100030009e2001308f209e2006080f39a30020301b
    :10004000230486009e20203067200c306720063075
    :100050006720033067206d30b6006d30b50020306a
    :10006000b40090308b001030a60027308400203080
    :100070008000a60b38288b17a220c920803067206b
    :100080000830a600273084004b20c030672008309d
    :10009000a6004b203c2800085120840aa60b4b28c0
    :1000a0000800a4007a2006080f39a3002408f039bc
    :1000b00023048600061186159e200f308605240e27
    :1000c000f03986049e200800013067200800a40053
    :1000d0007a2006080f39a3002408f039230486008b
    :1000e000061186119e200f308605240ef0398604f5
    :1000f0009e2008008316f0308604831286110615b0
    :100100008614942006088610f039a2009e20a21bb7
    :100110007a28061183160f30860583120800a10085
    :100120009420a10b902808005030a000a00b962826
    :1001300008000430a000a00b9b28080086140000d3
    :10014000861008002d3084000730a400a301383049
    :10015000a2008519a828a20ba9282315a201851d94
    :10016000af288519b128051a0314a20ca30bb928ce
    :10017000bc28851db928b128a20e0f30a20522087f
    :100180008000840ba40bad289920a501051a251425
    :100190000800273084000730a40030308007a40b0b
    :1001a000cd282d300730a4000008a70aa70a800038
    :1001b000a703a703a703a40bcd283030a7002c303a
    :1001c000ad000530a40030300006031dec282030bf
    :1001d0008000840aa40be328251cf1282d30840319
    :1001e00080000800a2000308a2008b138b100514e6
    :1001f000fa308f20fa308f20fa308f20fa308f209b
    :10020000fa308f20fa308f20051022088300a20eca
    :06021000220e3b2809004c
    :02400e00223f4f
    :00000001ff
    A+, pat

  21. #81
    antek

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    ERROR 129 -> il veut un END quelque part.

  22. #82
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    Dans mplab

    afficher et sélectionner le .asm
    click project
    click Quick build


    le END est à la fin tu l'as copier ?
    Dernière modification par freepicbasic ; 14/11/2015 à 15h56.
    A+, pat

  23. #83
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    oui, mais c'est le début du code qui lui déplais
    j'ai programmé le pic avec l'hex, ça produit des carrés sur l'afficheur, et le régulateur surchauffe (comme dab qd le code n'est pas ok)

  24. #84
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    le pic est un 16f628A si ça a son importance.

  25. #85
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    J'ai trouvé des erreurs;


    Code:
    :020000040000FA
    :020000000528D1
    :08000800F22885018601073092
    :100010009F00831601308600183085000030810073
    :100020008312C8308F20303086049E2032308F20DB
    :100030009E2001308F209E2006080F39A30020301B
    :10004000230486009E20203067200C306720063075
    :100050006720033067206D30B6006D30B50020306A
    :10006000B40090308B001030A60027308400203080
    :100070008000A60B38288B17A220C920803067206B
    :100080000830A600273084004B20C030672008309D
    :10009000A6004B203C2800085120840AA60B4B28C0
    :1000A0000800A4007A2006080F39A3002408F039BC
    :1000B00023048600061186159E200F308605240E27
    :1000C000F03986049E200800013067200800A40053
    :1000D0007A2006080F39A3002408F039230486008B
    :1000E000061186119E200F308605240EF0398604F5
    :1000F0009E2008008316F0308604831286110615B0
    :100100008614942006088610F039A2009E20A21BB7
    :100110007A28061183160F30860583120800A10085
    :100120009420A10B902808005030A000A00B962826
    :1001300008000430A000A00B9B28080086140000D3
    :10014000861008002D3084000730A400A301383049
    :10015000A2008519A828A20BA9282315A201851D94
    :10016000AF288519B128051A0314A20CA30BB928CE
    :10017000BC28851DB928B128A20E0F30A20522087F
    :1001800080008403A40BAD289920A501051A25142D
    :100190000800273084000730A40030308007A40B0B
    :1001A000CD282D300730A4000008840A840A80007E
    :1001B000840384038403A40BCD283030A7002C30A3
    :1001C000AD000530A40030300006031DEC282030BF
    :1001D0008000840AA40BE328251CF1282D30840319
    :1001E00080000800A2000308A2008B138B100514E6
    :1001F000FA308F20FA308F20FA308F20FA308F209B
    :10020000FA308F20FA308F20051022088300A20ECA
    :06021000220E3B2809004C
    :02400E00223F4F
    :00000001FF
    A+, pat

  26. #86
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    il n'y a pas de changement, afficheur ==> rectangle de points et 7805 en surchauffe (comme lorsque le code déconnait initialement)

  27. #87
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    t'as remis l'ancien pour voir si c est soft.

    Bizarre que ça chauffe il n'y a pas de raison.
    A+, pat

  28. #88
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    je viens de finir le reprogrammation, le test montre que c'est comme avant (affichage comme sur la photo du post #64 + affichages erratiques comme précédemment.
    Bizarre que ça chauffe
    sans doute, mais lorsque le code a déconné ça a fait ça à chaque coup. pourquoi?????????????????
    il n'y a pas de raison
    faut se rendre à l'évidence, y'en a une mais laquelle?????????????

  29. #89
    freepicbasic

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    C'est l'ancien programme ou le nouveau qui affiche n'importe quoi?

    Ta diode n'a pas lâché à nouveau?

    Ou un court circuit avec une bavure ou autre.

    Les CIs ne consomment pas grand chose , même l'afficheur consomme peu.
    Le relais à lui seul risque de consommer plus.
    Est ce que le transistor chauffe ?
    La 10k sur la base est un peu trop élevée une 1K serait mieux adaptée, sinon le transistor risque de chauffer et finir par se détruire.

    Sinon la méthode pragmatique, retirer les composants suspects un à un pour voir ce qui fait chauffer, j'espère que les CIs sont sur supports.
    A+, pat

  30. #90
    serrepate

    Re : modification d'un prog .asm, écrit pour pic16f84a pour un pic16f628

    j'ai remis l'ancien, tu m'en as fait la demande ==>
    t'as remis l'ancien pour voir si c est soft.

    comme j'en avais eu l'idée entretemps, cela venait de se terminer j'ai essayé et t'ai donné le résultat. Aujourd'hui, 19h35

Page 3 sur 7 PremièrePremière 3 DernièreDernière

Discussions similaires

  1. Erreur de compilation pour PIC16F628 sous MikroC
    Par invite7b6bb7c1 dans le forum Électronique
    Réponses: 2
    Dernier message: 06/03/2015, 11h20
  2. timer0 pour PIC16F628
    Par invite0f72053e dans le forum Électronique
    Réponses: 3
    Dernier message: 31/05/2013, 09h34
  3. pic16F84A+jeu question pour un champion
    Par djojamel dans le forum Électronique
    Réponses: 6
    Dernier message: 11/03/2010, 13h04
  4. Temporisation pour un PIC16F84A en C
    Par invite0b985a93 dans le forum Électronique
    Réponses: 12
    Dernier message: 30/12/2009, 23h05
  5. minimum pour un PIC16F628
    Par invite0b56f0b4 dans le forum Électronique
    Réponses: 2
    Dernier message: 05/02/2009, 15h36
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...