J'aimerai programmer un PIC 16F877A.
Tout d'abord pour verifier si mon programmateur fonctionne correctement je veux essayer de programmerle pic pour faire clignotter des leds sur les ports B et D.
Donc j'ai fais mon programme, j'ai programmer mon pic.Jusque la pas de problemes.
Ensuite je mets mon PIC sur ma plaque d'essai et la rien ne se passe, on dirai que mon PIC n'est pas programmer.Pourtant mon programme est bien dessus.
Donc soit mon montage ou soit mon programme n'est pas bon .
Ou alors derniere solution je crois que mon PIC est programmer est ce n'est pas le cas.
Voici mon programme.Si quelqu'un peut l'essayer et me dire si sa fonctionne chez lui, ce serai un probleme de moin a verifier. Merci
;********************************************************************** ; * ; Test led sur un 16F877A - 20 Mhz * ; * ; * ; * ;********************************************************************** ; * ; Filename: led.asm * ; Date: 25/06/00 * ; File Version: 1 * ; * ; Author: Julien * ; Company: Fribotte * ; * ; * ;********************************************************************** ; * ; Files required: rien * ; * ; * ;********************************************************************** ; * ; Notes: Quartz 20 Mhz * ; * ; * ;********************************************************************** list p=16F877A ; list directive to define processor #include <p16F877A.inc> ; processor specific variable definitions __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC ; Pas de code protege, pas de watch hdog timer, delai de demarrage, horloge HS. ;********************************************************************** ; * ; Variables * ; * ; * ;********************************************************************** ; Variable de temporisation tempo50µ EQU 0x20 ; Variable tempo 50 µs tempo10ms EQU 0x21 ; Variable tempo 10 ms tempo1s EQU 0x22 ; Variable tempo 1s ;**************************************************************** DEBUT ORG 0x000 ; processor reset vector GOTO main ; go to beginning of program ;********************************************************************** ; * ; Interruption Timer * ; * ; * ;********************************************************************** ORG 0x0005 ; interrupt vector location ; Ici on s'en sert pas ! RETFIE ; return from interrupt ;********************************************************************** ; * ; Programme Main * ; * ; * ;********************************************************************** main ;***** initialisations CALL InitIO ; On intialise les ports d'E/S (A et B) ;***** boncle infinie boucle MOVLW D'255' MOVWF PORTD MOVLW D'255' MOVWF PORTB CALL Wait1s CLRF PORTD CLRF PORTB CALL Wait1s GOTO boucle ;***** Attente de 1 s (exactement 1.00204 s) Wait1s MOVLW D'99' ; 99 fois MOVWF tempo1s ; stockage dans la variable tempo50µ T1sboucle CALL Wait10ms DECFSZ tempo1s,1; décremente et test GOTO T1sboucle; on boucle tant que <>0 RETURN ;***** Attente de 10 ms (exactement 10.02 ms) Wait10ms MOVLW D'198' ; 198 fois MOVWF tempo10ms; stockage dans la variable tempo50µ T10msboucle CALL Wait50µs DECFSZ tempo10ms,1; décremente et test GOTO T10msboucle; on boucle tant que <>0 RETURN ;***** Attente de 50 µs (exactement, en comptant le temps d'appel) Wait50µs NOP NOP MOVLW D'81' ; 81 fois MOVWF tempo50µ; stockage dans la variable tempo50µ T50µsboucle DECFSZ tempo50µ,1; décremente et test GOTO T50µsboucle; on boucle tant que <>0 0.2*3=0.6 µs en tout RETURN ;********************************************************************** ; * ; Initialisation des ports d'E/S * ; * ; * ;********************************************************************** InitIO CLRF PORTD ; Initialise le port D CLRF PORTB ; Initialise le port B BSF STATUS, RP0; Bank 1 selectonnee MOVLW 0x0 ; Port RD7-RD0 en sortie MOVWF TRISD ; / MOVLW 0x0 ; Port RB7-RB0 en sortie MOVWF TRISB ; / BCF STATUS, RP0; Bank 0 selectonnee RETURN ;********************************************************************** ; * ; Fin * ; * ; * ;********************************************************************** END ; directive 'end of program'
et voici le code HEX
0000: 2806 3FFF 3FFF 3FFF 3FFF 0009 2023 30FF .ÿÿÿÿ.#ÿ 0008: 0088 30FF 0086 2010 0188 0186 2010 2807 ˆÿ†.ˆ†.. 0010: 3063 00A2 2016 0BA2 2812 0008 30C6 00A1 c¢.¢..Æ¡ 0018: 201C 0BA1 2818 0008 0000 0000 3051 00A0 .¡....Q 0020: 0BA0 2820 0008 0188 0186 1683 3000 0088 ..ˆ†ƒ.ˆ 0028: 3000 0086 1283 0008 3400 3400 3FFF 3FFF .†ƒ...ÿÿ 0030: 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF ÿÿÿÿÿÿÿÿ
J'espere que vous pourez me donner un petit coup de main
Merci d'avance
Julien