Bonjour à tous, je suis en train de programmer un microcontroleur C167 de chez SIEMENS en assembleur avec le logiciel µvision.
Dans le cadre de ce projet je suis obligé de programmer avec des interruptions, j'ai commencé une bonne partie de ce programmer et lorsque je le test avec le simulateur tout ce passe correctement mais au moment de le tester sur la maquette la c'est le drame et les interruptions ne fonctionnent pas alors que le reste du programme fonctionne correctement.
Quelle est la raison de ce dysfonctionnement ? Est-ce materiel ? Ou cela vient il du programme ?
Pour info voici le programme :
NAME Module_1
$INCLUDE (REG167.INC)
ASSUME DPP3:system,DPP0:donnees
donnees SECTION DATA
Liste DSW 9
Mesures DSW 9
donnees ENDS
prog SECTION CODE
main PROC
GLOBAL main
MOV DP2,#0x0000
MOV P3,#0x0000
MOV DP3,#0xFFFF
MOV CCM0,#0x2111
MOV CCM1,#0x0011
MOV CC0IC,#0x0044
MOV CC1IC,#0x0044
MOV CC2IC,#0x0044
MOV CC3IC,#0x0044
MOV CC4IC,#0x0044
MOV CC5IC,#0x0044
AND PSW,#0x0FFF ; forcer à 0 les 4 bits ILVL
OR PSW,#0x0800 ; forcer à 1 le Interrupt Enable
MOV R0,#liste
MOV R1,#Mesures
fin:
JMP cc_UC,fin
main ENDP
Rentree_Verin PROC INTERRUPT CC3INT=13h
MOV CC2IC,#0x0044
ADD R0,#2
BSET P3.0
RETI
Rentree_Verin ENDP
Verin_Rentre PROC INTERRUPT CC0INT=10h
BCLR P3.0
RETI
Verin_Rentre ENDP
Sortie_Verin PROC INTERRUPT CC2INT=12h
MOV CC2IC,#0x0004
MOV R2,#0x1000
CALL DELAI
MOV R3,#0x0000
MOV [R0],R3
BSET P3.1
RETI
Sortie_Verin ENDP
Verin_Sortie PROC INTERRUPT CC1INT=11h
BCLR P3.1
RETI
Verin_Sortie ENDP
Piece_Noire PROC INTERRUPT CC4INT=14h
MOV R3,#0x00FF
MOV [R0],R3
RETI
Piece_Noire ENDP
Piece_Metallique PROC INTERRUPT CC5INT=15h
MOV R3,#0xFFFF
MOV [R0],R3
RETI
Piece_Metallique ENDP
DELAI PROC
MOV T3CON,#0x0086
MOV T3,R2
BSET T3R
attente_delai:
JNB T3OTL,attente_delai
BCLR T3R
RET
DELAI ENDP
prog ENDS
END
-----