TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Bacharel Ciencia Da Computação

Artigo: Bacharel Ciencia Da Computação. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  3/10/2013  •  2.108 Palavras (9 Páginas)  •  399 Visualizações

Página 1 de 9

DECLARAÇÃO DE VARIÁVEIS

; *************************

CBLOCK 0X20 ;0X20 É O INÍCIO DA MEMÓRIA RAM

T1 ;T1 NO ENDEREÇO 0X20

T2 ;T2 NO ENDEREÇO 0X21

VAR_7SEG

VAR_ASCII

VAR_NUM

ENDC

DECLARAÇÃO DE constantes

; *************************

#DEFINE BTN1 PORTA,0 ;DEFINE QUE BTN1 = PORTA,0

#DEFINE LIGA BSF PORTA, 6

#DEFINE DESL BCF PORTA, 6

#DEFINE B_SINC PORTA, 0

#DEFINE MON PORTB, 7

#DEFINE ERRO PORTB, 5

; ROTINAS GERAIS.

; ******************************************************************************

1 PRINCIPAL (inicio da rotina)

2 BTFSS PIR1,RCIF ;Verifica (DIGA-SE TESTA) se foi digitado alguma coisa (ele fica em loop caso não digitado, porque se nada for digitado, ele vai pra rotina de baixo, no caso volta para a principal) ATENÇÃO, SUPONHAMOS QUE DIGITAMOS VALOR 5 foi digitado? SIM, O VALOR 5, ENTÃO SE FOR DIGITADO, PULE UMA LINHA, ENTÃO ELE VAI PULAR A GOTO PRINCIPAL, MUITA ATENÇÃO, GUARDE ESTE VALOR (5, CINCO, FIVE) LEMBRE-SE DELE

3 GOTO PRINCIPAL ;pula este caso acima for digitado.

4 CALL RX_SERIAL ;Chama a rotina RX_SERIAL (linha 12) ; OBS: a função call, é diferente de GOTO, o CALL chama a rotina, e pode retornar um valor, e retonar exatamente no ponto que parou, no caso na linha 4 .

5 CALL TX_SERIAL ; retornou aqui da rotina RX_SERIAL, AGORA CHAMA A TX_SERIAL

6 CALL ARMAZENA ; Retornou aqui da rotina TX_serial, agora chama a rotina ARMAZENA

7 CALL ASCII_NUM ;Retornou de armazena, agora vai transformar o valor para numero VAI PARA ROTINA ASCII_NUM

8 CALL NUM_7SEG ;Retorna da ascii_num e irá setar agora qual o valor digitado, vai para a rotina NUM_7SEG

9 MOVWF VAR_7SEG ;Ele retonar da rotina NUM_7SEG com o valor ja atribuido à W lembram? ("RETLW") e atribui esse valor à F

10 CALL DISPLAY ; Chama a rotina display

11 GOTO PRINCIPAL

12 RX_SERIAL (rotina RX_SERIAL) esta rotina utiliza uma porta serial para receber um valor, ela não sera transmitida ainda, será feita na rotina TX_SERIAL

13 MOVF RCREG,W ;MOVE O VALOR DIGITADO para o acumulador W

14 MOVWF VAR_ASCII ;Move do acumulador para uma variavel criada laaaaa em cima em "DECLARAÇÃO DE VARIÁVEIS E CONSTANTES, VOU DEIXAR COM A COR AZUL"

15 RETURN ;RETORNA DO PONTO QUE PAROU NA ROTINA PRINCIPAL, COM O VALOR DIGITADO E GUARDADO NA MEMORIA. RETORNA LINHA 4

16 TX_SERIAL (rotina TX_SERIAL) esta rotina transmite da serial para outro lugar selecionado no caso na linha 18 iremos verificar

17 MOVF VAR_ASCII,W ;move o valor da variavel VAR_ASCII (digitado anteriormente na rotina principal, depois para rx_serial, agora estamos aqui =P) para o acumulador W

18 MOVWF TXREG ;Move o valor do acumulador W para TXREG (registrador de transmissão)

19 BTFSS PIR1,TXIF ;Verifica se foi transmitido, se sim ele pula a linha de baixo

20 GOTO $-1 ;se não foi transmitido, retorna para a função acima, no caso a linha 19

21 RETURN ;Retorna no ponto em que parou na rotina principal, linha 5

22 ARMAZENA ( ROTINA ARMAZENA), serve para armazenar o valor digitado antes de enviar para o display

23 MOVF VAR_ASCII,W ;Move o valor da variavel VAR_ASCII para o acumulador W

24 MOVWF INDF ;Move o valor do acumulador W para o registrador INDF, o INDF não é um registrador fisico, ele "segura" vamos dizer assim o valor que for mandado em FSR, no endereço correspondente

25 INCF FSR,F ;INCrementa o valor do registrador FSR,F

26 MOVLW 0X61 ; move o valor 0x61 para o acumulador W

27 XORWF FSR,W ; Esta instrução efectua o OR exclusivo (XOR) entre o valor contido no acumulador W e o valor contido no registo endereçado pelo parâmetro

28 BTFSS STATUS,Z ;pula 1 se o valor de status,z for 1, neste caso ele esta testando se existe um valor de endereço no registrador. se tiver ele vai para a return (linha 29) senão ele vai setar um endereço padrão, linha 30

29 RETURN ;retorna para a rotina principal caso não for ele pula para a debaixo.

30 MOVLW 0X30 ;seleciona o endereço 0x30 e envia para o acumulador

31 MOVWF FSR ;adiciona o 0x30 como endereço primario

32 RETURN ;retorna para a rotina principal

33 ASCII_NUM ;transforma o valor digitado em ASCII

34 MOVLW .48 ;Move o valor decimal .48 para o acumulador W

35 SUBWF VAR_ASCII,W ;Esta instrução subtrai o valor contido no registo W do valor contido no registo endereçado pelo parâmentro f.

36 MOVWF VAR_NUM ;move do acumulador para a variável

...

Baixar como (para membros premium)  txt (7.8 Kb)  
Continuar por mais 8 páginas »
Disponível apenas no TrabalhosGratuitos.com