Você está na página 1de 2

Página

1 de 2

CURSO Eletroeletrônica DATA ___ / ___ / ___


COMPONENTE Técnicas Digitais e de Microprocessadores II
ALUNO RA:
DOCENTE Prof. Romeu Corradi Júnior

Assunto: Treinamento - Interrupção

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; COTUCA – TDM_II - Prof. Corradi ;;
;; Treinamento ;;
;; Programa: - interrupcao_1.asm ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ORG 0000H ;End. de início de gravação na ROM

LJMP INICIO ;Salta para o inicio do progama

ORG 0003H ;End. da interrupção EXT 0


MOV P2,#01010101B ;Acende os leds intercalados
RETI ;Retorna ao programa principal

ORG 0040H ;End. de início do programa principal

INICIO: MOV SP,#30H ;Carrga SP (evitar problemas c/ a pilha)


MOV IE,#10000001B ;Habilita interrupção EXT 0
CLR IT0 ;EXT 0 ativa por nível
MOV A,#0FEH ;Coloca valor em ACC
LOOP: MOV P2,A ;Copia ACC em P2 (acendo apenas led 1)
LCALL TEMPO ;Chama rotina de tempo
RL A ;Rotaciona BITs de ACC para esquerda
SJMP LOOP ;Retorna ao LOOP do programa principal

;Rotina de tempo: (255 x 255 x 8)microsegundos

TEMPO: MOV R0,#8 ;Carrega 8 em R0


VOLTA2: MOV R1,#255 ;Carrega 255 em R1
VOLTA1: MOV R2,#255 ;Carrega 255 em R1
DJNZ R2,$ ;Espera zerar R2 para continuar
DJNZ R1,VOLTA1 ;Espera zerar R1 para continuar
DJNZ R0,VOLTA2 ;Espera zerar R0 para continuar
RET ;Retorna ao programa principal

END

Impressão
Colégio Técnico de Campinas e da UNICAMP - COTUCA
9/6/2020
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; COTUCA – TDM_II ;;
;; Treinamento ;;
;; Programa: - interrupcao_2.asm ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ORG 0000H ;End. de início de gravação na ROM

LJMP INICIO ;Salta para o inicio do programa

ORG 0003h ;End. da interrupção EXT 0

MOV P2,#0FFH ;Apaga os leds


RETI ;Retorna ao programa principal

ORG 0013H ;End. da interrupção EXT 1


MOV P2,#00H ;Acende os leds
RETI ;Retorna ao programa principal

ORG 0040H ;inicio do progama


INICIO: MOV IE,#85H ;Habilita interrupções EXT 0 e EXT 1
SETB PX1 ;Alta prioridade para EXT 1
CLR IT0 ;EXT 0 ativada por nivel
CLR IT1 ;EXT 1 ativada por nivel

MOV A,#0FFH ;Coloca valor em ACC


LOOP: MOV P2,A ;Coloca valor de ACC em P2 (acendo apenas led 1)
LCALL TEMPO ;Chama rotina de tempo
DEC A ;Decrementa ACC
SJMP LOOP ;Retorna ao LOOP do programa principal

;Rotina de tempo: (255 x 255 x 8)microssegundos

TEMPO: MOV R0,#8 ;Carrega 8 em R0


VOLTA2: MOV R1,#255 ;Carrega 255 em R1
VOLTA1: MOV R2,#255 ;Carrega 255 em R1
DJNZ R2,$ ;Espera zerar R2 para continuar
DJNZ R1,VOLTA1 ;Espera zerar R1 para continuar
DJNZ R0,VOLTA2 ;Espera zerar R0 para continuar
RET ;Retorna ao programa principal

END ;Fim de compilação

Você também pode gostar