Étape 5: Code avec des commentaires d’analyseur de pouls (quelques notes de la section suivante) !
; sélectionner le processeur p24FJ32GA002
.EQU __p24FJ32GA002, 1
; inclure les définitions de processeur
comprennent « p24FJ32GA002.inc »
;..............................................................................
; Configuration bits ;..............................................................................
config __CONFIG1 0x3f7f
config __CONFIG2 0x79cf
; Assimiler les registres dans les noms qui sont faciles à utiliser.
.EQU ad1con1, 0x320 ; Registre de contrôle base ad
.EQU ad1con3, 0x324 ; Registre de contrôle AD pour régler la vitesse d’horloge de conversion
.EQU ad1buf0, 0 x 300 ; résultats publicitaires finissent par ici
.EQU ad1chs0, 0x0328 ; canal ad sélectionnez inscrire
.EQU ad1pcfg, 0x32c ; Cette isused de Registre pour configurer les entrées analogique ou numérique
.global __reset ; L’étiquette de la première ligne de code. ;
..............................................................................
; Section de code dans la mémoire de programme ; (C’EST OÙ LE PROGRAMME SERA LANCÉ APRÈS RÉINITIALISATION);... ;
.Text ; Début de la section de Code
__reset :
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; broche de connexion ; ;
Sortie : RB4 pin11 ; Entrée : RA0 pin2
; UART : rx : pin6 ; TX: pin7
; An9 : sorties de pin26 S/H sur cette broche (cette broche est un intrant pour microcontrôleur)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Connectin avec UART2 : traduire le code de serialcomm.pb pour logochip
; écrire 02c $8 $f0a4
MOV #0XF0A4, W0
MOV W0, TRISB
; écrire 6c $2 $0500
MOV # 0 X 0500, W0
MOV W0, RPOR1
; écrire 6 a 6 $ $1f02
MOV #0X1F02, W0
MOV W0, RPINR19
; écrire $238 51 ; Vitesse de transmission de paramètre
MOV #51, W0
MOV W0, U2BRG
; écrire 230 $ $8800
MOV #0X8800, W0
MOV W0, U2MODE
; écrire $232 400 $
MOV # 0 X 400, W0
MOV W0, U2STA
; initialiser des registres
MOV #0x8200, W0
MOV W0, ad1con1 ; tourne a/d, sortie va être cadrée à gauche
MOV #6, W0
MOV W0, ad1con3 ; environ 4 cycles par tad
MOV #0x1ff, W0
MOV W0, ad1pcfg ; la valeur 4 ports d’entrée LC analogiques, repos au numérique
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BCLR TRISB, #4 ; la valeur de sortie
BSET TRISA, #0 ; prendre au signal du générateur de fonction
BSET ad1pcfg, #0 ; mettre la broche à entrée numérique
; Loop1 & 2 contrôles est c’est une boucle de bord RISING :
BSET BANFF, #4 ; DONNE UN SIGNAL DE SORTIE : ÉCHANTILLON
LOOP1 : TRANSFUSIONS SANGUINES PORTA, #0 ; SAUTER SI LE NIVEAU EST ÉLEVÉ
SOUTIEN-GORGE LOOP1
NOP ; ATTENDRE UN COURT LAPS DE TEMPS
NOP
BCLR BANFF, #4 ; LA VALEUR FAIBLE DÉPART S/H : PAUSE
; faire un un convertisseur A/N sur AN9(pin 26)
MOV #9, W0
MOV W0, ad1chs0 ; Sélectionnez AN9 pour un convertisseur a/n
bSet ad1con1, #1 ; commencer l’échantillonnage et de lancer la conversion
MOV #7, W0 ; attendre 7 cycles pour échantillon interne et tenir le condensateur se charge
cycledelay : dec W0, W0 ; Decrement, W0
soutien-gorge nz, cycledelay ; maintenant, attendez pour la conversion à la fin
BCLR ad1con1, #1 ; commencer maintenant
fait : ad1con1 de transfusions sanguines, #0 ;
soutien-gorge fait ; Attendez de conversion à faire
; résultats gauche figurent dans ad1buf0
MOV ad1buf0, W0
LSR W0, #8, W0 ; déplacer la copie du ad1buf0, décalé de 8 bits vers la droite pour W0
MOV W0, U2TXREG ; écrire ces 8 bits de poids fort à tx ; attente pour la transmission à la fin
txdone : btss U2STA, #8 ;
soutien-gorge txdone
MOV #0x0c0, W0 ; masque pour sélectionner les bits 6 et 7
et # 0 x 300, W0 ; et met copie des bits 6 et 7 dans W0, tous les autres bits sont à zéro
MOV W0, U2TXREG ; écrivez ces bits à tx, n’oubliez pas de traiter correctement dans MATLAB
LOOP2 : BTSC PORTA, #0
SOUTIEN-GORGE LOOP2 ; SAUTER SI LE NIVEAU EST BAS
BOUCLE DE SOUTIEN-GORGE