Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
;*
DISPLAY 1-2 (CDIGO 2)
*
;*
UTFPR
*
;*
DESENVOLVIDO POR
ADRIANO SILVA, JULIANA SANTOS
*
;* VERSO: 1.0
DATA: 07/04/2016
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
DESCRIO DO ARQUIVO
*
;*-----------------------------------------------------------------*
;* CDIGO PARA PIC 16F877 DA DISCIPLINA "MICROCONTROLADORES".
*
;*
*
;* AO PRESSIONAR AS TECLAS DE 1 A 8, OS LEDS CORRESPONDENTES (1A8) *
;* SO LIGADOS. APS SOLTAR A TECLA, CONTINUA LIGADO. SMOMENTE AO *
;* PRESSIONAR NOVAMENTE SO DESLIGADOS.
*
*
;*
*
;* Habilitar o dip switch CH3,1-4 (posio ON para cima);
*
;* Habilitar o dip CH5,1-4 (posio ON para cima);
*
;* Habilitar todos os dips de CH4 (posio ON para cima);
*
;* Desabilitar as demais chaves DIP;
*
;* Manter o jumper J3 e J4 na posio A (1 e 2).
*
;*
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
CONFIGURAO PARA GRAVAO (FUSES)
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
__CONFIG _WDT_OFF & _XT_OSC & _LVP_OFF & _DEBUG_ON & _BODEN_OFF
;_CP_OFF
;_WRT_OFF
;
;_DEBUG_ON
;_CPD_OFF
;_LVP_OFF
;_WDT_OFF
;_BODEN_OFF
;_PWRTE_ON
;_XT_OSC
;* * * * * * * * * * *
;*
;* * * * * * * * * * *
#INCLUDE <P16F877.INC>
* * * * * * * * * * * * * * * * * * * * * * *
ARQUIVOS DE DEFINIES
*
* * * * * * * * * * * * * * * * * * * * * * *
;ARQUIVO PADRO MICROCHIP PARA 16F877
;* * * * * * * * * * * * * * * * *
;*
PAGINAO DE
;* * * * * * * * * * * * * * * * *
; DEFINIO DE COMANDOS DE USURIO
; MEMRIA.
BANK0
BANK1
MACRO
* * * * * * * * * * * * * * * * *
MEMRIA
*
* * * * * * * * * * * * * * * * *
PARA ALTERAO DA PGINA DE
ENDM
ENDM
MACRO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
VARIVEIS
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; DEFINIO DOS NOMES E ENDEREOS DE TODAS AS VARIVEIS UTILIZADAS
; PELO SISTEMA
CBLOCK 0x20
;ENDEREO INICIAL DA MEMRIA DE
;USURIO.
W_TEMP
;REGISTRADORES TEMPORRIOS PARA USO
STATUS_TEMP
;JUNTO S INTERRUPES.
DB1
;VARIAVEL DE TEMPO1
DB2
;VARIVEL DE TEMPO2
ENDC
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
FLAGS INTERNOS
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
CONSTANTES
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; DEFINIO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
ENTRADAS
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#DEFINE BOTAO04
PORTB,0
;BOTAO 0 E 4
#DEFINE BOTAO15
PORTB,1
;BOTAO 1 E 5
#DEFINE BOTAO26
PORTB,2
;BOTAO 2 E 6
#DEFINE BOTAO37
PORTB,3
;BOTAO 3 E 7
* * * *
*
* * * *
LIGADO A
LIGADO A
LIGADO A
LIGADO A
PORTA
PORTA
PORTA
PORTA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
SADAS
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#DEFINE LED0
PORTD,0
;DEFININDO RD0 COMO LED0
#DEFINE LED1
PORTD,1
;DEFININDO RD1 COMO LED1
#DEFINE LED2
PORTD,2
;DEFININDO RD2 COMO LED2
#DEFINE LED3
PORTD,3
;DEFININDO RD3 COMO LED3
#DEFINE LED4
PORTD,4
;DEFININDO RD4 COMO LED4
#DEFINE LED5
PORTD,5
;DEFININDO RD5 COMO LED5
#DEFINE LED6
PORTD,6
;DEFININDO RD6 COMO LED6
#DEFINE LED7
PORTD,7
;DEFININDO RD7 COMO LED7
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
VETOR DE RESET
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ORG
goto
;* * *
;*
;* * *
; CADA
; E UM
0x00
INICIO
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ROTINAS E SUBROTINAS
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ROTINA OU SUBROTINA DEVE POSSUIR A DESCRIO DE FUNCIONAMENTO
NOME COERENTE S SUAS FUNES.
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
INCIO DO PROGRAMA
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
RB0
RB1
RB2
RB3
INICIO
clrf
clrf
clrf
clrf
PORTA
PORTB
PORTC
PORTD
;LIMPA
;LIMPA
;LIMPA
;LIMPA
PORTA
PORTB
PORTC
PORTD
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
CONFIGURAO DO MICROCONTROLADOR
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
BANK1
;ALTERA PARA O BANCO 1.
movlw
movwf
B'00001111'
TRISB
movlw
movwf
movlw
movwf
B'11111100'
TRISC
B'00000000'
TRISD
BANK0
movlw
movwf
B'11111111'
PORTD
A.
;MOVE O
;DEFINE RC0
;MOVE O
;TODA A
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
INICIALIZAO DA RAM
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; LIMPEZA DE TODA A RAM DO BANC0 0, INDO DE 0X20 A 0X7F.
movlw
movwf
0x20
FSR
ARA
;A PRIMEIRA POSIO DA RAM.
LIMPA_RAM
clrf
incf
movf
xorlw
btfss
goto
INDF
FSR,F
FSR,W
0x80
STATUS,Z
LIMPA_RAM
A.
;* * * * * * * * * * * * * * * *
;*
INICIALIZAO DAS
;* * * * * * * * * * * * * * * *
; ATRIBUIO DE VALORES INICIAIS
; RESGISTRADORES ESPECIAIS.
* * * * * * * * * * * * * * * * * *
VARIVEIS E SFRs
* * * * * * * * * * * * * * * * * *
S VARIVEIS CRIADAS NA RAM E
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
ROTINA PRINCIPAL
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MAIN:
BANK0
movlw B'11111110'
movwf PORTC
NHA DO TECLADO MATRICIAL
;SELECIONA A PRIMEIRA LI
CALL
DELAY_50ms
;INTERVALO DE CICLO DE L
BOTAO04
EITURA
BTFSS
PRESSIONADO
GOTO
IONADO
REALMENTEPRESSIONADO
BTFSS
GOTO
BOTAO15
REALMENTEPRESSIONADO1
BTFSS
GOTO
BOTAO26
REALMENTEPRESSIONADO2
BTFSS
GOTO
BOTAO37
REALMENTEPRESSIONADO3
movlw B'11111101'
movwf PORTC
LINHA DO TECLADO MATRICIAL
BTFSS
PRESSIONADO
GOTO
IONADO
BOTAO04
REALMENTEPRESSIONADO4
BTFSS
GOTO
BOTAO15
REALMENTEPRESSIONADO5
BTFSS
GOTO
BOTAO26
REALMENTEPRESSIONADO6
BTFSS
GOTO
GOTO
BOTAO37
REALMENTEPRESSIONADO7
MAIN
LDLED:
IGA LED0
BTFSS LED0
HA SE O LED0 ESTIVER SETADO
GOTO
DESL0
GA O LED0
GOTO
LIGA0
O LED0
LDLED1:
IGA LED1
BTFSS
GOTO
GOTO
LDLED2:
IGA LED2
BTFSS
GOTO
GOTO
LDLED3:
IGA LED3
LED1
DESL1
LIGA1
;FUNO LIGA OU DESL
LED2
DESL2
LIGA2
;FUNO LIGA OU DESL
BTFSS
GOTO
GOTO
LDLED4:
IGA LED4
BTFSS
GOTO
GOTO
LDLED5:
IGA LED5
BTFSS
GOTO
GOTO
LDLED6:
IGA LED6
BTFSS
GOTO
GOTO
LDLED7:
IGA LED7
BTFSS
GOTO
GOTO
LED3
DESL3
LIGA3
;FUNO LIGA OU DESL
LED4
DESL4
LIGA4
;FUNO LIGA OU DESL
LED5
DESL5
LIGA5
;FUNO LIGA OU DESL
LED6
DESL6
LIGA6
;FUNO LIGA OU DESL
LED7
DESL7
LIGA7
LIGA0:
ED0
LED0
CONTINUAPRESS
;LIGA O LED0
;VERIFICA BORDA DE SUBIDA DO SIN
AL
RETURN
PRXIMA LINHA DE ONDE FOI CHAMADO
;RETORNA PARA A
LIGA1:
ED1
LIGA2:
ED2
LIGA3:
ED3
LIGA4:
ED4
LIGA5:
ED5
LIGA6:
ED6
LIGA7:
ED7
DESL0:
R LED0
LED0
CONTINUAPRESS
;DESLIGA LED0
;VERIFICA BORDA DE SUBIDA DO SIN
AL
RETURN
PRXIMA LINHA DE ONDE FOI CHAMADO
;RETORNA PARA A
DESL1:
R LED1
DESL2:
R LED2
DESL3:
R LED3
DESL4:
R LED4
DESL5:
R LED5
DESL6:
R LED6
LED6
CONTINUAPRESS6
RETURN
DESL7:
R LED7
CONTINUAPRESS:
DA DO SINAL DO
BTFSS
HA SE O BOTAO0
GOTO
NHA ANTERIOR
GOTO
PROGRAMA
CONTINUAPRESS1:
DA DO SINAL DO BOTAO1
BTFSS BOTAO15
GOTO
$-1
GOTO
MAIN
CONTINUAPRESS2:
DA DO SINAL DO BOTAO2
BTFSS BOTAO26
GOTO
$-1
GOTO
MAIN
CONTINUAPRESS3:
DA DO SINAL DO BOTAO3
BTFSS BOTAO37
GOTO
$-1
GOTO
MAIN
CONTINUAPRESS4:
DA DO SINAL DO BOTAO4
BTFSS BOTAO04
GOTO
$-1
GOTO
MAIN
CONTINUAPRESS5:
DA DO SINAL DO BOTAO5
BTFSS BOTAO15
GOTO
$-1
GOTO
MAIN
CONTINUAPRESS6:
DA DO SINAL DO BOTAO6
BTFSS BOTAO26
GOTO
$-1
GOTO
MAIN
CONTINUAPRESS7:
DA DO SINAL DO BOTAO7
BTFSS BOTAO37
GOTO
$-1
GOTO
MAIN
REALMENTEPRESSIONADO:
AO0 PRESSIONADO
CALL
BTFSS
HA SE O BOTAO 0
GOTO
SLIGA LED0
GOTO
RAMA
DELAY_DB
BOTAO04
ESTIVER SETADO
LDLED
MAIN
REALMENTEPRESSIONADO1:
AO1 PRESSIONADO
CALL
DELAY_DB
BTFSS BOTAO15
GOTO
LDLED1
GOTO
MAIN
REALMENTEPRESSIONADO2:
AO2 PRESSIONADO
CALL
DELAY_DB
BTFSS BOTAO26
GOTO
LDLED2
GOTO
MAIN
REALMENTEPRESSIONADO3:
AO3 PRESSIONADO
CALL
DELAY_DB
BTFSS BOTAO37
GOTO
LDLED3
GOTO
MAIN
REALMENTEPRESSIONADO4:
AO4 PRESSIONADO
CALL
DELAY_DB
BTFSS BOTAO04
GOTO
LDLED4
GOTO
MAIN
REALMENTEPRESSIONADO5:
AO5 PRESSIONADO
CALL
DELAY_DB
BTFSS BOTAO15
GOTO
LDLED5
GOTO
MAIN
REALMENTEPRESSIONADO6:
AO6 PRESSIONADO
CALL
DELAY_DB
BTFSS BOTAO26
GOTO
LDLED6
GOTO
MAIN
REALMENTEPRESSIONADO7:
AO7 PRESSIONADO
CALL
DELAY_DB
BTFSS BOTAO37
GOTO
LDLED7
GOTO
MAIN
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
FUNO DELAY
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
DELAY_DB:
MOVLW .150
MOVWF DB1
W PARA A VARIAVEL DB1
DELAY_DB2:
MOVLW .250
MOVWF DB2
W PARA A VARIAVEL DB2
DECFSZ DB2
IDADE DE DB2 E PULA LINHA CASO SEJA '0'
GOTO
$-1
A ANTERIOR
DECFSZ DB1
IDADE DE DB1 E PULA LINHA CASO SEJA '0'
GOTO
DELAY_DB2
FUNO DELAY_DB2
RETURN
HA DEPOIS DA FUNO ONDE FOI CHAMADA
DELAY_50ms:
MOVLW
MOVWF
DELAY_50ms:
MOVLW
MOVWF
DECFSZ
GOTO
DECFSZ
GOTO
RETURN
.250
DB2
DB2
$-1
DB1
DELAY_GRANDE1
;DECREMENTA A UN
;VAI PARA A LINH
;DECREMENTA A UN
;VOLTA PARA O INICIO DA
;RETORNA UMA LIN
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;*
FIM DO PROGRAMA
*
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
END
;OBRIGATRIO.