Bonjour,
(j'avais commencé une programmation en C de se programme, mais trop compliqué, et j'ai êrdu trop de temps, donc je le fais maintenant en assembleur, j'ai changé de pic également j'utilise un P16F690)
J'ai un problème avec mon programme.
Je configure mon programme pour qu'il allume 4 leds a 4 seuils de tension différents
led1 = 0,5V
led2=1V
led3=1,5V
led4=2V
Lorsque que je lance mon programme sur mon montage voici ce que je trouve:
Led4 s'allume en premier de 0V à 2,9V, ensuite Led3 s'allume de 2,9V a 3,64V, puis c'est led2 qui s'allume de 3,64V à 4,21V enfin c'est led1 qui s'allume de 4,21V à 5V.
J'ai donc décider d'inversé les seuils c'est-à-dire de mettre
led1=4,5V
led2=4V
led3=3,5V
led4=3V
Lorsque je lance mon programme il n'y a que led1 qui s'allume (et elle reste allumé sur toute la plage de tension)
Pouvez-vous m'aider svp, je ne comprend pas pourquoi les leds s'allument pas aux seuils que je veux.
Voici mon programme:
Code:#include <p16F690.inc> __config(_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF) #define LED_SCGND b'00000001' ;PORTC,0 #define LED_ILL b'00000010' ;PORTC,1 #define LED_GOOD b'00000100' ;PORTC,2 #define LED_SCBAT b'00010000' ;PORTC,3 #define LED_OC b'00001000' ;PORTC,4 cblock 0x020 result : 1 endc org 0x000 Start: bsf STATUS,RP0 movlw 0xFF movwf TRISA clrf TRISC movlw 0x10 movwf ADCON1 bcf STATUS,RP0 bcf STATUS,RP0 bsf STATUS,RP1 movlw b'00000001' movwf ANSEL bcf STATUS,RP0 bcf STATUS,RP1 movlw 0x01 movwf ADCON0 MainLoop: Nop Nop Nop Nop Nop bsf ADCON0,GO btfss ADCON0,GO goto $-1 movf ADRESH,w movwf result Mavaleur1: movf result,w sublw 0x1A btfss STATUS,C goto Mavaleur2 movlw LED_SCGND movwf PORTC goto Start Mavaleur2: movf result,w sublw 0x33 btfss STATUS,C goto Mavaleur3 movlw LED_ILL movwf PORTC goto Start Mavaleur3: movf result,w sublw 0x4D btfss STATUS,C goto Mavaleur5 movlw LED_GOOD movwf PORTC goto Start Mavaleur5: movf result,w sublw 0x66 btfss STATUS,C goto Mavaleur6 movlw LED_OC movwf PORTC goto Start end
.
-----