Vous êtes sur la page 1sur 5

;

; UTRAMIG - Eletronica Digital - 3 Etapa


;
; Clock: 4MHz
Ciclo de mquina = 1s
;
; Aluno: Rodnei O. Santos
12 de Abril de 2016
;
; Projeto Mostra Tec
;
;---------------------------------- LISTAGEM DO PROCESSADOR UTILIZADO ----------------------------------------------------list

p=16F628A

;Utilizado PIC16F628A

;---------------------------------- ARQUIVOS INCLUSOS NO PROJETO ---------------------------------------------------------#include <p16F628a.inc>

;inclui o arquivo do PIC 16F628A

;---------------------------------- FUSE BITS ----------------------------------------------------------------------------; - Cristal de 4MHz


; - WDT desabilitado
; - Power Up Timer (PWRTE) Habilitado
; - Brown Out desabilitado
; - Programao em baixa tenso, proteo de cdigo e proteo da EEPROM desabilitados
__config _XT_OSC & _WDT_OFF & _PWRTE_ON & _BOREN_OFF & _LVP_OFF & _CP_OF
F & _CPD_OFF & _MCLRE_ON
;---------------------------------- REGISTRADORES DE USO GERAL -----------------------------------------------------------cblock
0x020
;declarao dos registradores de uso
geral, iniciando pelo endereo 0x020, em sequncia.
FLAGS
;FLAGS endereo 0x
020 / Bits => ("aberto"-"fechado" // na // na // na // H // Min // Seg // "-" "+")
DISPLAY
;CONTADOR REGRES
SIVO endereo 0x021'
HORAS
;HORAS salvar o v
alor binario da quantidade de horas restantes ao dia corrente do CONTREG (0 a 23
horas) end 0x022
MINS
;MINS salvar o va
lor binario da quantidade de minutos restantes hora corrente do CONTREG (0 a 59
minutos) end 0x023
SEGS
;SEGUNDOS salvar
o valor binario da quantidade de segundos restantes ao CONTREG (0 59 segundos)en
d 0x24
TOP
;Tempo q
ue o alapo ficar aberto para o despejo do reservatrio
PRHH
;Valor de Horas
programado pelo usurio
PRMM
;Valor de Minuto
s programado pelo usurio
PRTD
;Valor em segund
os programado pelo usurio para manter o despejo ativo
T0
;Tempo d
e uso do temporizador

T1

;Tempo d

T2

;Tempo d

e uso do temporizador
e uso do temporizador
endc
aos registradores

;fim da alocao de endereos

;---------------------------------- DECLARAO DAS CONSTANTES ---------------------------------------------------------------TFRAME


EQU
ara completar 1 segundo
MIN
MAX
T_FILTRO
EQU

.32

;Quantidade de repeties do Frame p

EQU
D'01'
EQU
D'10'
D'230'

;VALOR MNIMO PARA O CONTADOR


;VALOR MXIMO PARA O CONTADOR
;FILTRO PARA BOTO

;---------------------------------- DECLARAO DAS ENTRADAS ---------------------------------------------------------------#define BotProg


PORTA, 0
;boto que inicia uma interrupo no programa,
para que o usurio programe um novo intervalo de refeies
#define BotMais
PORTA, 1
;boto que ir adicionar tempo ao contador r
egressivo
#define BotMenos
PORTA, 2
;boto que ir decrementar tempo ao contador
regressivo
#define BotSelect
PORTA, 3
;boto que ir alternar entre os campos de p
rogramao
#define Sensor1
PORTA, 4
;sensor que indicar que o nvel de rao do res
ervatrio est baixo
#define Sensor2
PORTA, 5
;sensor que indicar que o contedo do recip
iente atingiu o peso ideal
;------------------------------------ DECLARAO DAS SADAS --------------------------------------------------------------#define Comporta
PORTA, 7
;sada que acionar o motor, atravs de um rel,
que ir abrir e fechar a escotilha de despejo da rao
#define Alarm
PORTA, 6
;led que indicar que o nvel do reservatrio
est baixo, acionando tambm um sinalizador sonoro
;#define
lcd
;;;;;;...RB7 A RB1
;---------------------------------- VETOR DE RESET -----------------------------------------------------------------------org
goto

H'0000'
inicio

;Origem no endereo 0000h de memria


;Desvia do vetor de interrupo

;---------------------------------- VETOR DE INTERRUPO -----------------------------------------------------------------org

H'0004'

;Todas as interrupes apontam para

este endereo
retfie

;Retorna de interrupo

inicio:
;---------------------------------- CONFIGURAO DOS PORTA E PORTB---------------------------------------------------------

BANKSEL

CMCON

;Retorna ao banco 0, referente a

o CMCON
movlw
H'07'
movwf
CMCON
radores do PORTA)
BANKSEL
TRISA
gistrador TRISA
movlw
H'3F'
movwf
TRISA
entrada)
movlw
H'01'
movwf
TRISB
sada exceto RB0, configurado como entrada)
BANKSEL
PORTA
o PORTA
movlw
H'FF'
movwf
PORTA
movwf
PORTB

