Moderadores: 51, guest2003, Renie, gpenga
#include <8052.h>
void interrupcaoExterna0( void ) interrupt 0
{
int i , j ;
// O Led acende com 0.
P0_0 = 0 ;
// Atraso.
for( j = 0 ; j < 10 ; j++ )
for( i = 0 ; i < 30000 ; i++ )
;
// O Led apaga com 1.
P0_0 = 1 ;
// Trava o processamento.
for( ; ; )
;
}
void interrupcaoExterna1( void ) interrupt 2
{
// O Led acende com 0.
P0_0 = 0 ;
}
void main( void )
{
int i , j ;
// Habilita interrupção externa.
EX0 = 1 ;
EX1 = 1 ;
EA = 1 ;
// Acende o Led com 0.
P0_0 = 0 ;
// Atraso.
for( j = 0 ; j < 10 ; j++ )
for( i = 0 ; i < 30000 ; i++ )
;
// Apaga o Led com 1.
P0_0 = 1 ;
for( ; ; )
;
}
$mod51
ORG 0000h
LJMP INICIO
ORG 0003h
LJMP TRATAI0 ; Trata interrupção externa 0.
ORG 0013h
LJMP TRATAI1 ; Trata interrupção externa 1.
TRATAI0:
MOV P0,#0 ; Acende LED no P0.
; Rotina de atraso.
MOV R0,#255
MOV R1,#255
PULO0:
DJNZ R0,PULO0
MOV R0,#255
DJNZ R1,PULO0
MOV P0,#255 ; Apaga LED no P0.
TRAVAI0:
SJMP TRAVAI0 ; Trava o processamento na interrupção 0.
RETI ; Apenas para constar.
TRATAI1:
MOV P0,#0 ; Acende LED no P0.
; Rotina de atraso.
MOV R0,#255
MOV R1,#255
PULO1:
DJNZ R0,PULO1
MOV R0,#255
DJNZ R1,PULO1
MOV P0,#255 ; Apaga LED no P0.
RETI
INICIO:
MOV IE,85h ; Ativa as interrupções externas.
MOV P0,#0 ; Acende LED no P0.
; Rotina de atraso.
MOV R0,#255
MOV R1,#255
PULO2:
DJNZ R0,PULO2
MOV R0,#255
DJNZ R1,PULO2
MOV P0,#255 ; Apaga LED no P0.
TRAVA:
SJMP TRAVA ; Trava o processamento do programa principal.
END
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante