Ir ao conteúdo
  • Cadastre-se

Trabalho com microcontrolador pic16f690


Marujo68

Posts recomendados

Pessoal tenho que fazer um trabalho que consiste em:

3 botões e 2 displays

1- botão para incrementar o display 1. Aperta e mostra no display.

2 -botão para incrementar o display 2 Aperta e mostra no display

3 -botão para reset. A cada vez que o botão for pressionado

deve mostrar nos dois displays a letra F.

Ao ligar a alimentação também deve ser mostrado a letra F nos 2 displays

ou seja, quando é ligado mostra nos dois displays a letra F. Ao pressionar uma vez o botão 1 vai de F para 0, se presionar outra vez vai para 1, e assim por diante. O mesmo vale para o botão 2.

;**********************************************************************
; This file is a basic code template for assembly code generation *
; on the PIC16F690. This file contains the basic code *
; building blocks to build upon. *
; *
; Refer to the MPASM User's Guide for additional information on *
; features of the assembler (Document DS33014). *
; *
; Refer to the respective PIC data sheet for additional *
; information on the instruction set. *
; *
;**********************************************************************
; *
; Filename: xxx.asm *
; Date: *
; File Version: *
; *
; Author:TIAGO DOS SANTOS *
; Company: *
; *
; *
;**********************************************************************
; *
; Files Required: P16F690.INC *
; *
;**********************************************************************
; *
; Notes: *
; *
;**********************************************************************


list p=16f690 ; list directive to define processor
#include <P16F690.inc> ; processor specific variable definitions

__CONFIG _CP_OFF & _CPD_OFF & _BOR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _FCMEN_OFF & _IESO_OFF

;CONT EQU 0X20
;DECREMENTA EQU 0X21
;AUX1 EQU 0X22
;AUX2 EQU 0X23
;AUX3 EQU 0X24

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The labels following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.


;**********************************************************************
CBLOCK 0X20
CONT1 ;CONT
CONT2 ;CONT
TEMP ;T1
TEMP1 ;T2
TEMP2 ;T3



ENDC


ORG 0x000 ; processor reset vector
goto INICIALIZAFF
goto INICIO

ORG 0x004
retfie

INICIALIZAFF
BSF PORTA,3
MOVLW B'00101101'
MOVWF PORTC

BSF PORTA,4
MOVLW B'00001111'



INICIO
; CONFIGURAÇÃO DAS PORTAS DE ENTRADA E SAIDA

;indicar utilização das portas (entrada e saida das portas , analogicas e digitais
;seleção do banco 2 para ajustar ansel, anselh
BCF STATUS,RP0 ; rp0 bit 5 (bit de status)
BSF STATUS,RP1 ; rp1 é o bit 6( bit de status)
; fui para o banco 2
; ANSEL PERGUNTA " voce QUER ENTRADAS OU SAIDAS ANALOGICAS? O CLRF (CLEAR LIMPA DESLIGANDO)
CLRF ANSEL ; ANSEL É ENTRADA ANALOGICA

CLRF ANSELH ; ANSELH E ENTRADA ANALOGICA ALTA
;ASSIM DESLIGUEI ENTRADAS OU SAIDAS ANALOGICAS, ZERADO ANALOGICO
; TODOS ENTRADAS OU SAIDAS SÃO DIGITAIS

; INDO PARA O TRISA (ONDE TEM PORTA) DO BANCO 3

BSF STATUS,5
BCF STATUS,6

;CONFIGURAR TRISC

MOVLW b'00000000'
MOVWF TRISC

MOVLW b'00011111'
MOVWF TRISA

CLRF CONT1
CLRF CONT2



;CLRW


; REPOSICIONANDO PARA O BANCO 0
BCF STATUS,5 ; POE 0 NO BIT 5 DO STATUS
MAIN

BOTAO1


BTFSS PORTA,0 ;VERIFICA SE O BOTAO FOI PRESSIONADO
GOTO BOTAO2 ;VOLTA POIS O BOTAO NAO FOI PRESSIONADO

BTFSC PORTA,0 ;VERIFICA SE O BOTAO AINDA ESTA PRESSIONADO
GOTO $-.1

BSF PORTA,3 ;TRANSISTOR PARA ACIONAR DISP 1
INCF CONT1,F ;AUMENTA 1 E AGUARDA NO PROPRIO REG
MOVF CONT1,W
CALL BIN_PARA_7SEG ;CHAMA A SUB ROTINA
MOVWF PORTC ;COLOCA O VALOR DO DISPLAY.

BOTAO2


BTFSS PORTA,1 ;VERIFICA SE O BOTAO FOI PRESSIONADO
GOTO BOTAO3

BTFSC PORTA,1 ;VERIFICA SE O BOTAO AINDA ESTA PRESSIONADO
GOTO $-.1

BSF PORTA,4
INCF CONT2,F ;AUMENTA 1 E AGUARDA NO PROPRIO REG
MOVF CONT2,W
CALL BIN_PARA_7SEG ;CHAMA A SUB ROTINA
MOVWF PORTC ;COLOCA O VALOR DO DISPLAY.




BOTAO3
BTFSS PORTA,2 ;VERIFICA SE O BOTAO FOI PRESSIONADO
GOTO BOTAO1

BTFSC PORTA,2 ;VERIFICA SE O BOTAO AINDA ESTA PRESSIONADO
GOTO $-.1

BSF PORTA,3
MOVLW B'00001111'
CALL BIN_PARA_7SEG
MOVWF PORTC

BSF PORTA,4
MOVLW B'00001111'
CALL BIN_PARA_7SEG





BIN_PARA_7SEG
ANDLW b'00001111'
ADDWF PCL,F
; EDC.BAFG LETRA F 10000111
RETLW B'11101110' ;0
RETLW B'00101000' ;1
RETLW B'11001101' ;2
RETLW B'01101101' ;3
RETLW B'00101011' ;4
RETLW B'01100111' ;5
RETLW B'11100111' ;6
RETLW B'00101100' ;7
RETLW B'11101111' ;8
RETLW B'01101111' ;9
RETLW B'10101111' ;A
RETLW B'11100011' ;B
RETLW B'11000110' ;C
RETLW B'11101001' ;D
RETLW B'11000111' ;E
RETLW B'10000111' ;F

;INICIALIZAFF
;BSF PORTA,3
;MOVLW B'00001111'
;CALL BIN_PARA_7SEG
;MOVWF PORTC

;BSF PORTA,4
;MOVLW B'00001111'
;CALL BIN_PARA_7SEG


END






;DELAY1S
;MOVLW .10
;MOVWF T3
;DL3
;CALL ROTINA100MS
;DECFSZ T3,F
;GOTO DL3
;RETURN ;;;FALTOU

;ROTINA100MS
;MOVLW .100
;MOVWF T2
;DL2
;CALL ROTINA1MS
;DECFSZ T2,F
;GOTO DL2
;RETURN ;;;;FALTOU

;ROTINA1MS
;MOVLW .248
;MOVWF T1
;DL1
;NOP
;DECFSZ T1,F
;GOTO DL1
;RETURN

; directive 'end of program'





;E se precisarmos de mais tempo, por exemplo 100 ms?
;Se essa rotina que fizemos gera aproximadamente 1 ms, basta executá-la 100 vezes.
;Fazemos então uma rotina para decrementar uma outra variável 100 vezes,
;e a cada decremento executar a rotina de 1 ms.

;INICIA VAR 2
;MOVLW 100
;MOVWF AUX2 ;ATE AQUI INCLUINDO O CALL GASTARAM-SE 4 US
;
;INICIA VAR 1
;MOVLW 249
;MOVWF AUX1 ;1 DO MOVLW.249 E OUTRO DO MOVWF AUX1 2 US
;DECREMENTA
;NOP ;1US
;DECFSZ AUX1,F ;1US NO ULTIMO E 2 PULA
;GOTO DECREMENTA ;2US
;TOTAL DE 4US 4*249-1=995 US
;DECFSZ AUX2,F ;1 US NO ULTIMO E 2
;GOTO INICIA VAR 1 ;2US
;RETURN

Se alguém pudesse me ajudar, seria bom.

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!