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