Sei sulla pagina 1di 3

program ejemplo1

'========================================================
'Seccion declaracion de symbolos, variables y constantes
'========================================================
symbol led_1 = latb.0
symbol led_2 = latb.1
symbol led_status = latd.0
symbol pulsador_1 = porta.0
symbol pulsador_2 = porta.1
dim contador as word
dim control as byte
dim transicion as byte

const valor_inicial as byte = 0


'================= final de la seccion =================
'========================================================
'Seccion declaracion de procedimientos y/o funciones
'========`================================================
sub procedure retardo(dim cantidad as byte)
dim j as byte
for j = 1 to cantidad
delay_ms(100)
next j
end sub

sub procedure leer_entradas()


if pulsador_1 = 0 then
control = 1
end if
if pulsador_2 = 0 then
control = 2
end if
if (pulsador_1 = 0) and (pulsador_2 = 0) then
control = 0
end if
end sub

sub procedure parpadear2()


dim i as byte
for i = 0 to 1
led_1 = 1
retardo(3)
led_1 = 0
retardo(3)
next i
end sub

sub procedure parpadear5()


dim i as byte
for i = 0 to 4
led_2 = 1
delay_ms(250)
led_2 = 0
delay_ms(250)
next i
end sub

sub procedure ejecutar_salidas()


select case control
case 0 led_1 = 0

case 1 parpadear2()
delay_ms(1000)

case 2 parpadear5()
delay_ms(1000)
end select
end sub

sub procedure InitTimer0() 'tiempo base de 100ms a 8MHZ


T0CON = 0x81
TMR0H = 0x3C
TMR0L = 0xB0
GIE_bit = 1
TMR0IE_bit = 1
end sub

sub procedure Interrupt() 'Se ejecuta practicamente solo cada 100ms


inc(contador)
if (TMR0IF_bit) then
TMR0IF_bit = 0
TMR0H = 0x3C
TMR0L = 0xB0
'Enter your code here
leer_entradas()
if contador = 4 then
contador = 0
led_status = not led_status
end if
end if
end sub

sub procedure iniciar_MCU()


'configuraremos los canales analogicos del PIC18F45k22
'como canales digitales
anselA = %00000000 '�l valor esta escrito en binario
anselB = %00000000
anselC = %00000000
anselD = %00000000
anselE = %00000000

'configuraremos las entradas y salidas digitales del PIC18F45k22


trisA = %00000011 'estas son entradas digitales PortA.0 y PortA.1

trisB = %00000000 'estas son entradas digitales PortB.0 y PortB.1

trisC = %00000000 'no son necesarios de utilizar ya que no estan


trisD = %00000000 'conectados en la electronica del PIC18f45k22
trisE = %00000000

'inicializamos las entradas y salidas digitales con cero


portA = 0 'este es un valor escrito en decimal
portB = 0x00 'este es un valor escrito en Hexadecimal
portC = %00000000 'este es un valor escrito en decimal
portD = 0
portE = 0

'inicializamos las entradas y salidas digitales con cero


latA = 0
latB = 0
latC = 0
latD = 0
latE = 0

'inicializamos las variables a utilizar en cero


contador = 0
transicion = 0
control = 0
end sub

main:
'vamos al programa principal
iniciar_MCU()
InitTimer0() 'tiempo base de 100ms a 8MHZ
'necesitamos que el programa principal quede ciclico
while true
leer_entradas()
ejecutar_salidas()
wend

end.

Potrebbero piacerti anche