Encender un Led Ensamblador VS Basic Parpadeo Semi complejo

Anuncio
Encender un Led
Ensamblador
list p=16F84A
; Lista el modelo del PIC
#include <p16F84A.inc> ; Libreria para el PIC
16F84A
__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON &
_RC_OSC ; Configuracion del Perro Guardian, el
Oscilador y otras cosas
VS
Basic
trisb = 0
portb = 0
Inicio
portb = $55
end
Constante EQU b'01010101'
ORG 0x000 ; La direccion de Memoria donde
comienza el Programa
Inicio
bsf STATUS,RP0 ;
clrf TRISB
bcf STATUS,RP0
movlw Constante
Principal
movwf PORTB
goto Principal
END
Parpadeo de un Led
led var porta.3
trisa = 0
trisb = 0
porta = $00
inicio:
porta.1 = 1
high led
portb = $AA
PAUSE 1000
porta.1 = 0
low led
PAUSE 1000
GOTO inicio
Parpadeo Semi complejo
Cnt VAR BYTE '
TRISB = 0
portb = 0
INICIO:
FOR Cnt = 1 TO 3
PORTB.0 = 1
PAUSE 250
PORTB.0 = 0
PAUSE 250
NEXT Cnt
PAUSE 2000
GOTO INICIO
END
C1
R1
10k
22pF
?
U1
X1
CRYSTAL
C2
16
15
4
OSC1/CLKIN
OSC2/CLKOUT
RA0
RA1
RA2
RA3
RA4/T0CKI
MCLR
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7
22pF
17
18
1
2
3
6
7
8
9
10
11
12
13
?
?
?
?
PIC16F84A
?
Desplazamiento de Leds
Cnt VAR Byte
TRISA = 1 ' Set RA0 as input
TRISB = 0 ' Set PORTB pins as outputs
Elementos del Circuito
PIC 16F84A
Resistencias Pulsador y reseteo
10kΩ
Buttom
Logicprobe y logic stest
Cristal 4Mhz
INICIO:
Pulsadores
Cnt = 1 ' Initialise Cnt to 1
LOOP:
PORTB = Cnt ' Send Cnt to PORTB
PAUSE 250 ' Wait 250ms
IF PORTA.0 = 0 THEN
IF Cnt = 1 THEN Cnt = 128:GOTO
LOOP
Cnt=Cnt >> 1 ' Shift right
GOTO LOOP
ELSE
IF Cnt = 128 THEN INICIO
Cnt = Cnt << 1 ' Shift left
GOTO LOOP
ENDIF
END ' End of program
inicio:
if porta.0 = 0 then encen
goto inicio
encen
high portb.0
pause 1000
low portb.0
goto inicio
end
?
?
?
?
Semáforo de Dos Vias
trisb=0
semaforo:
portb=%100001
PAUSE 9000
portb=%100010
PAUSE 3000
portb=%001100
PAUSE 9000
portb=%010100
PAUSE 3000
GOTO semaforo
END
Pbaja var portb.5
psube var portb.4
led var portb.3
xy var byte
veces var byte
veces = 100
INICIO:
high led
gosub timer
low led
gosub timer
goto INICIO
timer
if psube = 0 then gosub restar
if psube = 0 then gosub sumar
for xy = 1 to veces
pause 5
next
return
sumar:
if veces>150 then return
veces = veces+5
restar:
if veces<10 then return
veces = veces -5
return
end
Descargar