;W = b'00000111' (0x07)
;CMCON = H'07' (desliga os compa
; Seleo do banco 1 referente ao re
;W = B'00111111'(0x3F)
;TRISA = H'3F' (todos os bits so
;W = B'00000001' (0x01)
;TRISB = H'01' (todos os bits so
; Retorna ao banco 0 referente a
;W = B'11111111' (0xFF)
;inicia em HIGH
;inicia em HIGH

;---------------------------------- CONFIG INICIAL DAS VARIAVEIS ----------------------------------------------------------clrf

DISPLAY

;Salva o valor de w (0x00) em DI

clrf
clrf

SEGS
MINS

;Salva o valor de w (0x00) em MI

clrf

HORAS

;Salva o valor de w (0x00) em HO

FLAGS

;Salva o valor de w em FLAGS(FLA

PRHH

;Zera o valor de Horas programad

PRMM

;Zera o valor de Minutos program

SPLAY
NS
RAS
clrf
GS = 00000000 binario)
clrf
as
clrf
ados
movlw
movwf
movwf
movwf
btfss
goto
movf
movwf
movf
movwf
movlw
movwf

d'5'
HORAS
MINS
SEGS
FLAGS, 2
Pause
PRHH, W
HORAS
PRMM, W
MINS
d'59'
SEGS

;REPEAT ATIVO?

;---------------------------------- INICIO ROTINA PRINCIPAL --------------------------------------------------------------Principal:


call
call

MostraHora
Frame

goto
nop

Despejar

bcf
PORTA, 7
;Desliga os 5v de sada do pino RB
7, que aciona o NF do rel do motor do alapo
goto
Principal
Pause:
bcf
btfss
goto
goto

FLAGS,0
BotProg
Progr
Pause

;Desliga o temporizador
;Boto Prog Pressionado?

Progr:
btfss
call
nop
btfss
call
nop
btfss
call
nop
btfss
goto
nop
btfss
goto
goto

BotMais
Soma

;Boto BotMais desligado?


;No, Segue para soma

BotMenos
Subtrai

;Boto BotMenos desligado?


;No, Segue para Subtrai

BotSelect
MudaCampo

;Boto BotSelect desligado?


;No, Segue para MudaCampo

BotProg
Progr

;Boto BotProg desligado?


;No, repete rotina de programao

FLAGS,0
Pause
Principal

;O Contador est ativo?


;No, segue para rotina Pause
;Segue para a rotina Principal

btfsc
goto
incf
btfsc
goto
return
incf
goto

FLAGS,4
$+5
HORAS
BotMais
$-1

;Flags,4 (HH/MM) HH selecionado?


;No, Flags,4 HH desligado/ MM selecionado

Soma:

Subtrai:
btfsc
goto
decf
btfsc
goto
return
decf
goto

;BotMais foi solto?


;No, aguardar soltar BotMais

MINS
$-4
FLAGS,4
$+5
HORAS
BotMenos
$-1

;Flags,4 (HH/MM) HH selecionado?


;No, Flags,4 HH desligado/ MM selecionado
;BotMenos foi solto?
;No, aguardar soltar BotMenos

MINS
$-4

MudaCampo:
btfss FLAGS,4
bsf
FLAGS,4
bcf
FLAGS,4
btfsc BotSelect
goto
$-1
return
Despejar:

;BotSelect foi solto?


;No, aguardar soltar BotSelect

;
;
;
;
;

bsf
movf
movwf
decfsz
movf
movlw
movlw
movwf
decfsz
call
return

FLAGS, 1

; Despejo on

PRTD, w
TOP
TOP
TFRAME,W
T2
d'2'
T2
T2
Delay1S

Delay1S:
decfsz T2
call
Frame
Frame:
2 ms (1/32 de 1
movlw
movwf
movlw
movwf
decfsz
goto
decfsz
goto
goto
goto
decfsz
goto
decfsz
goto
decfsz
goto
goto
movlw
movwf
movlw
movwf
call

return
MostraHora:
return
end

;Rotina composta por 31134 Tcy (ou micro segundos)


;Ainda so necessrios 117 Tcy para copletar 1 Frame de 31,3
segundo)
d'251'
T1
d'40'
T0
T0
$-1
T1
$-5
$+2
Frame
SEGS
$-2
MINS
$+6
HORAS
$+2
Pause
d'59'
MINS
d'59'
SEGS
MostraHora

Vous aimerez peut-être aussi