Bonjour
Dans l'un des partie de mon projet de fin d'étude je suis obliger de programmer une pic 16f628 q,elle seras capable de réceptionne une trame serie et l'afficher sur 8 LED apre 3 jour de travaille je reuisste d'écrire cette programme en assembleur.
Nb : je suis débutant alors je crois qu'il me manque beaucoup en ce programme mais vraiment j'ai besoin de votre aide
;***************************Co mmumication PIC PS2**********************
; *
;***************************** ****************************** ***********
; *
; Fichier requis: P16F628.inc *
; *
;***************************** ****************************** ***********
LIST p=16F628 ; Définition de processeur
#include <p16F628.inc> ; Définitions de variables
__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _HS_OSC
; '__CONFIG' précise les paramètres encodés dans le processeur au moment de
; la programmation. Les définitions sont dans le fichier include.
; Voici les valeurs et leurs définitions :
; _CP_ON Code protection ON : impossible de relire
; _CP_OFF Code protection OFF
; _PWRTE_ON Timer reset sur power on en service
; _PWRTE_OFF Timer reset hors-service
; _WDT_ON Watch-dog en service
; _WDT_OFF Watch-dog hors service
; _LP_OSC Oscillateur quartz basse vitesse
; _XT_OSC Oscillateur quartz moyenne vitesse
; _HS_OSC Oscillateur quartz grande vitesse
; _RC_OSC Oscillateur à réseau RC
;
;-----------------------------------------------------------------------------------
;definitions
;-------------
#DEFINE ra0 PORTA,0
#DEFINE ra1 PORTA,1
#DEFINE ra2 PORTA,2
#DEFINE ra3 PORTA,3
#DEFINE ra4 PORTA,4
#DEFINE rb5 PORTB,5
#DEFINE rb6 PORTB,6
#DEFINE rb7 PORTB,7
;configuration des ports
;-------------------------
org 0x00 ; Adresse de départ après reset
bsf STATUS,RP0 ; accéder en bank1
movlw 0x04 ; configurer le PORTA en entrée
movwf TRISA ; charger la valeur de configuration dans TRISA
clrf PORTA
movlw 5x07
movwf TRISB ; configurer le PORTB en sortie
bcf STATUS,RP0 ; accéder en bank2
clrf PORTB ; initialiser la PORTB
;---------------------------------------------------------------------
; Caractère lu dans W. La parité pas n'est pas vérifiée
;---------------------------------------------------------------------
Receive
; attendre début start-bit
; ------------------------
btfsc SERIAL ; Tester si start bit arrivé
goto Receive ; non, attendre
; se positionner sur le milieu du 1er bit utile
; ---------------------------------------------
call temp_1bd ; attendre 1bit et demi
; réception du caractère
; ----------------------
movlw 0x8 ; pour 8 bits
movwf cmptbts ; dans compteur de bits
Recloop
bcf STATUS , C ; Carry = 0
btfsc SERIAL ; tester si bit = 0
bsf STATUS , C ; Carry = bit reçu
rrf caract , f ; faire entrer le bit par la gauche
call temp_1b ; attendre milieu caractère suivant
decfsz cmptbts , f ; décrémenter compteur de bits
goto Recloop ; pas dernier, suivant
; on pointe actuellement sur le centre du bit de parité
; reste donc à attendre +- 1.5 bits pour être dans le second stop-bit
; -------------------------------------------------------------------
call temp_1bd ; Attendre 1,5 bit
movf caract , w ; charger caractère lu
return ; et retour
merci bcp d'avance
-----