Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
[Realisation] Gestion à distance d'un rotor d'antenne Radio
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Hello tous,
On parlait justement de projets multiples dans le sujet de la table de fraiseuse, je travaille en parallèle sur ma future antenne de réception.
Une de mes autres passions est la transmission en code morse, j'ai un rendez-vous tous les soirs avec quelques copains radioamateurs et on discute le bout de gras par manipulateurs morses interposés. En réception j'utilise actuellement une antenne filaire d'une cinquantaine de mètres tendue entre les arbres, ce n'est pas le top d'ou le projet d'une antenne boucle magnétique bien plus performante.
Une antenne similaire est décrite sur ce lien: https://pu2nol.webnode.pt/_files/200000 ... 030mts.pdf
C'est une antenne qui est directive sur deux lobes, un avant et un arrière, ce qui implique qu'elle doit être rotative mais seulement sur 180° pour couvrir les 360°. Cette antenne à la particularité de s'affranchir des obstacles, ce qui veut dire qu'on peut la mettre à l'intérieur de la maison mais comme la mienne sera très grande, un octogone avec des cotés de 1m elle sera toute seule dans un vieux grenier.
Ca implique que je ne la verrai pas tourner et qu'il faut mettre en place non seulement un système de rotation à distance mais aussi un système de retour de positionnement sur une visu dans la station.
Voilà le projet est défini
On parlait justement de projets multiples dans le sujet de la table de fraiseuse, je travaille en parallèle sur ma future antenne de réception.
Une de mes autres passions est la transmission en code morse, j'ai un rendez-vous tous les soirs avec quelques copains radioamateurs et on discute le bout de gras par manipulateurs morses interposés. En réception j'utilise actuellement une antenne filaire d'une cinquantaine de mètres tendue entre les arbres, ce n'est pas le top d'ou le projet d'une antenne boucle magnétique bien plus performante.
Une antenne similaire est décrite sur ce lien: https://pu2nol.webnode.pt/_files/200000 ... 030mts.pdf
C'est une antenne qui est directive sur deux lobes, un avant et un arrière, ce qui implique qu'elle doit être rotative mais seulement sur 180° pour couvrir les 360°. Cette antenne à la particularité de s'affranchir des obstacles, ce qui veut dire qu'on peut la mettre à l'intérieur de la maison mais comme la mienne sera très grande, un octogone avec des cotés de 1m elle sera toute seule dans un vieux grenier.
Ca implique que je ne la verrai pas tourner et qu'il faut mettre en place non seulement un système de rotation à distance mais aussi un système de retour de positionnement sur une visu dans la station.
Voilà le projet est défini
Modifié en dernier par F6FCO le dim. 21 mars 2021 13:10, modifié 1 fois.
Gestion à distance d'un rotor d'antenne Radio
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Construction du mât et du rotor. C'est fait et çà date déjà de quelques temps, encore un de ces projets qu'il fallait à tout prix faire et qui a traîné ensuite 3 ou 4ans dans un coin :
https://f6fco.pagesperso-orange.fr/rotor.htm
https://f6fco.pagesperso-orange.fr/rotor.htm
Gestion à distance d'un rotor d'antenne Radio
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
A ce niveau j'avais juste de la ferraille bien agencée, encore rien de vivant. Pour la rotation j'ai utilisé un pont en H avec des récup sur de vieux téléviseurs
Pont en H qui chauffait énormément, çà tenait sur table mais je pense que dans le temps... alors j'ai rapidement remplacé tout çà par un bon vieux module L298 chinois.
Pont en H qui chauffait énormément, çà tenait sur table mais je pense que dans le temps... alors j'ai rapidement remplacé tout çà par un bon vieux module L298 chinois.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Gestion à distance d'un rotor d'antenne Radio
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
A ce niveau l'antenne tourne mais n'a aucune retenue et je rappelle qu'elle sera placée dans un grenier hors de ma pièce d'utilisation. Il faut donc pouvoir la limiter à 180° de rotation sous peine d'enrouler le câble coaxial autour du mat et de tout péter.
J'ai choisi de me faire un système opto maison avec des leds et phototransitors et un disque perforé. Usinage du disque (depuis il en a eu d'autres versions) avec 45 trous sur 180° donc 4° entre chaque trou.
A chaque extrémité un trou lu par un autre phototransistor marque les limites. En fait un seul sert, celui de départ limite mini, ensuite je compte le nombre de trous pour arriver à la limite maxi.
Usinage du disque sur la grosse CNC:
J'ai choisi de me faire un système opto maison avec des leds et phototransitors et un disque perforé. Usinage du disque (depuis il en a eu d'autres versions) avec 45 trous sur 180° donc 4° entre chaque trou.
A chaque extrémité un trou lu par un autre phototransistor marque les limites. En fait un seul sert, celui de départ limite mini, ensuite je compte le nombre de trous pour arriver à la limite maxi.
Usinage du disque sur la grosse CNC:
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Gestion à distance d'un rotor d'antenne Radio
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Le système de lecture du disque:
Le pic n'arrivait pas à lire les niveaux, pourtant à l'oscillo les créneaux étaient bien là . C'est avec le testeur de niveaux TTL que j'ai pu lever le renard, le photottor me donnait bien des états hauts mais des états bas à peu près que le PIC ne reconaissait pas, je lui ai rajouté un 2N2222 en buffer inverseur pour affirmer les niveaux.
Réalisation pratique de la version 1
Le pic n'arrivait pas à lire les niveaux, pourtant à l'oscillo les créneaux étaient bien là . C'est avec le testeur de niveaux TTL que j'ai pu lever le renard, le photottor me donnait bien des états hauts mais des états bas à peu près que le PIC ne reconaissait pas, je lui ai rajouté un 2N2222 en buffer inverseur pour affirmer les niveaux.
Réalisation pratique de la version 1
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Gestion à distance d'un rotor d'antenne Radio
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Ca fonctionnait mais il y avait des soucis, dés que je bougeais un peut trop sur la table je perdais les niveaux, au moindre choc plus rien. En fait les photottors sont très directifs et le moindre défaut d'alignement rendait le truc inopérant. Je vous raconte çà en deux lignes mais j'ai passé un sacré bout de temps à essayer de mettre tout çà au point. Bref, c'était du bricolage.
Cà m'a saoulé, j'ai tout démonté, récupéré les composants et refait un truc plus sérieux. Comme quoi en prenant le temps de faire correctement les choses on en gagne. Mais bon... quand c'est jeune et pressé
Cà m'a saoulé, j'ai tout démonté, récupéré les composants et refait un truc plus sérieux. Comme quoi en prenant le temps de faire correctement les choses on en gagne. Mais bon... quand c'est jeune et pressé
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Gestion à distance d'un rotor d'antenne Radio
Gestion à distance d'un rotor d'antenne Radio
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Il a fallu compter et décompter les trous pour savoir dans quel azimut se trouve l'antenne et tenir compte des limites mini et maxi pour éviter la casse. Un peu chaud à programmer de tête alors j'ai fait un petit ordinogramme pour gérer tout çà:
Mais c'est pas tout, pour accorder une antenne loop magnétique sur la fréquence choisie il faut actionner un condensateur variable en série dans la boucle. Un truc que les jeunes de moins de 40ans ne connaissent pas. Vous en avez certainement déjà vu dans le vieux récepteur à tubes de papy, un truc avec des lames qui rentrent. Un composant qui se fait super rare cela dit.
Celui-ci est piloté par un moteur pas à pas récupéré sur un photocopieur. J'entends Temps-X marmonner dans sa barbe "- il a encore fallu qu'il nous case un PAP dans son histoire !!!"
Driver chinois pour piloter le pap ce qui implique deux fils de plus (clock et direction).
Le réglage de l'antenne est très pointu et c'est chaud d'y arriver à la main, alors j'ai prévu une vitesse de rotation rapide pour le réglage gros et une lente pour le réglage fin.
Et pour lui aussi il a fallu mettre des limites mini et maxi car il ne s'ouvre que de 180°. Encore le système des photottors, avec un doigt mobile cette fois:
Mais c'est pas tout, pour accorder une antenne loop magnétique sur la fréquence choisie il faut actionner un condensateur variable en série dans la boucle. Un truc que les jeunes de moins de 40ans ne connaissent pas. Vous en avez certainement déjà vu dans le vieux récepteur à tubes de papy, un truc avec des lames qui rentrent. Un composant qui se fait super rare cela dit.
Celui-ci est piloté par un moteur pas à pas récupéré sur un photocopieur. J'entends Temps-X marmonner dans sa barbe "- il a encore fallu qu'il nous case un PAP dans son histoire !!!"
Driver chinois pour piloter le pap ce qui implique deux fils de plus (clock et direction).
Le réglage de l'antenne est très pointu et c'est chaud d'y arriver à la main, alors j'ai prévu une vitesse de rotation rapide pour le réglage gros et une lente pour le réglage fin.
Et pour lui aussi il a fallu mettre des limites mini et maxi car il ne s'ouvre que de 180°. Encore le système des photottors, avec un doigt mobile cette fois:
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Gestion à distance d'un rotor d'antenne Radio
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Je mets tout çà au point avec mon dernier banc de prototypage V.4 pour PIC 40pins et modules additionnels, je ferai un sujet dessus. Evidemment après il faudra faire un PCB dédié qui sera beaucoup plus simple. En bas à gauche sur la breadboard les trois petits modules de mesures TTL pour visualiser en temps direct les niveaux des fourches opto, sans eux je ne m'en serai pas sorti.
Le schéma de gestion du rotor:
La visu se fait sur un LCD 1602
A ce stade le programme est au point et tout tourne correctement sur table, il reste à faire un boitier et tirer les fils entre ma station et le grenier pour concrétiser tout çà. Un trou est déjà fait dans la cloison, il faut que je tire un fil témoin pour connaître la longueur de câble à aller acheter.
Et aussi construire l'antenne proprement dite . Tout est décrit plus minutieusement sur cette page: https://f6fco.pagesperso-orange.fr/Loop.htm
Le schéma de gestion du rotor:
La visu se fait sur un LCD 1602
A ce stade le programme est au point et tout tourne correctement sur table, il reste à faire un boitier et tirer les fils entre ma station et le grenier pour concrétiser tout çà. Un trou est déjà fait dans la cloison, il faut que je tire un fil témoin pour connaître la longueur de câble à aller acheter.
Et aussi construire l'antenne proprement dite . Tout est décrit plus minutieusement sur cette page: https://f6fco.pagesperso-orange.fr/Loop.htm
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par F6FCO le sam. 13 mars 2021 17:45, modifié 10 fois.
Gestion à distance d'un rotor d'antenne Radio
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Le programme, je préfère travailler avec des fichiers séparés que je peux ouvrir ensembles sur des deux écrans plutôt que de passer mon temps à scroller.
Fichier main:
Les sous-routines:
Les diverses tempos:
Fichier main:
Code : Tout sélectionner
#include <Init Loop.asm>
; ------------- POM de l'antenne avant utilisation
init_Antenne
clrf Compteur ; RAZ du compteur
clrf Rotor
clrf CompteurCV
clrf ptrPas
bcf H1
bcf H2
call Affiche_POM
POM_Antenne
call tournePOM
bsf AA_old ; AA_old =1
btfsc PinLimiteRotor
bra POM_Antenne
call RazPontH
; ------------- On ramène le CV en position fermée
POM_CV
call tournePOMcv
btfss PinLimiteCV
bra POM_CV
call Affiche_Azimut
;*************************************** Main *******************************************************
main
call RazPontH
nop
nop
; ************** gestion poussoirs rotation antenne
poussoir_direct
btfsc pous1 ; 0 si appuyé, 1 inactif
bra poussoir_inverse
call tourneDirect
bra main
poussoir_inverse
btfsc pous2
bra poussoir_CV_direct_Lent
call tourneInverse
bra main
; ************** gestion poussoirs rotation CV
poussoir_CV_direct_Lent
btfsc pous3
bra poussoir_CV_inverse_Lent
call tourneCVdirectLent
bra main
poussoir_CV_inverse_Lent
btfsc pous4
bra poussoir_CV_direct_Rapide
call tourneCVinverseLent
bra main
poussoir_CV_direct_Rapide
btfsc pous5
bra poussoir_CV_inverse_Rapide
call tourneCVdirectRapide
bra main
poussoir_CV_inverse_Rapide
btfsc pous6
bra main
call tourneCVinverseRapide
bra main
;*************************************** Includes fichiers annexes *******************************************************
#include <RoutinesCommunes.asm> ; procédures communes
#include <routinesAffichage.asm> ; procédures affichage LCD
#include <tempos.asm> ; procédures temporisations
#include <LCD_18F_8Mhz.asm> ; include affichage LCD
end
Les sous-routines:
Code : Tout sélectionner
;**********************************************************************************************
;************ Routines Communes ********************************************************
;**********************************************************************************************
;***************
tournePOM
bcf H1 ; pont H
bsf H2 ; pont H
return
;***************
tournePOMcv
bcf Cw
bsf Clk
call tempo250µs
bcf Clk
call tempo250µs
return
;***************
RazPontH
bcf H1 ; pont H
bcf H2 ; pont H
return
;***************
tourneCVdirectLent
btfsc PinLimiteCV
clrf CompteurCV
; ouverture du CV
call Affiche_donnees_CV
;test de la limite d'ouverture maxi
movff CompteurCV,tampon
movlw d'180'
subwf tampon
btfsc STATUS,Z
return
; --------------
bsf Cw
bsf Clk
call tempo5ms
call tempo5ms
call tempo5ms
call tempo5ms
bcf Clk
call tempo5ms
call tempo5ms
call tempo5ms
call tempo5ms
; on incrémente CompteurCV seulement tous les 16 pas
incf ptrPas
movff ptrPas,tampon
movlw d'16'
subwf tampon
btfss STATUS,Z
return
clrf ptrPas
incf CompteurCV
incf CompteurCV
return
;***************
tourneCVinverseLent ; fermeture du CV
btfsc PinLimiteCV
clrf CompteurCV
call Affiche_donnees_CV
btfsc PinLimiteCV
return
bcf Cw
bsf Clk
call tempo5ms
call tempo5ms
call tempo5ms
call tempo5ms
bcf Clk
call tempo5ms
call tempo5ms
call tempo5ms
call tempo5ms
; on décrémente CompteurCV seulement tous les 16 pas
movf ptrPas,f ; ptrPas=0 ?
btfsc STATUS,Z
bra decCVL ; oui, on sort
decf ptrPas
return
decCVL decf CompteurCV
decf CompteurCV
movlw d'16'
movwf ptrPas
return
;***************
tourneCVdirectRapide ; ouverture du CV
btfsc PinLimiteCV
clrf CompteurCV
call Affiche_donnees_CV
;test de la limite d'ouverture maxi
movff CompteurCV,tampon
movlw d'180'
subwf tampon
btfsc STATUS,Z
return
; --------------
bsf Cw
bsf Clk
call tempo5ms
bcf Clk
call tempo5ms
; on incrémente CompteurCV seulement tous les 16 pas
incf ptrPas
movff ptrPas,tampon
movlw d'16'
subwf tampon
btfss STATUS,Z
return
clrf ptrPas
incf CompteurCV
incf CompteurCV
return
;***************
tourneCVinverseRapide ; fermeture du CV
btfsc PinLimiteCV
clrf CompteurCV
call Affiche_donnees_CV
btfsc PinLimiteCV
return
bcf Cw
bsf Clk
call tempo5ms
bcf Clk
call tempo5ms
; on décrémente CompteurCV seulement tous les 16 pas
movf ptrPas,f ; ptrPas=0 ?
btfsc STATUS,Z
bra decCV ; oui, on sort
decf ptrPas
return
decCV decf CompteurCV
decf CompteurCV
movlw d'16'
movwf ptrPas
return
;***************
tourneDirect
btfss PinLimiteRotor
clrf Compteur
call Affiche_donnees_Rotor
btfss PinLimiteRotor
return
bsf Rotor,0 ; sens direct
call comptageAngle
bcf H1 ; pont H
bsf H2 ; pont H
btfss pous1
bra tourneDirect
return
;***************
tourneInverse
btfss PinLimiteRotor
clrf Compteur
call Affiche_donnees_Rotor
movff Compteur,tampon
movlw d'180'
subwf tampon
btfsc STATUS,Z ; test si arrivée en butée extrême
return
bcf Rotor,0 ; sens inverse
call comptageAngle
bsf H1 ; pont H
bcf H2 ; pont H
btfss pous2
bra tourneInverse
return
;***************
comptageAngle
btfsc PinAngleRotor
bra setAA
call tempo5ms
btfss AA_old
bra razRotor7
testSens
bcf AA_old
btfsc Sens
bra decSens
incSens incf Compteur
incf Compteur
incf Compteur
incf Compteur
bra correctionZero
decSens decf Compteur
decf Compteur
decf Compteur
decf Compteur
bra correctionZero
setAA bsf AA_old
bra correctionZero
razRotor7
bcf AA_old
correctionZero
btfss PinLimiteRotor
clrf Compteur
return
;***************
conversion_ascii_Rotor
; digit0
movff Compteur,tampon ;243
movff Compteur,ptr ;243
movff tampon,dividende16 ;243
call division16
movff quotient16,WREG ;24
mullw d'10'
movff PRODL,WREG ;240
subwf ptr,f ;3
movlw d'48'
addwf ptr,f ;51
movff ptr,digit0
; digit1
movff quotient16,tampon
movff quotient16,ptr
movff tampon,dividende16 ;243
call division16
movff quotient16,WREG ;24
mullw d'10'
movff PRODL,WREG ;240
subwf ptr,f ;3
movlw d'48'
addwf ptr,f ;51
movff ptr,digit1
; digit2
movff quotient16,tampon
movff quotient16,ptr
movff tampon,dividende16 ;243
call division16
movff quotient16,WREG ;24
mullw d'10'
movff PRODL,WREG ;240
subwf ptr,f ;3
movlw d'48'
addwf ptr,f ;51
movff ptr,digit2
return
;***************
conversion_ascii_CV
; digit0
movff CompteurCV,tampon ;243
movff CompteurCV,ptr ;243
movff tampon,dividende16 ;243
call division16
movff quotient16,WREG ;24
mullw d'10'
movff PRODL,WREG ;240
subwf ptr,f ;3
movlw d'48'
addwf ptr,f ;51
movff ptr,digit0
; digit1
movff quotient16,tampon
movff quotient16,ptr
movff tampon,dividende16 ;243
call division16
movff quotient16,WREG ;24
mullw d'10'
movff PRODL,WREG ;240
subwf ptr,f ;3
movlw d'48'
addwf ptr,f ;51
movff ptr,digit1
; digit2
movff quotient16,tampon
movff quotient16,ptr
movff tampon,dividende16 ;243
call division16
movff quotient16,WREG ;24
mullw d'10'
movff PRODL,WREG ;240
subwf ptr,f ;3
movlw d'48'
addwf ptr,f ;51
movff ptr,digit2
return
;********************************************************************
; Division sur entiers 16bits _ F6FCO
; Il faut préalablement déclarer les variables ci-dessous sur 16 bits
; dividende16, diviseur16, quotient16, reste16, valeur1 et valeur2 sur 16bits
;
; poids faible dans dividende16
; poids fort de la valeur à diviser dans dividende16+1,
;
; poids faible dans diviseur16
; poids fort du diviseur dans diviseur16+1
;
; Le résultat sera dans quotient16 et quotient16+1
; Le reste sera dans reste16 et reste16+1
;
; Cette division utilise la routine soustraction16
;
;********************************************************************
division16
; on vérifie si c'est une division par zéro, si c'est le cas on charge le dividende dans le quotient.
; dividende/0=dividende, pas cohérent mathématiquement mais nécessaire dans le projet en cas de ligne
; horizontale (Y=0) ou verticale (X=0).
movf diviseur16,diviseur16
btfss STATUS,Z
bra div16
div_zero movf diviseur16+1,diviseur16+1
btfsc STATUS,Z
bra div_quot
div16 ; on initialise quotient=0
clrf quotient16
clrf quotient16+1
; reste=dividende
movff dividende16,reste16
movff dividende16+1,reste16+1
div16_1 movf reste16+1,w
subwf diviseur16+1,w
; test si poids fort reste>diviseur ?
btfss STATUS,C
bra div16_3
; test si poids fort reste=diviseur ? sinon on sort
div16_4 bz div16_2
findiv16 return
div16_2 ; test si poids faible reste>=diviseur
movff reste16,WREG
subwf diviseur16,w
btfss STATUS,C
bra div16_3
bz div16_3
bra findiv16
div16_3 ; reste=dividende-diviseur
nop
movff reste16,valeur1
movff reste16+1,valeur1+1
movff diviseur16,valeur2
movff diviseur16+1,valeur2+1
call soustraction16 ; résultat dans valeur1, valeur1+1
movff valeur1+1,reste16+1
movff valeur1,reste16
; quotient +1
bcf STATUS,C
movlw 1
addwf quotient16
; on additionne le carry dans le poids fort
movf STATUS,C
andlw 0x1
addwf quotient16+1
bra div16_1
div_quot ; en cas de division par zéro on charge le dividende dans le quotient
movff dividende16,quotient16
movff dividende16+1,quotient16+1
return
;********************************************************************
; Soustraction sur entiers 16bits -F6FCO- *
; Il faut préalablement déclarer des variables sur 16 bits *
; valeur1:2 - valeur2:2 *
; *
; nombre fort: *
; valeur1: poids faible *
; valeur1+1: poids fort *
; *
; nombre faible à soustraire : *
; valeur2: poids faible *
; valeur2+1: poids fort *
; *
; Appeler la procédure soustraction16 et le résultat de *
; valeur1-valeur2 sur 16bits sera dans les 2 octets de valeur1 *
;********************************************************************
soustraction16
movf valeur2,w
subwf valeur1
movf valeur2+1,w
subwfb valeur1+1
movf valeur2+2,w
subwfb valeur1+2
return
Les diverses tempos:
Code : Tout sélectionner
;*********************************** routines tempos ****************************************
tempo250µs
; Délai 250 Cycles de la machine
; Durée du délai 250 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .83
movwf Reg_1,1
decfsz Reg_1,F,1
bra $-2
return
tempo5ms
; Délai 5 000 Cycles de la machine
; Durée du délai 5 millisecond
; Fréquence de l'oscillateur 4 MHZ
movlw .125
movwf Reg_1,1
movlw .7
movwf Reg_2
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
return
tempo100ms
; Délai 20 000 Cycles de la machine
; Durée du délai 10 millisecond
; Fréquence de l'oscillateur 8 MHZ
movlw .248
movwf Reg_1,1
movlw .26
movwf Reg_2
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
nop
return
tempo500ms
; Délai 500 000 Cycles de la machine
; Durée du délai 500 millisecond
; Fréquence de l'oscillateur 4 MHZ
movlw .85
movwf Reg_1,1
movlw .138
movwf Reg_2
movlw .3
movwf Reg_3
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
decfsz Reg_3
bra $-.10
return
tempo1500ms
; Délai 3 000 000 Cycles de la machine
; Durée du délai 1500 millisecond
; Fréquence de l'oscillateur 8 MHZ
movlw .13
movwf Reg_1,1
movlw .57
movwf Reg_2
movlw .16
movwf Reg_3
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
decfsz Reg_3
bra $-.10
nop
nop
return
tempo1s
; Délai 20 000 Cycles de la machine
; Durée du délai 10 millisecond
; Fréquence de l'oscillateur 8 MHZ
movlw .248
movwf Reg_1,1
movlw .26
movwf Reg_2
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
nop
return
;**********************************************************************************************
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 36 invités