|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Invité de passage
![]() Inscription : août 2007 Messages : 7 ![]() |
salut
il y'a quelqun ici qui comprends vraiment l'assembleur ? "la croix et la bannière" pour essayé de comprendre ou est le problème ! j'ais réaliser un petit programme avec interruption sur le portb (4...7) l'interruption est bien détecté , mais pourquoi lors de la deuxième détection il ne se passe rien ? j'ais bien mis en lieu et place retfie et rbif.. pourtant l'interruption ne se fait qu'une fois lors d'un autre essaie ,j'avais créer une temporisation ou lors de l'interruption la led s'allume et s'éteint peux apres (cela fonctionne) , peux apres, si on veut exécuter une autre interruption ,rien ne se passera , si quelqun voit quelque chose ?... merci pour votre aide Citation:
|
|
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() être humain Inscription : décembre 2007 Messages : 471 ![]() |
il manque un paquet de code.
la partie eteindre le led manque aussi et la plus importante, la boucle inifinie manque. si le programme ne reboucle pas sur un point de passage obligatoire, alors il va planter car le CPU va continuer à lire les instructions suivantes, qui seront indeterminées, et donc, risques de plantage, voire cramagede circuits si le plantage fait un truc louche. il faut donc veiller à decouper le code en modules, appelés par une boucle principale. pour ce qui est des ports trisa et trisb, il existe une instruction non documentée: TRIS reg qui permet d'acceder aux registres de la seconde banque, quel que soit l'etat des selecteurs de banque. les valeurs 1, 5, 6 et 7 sont acceptées. 5 et 6 correspondent à porta et portb, donc c'est parfait. cependant, microchip deconseille d'utiliser l'instruction tris. mais comme le CPU et le compilo la supportent, alors on s'en prive pas. |
|
|
00
|
|
|
#3 | |
|
Invité de passage
![]() Inscription : août 2007 Messages : 7 ![]() |
merci pour l'aide , alors , pour ce qui est de l'extinction de la led c'est fait
mais je n'arrive pas a comprendre "boucle infinie" comment ecrire cela ? (détecter une deuxième fois l'interruption est toujours impossible) voici le programme modifié Citation:
|
|
|
|
00
|
|
|
#4 | ||
|
Membre chevronné
![]() être humain Inscription : décembre 2007 Messages : 471 ![]() |
difficile d'attaquer la programmation assembleur sans notion de boucle infinie.
il faut toujours un programme principal (souvent appelé kernel sur les PC) qui puisse tourner en permanence. pour ça, rien de compliqué: Code :
ps: la syntaxe ici est celle de fasm, avec les macros pour compiler du pic. |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com