
Encender un solo segmento de un display cada 300 micro-segundos sin usar interrupciones
Publicado por Marcos (2 intervenciones) el 10/09/2014 23:31:43
¿Que tal? La cuestión es que estoy intentando encender un solo segmento de un display cada 300 micro-segundos sin usar interrupciones mediante la siguiente forma. El código compila, pero no funciona correctamente en proteus, por ende algo estoy haciendo mal. La idea es poder identificar como hacer esto para luego ir haciéndolo uno a uno con cada segmento del display. Desde ya, muchas gracias.
CODIGO:
CODIGO:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
list p=16F628A
#include <p16f628a.inc>
BIT EQU 0X20
org 0x05
bsf STATUS,RP0 ;Configuro el puerto B como salida
clrf TRISB
bcf STATUS,RP0
movlw 0x30 ;Configuro el prescaler para dividir por 8 y el TMR1 con 300 microsegundos
movwf T1CON
movlw 0x6D
movwf TMR1H
movlw 0x84
movwf TMR1L
NADA btfss PIR1, TMR1IF ;SI SE LEVANTO LA BANDERA DEL TMR1, VA A ENCENDER EL LED
goto NADA
goto LEDS
LEDS
movlw 0x01 ;ENCIENDE EL SEGMENTO ANTERIOR MENCIONADO
movwf PORTB
clrf PORTB ; LO APAGA
goto TMR1 ; SE DIRIGE A CARGAR NUEVAMENTE EL TEMPORIZADOR
TMR1
bcf PIR1, TMR1IF ;LIMPIA LA BANDERA DEL TMR1
movlw 0x6D ;CARGO NUEVAMENTE CON 300 MICROSEGUNDOS
movwf TMR1H
movlw 0x84
movwf TMR1L
goto NADA ;VUELVO A ESPERAR HASTA QUE SE LEVANTE LA BANDERA
end
Valora esta pregunta


0