Include <P16F628A.INC>
radix DEC
__CONFIG _INTRC_OSC_NOCLKOUT & _CP_OFF & _WDT_OFF & _PWRTE_ON
; Variaveis e equivalencias
cont equ 20h ; atribui o nome "cont a posição de memória 20h
; Incialização do programa
bsf status,rp0 ; vai para o banco 1
bcf option_reg,T0CS ; clock interno
bcf option_reg,PSA; prescaler
bcf option_reg,PS2 ; PS2=0
bsf option_reg,PS1 ; PS1=1
bcf option_reg,PS0 ; PS0=0
movlw 0xFF
movfw trisa ; porto A como entrada
clrf trisb ; porto B como saida
bcf status,rp0 ; regressa ao banco0
; ---- Programa ----
btfsc porta,0
goto abrir ; se portA=0, é de noite
goto abrir ; se porta=1, é de dia
;------ ABRIR-------
abrir
bsf portb,0
;(setar as saidas com as devidas definições!!!!!!!!!!!!!!!)
movlw 10 ; (10 em decimal, dá !!!!!!9!!!!! impulsos)
movwf CONT ;move para o contador
bcf intcon,t0if ; zera a flag do timer0
abrir_r
decf CONT ;decrementa o cont
bcf portb,0 ;impulso 0 na porta B0)
;delay
movlw 0
movwf tmr0 ; vai fazer o timer começar no 0 até 256 - 2046us
verifica_a
btfss intcon,t0if ; testa a flag do timer 0, se 0 segue a rotina
goto verifica_a
bcf intcon,t0if ; chegou ao overflow, vai zerar a flag e seguir
bsf portb,0 ; seta a portb0, impulso positivo
;delay
movlw 0
movwf tmr0 ; vai fazer o timer começar no 0 até 256 - 2046us
verifica_a1
btfss intcon,t0if ; testa a flag do timer 0, se 0 segue a rotina
goto verifica_a1
bcf intcon,t0if ; chegou ao overflow, vai zerar a flag e seguir
goto abrir
Continar
Falta rotina do fechar
e as 2 rotinas ciclicas
end
Copyrights: Serial_killer

O projecto será apresentado amanhã