#INCLUDE<P16F73.INC>
#DEFINE LED PORTA,0
#DEFINE SERIALENABLE SSPCON,5
#DEFINE SSP3 SSPCON,3
#DEFINE SSP2 SSPCON,2
#DEFINE SSP1 SSPCON,1
#DEFINE SSP0 SSPCON,0
#DEFINE OVERFLOW SSPCON,6
#DEFINE CLOCKS SSPCON,4
#DEFINE STA5 STATUS,5
#DEFINE STA6 STATUS,6
#DEFINE BUFFER SSPSTAT,0
#DEFINE READ SSPSTAT,2
#DEFINE CK SSPSTAT,6
#DEFINE SM SSPSTAT,7
#DEFINE INFLAG PIR1,3
#DEFINE VAR PORTA,4
#DEFINE LED_2 PORTB,0
#DEFINE LED_3 PORTB,1
#DEFINE LED_4 PORTB,2
#DEFINE LED_5 PORTB,3
#DEFINE LED_6 PORTB,4
#DEFINE LED_7 PORTB,5
#DEFINE LED_8 PORTB,6
#DEFINE datos PORTC,1
CBLOCK 0x00
CONTA_1
CONTA_2
CONTA_3
CONTA_4
ENDC
PUERTOS
BSF STA5
BCF STA6
CLRF TRISB
CLRF TRISA
CLRF TRISC
BCF STA5
BCF STA6
BTFSC VAR
CALL RUT
BTFSS VAR
CALL RUT_2
CALL ENVIO
CALL I2CSLAVEMODE7
GOTO LED_1
RUT
BCF LED_2
BCF LED_3
BCF LED_4
BCF LED_5
RETURN
RUT_2
BSF LED_2
BSF LED_3
BSF LED_4
BSF LED_5
RETURN
LED_1
BSF LED
GOTO LED_1
I2CSLAVEMODE7
BCF SSP0
BSF SSP1
BSF SSP2
BCF SSP3
MOVLW 0x18
MOVWF TRISC
BSF SERIALENABLE
BCF BUFFER
BCF OVERFLOW
BSF INFLAG
BSF BUFFER
BSF CLOCKS
BSF READ
BCF CLOCKS
BCF INFLAG
BSF INFLAG
BSF CLOCKS
BCF READ
BCF INFLAG
BCF BUFFER
BSF OVERFLOW
RETURN
ENVIO
BSF datos
CALL Retardo_100micros
BSF datos
CALL Retardo_2ms
BCF datos
CALL Retardo_1ms
BSF datos
CALL Retardo_2ms
BCF datos
CALL Retardo_1ms
BSF datos
CALL Retardo_2ms
BSF datos
CALL Retardo_1ms
BCF datos
CALL Retardo_2ms
BSF datos
CALL Retardo_1ms
BCF datos
CALL Retardo_2ms
BSF datos
CALL Retardo_1ms
BCF datos
CALL Retardo_2ms
BCF datos
CALL Retardo_1ms
BSF datos
CALL Retardo_2ms
BSF datos
CALL Retardo_1ms
BCF datos
RETURN
#INCLUDE <C:\Users\ciel\Desktop\archivos mplab\RETARDOS.INC>
end
#INCLUDE<P16F73.INC>
#DEFINE LED PORTA,0
#DEFINE CCP3 CCP1CON,3
#DEFINE CCP2 CCP1CON,2
#DEFINE CCP1 CCP1CON,1
#DEFINE CCP0 CCP1CON,0
#DEFINE CCP5 CCP1CON,5
#DEFINE CCP4 CCP1CON,4
#DEFINE TR2 T2CON,2
#DEFINE T2K0 T2CON,1
#DEFINE T2K1 T2CON,0
#DEFINE INT1 PIR1,1
#DEFINE INT3 PIR2,0
#DEFINE INT2 PIE1,1
#DEFINE VAR PORTA,4
#DEFINE LED_2 PORTB,0
#DEFINE LED_3 PORTB,1
#DEFINE LED_4 PORTB,2
#DEFINE LED_5 PORTB,3
#DEFINE LED_6 PORTB,4
#DEFINE LED_7 PORTB,5
#DEFINE LED_8 PORTB,6
#DEFINE datos PORTC,1
CBLOCK 0x20
CONTA_1
CONTA_2
CONTA_3
CONTA_4
ENDC
ORG 0x00 ;vectores de reset e interrupcion
GOTO PUERTOS
ORG 0X04
RETURN
PUERTOS
BANKSEL TRISB
CLRF TRISB ; Todos como salidas
CLRF TRISA
CLRF TRISC
BANKSEL PORTA
CLRF PORTA
CLRF PORTC
CLRF PORTB ; A pesar que inician todos en 0 los pongo en 0 por las dudas
CLRW
BTFSC VAR
CALL RUT
BTFSS VAR
CALL RUT_2
CALL PWM
GOTO LED_1
RUT
BCF LED_2
BCF LED_3
BCF LED_4
BCF LED_5
RETURN
RUT_2
BSF LED_2
BSF LED_3
BSF LED_4
BSF LED_5
RETURN
LED_1
BSF LED
GOTO LED_1
PWM
BSF INT3
BSF CCP4
BSF CCP5
CLRF TRISC
BSF TR2
BSF CCP0
BSF CCP1
BSF CCP2
BSF CCP3
BCF T2K1
BCF T2K0
MOVLW 0xFF
MOVWF PR2
RETURN
#INCLUDE <C:\Users\ciel\Desktop\archivos mplab\RETARDOS.INC>
end
;
; ===================================================================
; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
; E. Palacios, F. Remiro y L. López.
; Editorial Ra-Ma. www.ra-ma.es
; ===================================================================
;
; Librería con múltiples subrutinas de retardos, desde 4 microsegundos hasta 20 segundos.
; Además se pueden implementar otras subrutinas muy fácilmente.
;
; Se han calculado para un sistema microcontrolador con un PIC trabajando con un cristal
; de cuarzo a 4 MHz. Como cada ciclo máquina son 4 ciclos de reloj, resulta que cada
; ciclo máquina tarda 4 x 1/4MHz = 1 µs.
;
; En los comentarios, "cm" significa "ciclos máquina".
;
; ZONA DE DATOS *********************************************************************
CBLOCK
R_ContA ; Contadores para los retardos.
R_ContB
R_ContC
ENDC
;
; RETARDOS de 4 hasta 10 microsegundos ---------------------------------------------------
;
; A continuación retardos pequeños teniendo en cuenta que para una frecuencia de 4 MHZ,
; la llamada a subrutina "call" tarda 2 ciclos máquina, el retorno de subrutina
; "return" toma otros 2 ciclos máquina y cada instrucción "nop" tarda 1 ciclo máquina.
;
Retardo_10micros ; La llamada "call" aporta 2 ciclos máquina.
nop ; Aporta 1 ciclo máquina.
nop ; Aporta 1 ciclo máquina.
nop ; Aporta 1 ciclo máquina.
nop ; Aporta 1 ciclo máquina.
nop ; Aporta 1 ciclo máquina.
Retardo_5micros ; La llamada "call" aporta 2 ciclos máquina.
nop ; Aporta 1 ciclo máquina.
Retardo_4micros ; La llamada "call" aporta 2 ciclos máquina.
goto RetardoMicros ; El salto del retorno aporta 2 ciclos máquina.
;
; RETARDOS de 20 hasta 500 microsegundos ------------------------------------------------
;
Retardo_500micros ; La llamada "call" aporta 2 ciclos máquina.
nop ; Aporta 1 ciclo máquina.
movlw d'164' ; Aporta 1 ciclo máquina. Este es el valor de "K".
goto RetardoMicros ; Aporta 2 ciclos máquina.
Retardo_200micros ; La llamada "call" aporta 2 ciclos máquina.
nop ; Aporta 1 ciclo máquina.
movlw d'64' ; Aporta 1 ciclo máquina. Este es el valor de "K".
goto RetardoMicros ; Aporta 2 ciclos máquina.
Retardo_100micros ; La llamada "call" aporta 2 ciclos máquina.
movlw d'31' ; Aporta 1 ciclo máquina. Este es el valor de "K".
goto RetardoMicros ; Aporta 2 ciclos máquina.
Retardo_50micros ; La llamada "call" aporta 2 ciclos máquina.
nop ; Aporta 1 ciclo máquina.
movlw d'14' ; Aporta 1 ciclo máquina. Este es el valor de "K".
goto RetardoMicros ; Aporta 2 ciclos máquina.
Retardo_20micros ; La llamada "call" aporta 2 ciclos máquina.
movlw d'5' ; Aporta 1 ciclo máquina. Este es el valor de "K".
goto RetardoMicros
;
; El próximo bloque "RetardoMicros" tarda:
; 1 + (K-1) + 2 + (K-1)x2 + 2 = (2 + 3K) ciclos máquina.
;
RetardoMicros
movwf R_ContA ; Aporta 1 ciclo máquina.
Rmicros_Bucle
decfsz R_ContA,F ; (K-1)x1 cm (cuando no salta) + 2 cm (al saltar).
; goto Rmicros_Bucle ; Aporta (K-1)x2 ciclos máquina.
return ; El salto del retorno aporta 2 ciclos máquina.
;
;En total estas subrutinas tardan:
; - Retardo_500micros: 2 + 1 + 1 + 2 + (2 + 3K) = 500 cm = 500 µs. (para K=164 y 4 MHz).
; - Retardo_200micros: 2 + 1 + 1 + 2 + (2 + 3K) = 200 cm = 200 µs. (para K= 64 y 4 MHz).
; - Retardo_100micros: 2 + 1 + 2 + (2 + 3K) = 100 cm = 100 µs. (para K= 31 y 4 MHz).
; - Retardo_50micros : 2 + 1 + 1 + 2 + (2 + 3K) = 50 cm = 50 µs. (para K= 14 y 4 MHz).
; - Retardo_20micros : 2 + 1 + (2 + 3K) = 20 cm = 20 µs. (para K= 5 y 4 MHz).
;
; RETARDOS de 1 ms hasta 200 ms. --------------------------------------------------------
;
Retardo_200ms ; La llamada "call" aporta 2 ciclos máquina.
movlw d'200' ; Aporta 1 ciclo máquina. Este es el valor de "M".
goto Retardos_ms ; Aporta 2 ciclos máquina.
Retardo_100ms ; La llamada "call" aporta 2 ciclos máquina.
movlw d'100' ; Aporta 1 ciclo máquina. Este es el valor de "M".
goto Retardos_ms ; Aporta 2 ciclos máquina.
Retardo_50ms ; La llamada "call" aporta 2 ciclos máquina.
movlw d'50' ; Aporta 1 ciclo máquina. Este es el valor de "M".
goto Retardos_ms ; Aporta 2 ciclos máquina.
Retardo_20ms ; La llamada "call" aporta 2 ciclos máquina.
movlw d'20' ; Aporta 1 ciclo máquina. Este es el valor de "M".
goto Retardos_ms ; Aporta 2 ciclos máquina.
Retardo_10ms ; La llamada "call" aporta 2 ciclos máquina.
movlw d'10' ; Aporta 1 ciclo máquina. Este es el valor de "M".
goto Retardos_ms ; Aporta 2 ciclos máquina.
Retardo_5ms ; La llamada "call" aporta 2 ciclos máquina.
movlw d'5' ; Aporta 1 ciclo máquina. Este es el valor de "M".
goto Retardos_ms ; Aporta 2 ciclos máquina.
Retardo_2ms ; La llamada "call" aporta 2 ciclos máquina.
movlw d'2' ; Aporta 1 ciclo máquina. Este es el valor de "M".
goto Retardos_ms ; Aporta 2 ciclos máquina.
Retardo_1ms ; La llamada "call" aporta 2 ciclos máquina.
movlw d'1' ; Aporta 1 ciclo máquina. Este es el valor de "M".
goto Retardos_ms
; El próximo bloque "Retardos_ms" tarda:
; 1 + M + M + KxM + (K-1)xM + Mx2 + (K-1)Mx2 + (M-1) + 2 + (M-1)x2 + 2 =
; = (2 + 4M + 4KM) ciclos máquina. Para K=249 y M=1 supone 1002 ciclos máquina
; que a 4 MHz son 1002 µs = 1 ms.
;
Retardos_ms
movwf R_ContB ; Aporta 1 ciclo máquina.
R1ms_BucleExterno
movlw d'249' ; Aporta Mx1 ciclos máquina. Este es el valor de "K".
movwf R_ContA ; Aporta Mx1 ciclos máquina.
R1ms_BucleInterno
nop ; Aporta KxMx1 ciclos máquina.
decfsz R_ContA,F ; (K-1)xMx1 cm (cuando no salta) + Mx2 cm (al saltar).
;goto R1ms_BucleInterno ; Aporta (K-1)xMx2 ciclos máquina.
decfsz R_ContB,F ; (M-1)x1 cm (cuando no salta) + 2 cm (al saltar).
; goto R1ms_BucleExterno ; Aporta (M-1)x2 ciclos máquina.
return ; El salto del retorno aporta 2 ciclos máquina.
;
;En total estas subrutinas tardan:
; - Retardo_200ms: 2 + 1 + 2 + (2 + 4M + 4KM) = 200007 cm = 200 ms. (M=200 y K=249).
; - Retardo_100ms: 2 + 1 + 2 + (2 + 4M + 4KM) = 100007 cm = 100 ms. (M=100 y K=249).
; - Retardo_50ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 50007 cm = 50 ms. (M= 50 y K=249).
; - Retardo_20ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 20007 cm = 20 ms. (M= 20 y K=249).
; - Retardo_10ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 10007 cm = 10 ms. (M= 10 y K=249).
; - Retardo_5ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 5007 cm = 5 ms. (M= 5 y K=249).
; - Retardo_2ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 2007 cm = 2 ms. (M= 2 y K=249).
; - Retardo_1ms : 2 + 1 + (2 + 4M + 4KM) = 1005 cm = 1 ms. (M= 1 y K=249).
;
; RETARDOS de 0.5 hasta 20 segundos ---------------------------------------------------
;
Retardo_20s ; La llamada "call" aporta 2 ciclos máquina.
movlw d'200' ; Aporta 1 ciclo máquina. Este es el valor de "N".
goto Retardo_1Decima ; Aporta 2 ciclos máquina.
Retardo_10s ; La llamada "call" aporta 2 ciclos máquina.
movlw d'100' ; Aporta 1 ciclo máquina. Este es el valor de "N".
goto Retardo_1Decima ; Aporta 2 ciclos máquina.
Retardo_5s ; La llamada "call" aporta 2 ciclos máquina.
movlw d'50' ; Aporta 1 ciclo máquina. Este es el valor de "N".
goto Retardo_1Decima ; Aporta 2 ciclos máquina.
Retardo_2s ; La llamada "call" aporta 2 ciclos máquina.
movlw d'20' ; Aporta 1 ciclo máquina. Este es el valor de "N".
goto Retardo_1Decima ; Aporta 2 ciclos máquina.
Retardo_1s ; La llamada "call" aporta 2 ciclos máquina.
movlw d'10' ; Aporta 1 ciclo máquina. Este es el valor de "N".
goto Retardo_1Decima ; Aporta 2 ciclos máquina.
Retardo_500ms ; La llamada "call" aporta 2 ciclos máquina.
movlw d'5' ; Aporta 1 ciclo máquina. Este es el valor de "N".
;
; El próximo bloque "Retardo_1Decima" tarda:
; 1 + N + N + MxN + MxN + KxMxN + (K-1)xMxN + MxNx2 + (K-1)xMxNx2 +
; + (M-1)xN + Nx2 + (M-1)xNx2 + (N-1) + 2 + (N-1)x2 + 2 =
; = (2 + 4M + 4MN + 4KM) ciclos máquina. Para K=249, M=100 y N=1 supone 100011
; ciclos máquina que a 4 MHz son 100011 µs = 100 ms = 0,1 s = 1 décima de segundo.
;
Retardo_1Decima
movwf R_ContC ; Aporta 1 ciclo máquina.
R1Decima_BucleExterno2
movlw d'100' ; Aporta Nx1 ciclos máquina. Este es el valor de "M".
movwf R_ContB ; Aporta Nx1 ciclos máquina.
R1Decima_BucleExterno
movlw d'249' ; Aporta MxNx1 ciclos máquina. Este es el valor de "K".
movwf R_ContA ; Aporta MxNx1 ciclos máquina.
R1Decima_BucleInterno
nop ; Aporta KxMxNx1 ciclos máquina.
decfsz R_ContA,F ; (K-1)xMxNx1 cm (si no salta) + MxNx2 cm (al saltar).
; goto R1Decima_BucleInterno ; Aporta (K-1)xMxNx2 ciclos máquina.
decfsz R_ContB,F ; (M-1)xNx1 cm (cuando no salta) + Nx2 cm (al saltar).
; goto R1Decima_BucleExterno ; Aporta (M-1)xNx2 ciclos máquina.
decfsz R_ContC,F ; (N-1)x1 cm (cuando no salta) + 2 cm (al saltar).
; goto R1Decima_BucleExterno2 ; Aporta (N-1)x2 ciclos máquina.
return ; El salto del retorno aporta 2 ciclos máquina.
;
;En total estas subrutinas tardan:
; - Retardo_20s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 20000807 cm = 20 s.
; (N=200, M=100 y K=249).
; - Retardo_10s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 10000407 cm = 10 s.
; (N=100, M=100 y K=249).
; - Retardo_5s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 5000207 cm = 5 s.
; (N= 50, M=100 y K=249).
; - Retardo_2s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 2000087 cm = 2 s.
; (N= 20, M=100 y K=249).
; - Retardo_1s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 1000047 cm = 1 s.
; (N= 10, M=100 y K=249).
; - Retardo_500ms: 2 + 1 + (2 + 4N + 4MN + 4KMN) = 500025 cm = 0,5 s.
; (N= 5, M=100 y K=249).
; ===================================================================
; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
; E. Palacios, F. Remiro y L. López.
; Editorial Ra-Ma. www.ra-ma.es
; ===================================================================
ese es el codigo de la libreria enserio no se porque no la esta leyendo y a continuacion el ultimo codigo que estoy usando#INCLUDE<P16F73.INC>
#DEFINE LED PORTA,0
#DEFINE CCP3 CCP1CON,3
#DEFINE CCP2 CCP1CON,2
#DEFINE CCP1 CCP1CON,1
#DEFINE CCP0 CCP1CON,0
#DEFINE CCP5 CCP1CON,5
#DEFINE CCP4 CCP1CON,4
#DEFINE TR2 T2CON,2
#DEFINE T2K0 T2CON,1
#DEFINE T2K1 T2CON,0
#DEFINE INT1 PIR1,1
#DEFINE INT3 PIR2,0
#DEFINE INT2 PIE1,1
#DEFINE VAR PORTA,4
#DEFINE LED_2 PORTB,0
#DEFINE LED_3 PORTB,1
#DEFINE LED_4 PORTB,2
#DEFINE LED_5 PORTB,3
#DEFINE LED_6 PORTB,4
#DEFINE LED_7 PORTB,5
#DEFINE LED_8 PORTB,6
#DEFINE datos PORTC,3
CBLOCK 0x20
CONTA_1
CONTA_2
CONTA_3
CONTA_4
ENDC
ORG 0x00 ;vectores de reset e interrupcion
GOTO PUERTOS
ORG 0X04
RETURN
PUERTOS
BANKSEL TRISB
CLRF TRISB ; Todos como salidas
CLRF TRISA
CLRF TRISC
BANKSEL PORTA
CLRF PORTA
CLRF PORTC
CLRF PORTB ; A pesar que inician todos en 0 los pongo en 0 por las dudas
CLRW
BTFSC VAR
CALL RUT
BTFSS VAR
CALL RUT_2
; CALL PWM
CALL ENVIO
GOTO LED_1
RUT
BCF LED_2
BCF LED_3
BCF LED_4
BCF LED_5
RETURN
RUT_2
BSF LED_2
BSF LED_3
BSF LED_4
BSF LED_5
RETURN
LED_1
BSF LED
GOTO LED_1
PWM
BSF INT3
BCF TRISC,2
BSF TR2
BSF CCP0
BSF CCP1
BSF CCP2
BSF CCP3
BCF T2K1
BCF T2K0
MOVLW D'255'
MOVWF PR2
MOVLW D'166'
MOVWF CCPR1L
BCF CCP4
BSF CCP5
RETURN
ENVIO
BSF datos
CALL Retardo_1s
CALL Retardo_2s
BCF datos
CALL Retardo_1s
BSF datos
CALL Retardo_2s
BCF datos
CALL Retardo_1s
BSF datos
CALL Retardo_2s
CALL Retardo_1s
BCF datos
CALL Retardo_2s
BSF datos
CALL Retardo_1s
BCF datos
CALL Retardo_2s
BSF datos
CALL Retardo_1s
BCF datos
CALL Retardo_2s
CALL Retardo_1s
BSF datos
CALL Retardo_2s
CALL Retardo_1s
BCF datos
RETURN
#INCLUDE <C:\Users\ciel\Desktop\archivos mplab\RETARDOS.INC>
end
me puedes explicar mejor lo de los vectores de interrupcion para que sirven
para que sirve el banksel
hola, me puedes explicar bien como cambiarle la frecuencia y el periodo a esa onda ya me sale una onda cuadrada gracias
ES posible suporpener los siguientes datos en la señal cuadrada que sale del pwm datos
y si tengo los siguientes datos para la señal cuadrada cristal 4Mhz, 1Khz, 50% duty, y necesito que la salida de esa señal cuadrada se la siguiente
11 01 01 10 10 10 01 10, es posible hacer eso,y como quedaria el codigo del pwm
#INCLUDE<P16F73.INC>
CBLOCK 0x20
CONTA_1
CONTA_2
CONTA_3
CONTA_4
R_ContA
R_ContB
R_ContC
ENDC
ORG 0x00 ;vectores de reset e interrupcion
GOTO PUERTOS
ORG 0X04
RETURN
PUERTOS
BANKSEL TRISB
CLRF TRISB ; Todos como salidas
CLRF TRISA
CLRF TRISC
BANKSEL PORTA
CLRF PORTA
CLRF PORTC
CLRF PORTB ; A pesar que inician todos en 0 los pongo en 0 por las dudas
CLRW
BTFSC PORTA,4
CALL RUT
BTFSS PORTA,4
CALL RUT_2
CALL ENVIO
GOTO LED_1
RUT
BCF PORTB,0
BCF PORTB,1
BCF PORTB,2
BCF PORTB,3
RETURN
RUT_2
BSF PORTB,0
BSF PORTB,1
BSF PORTB,2
BSF PORTB,3
RETURN
LED_1
BSF PORTA,0
GOTO LED_1
ENVIO
BSF PORTA,0
CALL Retardo_1ms ;1
CALL Retardo_1ms ;1 --- 11
BCF PORTA,0
CALL Retardo_1ms ;0
BSF PORTA,0
CALL Retardo_1ms ;1 --- 01
BCF PORTA,0
CALL Retardo_1ms ;0
BSF PORTA,0
CALL Retardo_1ms ;1 --- 01
CALL Retardo_1ms
BCF PORTA,0
CALL Retardo_1ms ;0 --- 10
BSF PORTA,0
CALL Retardo_1ms ;1
BCF PORTA,0
CALL Retardo_1ms ;0 --- 10
BSF PORTA,0
CALL Retardo_1ms ;1
BCF PORTA,0
CALL Retardo_1ms ;0 --- 10
CALL Retardo_1ms ;0
BSF PORTA,0
CALL Retardo_1ms ;1 --- 01
BSF PORTA,0
CALL Retardo_1ms ;1
BCF PORTA,0
CALL Retardo_1ms ;0 --- 10
RETURN
#INCLUDE <C:\Users\ciel\Desktop\archivos mplab\RETARDOS.INC>
endcon esto codigo deberia funcionar o deberia cambiarle alguna instruccion
#INCLUDE<P16F73.INC>
CBLOCK 0x20
R_ContA
R_ContB
R_ContC
ENDC
ORG 0x00 ;vectores de reset e interrupcion
GOTO PUERTOS
ORG 0X04
RETURN
PUERTOS
BANKSEL TRISB
CLRF TRISB ; Todos como salidas
CLRF TRISA
CLRF TRISC
BANKSEL PORTA
CLRF PORTA
CLRF PORTC
CLRF PORTB ; A pesar que inician todos en 0 los pongo en 0 por las dudas
CLRW
BTFSC PORTA,4
CALL RUT
BTFSS PORTA,4
CALL RUT_2
CALL ENVIO
GOTO LED_1
RUT
BCF PORTB,0
BCF PORTB,1
BCF PORTB,2
BCF PORTB,3
RETURN
RUT_2
BSF PORTB,0
BSF PORTB,1
BSF PORTB,2
BSF PORTB,3
RETURN
LED_1
BSF PORTA,0
GOTO LED_1
ENVIO
BSF PORTA,1
CALL Delay_0 ;1
CALL Delay_0 ;1 --- 11
BCF PORTA,1
CALL Delay_0 ;0
BSF PORTA,1
CALL Delay_0 ;1 --- 01
BCF PORTA,1
CALL Delay_0 ;0
BSF PORTA,1
CALL Delay_0 ;1 --- 01
CALL Delay_0
BCF PORTA,1
CALL Delay_0 ;0 --- 10
BSF PORTA,1
CALL Delay_0 ;1
BCF PORTA,1
CALL Delay_0 ;0 --- 10
BSF PORTA,1
CALL Delay_0 ;1
BCF PORTA,1
CALL Delay_0 ;0 --- 10
CALL Delay_0 ;0
BSF PORTA,1
CALL Delay_0 ;1 --- 01
BSF PORTA,1
CALL Delay_0 ;1
BCF PORTA,1
CALL Delay_0 ;0 --- 10
RETURN
;499994 cycles
movlw 0x03
movwf R_ContA
movlw 0x18
movwf R_ContB
movlw 0x02
movwf R_ContC
Delay_0
decfsz R_ContA, f
goto $+2
decfsz R_ContB , f
goto $+2
decfsz R_ContC, f
; goto Delay_0
return
;6 cycles
goto $+1
goto $+1
goto $+1
#INCLUDE <C:\Users\ciel\Desktop\archivos mplab\RETARDOS.INC>
end#INCLUDE<P16F73.INC>
CBLOCK 0x20
R_ContA
R_ContB
R_ContC
ENDC
ORG 0x00 ;vectores de reset e interrupcion
GOTO PUERTOS
ORG 0X04
RETURN
PUERTOS
BANKSEL TRISB
CLRF TRISB ; Todos como salidas
CLRF TRISA
CLRF TRISC
BANKSEL PORTB
CLRF PORTA
CLRF PORTC
CLRF PORTB ; A pesar que inician todos en 0 los pongo en 0 por las dudas
CLRW
BTFSC PORTA,4
CALL RUT
BTFSS PORTA,4
CALL RUT_2
CALL MINIENVIO
CALL ENVIO
GOTO LED_1
RUT
BCF PORTB,0
BCF PORTB,1
BCF PORTB,2
BCF PORTB,3
RETURN
RUT_2
BSF PORTB,0
BSF PORTB,1
BSF PORTB,2
BSF PORTB,3
RETURN
LED_1
BSF PORTC,0
GOTO LED_1
ENVIO
BSF PORTA,2
CALL Retardo_05s ;1
CALL Retardo_05s ;1 --- 11
BCF PORTA,2
CALL Retardo_05s ;0
BSF PORTA,2
CALL Retardo_05s ;1 --- 01
BCF PORTA,2
CALL Retardo_05s ;0
BSF PORTA,2
CALL Retardo_05s ;1 --- 01
CALL Retardo_05s
BCF PORTA,2
CALL Retardo_05s ;0 --- 10
BSF PORTA,2
CALL Retardo_05s ;1
BCF PORTA,2
CALL Retardo_05s ;0 --- 10
BSF PORTA,2
CALL Retardo_05s ;1
BCF PORTA,2
CALL Retardo_05s ;0 --- 10
CALL Retardo_05s ;0
BSF PORTA,2
CALL Retardo_05s ;1 --- 01
BSF PORTA,2
CALL Retardo_05s ;1
BCF PORTA,2
CALL Retardo_05s ;0 --- 10
RETURN
MINIENVIO
BSF PORTA,2
RETURN
Retardo_05s ;499994 cycles
movlw 0x08
movwf R_ContA
movlw 0x2F
movwf R_ContB
movlw 0x03
movwf R_ContC
goto Delay_0
Delay_0
decfsz R_ContA, f
goto $+2
decfsz R_ContB , f
goto $+2
decfsz R_ContC, f
; goto Delay_0
return
;6 cycles
goto $+1
nop
#INCLUDE <C:\Users\ciel\Desktop\archivos mplab\RETARDOS.INC>
endhola, no se porque al simular el programa no manda nada al puertoA ni tampoco al trisA, pero al b y c funciona bien no se porque
#INCLUDE<P16F73.INC>
CBLOCK 0x20
R_ContA
R_ContB
R_ContC
ENDC
PUERTOS
BSF STATUS,5
BCF STATUS,6
BSF ADCON1,0
BSF ADCON1,1
BSF ADCON1,2
CLRF TRISB
CLRF TRISA
CLRF TRISC
BCF STATUS,5
BCF STATUS,6
CLRF PORTA
CLRF PORTC
CLRF PORTB
CLRW
BTFSC PORTA,4
CALL RUT
BTFSS PORTA,4
CALL RUT_2
CALL MINIENVIO
; CALL ENVIO
GOTO LED_1
RUT
BCF PORTB,0
BCF PORTB,1
BCF PORTB,2
BCF PORTB,3
RETURN
RUT_2
BSF PORTB,0
BSF PORTB,1
BSF PORTB,2
BSF PORTB,3
RETURN
LED_1
BSF PORTA,0
GOTO LED_1
ENVIO
BSF PORTA,2
CALL Retardo_05s ;1
CALL Retardo_05s ;1 --- 11
BCF PORTA,2
CALL Retardo_05s ;0
BSF PORTA,2
CALL Retardo_05s ;1 --- 01
BCF PORTA,2
CALL Retardo_05s ;0
BSF PORTA,2
CALL Retardo_05s ;1 --- 01
CALL Retardo_05s
BCF PORTA,2
CALL Retardo_05s ;0 --- 10
BSF PORTA,2
CALL Retardo_05s ;1
BCF PORTA,2
CALL Retardo_05s ;0 --- 10
BSF PORTA,2
CALL Retardo_05s ;1
BCF PORTA,2
CALL Retardo_05s ;0 --- 10
CALL Retardo_05s ;0
BSF PORTA,2
CALL Retardo_05s ;1 --- 01
BSF PORTA,2
CALL Retardo_05s ;1
BCF PORTA,2
CALL Retardo_05s ;0 --- 10
RETURN
MINIENVIO
BSF PORTA,2
BCF PORTA,2
BSF PORTA,2
BCF PORTA,2
RETURN
Retardo_05s ;499994 cycles
movlw 0x08
movwf R_ContA
movlw 0x2F
movwf R_ContB
movlw 0x03
movwf R_ContC
goto Delay_0
Delay_0
decfsz R_ContA, f
goto $+2
decfsz R_ContB , f
goto $+2
decfsz R_ContC, f
; goto Delay_0
return
;6 cycles
goto $+1
nop
#INCLUDE <C:\Users\ciel\Desktop\archivos mplab\RETARDOS.INC>
end
#INCLUDE<P16F73.INC>
CBLOCK 0x20
R_ContA
R_ContB
R_ContC
ENDC
PUERTOS
BSF STATUS,5
BCF STATUS,6
BSF ADCON1,0
BSF ADCON1,1
BSF ADCON1,2
CLRF TRISB
CLRF TRISA
CLRF TRISC
BCF STATUS,5
BCF STATUS,6
CLRF PORTA
CLRF PORTC
CLRF PORTB
CLRW
BTFSC PORTA,4
CALL RUT
BTFSS PORTA,4
CALL RUT_2
CALL LED_1
; CALL MINIENVIO
GOTO ENVIO
RUT
BCF PORTB,0
BCF PORTB,1
BCF PORTB,2
BCF PORTB,3
RETURN
RUT_2
BSF PORTB,0
BSF PORTB,1
BSF PORTB,2
BSF PORTB,3
RETURN
LED_1
BSF PORTA,0
RETURN
ENVIO
BSF PORTA,2
CALL Retardo_05s ;1
CALL Retardo_05s ;1 --- 11
BCF PORTA,2
CALL Retardo_05s ;0
BSF PORTA,2
CALL Retardo_05s ;1 --- 01
BCF PORTA,2
CALL Retardo_05s ;0
BSF PORTA,2
CALL Retardo_05s ;1 --- 01
CALL Retardo_05s
BCF PORTA,2
CALL Retardo_05s ;0 --- 10
BSF PORTA,2
CALL Retardo_05s ;1
BCF PORTA,2
CALL Retardo_05s ;0 --- 10
BSF PORTA,2
CALL Retardo_05s ;1
BCF PORTA,2
CALL Retardo_05s ;0 --- 10
CALL Retardo_05s ;0
BSF PORTA,2
CALL Retardo_05s ;1 --- 01
BSF PORTA,2
CALL Retardo_05s ;1
BCF PORTA,2
CALL Retardo_05s ;0 --- 10
GOTO ENVIO
MINIENVIO
BSF PORTA,2
BCF PORTA,2
BSF PORTA,2
BCF PORTA,2
RETURN
Retardo_05s ;499994 cycles
movlw 0x08
movwf R_ContA
movlw 0x2F
movwf R_ContB
movlw 0x03
movwf R_ContC
goto Delay_0
Delay_0
decfsz R_ContA, f
goto $+2
decfsz R_ContB , f
goto $+2
decfsz R_ContC, f
; goto Delay_0
return
;6 cycles
goto $+1
nop
end