
Ayuda con assembler en pic
Publicado por Chriska (1 intervención) el 29/09/2015 01:31:08
Hola, estoy haciendo un contador de 00 a 99, con un pulsador conectado a la patita rb0 y los displays en ra0, cuando ra0 es 1 muestra unidad y cuando es 0 muestra decena. Compila perfectamente en mplab, pero en proteus me muestra la siguiente simulación:

Codigo:
NECESITO AYUDA, por favor!!
Y GRACIAS.
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
org 0x00
goto INICIO
org 0x04
INTERRUPCION: btfss INTCON,1 ;Chequea el bit 1 de INTCONretfie
CONTAR:incf ContUnidad ;Incremento el contador
movlw d'10' ;Le asigno 10 a wsubwf ContUnidad,W ;Hago una resta entre el contador y lo que hay en W.
btfsc STATUS,Z ;z=0 salta, z=1 limpia el contador.
goto FLAG
goto LIMPIAR_UNIDAD ;Va a reiniciar el contador de unidad.CONTAR_DECENA:incf ContDecena,F ;Incremento el contador de decena.
movlw d'10' ;Le asigno 10 a wsubwf ContDecena,W ;Realiza una resta.
btfsc STATUS,Z ; z=0 salta, z=1 limpia el contador.
goto FLAG
clrf ContDecena ;Limpia contador decena.goto FLAG
LIMPIAR_UNIDAD: clrf ContUnidad ;Limpia el contador de unidad. goto CONTAR_DECENA ;Va a la subrutina del contador de decena.FLAG: bcf INTCON,1 ;Pone en cero el flag del pin RB0 retfie ;y sale de la rutina de interrupción.;-------------------------------------------
INICIO:Banco1
bsf OPTION_REG,7 ;Se activa el pull-up
bcf OPTION_REG,6 ;Se pone en 0 el bit 6 del reg. Option eligiendo flanco ascendente
;para la interrupción del pin RB0.movlw 0x07
movwf CMCON
movlw 0x01 ;Inidicamos que el puerto 0 de trisa y trisb será de salida
movwf TRISA
movwf TRISB
Banco0
bsf INTCON,7 ;Se pone a 1 el bit 7 del registro intcon que activa las interrupciones ;globales.bsf INTCON,4 ;Se pone a 1 el bit 4 del reg, Intcon activando las interrupciones
;por pin RB0. clrf ContUnidad ;Inicia contador unidad en cero. clrf ContDecena ;Inicia contador unidad en cero.;--------------------------------------------------
PROGRAMA:movf ContUnidad,W ;Mueve lo que hay en ContUnidad a w.
call TABLA_VALORES ;Busca el valor de W en la tabla. movwf PORTB ;Lo muestra en el puerto b.DisplayUni ;Pone a RA0 en 1
call RETARDO ;Realiza un retardo
SALIDA1: movf ContDecena,Wcall TABLA_VALORES
movwf PORTB
DisplayDec ;Pone a RA0 en 0
call RETARDO2
;-----------------------------------------------------
TABLA_VALORES: addwf PCL,W retlw b'1111110' ;0 retlw b'0110000' ;1 retlw b'1101101' ;2 retlw b'1111001' ;3 retlw b'0110011' ;4 retlw b'1011011' ;5 retlw b'1011111' ;6 retlw b'1110000' ;7 retlw b'1111111' ;8 retlw b'1110111' ;9;---------------------------------------------------
NECESITO AYUDA, por favor!!
Y GRACIAS.
Valora esta pregunta


1
