EXERCÍCIOS EM ASSEMBLY
Exames: EXERCÍCIOS EM ASSEMBLY. Pesquise 862.000+ trabalhos acadêmicosPor: apoena • 20/1/2015 • 225 Palavras (1 Páginas) • 386 Visualizações
EXERCÍCIO 1
Elabore um programa para o 16F877A que faz com que um speaker ligado ao pino
RB7 da porta B, dê beeps periódicos a cada segundo. Cada beep dura cerca de 0,5s.
Sendo que o cristal a ser utilizado é de 1MHZ.
LIST P=16F877A
#INCLUDE P16F877A.INC
#DEFINE BANCO0 BCF STATUS,RP0
#DEFINE BANCO1 BSF STATUS,RP0
VAR EQU 0X31
VAR1 EQU 0X32
TEMPO EQU 0X33
ORG 00
GOTO INICIO
ORG 04
GOTO INTERRUP
ORG 10
INICIO
BANCO1
CLRF TRISB ;SELECIONANDO TODA A PORTA B COMO SAÍDA
MOVLW B'00000111'
MOVWF OPTION_REG ;CONFIGURANDO O PRE-SCALER PARA 1:256
BANCO0
BSF INTCON,GIE ;HABILITANDO AS INTERRUPÇÕES GLOBAIS
BSF INTCON,T0IE ;HABILITANDO A INTERRUPÇÃO POR TIMER0
LOOP
CLRF PORTB
CLRF VAR
CLRF VAR1
CALL BEEP
CALL FIM_INT
GASTAR
GOTO GASTAR
; = = = = = = = = = = = = = = =
;ROTINA DE INTERRUPÇÃO
; = = = = = = = = = = = = = = =
INTERRUP
DECFSZ TEMPO,1 ; DECREMENTA O TEMPO ATÉ ZERO
GOTO FIM_INT ;SE O TEMPO FOR = ZERO EXECUTA
GOTO TESTE ;SE O TEMPO FOR =/ ZERO EXECUTA
FIM_INT
BCF INTCON,T0IF ;ZERANDO O FLAG DE INTERRUPÇÃO
RETFIE
; = = = = = = = = = = = =
;ROTINAS DE TESTES
; = = = = = = = = = = = =
TESTE
MOVF VAR,0
XORLW D'2'
BTFSS STATUS,Z
GOTO BEEP_PARAR
GOTO LOOP
BEEP
MOVLW B'10000000'
MOVWF PORTB
INCF VAR
CALL ROT_05S
GOTO FIM_INT
GOTO GASTAR
BEEP_PARAR
MOVLW
...