Escolar Documentos
Profissional Documentos
Cultura Documentos
Laboratório 10
Comunicação Serial via USART
Engenharia Elétrica
Discentes:
Bárbara Morais Gianesini
Turma: N1
Data da realização do laboratório:
30 de Março de 2016
1. Objetivos
2. Atividades
list p =16f877a
#include <p16f877a.inc> call UART_iniciar
__CONFIG H'3F32' call Iniciar_AD0
reinicio
ERRORLEVEL -305 call UART_RxCar
ERRORLEVEL -302 btfss regrx,0
goto $-2
cblock 0x20 movwf car_rx
contador xorlw 't' ;mostra temperatura
car_rx btfsc STATUS,Z
endc goto mostra_temp
movwf car_rx
inicio: xorlw 'a' ;contagem UP
clrf PORTE btfsc STATUS,Z
bsf STATUS, RP0 goto cont_up
movlw 0x84 movwf car_rx
movwf ADCON1 xorlw 'd' ;contagem DOWN
bsf TRISA, RA0 btfsc STATUS,Z
bsf TRISA, RA1 goto cont_down
bsf TRISA, RA3
movlw B'11111000' call Prt_Cmd_invalido
movwf TRISE goto fim
bcf STATUS, RP0
cont_down cont_up
call av_linha call av_linha
movlw .20 movlw .1
movwf contador movwf contador
loop_cd loop_ca
call limpa_binarios call limpa_binarios
movwf contador movfw contador
movwf Binario1 movwf Binario1
call bin40_bcd call bin40_bcd
call UART_Envia_2BCD call UART_Envia_2BCD
call av_linha call av_linha
decfsz contador,F incf contador, F
goto loop_cd movfw contador
goto fim xorlw .21
btfss STATUS,Z
goto loop_ca
goto fim
mostra_temp fim
call av_linha call av_linha
call Converte_AD movlw 'f'
call conv_binario_temp call UART_TxCar
call bin40_bcd movlw 'i'
call UART_Envia_3BCD3 call UART_TxCar
call av_linha movlw 'm'
call ret1s call UART_TxCar
call av_linha
call UART_RxCar call av_linha
btfss regrx,0 call ret1s
goto mostra_temp call ret1s
movwf car_rx goto reinicio
xorlw 'f' ; vai para o fim
btfsc STATUS,Z
goto fim
goto mostra_temp
av_linha
conv_binario_temp movlw .10 ;line feed
call limpa_binarios call UART_TxCmd
movfw binario_L movlw .13 ;car return
movwf Op1_L call UART_TxCmd
movfw binario_H return
movwf Op1_H
movlw 0xE9 limpa_binarios
movwf Op2_L clrf Binario5
movlw 0x01 clrf Binario4
movwf Op2_H clrf Binario3
call Multi16 clrf Binario2
movfw Rpta1 clrf Binario1
movwf Binario1 return
movfw Rpta2
movwf Binario2 #include "up_atrasos.asm"
movfw Rpta3 #include "up_bin40-bcd.asm"
movwf Binario3 #include "up_CAD.asm"
movfw Rpta4 #include "up_matemat.asm"
movwf Binario4 #include "up_msg.asm"
return #include "up_rs-232.asm"
#include "up_tx_BCD.asm"
end
A subrotina conv_binario_temp, como dito anteriormente, converter o valor lido pelo CAD
(entre 0 e 1023) para o valor binário correspondente à temperatura. Utiliza-se a equação:
𝑏𝑖𝑛𝑎𝑟𝑖𝑜𝐶𝐴𝐷 ∗ 500
𝑡𝑒𝑚𝑝𝑏𝑖𝑛𝑎𝑟𝑖𝑜 = ( ) ∗ 1000
1023
Por fim, a subrotina av_linha é usada para pular para a próxima linha do Virtual Terminal,
enquanto que a subrotina limpa_binarios limpa (coloca em zero) todos os registradores
utilizados na conversão de binário para decimal.
3. Conclusão