bonsoir tout le monde
je vous expose mon problème! j'ai programmé un assez long programme en ASM sur le 18f4550 tout fonctionnait parfaitement, jusqu’à au moment ou je suis passé a l EPPROM a fin de sauvegardé quelques données critique... et la mes soucis on débuter...
je ne vais sans doute pas vous exposé l intégralité de mon code de 900 ligne
mais simplement le bout qui apparemment (même surement) pose problème:
donc ce qui se passe ce que au moment ou je coupe ou j envois l alimentation au pic le pic démarre apparemment sur une adresse aléatoire, comment je l'est su?, beh parce que quand je lis le pic sur un programmateur la Zone epprom a l adresse 00 contient un h'64', et comme pour écrire un h'64' sur cette adresse il faut absolument passé par ce bout de code de plus il faut que le bouton poussoir "Bpousoir" soit pressé (PORTC5 a la masse)Code:btfsc Breset ;bouton présé ? goto affichageT ;non alors continuer normalement ;oui? accedé au reset clrf var1 clrf var2 loop_B btfsc Breset goto affichageT ;Bouton relacher ? decfsz var1,f goto loop_B decfsz var2,f goto loop_B clrf tmax_stocker clrf EEDATA movlw 0x1 movwf EEADR BCF EECON1, EEPGD BCF EECON1, CFGS BSF EECON1, WREN BCF INTCON, GIE MOVLW 55h MOVWF EECON2 MOVLW 0AAh MOVWF EECON2 BSF EECON1, WR BSF INTCON, GIE BCF EECON1, WREN call tempo ;attend pandant que la nouvelle valeur ;sur eeprom prend effet movlw 0x64 movwf tmin_stocker movwf EEDATA movlw 0x0 movwf EEADR BCF EECON1, EEPGD BCF EECON1, CFGS BSF EECON1, WREN BCF INTCON, GIE MOVLW 55h MOVWF EECON2 MOVLW 0AAh MOVWF EECON2 BSF EECON1, WR BSF INTCON, GIE BCF EECON1, WREN
de sa j'ai déduis que le pic saute accidentellement sur cette zone et remplace la valeur que je voulais sauvegardé par un 64 que je voulais seulement au cas ou le bouton soit pressé...et parfois j'ai 00 sur l adresse 01...Code:btfsc Breset ;bouton présé ? goto affichageT ;non alors continuer normalement ;oui? accedé au reset
(
clrf tmax_stocker
clrf EEDATA )
je vous signale que j utilise un quartz interne ...
une idée ? bonne soirée
-----