Ca va vous ? pas de projet de programmation ASM en ce moment mais j'ai eu l'idée de demander à ChatGPT ce qu'elle en pensait. Désolé je n'ai pas le datasheet de ChatGPT
J'ai posté çà ici parce que çà concerne l'assembleur.
Voici une copie d'écran de notre discussion préliminaire, j'ai été volontairement laconique sur les spécifications du programme demandé pour prolonger la discussion, c'est elle qui a décidé de me pondre un programme qui allume une led. En étant plus précis peut-être pourrait-on lui demander des choses plus complexes, après à voir si çà fonctionne vraiment, mais en sachant comment fonctionne cette IA je suis dubitatif :
Et voici le code que l'IA m'a gentiment généré, je ne l'ai pas testé mais à lire le code en diagonale çà m'a l'air correct:
Code : Tout sélectionner
LIST P=18F4525
#include <p18f4525.inc>
; Configuration des registres
CONFIG OSC=HS, FCMEN=OFF, IESO=OFF
CONFIG PWRT=ON, BOREN=OFF, BORV=3
CONFIG WDT=OFF
CONFIG PBADEN=OFF, LPT1OSC=OFF, MCLRE=ON
CONFIG STVREN=ON, LVP=OFF, XINST=OFF
CONFIG DEBUG=OFF
; Définition des constantes
LED_PIN EQU 0 ; La LED est connectée au port B0
DELAY_TIME EQU 500 ; Délai en millisecondes
; Initialisation du programme
ORG 0x0000
GOTO Main
; Interruptions
ORG 0x0008
RETFIE
; Fonction de délai
Delay MOVWF 0x20 ; Charge le registre W avec le temps de délai
CLRF 0x21 ; Initialise le registre de comptage
DelayLoop
DECFSZ 0x20,1 ; Décrémente le compteur de temps
GOTO DelayLoop ; Boucle jusqu'à ce que le compteur atteigne zéro
DECFSZ 0x21,1 ; Décrémente le compteur de boucles
GOTO DelayLoop ; Boucle jusqu'à ce que le compteur atteigne zéro
RETURN
; Programme principal
Main BSF TRISB,LED_PIN ; Configure la broche de la LED en sortie
CLRF PORTB ; Initialise le port B à zéro
MainLoop
BSF PORTB,LED_PIN ; Allume la LED
CALL Delay ; Attendre DELAY_TIME millisecondes
BCF PORTB,LED_PIN ; Éteint la LED
CALL Delay ; Attendre DELAY_TIME millisecondes
GOTO MainLoop ; Boucle indéfiniment
Puis j'ai continué mon petit jeu en poussant un peu plus loin:
et le code généré par ChatGPT pour une gestion de trappe poulailler, pour avoir fait une telle application je trouve ce programme simpliste et non fonctionnel en réel, pas de gestion de début et fin de course de la trappe, etc.
Mais c'est amusant
Code : Tout sélectionner
LIST P=18F4525
#include <p18f4525.inc>
; Configuration des registres
CONFIG OSC=HS, FCMEN=OFF, IESO=OFF
CONFIG PWRT=ON, BOREN=OFF, BORV=3
CONFIG WDT=OFF
CONFIG PBADEN=OFF, LPT1OSC=OFF, MCLRE=ON
CONFIG STVREN=ON, LVP=OFF, XINST=OFF
CONFIG DEBUG=OFF
; Définition des constantes
LDR_PIN EQU AN0 ; Broche pour la photorésistance
MOTOR_PORT EQU PORTC ; Port pour le moteur pas-à-pas
CW EQU 0b00000110 ; Séquence de commande pour faire tourner le moteur dans le sens des aiguilles d'une montre
CCW EQU 0b00001001 ; Séquence de commande pour faire tourner le moteur dans le sens inverse des aiguilles d'une montre
DELAY_TIME EQU 1000 ; Délai en millisecondes entre chaque mesure de luminosité
; Initialisation du programme
ORG 0x0000
GOTO Main
; Interruptions
ORG 0x0008
RETFIE
; Fonction de délai
Delay MOVWF 0x20 ; Charge le registre W avec le temps de délai
CLRF 0x21 ; Initialise le registre de comptage
DelayLoop
DECFSZ 0x20,1 ; Décrémente le compteur de temps
GOTO DelayLoop ; Boucle jusqu'à ce que le compteur atteigne zéro
DECFSZ 0x21,1 ; Décrémente le compteur de boucles
GOTO DelayLoop ; Boucle jusqu'à ce que le compteur atteigne zéro
RETURN
; Fonction de mesure de la luminosité
MeasureLight
CLRF ADRESH ; Initialise le registre ADRESH à zéro
CLRF ADRESL ; Initialise le registre ADRESL à zéro
BSF ADCON0,0 ; Active le module de conversion AD
NOP
NOP
NOP
NOP
BTFSC ADCON0,1 ; Attends que la conversion soit terminée
GOTO $-1
BCF ADCON0,0 ; Désactive le module de conversion AD
MOVF ADRESH, W ; Charge le résultat de la conversion dans le registre W
RETURN
; Programme principal
Main BSF TRISC,0 ; Configure la broche du moteur pas-à-pas en sortie
CLRF MOTOR_PORT ; Initialise le port du moteur pas-à-pas à zéro
BSF TRISA,0 ; Configure la broche de la photorésistance en entrée
MainLoop
CALL MeasureLight ; Mesure la lumin

pour ce retour d'information, qui mérite d'être évoquer.
pour 