@@tvcomo6886 Pues anteriormente te comente que tenia unas practicas del timer 0 y 1 y logre hacerlo a la perfección me gustaria que hagas videos para controlar motores paso a paso ,servomotores,ADC,DAC de momento bro
llist p=16f877 ;Comando que indica el Pic usado include "p16f877.inc" ;Etiquetas genéricas para el Pic16F877 CONTA EQU 0x20 ;Variable CONTA en dirección 0x20 hexadecimal de ;memoria RAM org 0x00 ;Inicio del programa en la posición cero de memoria nop ;Libre (uso del debugger) nop _inicio bsf STATUS,RP0 ;Ir banco 1 bcf STATUS,RP1 clrf TRISA ;PORTA salida clrf TRISB ;PORTB salida clrf TRISC ;PORTC salida clrf TRISD ;PORTD salida clrf TRISE ;PORTE salida movlw b'11000110' ;Configuración del modulo TMR0 movwf OPTION_REG ;Preescaler = 128 bcf STATUS,RP0 ;Ir banco 0 bcf STATUS,RP1 clrf PORTC ;PORTC = 0 _bucle call _retardo ;Llama la rutina de retardo incf PORTC,F ;Incrementa el valor del PORTC goto _bucle ;Ir _bucle _retardo ;T = 4 * Tosc * Valor de TMR0 * Preescaler movlw d'64' ;Cargar el valor de CONTA para 1 segundo movwf CONTA _espera1 clrf INTCON ;Deshabilitar interrupciones movlw d'134' ;Cargar el valor de TMR0 para 122 cuentas movwf TMR0 ;(Complemento) _espera btfss INTCON,T0IF ;Esperar desborde del TMR0 goto _espera decfsz CONTA,F ;Decrementar el registro CONTA hasta cero goto _espera1 ;Si no es cero: ir a _espera1 return ;retorno de call end para este ejericio use el timer 0
y despues hice el otro ejercicio con el timer 1 list p=16f877 ;Comando que indica el Pic usado include "p16f877.inc" ;Etiquetas genéricas para el Pic16F877 CONTA EQU 0x20 ;Variable CONTA en dirección 0x20 hexadecimal ;de memoria RAM org 0x000 ;Inicio del programa en la posición cero de memoria nop ;Libre (uso del debugger) nop _inicio bsf STATUS,RP0 ;Ir banco 1 bcf STATUS,RP1 clrf TRISA ;PORTA salida clrf TRISB ;PORTB salida clrf TRISC ;PORTC salida clrf TRISD ;PORTD salida clrf TRISE ;PORTE salida movlw b'10000000' ;configuración del registro OPTION movwf OPTION_REG bcf STATUS,RP0 ;Ir banco 0 bcf STATUS,RP1 movlw b'00110000' ;Contador interno de 16 bits movwf T1CON clrf CONTA ;CONTA = 0 clrf PORTC ;PORTC = 0 _bucle movf CONTA,W ;Cargar el valor de CONTA en W call _display ;Llama a la tabla _display movwf PORTC ;Al retornar de la subrutina el valor de W se saca ;por el PORTC call _retardo ;Llama a la subrutina retardo incf CONTA,F ;incrementa el valor de CONTA movlw d'8' ;Verifica si ha llegado a 8 subwf CONTA,W btfss STATUS,Z goto _bucle ;Si no es 8: ir _bucle clrf CONTA ;Si es 8: CONTA = 0 goto _bucle ;Ir _bucle _retardo bcf PIR1,TMR1IF ;Borrar la bandera de desborde clrf TMR1L ;Limpiar los registros de conteo clrf TMR1H bsf T1CON,TMR1ON ;Habilita el TMR1 _espera btfss PIR1,TMR1IF ;Verificar el desborde goto _espera ;Si no ir _espera bcf T1CON,TMR1ON ;Si desborda: limpiar bandera de desborde return ;Retorno _display addwf PCL,F ;pcl + W >>>> W ;El PCL se incrementa con el valor de W ;proporcionando un salto retlw b'10000000' ;retorna con valores para PORTC retlw b'11000000' retlw b'11100000' retlw b'11110000' retlw b'11111000' retlw b'11111100' retlw b'11111110' retlw b'11111111' end
Me da gusto ver que has podido avanzar con el curso, te dejo aquí estos links, estos videos ya están en la lista de reproducción del curso por si quieres echarles un ojo. th-cam.com/video/ENem6cO9cG8/w-d-xo.html th-cam.com/video/fas2XdXgwAQ/w-d-xo.html th-cam.com/video/nPFiN8pNY5g/w-d-xo.html th-cam.com/video/_L8oNFvFDZ4/w-d-xo.html
Fue mejor la explicacion del w en el microcontrolador que en el pic !!!
Amigo, excelente video muy claro y al punto. Sigue adelante
muy claro
Hey Bro cuando subes más vídeos
Pronto, algo que te ande haciendo falta?
@@tvcomo6886 Pues
anteriormente te comente que tenia unas practicas del timer 0 y 1 y logre hacerlo a la perfección
me gustaria que hagas videos para
controlar motores paso a paso ,servomotores,ADC,DAC de momento bro
llist p=16f877 ;Comando que indica el Pic usado
include "p16f877.inc" ;Etiquetas genéricas para el Pic16F877
CONTA EQU 0x20 ;Variable CONTA en dirección 0x20 hexadecimal de ;memoria RAM
org 0x00 ;Inicio del programa en la posición cero de memoria
nop ;Libre (uso del debugger)
nop
_inicio
bsf STATUS,RP0 ;Ir banco 1
bcf STATUS,RP1
clrf TRISA ;PORTA salida
clrf TRISB ;PORTB salida
clrf TRISC ;PORTC salida
clrf TRISD ;PORTD salida
clrf TRISE ;PORTE salida
movlw b'11000110' ;Configuración del modulo TMR0
movwf OPTION_REG ;Preescaler = 128
bcf STATUS,RP0 ;Ir banco 0
bcf STATUS,RP1
clrf PORTC ;PORTC = 0
_bucle
call _retardo ;Llama la rutina de retardo
incf PORTC,F ;Incrementa el valor del PORTC
goto _bucle ;Ir _bucle
_retardo ;T = 4 * Tosc * Valor de TMR0 * Preescaler
movlw d'64' ;Cargar el valor de CONTA para 1 segundo
movwf CONTA
_espera1
clrf INTCON ;Deshabilitar interrupciones
movlw d'134' ;Cargar el valor de TMR0 para 122 cuentas
movwf TMR0 ;(Complemento)
_espera
btfss INTCON,T0IF ;Esperar desborde del TMR0
goto _espera
decfsz CONTA,F ;Decrementar el registro CONTA hasta cero
goto _espera1 ;Si no es cero: ir a _espera1
return ;retorno de call
end
para este ejericio
use el timer 0
y despues hice el otro ejercicio con el timer 1
list p=16f877 ;Comando que indica el Pic usado
include "p16f877.inc" ;Etiquetas genéricas para el Pic16F877
CONTA EQU 0x20 ;Variable CONTA en dirección 0x20 hexadecimal
;de memoria RAM
org 0x000 ;Inicio del programa en la posición cero de memoria
nop ;Libre (uso del debugger)
nop
_inicio
bsf STATUS,RP0 ;Ir banco 1
bcf STATUS,RP1
clrf TRISA ;PORTA salida
clrf TRISB ;PORTB salida
clrf TRISC ;PORTC salida
clrf TRISD ;PORTD salida
clrf TRISE ;PORTE salida
movlw b'10000000' ;configuración del registro OPTION
movwf OPTION_REG
bcf STATUS,RP0 ;Ir banco 0
bcf STATUS,RP1
movlw b'00110000' ;Contador interno de 16 bits
movwf T1CON
clrf CONTA ;CONTA = 0
clrf PORTC ;PORTC = 0
_bucle
movf CONTA,W ;Cargar el valor de CONTA en W
call _display ;Llama a la tabla _display
movwf PORTC ;Al retornar de la subrutina el valor de W se saca
;por el PORTC
call _retardo ;Llama a la subrutina retardo
incf CONTA,F ;incrementa el valor de CONTA
movlw d'8' ;Verifica si ha llegado a 8
subwf CONTA,W
btfss STATUS,Z
goto _bucle ;Si no es 8: ir _bucle
clrf CONTA ;Si es 8: CONTA = 0
goto _bucle ;Ir _bucle
_retardo
bcf PIR1,TMR1IF ;Borrar la bandera de desborde
clrf TMR1L ;Limpiar los registros de conteo
clrf TMR1H
bsf T1CON,TMR1ON ;Habilita el TMR1
_espera
btfss PIR1,TMR1IF ;Verificar el desborde
goto _espera ;Si no ir _espera
bcf T1CON,TMR1ON ;Si desborda: limpiar bandera de desborde
return ;Retorno
_display
addwf PCL,F ;pcl + W >>>> W
;El PCL se incrementa con el valor de W
;proporcionando un salto
retlw b'10000000' ;retorna con valores para PORTC
retlw b'11000000'
retlw b'11100000'
retlw b'11110000'
retlw b'11111000'
retlw b'11111100'
retlw b'11111110'
retlw b'11111111'
end
Me da gusto ver que has podido avanzar con el curso, te dejo aquí estos links, estos videos ya están en la lista de reproducción del curso por si quieres echarles un ojo. th-cam.com/video/ENem6cO9cG8/w-d-xo.html th-cam.com/video/fas2XdXgwAQ/w-d-xo.html th-cam.com/video/nPFiN8pNY5g/w-d-xo.html th-cam.com/video/_L8oNFvFDZ4/w-d-xo.html