Autor Tema: Reset 16F1827 MCLR input y 74LS145  (Leído 4408 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado escalera

  • PIC10
  • *
  • Mensajes: 18
Reset 16F1827 MCLR input y 74LS145
« en: 26 de Julio de 2015, 18:26:55 »
Mucho gusto.

Quisiera hacer una consulta, llevo semanas batallando con un prototipo y ya no se cual es el problema.
Un maestro me proporciono una tablilla y pidió que dicha tablilla fuera programada y nos dio funciones para cada botón, el problema es que usó un 74LS145 y un 16F1827 (entre otros componentes, un DS1302 y un 12F1822); todo fácil hasta ahí, las cosas se complicaron al percatarme que el maestro nos dio la tablilla con los 4 botones conectados a RA5/MCLR (supongo que como entrada) y cada botón esta a una salida del 74LS145, como si estuviera multiplexados; solo nos facilito los Config Words (CONFIG1, 0x0E04, CONFIG2, 0x1CFC, estos son los que el maestro usa en su proyecto y son los que quiere que usemos) y nada mas, les anexare lo que hice, no he hecho mucho ya que cada que presiono un botón se resetea el PIC y la verdad ya estoy desesperado porque no doy con el problema, borre el display y si detectaba alguna bandera de reset (ya sea en STATUS o en POR) y no muestra nada, simplemente muere :S, este es el código en asm, estoy usando MPLAB 8.92 y les anexo un vídeo corto del problema, el código de abajo, tal cual lo pongo en el micro y es la falla.
Espero ustedes puedan ayudarme, estoy desesperado, les proporciono todo lo que llevo y un vídeo donde muestra la falla, no se que sea pero me ha hecho batallar, agradecería cualquier sugerencia, en Proteus si función, en físico no.

Este es el vídeo donde muestra lo que menciono que hace

Código: ASM
  1. processor 16F1827
  2.     #include <P16F1827.INC>
  3.     __config _CONFIG1, 0x0E04
  4. ;_FCMEN_OFF  & _IESO_OFF & _CLKOUTEN_OFF & _BOREN_ON &
  5. ;_CPD_ON & _CP_ON & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF &
  6. ;_FOSC_INTOSC
  7.     __config _CONFIG2, 0x1CFC
  8. ;_LVP_OFF &  _WRT_ALL & _BORV_19 & _STVREN_OFF & _PLLEN_OFF &
  9. ;_DEBUG_OFF ;0x3EFF
  10.  
  11. ;    __idlocs 0x0214
  12.  
  13.         ERRORLEVEL -302
  14.         ERRORLEVEL -306
  15.  
  16. ;   EEPROM-Data
  17.     Org 0xF000
  18.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  19.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  20.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  21.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  22.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  23.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  24.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  25.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  26.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  27.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  28.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  29.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  30.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  31.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  32.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  33.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  34.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  35.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  36.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  37.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  38.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  39.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  40.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  41.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  42.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  43.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  44.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  45.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  46.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  47.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  48.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  49.     DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   ;  .....m25
  50.  
  51. ; RAM-Variable
  52. DISTEMP         equ 0x20
  53. TABLETEMP       equ 0x21
  54. DISPLAY1        equ 0x22
  55. DISPLAY2        equ 0x23
  56. DISPLAY3        equ 0x24
  57. DISPLAY4        equ 0x25
  58. DISPLAY5        equ 0x26
  59. DISPLAY6        equ 0x27
  60. DISPLAY7        equ 0x28
  61. TEMPDECRE       equ 0x29
  62. DISCONTROL      equ 0x2A
  63. LECTUTEMP       equ 0x2B
  64. BUZZON          equ 0x2C
  65. REGPULFSR       equ 0x2D
  66. BOTONTEMP       equ 0x2E
  67. BOTONHIGH       equ 0x2F
  68. DIVIDENDO0      equ 0x30;7B
  69. DIVIDENDO1      equ 0x31;7C
  70. DIV_COUNT       equ 0x32;7D
  71. RETARDO0        equ 0x33
  72. NUMENVIOS       equ 0x34
  73. BOTONES         equ 0x35
  74. BCDTEMP0        equ 0x36
  75. BCDTEMP1        equ 0x37
  76. BCDTEMP2        equ 0x38
  77. BCDTEMP3        equ 0x39
  78. BCDTEMP4        equ 0x3A
  79. BCDTEMP5        equ 0x3B
  80. BCDTEMP6        equ 0x3C
  81. TEMPBCD         equ 0x3D
  82. ABANDERADOS equ 0x3E
  83. LETRVAR         equ 0x3F
  84. RETARDO1        equ 0x40
  85. CONT0           equ 0x41
  86. RETAROFF        equ 0x42
  87. REGPU0          equ 0x43
  88. REGPU1          equ 0x44
  89. TEMPPULSOS0     equ 0x45
  90. TEMPPULSOS1     equ 0x46
  91. DIALACTUAL      equ 0x47;57
  92. EEADT           equ 0x54;53
  93. EERD            equ 0x55;54
  94. EEWR            equ 0x56;55
  95. COUNTAR         equ 0x57;56
  96. NDIALACTUAL equ 0x58
  97. BANHORARIO      equ 0x59
  98. BAILN           equ 0x5A
  99. PORTEMP         equ 0x5B
  100. CALCTEMP0       equ 0x5C
  101. CALCTEMP1       equ 0x5D
  102. CALCTEMP2       equ 0x5E
  103. OPCIONES        equ 0x5F
  104. TRASHCAL        equ 0x60
  105. COUNTBIT        equ 0x61
  106. TXENV           equ 0x62
  107. CONTBAU         equ 0x63
  108. RESULT0         equ 0x77
  109. RESULT1         equ 0x78
  110. DIVISOR0        equ 0x79
  111. DIVISOR1        equ 0x7A
  112. TEMPCLATH       equ 0x7B;30
  113. TEMPFSR0        equ 0x7C;31
  114. TEMPW           equ 0x7D;32
  115. TEMPSTATUS      equ 0x7E;33
  116. TEMPBSR         equ 0x7F;34
  117. CLAVE0          equ 0xA0
  118. CLAVE1          equ 0xA1
  119. CLAVE2          equ 0xA2
  120. BANDACTIV       equ 0xB1
  121.  
  122.  
  123. ; Program
  124.  
  125.     Org 0x0000
  126.  
  127. ;   Reset-Vector
  128. ORIGEN
  129.         GOTO INICIO
  130.         ADDLW 0xFF
  131.         ADDLW 0xFF
  132.         ADDLW 0xFF
  133. ;       Interrup-Vector
  134.         MOVWF TEMPW
  135.         MOVF STATUS,W
  136.         MOVWF TEMPSTATUS
  137.         MOVF BSR,W
  138.         MOVWF TEMPBSR
  139.         MOVF PCLATH,W
  140.         MOVWF TEMPCLATH
  141.         MOVF FSR0,W
  142.         MOVWF TEMPFSR0
  143.         CLRF BSR
  144.         CLRF PCLATH
  145.         BTFSC PIR1,TMR1IF
  146.         GOTO TIEMPO
  147.         BTFSC INTCON,INTF
  148.         GOTO REGPULSO
  149.         BTFSC PIR1,RCIF
  150.         GOTO RECEIVED
  151.         BTFSC INTCON,TMR0IF
  152.         GOTO DISPLAYS
  153.         BANKSEL IOCBF
  154.         CLRF IOCBF
  155.         CLRF BSR
  156.         MOVLW 0xF7
  157.         ANDWF INTCON,F
  158.         CLRF BSR
  159.         MOVLW 0x30
  160.         ANDWF PIR1,F
  161.         MOVLW 0x10
  162.         ANDWF PIR2,F
  163.         CLRF PIR3
  164.         CLRF PIR4
  165.         GOTO ENDINTERR
  166. ;#############################################
  167. TIEMPO
  168.         BCF PIR1,TMR1IF
  169.         MOVF RETARDO1,W
  170.         BTFSS STATUS,Z
  171.         DECF RETARDO1,F
  172.         INCF CONT0,F
  173.         MOVLW 0x05
  174.         XORWF CONT0,W
  175.         BTFSS STATUS,Z
  176.         GOTO FIN_TIEMPO
  177.         CLRF CONT0
  178.         MOVF RETAROFF,W
  179.         BTFSS STATUS,Z
  180.         DECF RETAROFF,F
  181.         MOVF BAILN,W
  182.         BTFSS STATUS,Z
  183.         DECF BAILN,F
  184. FIN_TIEMPO
  185.         MOVLW 0xB0;9
  186.         ADDWF TMR1L,F
  187.         MOVLW 0x3C
  188.         ADDWF TMR1H,F
  189.         GOTO ENDINTERR
  190. ;#############################################
  191. RECEIVED
  192.         BANKSEL RCSTA
  193.         MOVF RCREG,W
  194.         CLRF BSR
  195.         GOTO ENDINTERR
  196. ;#############################################
  197. REGPULSO
  198.         BCF INTCON,INTF
  199.         MOVF REGPULFSR,W
  200.         BTFSS STATUS,Z
  201.         GOTO TURNOFFPULED
  202.         MOVLW 0x22
  203.         MOVWF REGPULFSR
  204.         GOTO PULSOREG
  205. TURNOFFPULED
  206.         CLRF REGPULFSR
  207. PULSOREG
  208.         INCF REGPU0,F
  209.         BTFSC STATUS,Z
  210.         INCF REGPU1,F
  211.         GOTO ENDINTERR
  212. ;###############################################
  213. DISPLAYS
  214.         BCF INTCON,TMR0IF
  215.         MOVLW 0x3B
  216.         BANKSEL LATB    ;55 US
  217.         IORWF LATB,F
  218.         MOVLW 0x3F
  219.         ANDWF LATB,F
  220.         MOVLW 0x20
  221.         ANDWF LATA,F
  222.         MOVLW 0xDF  ;BOTON1
  223.         ANDWF LATB,F
  224.         CLRF BSR
  225.         BSF BOTONHIGH,0
  226.         BTFSC PORTA,5
  227.         BCF BOTONHIGH,0
  228.         BANKSEL LATB
  229.         MOVLW 0xF7  ;BOTON2
  230.         ANDWF PORTB,F
  231.         CLRF BSR
  232.         BSF BOTONHIGH,1
  233.         BTFSC PORTA,5
  234.         BCF BOTONHIGH,1
  235.         BANKSEL LATB
  236.         BSF PORTB,3 ;BOTON3
  237.         BCF PORTB,4
  238.         CLRF BSR
  239.         BSF BOTONHIGH,2
  240.         BTFSC PORTA,5
  241.         BCF BOTONHIGH,2
  242.         BANKSEL LATB
  243.         MOVLW 0xF7  ;BOTON4
  244.         ANDWF PORTB,F
  245.         CLRF BSR
  246.         BSF BOTONHIGH,3
  247.         BTFSC PORTA,5
  248.         BCF BOTONHIGH,3
  249.         BANKSEL LATB
  250.         MOVLW 0x3B
  251.         IORWF LATB,F
  252.         CLRF BSR
  253.         MOVF BOTONHIGH,W
  254.         SUBWF BOTONTEMP,W
  255.         BTFSS STATUS,Z
  256.         GOTO MOVBOTO
  257.         DECFSZ PORTEMP,F
  258.         GOTO PREDISPLAYS
  259.         MOVF BOTONHIGH,W
  260.         MOVWF BOTONES
  261.         GOTO RETBOTO
  262. MOVBOTO
  263.         MOVF BOTONHIGH,W
  264.         MOVWF BOTONTEMP
  265. RETBOTO
  266.         MOVLW 0x0A
  267.         MOVWF PORTEMP  
  268. PREDISPLAYS
  269.         CLRF DISCONTROL
  270.         MOVLW 0xB1
  271.         MOVWF FSR0
  272.         MOVF BUZZON,W
  273.         BTFSC STATUS,Z
  274.         GOTO BOTRE
  275.         BANKSEL LATB
  276.         BTFSC INDF0,0
  277.         BSF LATB,6
  278.         CLRF BSR
  279.         DECF BUZZON,F
  280. BOTRE  
  281.         CLRF PCLATH
  282.         MOVF DISTEMP,W
  283.         ADDWF PCL,F
  284.         GOTO DISPLAY_1
  285.         GOTO DISPLAY_2
  286.         GOTO DISPLAY_3
  287.         GOTO DISPLAY_4
  288.         GOTO DISPLAY_5
  289.         GOTO DISPLAY_6
  290.         GOTO DISPLAY_7
  291. DISPLAY_7
  292.         MOVLW 0x18
  293.         IORWF DISCONTROL,F
  294. ;       BTFSC BOTONHIGH,0
  295. ;       BCF DISCONTROL,6
  296.         MOVLW 0x28
  297.         GOTO IMPRES
  298. DISPLAY_1
  299.         MOVLW 0x30
  300.         IORWF DISCONTROL,F
  301.         MOVLW 0x22
  302.         GOTO IMPRES
  303. DISPLAY_2
  304.         MOVLW 0x10
  305.         IORWF DISCONTROL,F
  306. ;       BTFSC BOTONHIGH,1
  307. ;       BCF DISCONTROL,6
  308.         MOVLW 0x23
  309.         GOTO IMPRES
  310. DISPLAY_3
  311.         MOVLW 0x08
  312.         IORWF DISCONTROL,F
  313. ;       BTFSC BOTONHIGH,2
  314. ;       BCF DISCONTROL,6
  315.         MOVLW 0x24
  316.         GOTO IMPRES
  317. DISPLAY_4
  318.         MOVLW 0x00
  319.         IORWF DISCONTROL,F
  320. ;       BTFSC BOTONHIGH,3
  321. ;       BCF DISCONTROL,6
  322.         MOVLW 0x25
  323.         GOTO IMPRES
  324. DISPLAY_5
  325.         MOVLW 0x28
  326.         IORWF DISCONTROL,F
  327.         MOVLW 0x26
  328.         GOTO IMPRES
  329. DISPLAY_6
  330.         MOVLW 0x20
  331.         IORWF DISCONTROL,F
  332.         MOVLW 0x27
  333.         GOTO IMPRES
  334. IMPRES
  335.         MOVWF FSR0
  336.         MOVF INDF0,W
  337.         IORLW 0x20
  338.         BANKSEL LATA
  339.         MOVWF LATA
  340.         CLRF BSR
  341.         MOVF REGPULFSR,W
  342.         XORWF FSR0,W
  343.         BTFSS STATUS,Z
  344.         GOTO CONTPULS
  345.         BTFSC ABANDERADOS,4
  346.         BSF DISCONTROL,7
  347. CONTPULS
  348.         BTFSC INDF0,5
  349.         BSF DISCONTROL,7
  350.         BTFSC PORTB,1
  351.         BSF DISCONTROL,1
  352.         BTFSC PORTB,2
  353.         BSF DISCONTROL,2
  354.         MOVF DISCONTROL,W
  355.         BANKSEL LATB
  356.         MOVWF LATB
  357.         CLRF BSR
  358. ENDEISPLAY
  359.         MOVF RETARDO0,W
  360.         BTFSS STATUS,Z
  361.         DECF RETARDO0,F
  362.         MOVLW 0x08
  363.         ADDWF TMR0,F
  364.         INCF DISTEMP,F
  365.         MOVLW 0x07
  366.         XORWF DISTEMP,W
  367.         BTFSC STATUS,Z
  368.         CLRF DISTEMP
  369. ;#########################################
  370. ENDINTERR
  371.         MOVF TEMPFSR0,W
  372.         MOVWF FSR0     ;163us
  373.         MOVF TEMPCLATH,W
  374.         MOVWF PCLATH
  375.         MOVF TEMPBSR,W
  376.         MOVWF BSR
  377.         MOVF TEMPSTATUS,W
  378.         MOVWF STATUS
  379.         SWAPF TEMPW,F
  380.         SWAPF TEMPW,W
  381.         RETFIE
  382. ;##########################################    
  383. INICIO
  384.         CLRF BSR
  385.         CLRF FSR0
  386.         CLRF PORTA
  387.         CLRF PORTB              ;Se borran puertos
  388.         MOVLB 0x01
  389.         MOVLW 0x6A
  390.         MOVWF OSCCON    ;Se selecciona oscilador a 4 Mhz
  391.         MOVLB 0x03
  392.         BCF BAUDCON,3  
  393.         MOVLW 0x0C
  394.         MOVWF SPBRGL   
  395.         MOVLW 0x06
  396.         MOVWF TXSTA
  397.         MOVLW 0x80
  398.         MOVWF RCSTA             ;Se configura USART para 19200
  399.         CLRF ANSELA
  400.         CLRF ANSELB             ;Ninguna entrada analoga
  401.         MOVLB 0x02
  402.         CLRF CM1CON1
  403.         CLRF CM1CON0
  404.         CLRF CM2CON1
  405.         CLRF CM2CON0    ;Se borran los registros para comparadores
  406.         MOVLB 0x01
  407.         MOVLW 0x02;07           ;Lectora de switch por flanco bajada y
  408.         MOVWF OPTION_REG        ;Preescales 1:8 retardo cada 2ms aprox.
  409.         BSF PIE1,TMR1IE         ;Timer 1 Activo para interrupcion
  410.         MOVLW 0x03      
  411.         MOVWF TRISB             ;RB0, RB1 como entradas (RB1 RX USART)
  412.         MOVLW 0x20      
  413.         MOVWF TRISA             ;RA5/MCLR Como entrada
  414.         BANKSEL WPUA
  415.         MOVLW 0x00;20
  416.         MOVWF WPUA                      ;PullUps Activos
  417.         MOVLW 0xFF
  418.         MOVWF WPUB
  419.         CLRF BSR       ; !!Bank Register-Bank(0/1)-Select
  420.         MOVLW 0x70
  421.         MOVWF INTCON    ;Interrupciones externas, timer y periferias
  422.         MOVLW 0x07              ;activas
  423.         MOVWF PORTB
  424.         CLRF PORTA           ; !!Bank!! PORTA - TRISA - WDTCON - SRCON
  425.         MOVLW 0xFF
  426.         MOVWF BUZZON
  427. BUZZRET
  428.         DECFSZ BUZZON,F ;PEQUEÑO DELAY
  429.         GOTO BUZZRET
  430.         MOVLW 0x20
  431.         MOVWF FSR0
  432. ERASEREG
  433.         CLRF INDF0
  434.         INCF FSR0,F
  435.         BTFSS FSR0,7
  436.         GOTO ERASEREG           ;Se borra la GPR del primer banco
  437.         CLRF TMR0
  438.         BCF INTCON,TMR0IF    ; Deshabilita la interrupcion de desbordamiento (por si se desbordo)
  439.         BSF INTCON,GIE        ;Habilitamos Globalmente las interrupciones
  440.         BANKSEL RCSTA
  441.         MOVLW 0x40
  442.         MOVWF BAUDCON
  443.         BSF TXSTA,5
  444. BAUDER
  445.         BCF BAUDCON,4
  446.         BTFSC BAUDCON,4        ;Comunicacion serial 19200
  447.         GOTO BAUDER                     ; Se habilitan la recepcion y envio serial
  448.         CLRF BSR
  449.         MOVLW 0x03          ; !!Bank Program-Page-Select
  450.         MOVWF PCLATH
  451.         CALL CARGAELEMENTOS     ;Carga elementos de la EEPROM, de momento no estan seteados
  452. LETRELIBRE
  453.         CLRF LETRVAR
  454.         MOVLW 0x01
  455.         MOVWF PCLATH
  456.         CALL PREGUNHORARIO    ;Pregunta si es AM/PM via Serial, si no recibe respuesta, asume que es AM
  457.         BTFSC BANHORARIO,0
  458.         BCF COUNTAR,0
  459.         BTFSC BANHORARIO,1
  460.         BSF COUNTAR,0
  461.         MOVLW 0xB0
  462.         MOVWF BUZZON         ;VALOR PARA ACTIVAR EL BUZZER POR 0xB0 * 2ms
  463.         MOVLW 0xB4
  464.         MOVWF RETAROFF        ;RETAROFF EQUIVALE A DELAY DE n SEGUNDOS, ESTE CASO 180 SEGUNDOS (3 MINUTOS)
  465.         MOVLW 0x02
  466.         MOVWF BAILN            ;UN SEGMENTO DEL DISPLAY CAMBIARA CADA 2 SEGUNDOS
  467.         MOVLW 0x03
  468.         MOVWF PCLATH
  469.         BSF LETRVAR,0
  470.         MOVLW 0x05
  471.         MOVWF PCLATH
  472.         CALL CARGALETREROS     ;CARGA EL LETRERO DEL UNICIO DEL PROGRAMA
  473.         MOVLW 0x01
  474.         MOVWF PCLATH
  475.         MOVF DIALACTUAL,W
  476.         MOVWF DISPLAY1
  477.         BSF ABANDERADOS,4
  478.         MOVLW 0xB0;9
  479.         MOVWF TMR1L
  480.         MOVLW 0x3C
  481.         MOVWF TMR1H           ;HABILITA EL TIMMER1 A 200ms
  482.         MOVLW 0x21
  483.         MOVWF T1CON
  484.         BCF INTCON,TMR1IF
  485.         BCF INTCON,TMR0IF    ;BORRA LOS DESBORDAMIENTOS EN CASO DE HABERLOS
  486.         BSF INTCON,GIE        ;HABILITA LA INTERRUPCION GLOBAL
  487.         MOVLW 0x0A
  488.         ADDWF TMR0,F       ;TMR0 MAS 10 PARA RETARDO
  489. ;       MOVLW 0x0D
  490. ;       MOVWF PCLATH
  491. ;       CALL PREP_INTERRUP    ;ESTA LINEA ERA PARA VERIFICAR LOS BITS DE RESET, NO MOSTRO NADA UTIL
  492. BUCLE
  493.         MOVLW 0x02
  494.         MOVWF PCLATH
  495.         CALL RET400                       ;RETARDO 400 ms
  496.         CLRF PCLATH
  497.         MOVF BAILN,W
  498.         BTFSS STATUS,Z             ;EL SEGMENTO YA DEBE CAMBIAR?
  499.         GOTO BOLIBRNES                 ;SEGMENTO NO CAMBIA
  500.         CALL PREGUNHORARIO           ;SEGMENTO CAMBIA Y VERIFICA SI ES AM/PM
  501.         BTFSS BANHORARIO,1
  502.         GOTO BANHORARIODIA
  503.         BTFSS COUNTAR,0
  504.         BSF BANHORARIO,2
  505.         BTFSS BANHORARIO,2
  506.         GOTO CONTINUA_HORARIO
  507.         BSF COUNTAR,0
  508.         BSF LETRVAR,0
  509.         BCF LETRVAR,0
  510.         GOTO CONTINUA_HORARIO
  511. BANHORARIODIA
  512.         BTFSC COUNTAR,0
  513.         BSF BANHORARIO,2
  514.         BTFSS BANHORARIO,2
  515.         GOTO CONTINUA_HORARIO
  516.         BCF COUNTAR,0
  517.         BSF LETRVAR,0
  518.         BCF LETRVAR,0
  519. CONTINUA_HORARIO
  520.         BCF BANHORARIO,2
  521.         MOVLW 0x01
  522.         MOVWF PCLATH
  523. BOLIBRNES
  524.         MOVF BOTONES,W       ;SE OPRIMIO ALGUN BOTON?
  525.         BTFSS STATUS,Z
  526.         GOTO BOTONACTIVO
  527.         MOVF RETAROFF,W        ;NO SE OPRIMIO BOTON,
  528.         BTFSS STATUS,Z         ;HAN PASADO 3 MINUTOS?
  529.         GOTO BUCLE                       ;NO, REPETIR CICLO
  530.         CLRF DISPLAY1            
  531.         CLRF DISPLAY2
  532.         CLRF DISPLAY3
  533.         CLRF DISPLAY4
  534.         CLRF DISPLAY5
  535.         CLRF DISPLAY6
  536.         CLRF DISPLAY7         ;PASARON 3 MINUTOS, SE APAGARON LOS DISPLAYS
  537. SLEEPPIC
  538.         MOVF BOTONES,W
  539.         BTFSC STATUS,Z             ;MIENTRAS NO HAYA BOTONES, CICLAR   
  540.         GOTO SLEEPPIC
  541.         CLRF BOTONES
  542.         GOTO LETRELIBRE       ;HUBO UN BOTON ACTIVO, REGRESAMOS AL MENU INICIAL
  543. ;###########################################
  544. ;###########################################
  545. PREGUNHORARIO                          
  546.         MOVLW 0x06                             ;IMPLEMENTACION PRIMITIVA DE ENVIO
  547.         MOVWF NUMENVIOS                  ;ACK DATO CONTINUA
  548. REPEDIRHORARIO                             ;NO ACK IGNORO Y ASUMO UN VALOR
  549.         DECF NUMENVIOS,F
  550.         BTFSS STATUS,Z
  551.         GOTO AUNINTENTO
  552.         MOVLW 0x01
  553.         BANKSEL RCSTA
  554.         BCF RCSTA,4
  555.         GOTO CONTINUA_RECE
  556. AUNINTENTO
  557.         MOVLW 0x0F
  558.         BANKSEL TXREG;  MOVWF TXENV
  559.         MOVWF TXREG;    MOVLW 0x0F
  560.         BSF TXSTA,5
  561. WAYIT
  562.         BTFSS TXSTA,1
  563.         GOTO WAYIT
  564.         BSF RCSTA,4
  565.         CLRF BSR
  566.         MOVLW 0xFF
  567.         MOVWF LECTUTEMP
  568. HORARIOESPERA
  569.         DECF LECTUTEMP,F
  570.         BTFSC STATUS,Z
  571.         GOTO REPEDIRHORARIO
  572.         BTFSS PIR1,5
  573.         GOTO HORARIOESPERA
  574. HORARIOLLEGO
  575.         BANKSEL RCSTA
  576.         MOVF RCREG,W
  577. CONTINUA_RECE
  578.         CLRF BSR
  579.         MOVWF BANHORARIO
  580.         MOVLW 0x01
  581.         XORWF BANHORARIO,W
  582.         BTFSC STATUS,Z
  583.         GOTO HORARIOCONTINUA
  584.         MOVLW 0x02
  585.         XORWF BANHORARIO,W
  586.         BTFSC STATUS,Z
  587.         GOTO HORARIOCONTINUA
  588.         MOVLW 0x01
  589.         MOVWF BANHORARIO
  590. HORARIOCONTINUA
  591.         CLRF BSR
  592.         RETURN
  593. ;####################################
  594. ;####################################
  595. BOTONACTIVO
  596.         MOVLW 0x03               ;MENU PARA BOTONES QUE QUIZAS SE OPRIMIERON
  597.         MOVWF PCLATH
  598.         BTFSC BOTONES,0
  599.         NOP
  600.         MOVLW 0x02
  601.         MOVWF PCLATH
  602.         BTFSC BOTONES,1
  603.         GOTO MENHORA
  604.         BTFSC BOTONES,2
  605.         NOP
  606.         MOVLW 0x04
  607.         MOVWF PCLATH
  608.         BTFSC BOTONES,3
  609.         NOP
  610.         CLRF BOTONES
  611.         MOVLW 0x01
  612.         MOVWF PCLATH
  613.         GOTO BUCLE
  614. ;##################################
  615. ;##################################
  616.         ORG 0x0208
  617. ;#######################################
  618. RET200                                  ;200 ms
  619.         MOVLW 0x01
  620.         MOVWF RETARDO1
  621.         GOTO DECRETAR
  622. RET400                                  ;400 ms
  623.         MOVLW 0x02
  624.         MOVWF RETARDO1
  625. DECRETAR
  626.         MOVF RETARDO1,W
  627.         BTFSS STATUS,Z
  628.         GOTO DECRETAR
  629.         RETURN
  630.  
  631. MENHORA                                       ;MENU PARA MOSTRAR LA HORA RECIBIDA VIA SERIAL
  632.         MOVLW 0xBD;9D                   ;DS1302 BURST-MODE
  633.         MOVWF DISPLAY1
  634.         MOVLW 0xB0
  635.         MOVWF BUZZON
  636. MEHORA
  637.         BCF ABANDERADOS,4
  638.         CALL RECIBOHORA
  639.         BCF INTCON,GIE
  640.         MOVLW 0xBD
  641.         XORWF DISPLAY1,W
  642.         MOVLW 0xAA
  643.         BTFSS STATUS,Z
  644.         MOVLW 0xAD
  645.         MOVWF FSR0
  646.         MOVLW 0x0E
  647.         MOVWF PCLATH
  648.         MOVLW 0x0F           ;   b'00001111'  d'015'
  649.         ANDWF INDF0,W
  650.         CALL NUMEROS         ; !!Bank!! 0x002E - 0x082E - 0x102E - 0x182E
  651.         MOVWF DISPLAY7
  652.         SWAPF INDF0,F
  653.         MOVLW 0x0F           ;   b'00001111'  d'015'
  654.         ANDWF INDF0,W
  655.         CALL NUMEROS         ; !!Bank!! 0x002E - 0x082E - 0x102E - 0x182E
  656.         MOVWF DISPLAY6
  657.         INCF FSR0,F
  658.         SWAPF INDF0,F
  659.         MOVLW 0x0F           ;   b'00001111'  d'015'
  660.         ANDWF INDF0,W
  661.         CALL NUMEROS         ; !!Bank!! 0x002E - 0x082E - 0x102E - 0x182E
  662.         MOVWF DISPLAY4
  663.         SWAPF INDF0,F
  664.         MOVLW 0x0F           ;   b'00001111'  d'015'
  665.         ANDWF INDF0,W
  666.         CALL NUMEROS         ; !!Bank!! 0x002E - 0x082E - 0x102E - 0x182E
  667.         MOVWF DISPLAY5
  668.         INCF FSR0,F
  669.         SWAPF INDF0,F
  670.         MOVLW 0x0F           ;   b'00001111'  d'015'
  671.         ANDWF INDF0,W
  672.         CALL NUMEROS         ; !!Bank!! 0x002E - 0x082E - 0x102E - 0x182E
  673.         MOVWF DISPLAY2
  674.         SWAPF INDF0,F
  675.         MOVLW 0x0F           ;   b'00001111'  d'015'
  676.         ANDWF INDF0,W
  677.         CALL NUMEROS         ; !!Bank!! 0x002E - 0x082E - 0x102E - 0x182E
  678.         MOVWF DISPLAY3
  679.         BSF DISPLAY5,5
  680.         BSF DISPLAY3,5
  681.         BSF INTCON,GIE
  682.         MOVLW 0x02
  683.         MOVWF PCLATH
  684.         CALL RET400
  685.         CLRF TMR0
  686.         MOVLW 0x32
  687.         MOVWF RETARDO0
  688. BOT_TI_HOR
  689.         MOVLW 0x01
  690.         MOVWF PCLATH
  691.         BTFSC BOTONES,0
  692.         GOTO LETRELIBRE
  693.         MOVLW 0x02
  694.         MOVWF PCLATH
  695.         BTFSC BOTONES,2
  696.         GOTO MEFECH
  697.         BTFSC BOTONES,3
  698.         GOTO MENPULSOS
  699.         BTFSC BOTONES,1
  700.         GOTO SND_CHANGE
  701.         MOVF RETARDO0,W
  702.         BTFSS STATUS,Z
  703.         GOTO BOT_TI_HOR
  704.         GOTO MEHORA
  705. MEFECH
  706.         MOVLW 0xB0
  707.         MOVWF BUZZON
  708.         MOVLW 0xAB
  709.         XORWF DISPLAY1,W
  710.         MOVLW 0xAB
  711.         BTFSC STATUS,Z
  712.         MOVLW 0xBD
  713.         MOVWF DISPLAY1
  714.         GOTO MEHORA
  715. ;#######################################
  716. RECIBOHORA
  717.         MOVLW 0x10
  718.         BANKSEL TXREG
  719.         MOVWF TXREG
  720.         BSF TXSTA,5
  721. EXREAS
  722.         BTFSS TXSTA,1
  723.         GOTO EXREAS
  724.         BSF RCSTA,4
  725.         CLRF BSR
  726.         MOVLW 0x02
  727.         MOVWF PCLATH
  728.         MOVLW 0x30
  729.         MOVWF BUZZON
  730. LOLBUZREA
  731.         DECFSZ BUZZON,F
  732.         GOTO LOLBUZREA
  733.         MOVLW 0xAA
  734.         MOVWF FSR0
  735. ESREAS
  736.         MOVLW 0xFF
  737.         MOVWF LECTUTEMP
  738. ESPERORELO
  739.         BTFSC PIR1,5
  740.         GOTO RELOFINSF
  741.         DECF LECTUTEMP,F
  742.         BTFSS STATUS,Z
  743.         GOTO ESPERORELO
  744. ETICEN
  745.         MOVLW 0x10
  746.         GOTO ECTIOS
  747. RELOFINSF
  748.         BANKSEL RCREG
  749.         MOVF RCREG,W
  750. ECTIOS
  751.         CLRF BSR
  752.         MOVWF INDF0
  753.         INCF FSR0,F
  754.         MOVLW 0xB1
  755.         XORWF FSR0,W
  756.         BTFSS STATUS,Z
  757.         GOTO ESREAS
  758.         BSF INTCON,GIE 
  759.         CLRF PCLATH
  760.         RETURN
  761. ;#################################
  762. MENPULSOS
  763.         CALL RET200
  764.         MOVLW 0x8F
  765.         MOVWF DISPLAY1
  766.         CLRF REGPU0
  767.         CLRF REGPU1
  768.         MOVLW 0xB0
  769.         MOVWF BUZZON
  770.         BSF ABANDERADOS,4
  771. MENUPULSOS
  772.         BCF INTCON,GIE
  773.         MOVF REGPU1,W
  774.         MOVWF BCDTEMP1
  775.         MOVF REGPU0,W
  776.         MOVWF BCDTEMP0
  777.         MOVLW 0x0E
  778.         MOVWF PCLATH
  779.         CALL CONVERTBCD
  780.         BCF DISPLAY5,5
  781.         CLRF TMR0
  782.         MOVLW 0x32
  783.         MOVWF RETARDO0
  784.         BSF INTCON,GIE
  785. WAITPUL
  786.         MOVLW 0x01
  787.         MOVWF PCLATH
  788.         BTFSC BOTONES,0
  789.         GOTO LETRELIBRE
  790.         MOVLW 0x02
  791.         MOVWF PCLATH
  792.         BTFSC BOTONES,1
  793.         GOTO SND_CHANGE
  794.         BTFSC BOTONES,2
  795.         GOTO MENHORA
  796.         BTFSC BOTONES,3
  797.         GOTO MENPULSOS
  798.         MOVF RETARDO0,W
  799.         BTFSC STATUS,Z
  800.         GOTO MENUPULSOS
  801.         GOTO WAITPUL
  802. ;#######################################
  803. ;#####################################
  804. ;#####################################
  805. CARGADOR
  806.         MOVLW 0x47
  807.         MOVWF FSR0
  808.         MOVLW 0x0F
  809.         MOVWF PCLATH
  810.         CALL EEPROMLECTURA
  811.         MOVLW 0x0E
  812.         MOVWF PCLATH
  813.         MOVF INDF0,W
  814.         MOVWF TABLETEMP
  815.         CALL MAYUS
  816.         MOVWF INDF0
  817.         INCF FSR0,F
  818.         INCF EEADT,F
  819.         MOVLW 0x03
  820.         MOVWF PCLATH
  821.         BSF BSR,0
  822.         BTFSS BANDACTIV,1
  823.         GOTO NJUNTO
  824.         CLRF BSR
  825.         MOVLW 0x0A
  826.         MOVWF TABLETEMP
  827.         GOTO LECTURCONST
  828. NJUNTO
  829.         CLRF BSR
  830.         MOVLW 0x06
  831.         MOVWF TABLETEMP
  832.         CALL LECTURCONST
  833.         MOVLW 0x04
  834.         MOVWF TABLETEMP
  835.         MOVLW 0x47
  836.         MOVWF EEADT
  837. LECTURCONST
  838.         MOVLW 0x0F
  839.         MOVWF PCLATH
  840.         CALL EEPROMLECTURA
  841.         INCF EEADT,F
  842.         INCF FSR0,F
  843.         MOVLW 0x03
  844.         MOVWF PCLATH
  845.         DECFSZ TABLETEMP,F
  846.         GOTO LECTURCONST
  847.         RETURN
  848. SND_CHANGE
  849.         BSF LETRVAR,7
  850.         MOVLW 0x05
  851.         MOVWF PCLATH
  852.         CALL CARGALETREROS
  853. SNDCHANGE
  854.         MOVLW 0xB1
  855.         MOVWF FSR0
  856.         MOVLW 0xD8
  857.         MOVWF DISPLAY5
  858.         MOVLW 0x8B
  859.         BTFSS INDF0,0
  860.         MOVLW 0xB8
  861.         MOVWF DISPLAY6
  862.         MOVLW 0xAB
  863.         BTFSS INDF0,0
  864.         MOVLW 0x00
  865.         MOVWF DISPLAY7
  866.         MOVLW 0xA0
  867.         MOVWF BUZZON
  868.         BSF INTCON,GIE
  869. SND_MENU
  870.         MOVLW 0x01
  871.         MOVWF PCLATH
  872.         CALL RET400
  873.         BTFSC BOTONES,0
  874.         GOTO LETRELIBRE
  875.         MOVLW 0x02
  876.         MOVWF PCLATH
  877.         BTFSC BOTONES,2
  878.         GOTO MENHORA
  879.         BTFSS BOTONES,1
  880.         GOTO SND_MENU
  881.         BTFSC INDF0,0
  882.         GOTO APAGARBUZZ
  883.         BSF INDF0,0
  884.         GOTO GUARDASND
  885. APAGARBUZZ
  886.         BCF INDF0,0
  887. GUARDASND
  888.         MOVLW 0xC0
  889.         MOVWF EEADT
  890.         MOVF INDF0,W
  891.         MOVWF EEWR
  892.         MOVLW 0x0F
  893.         MOVWF PCLATH
  894.         CALL EEPROMESCRITURA
  895.         MOVLW 0x04
  896.         MOVWF PCLATH
  897.         GOTO SNDCHANGE
  898. ;#####################################
  899. CARGAELEMENTOS
  900.         MOVLW 0xA0
  901.         MOVWF FSR0
  902.         MOVLW 0xBB
  903.         MOVWF EEADT
  904.         MOVLW 0x03
  905.         MOVWF TABLETEMP
  906.         CALL LECTURCONST
  907.         MOVLW 0x4B
  908.         MOVWF EEADT
  909.         MOVLW 0x05
  910.         MOVWF TABLETEMP
  911.         CALL LECTURCONST
  912.         MOVLW 0xC0
  913.         MOVWF EEADT
  914.         MOVLW 0xB1
  915.         MOVWF FSR0
  916.         MOVLW 0x05
  917.         MOVWF TABLETEMP
  918.         CALL LECTURCONST
  919.         MOVLW 0xB8
  920.         MOVWF FSR0
  921.         MOVLW 0x04
  922.         MOVWF TABLETEMP
  923.         CALL LECTURCONST
  924.         MOVLW 0xBE
  925.         MOVWF FSR0
  926.         MOVLW 0x02
  927.         MOVWF TABLETEMP
  928.         CALL LECTURCONST
  929.         MOVLW 0x52
  930.         MOVWF FSR0
  931.         MOVLW 0x5B
  932.         MOVWF EEADT
  933.         MOVLW 0x02
  934.         MOVWF TABLETEMP
  935.         CALL LECTURCONST
  936.         RETURN
  937. ;#####################################
  938. ;#################################
  939. LIMPIAR_DISPLAY
  940.         MOVLW 0x22
  941.         MOVWF FSR0
  942. BUCDIS
  943.         CLRF INDF0
  944.         INCF FSR0,F
  945.         MOVLW 0x29
  946.         XORWF FSR0,W
  947.         BTFSS STATUS,Z
  948.         GOTO BUCDIS
  949.         RETURN
  950. ;#####################################
  951. ;#####################################
  952.  
  953.         ORG 0x0604
  954.  
  955. CARGALETREROS
  956.         CLRF TABLETEMP
  957.         MOVLW 0x22
  958.         MOVWF FSR0
  959. CARGA
  960.         BCF INTCON,GIE
  961.         MOVLW 0x0F
  962.         MOVWF PCLATH
  963.         BTFSC LETRVAR,0
  964.         CALL LETRERO
  965.         BTFSC LETRVAR,1
  966.         NOP
  967.         BTFSC LETRVAR,2
  968.         NOP
  969.         BTFSC LETRVAR,3
  970.         NOP
  971.         BTFSC LETRVAR,4
  972.         NOP
  973.         BTFSC LETRVAR,5
  974.         NOP
  975.         BTFSC LETRVAR,6
  976.         NOP
  977.         BTFSC LETRVAR,7
  978.         CALL SNDLETRE
  979.         MOVWF LECTUTEMP
  980.         MOVLW 0x02
  981.         MOVWF PCLATH
  982.         CALL RECORRE
  983.         INCF TABLETEMP,F
  984.         MOVLW 0x07
  985.         SUBWF TABLETEMP,W
  986.         BTFSS STATUS,C
  987.         GOTO CARGA
  988.         CLRF LETRVAR
  989.         CLRF PCLATH
  990.         RETURN
  991.        
  992. RECORRE
  993.         BCF INTCON,GIE
  994.         MOVF DISPLAY6,W
  995.         MOVWF DISPLAY7
  996.         MOVF DISPLAY5,W
  997.         MOVWF DISPLAY6
  998.         MOVF DISPLAY4,W
  999.         MOVWF DISPLAY5
  1000.         MOVF DISPLAY3,W
  1001.         MOVWF DISPLAY4
  1002.         MOVF DISPLAY2,W
  1003.         MOVWF DISPLAY3
  1004.         MOVF DISPLAY1,W
  1005.         MOVWF DISPLAY2
  1006.         MOVF LECTUTEMP,W
  1007.         MOVWF DISPLAY1
  1008.         RETURN
  1009.  
  1010. RECORRER
  1011.         BCF INTCON,GIE
  1012.         MOVF DISPLAY2,W
  1013.         MOVWF DISPLAY1
  1014.         MOVF DISPLAY3,W
  1015.         MOVWF DISPLAY2
  1016.         MOVF DISPLAY4,W
  1017.         MOVWF DISPLAY3
  1018.         MOVF DISPLAY5,W
  1019.         MOVWF DISPLAY4
  1020.         MOVF DISPLAY6,W
  1021.         MOVWF DISPLAY5
  1022.         MOVF DISPLAY7,W
  1023.         MOVWF DISPLAY6
  1024.         MOVF LECTUTEMP,W
  1025.         MOVWF DISPLAY7
  1026.         RETURN
  1027.  
  1028.         ORG 0x0D00
  1029. PREP_INTERRUP
  1030.     CLRF DISPLAY2
  1031.         CLRF DISPLAY3
  1032.         CLRF DISPLAY4
  1033.         CLRF DISPLAY5
  1034.         CLRF DISPLAY6
  1035.         CLRF DISPLAY7
  1036.     BANKSEL PCON
  1037.         BTFSC PCON,7
  1038.         BSF DISPLAY2,3
  1039.         BTFSC PCON,6
  1040.         BSF DISPLAY2,1
  1041.         BTFSS PCON,3
  1042.         BSF DISPLAY3,2
  1043.         BTFSS PCON,2
  1044.         BSF DISPLAY4,0
  1045.     BTFSS PCON,1
  1046.         BSF DISPLAY5,4
  1047.     BTFSS PCON,0
  1048.         BSF DISPLAY6,3
  1049.     BTFSS STATUS,4
  1050.         BSF DISPLAY7,2
  1051.     BTFSS STATUS,3
  1052.         BSF DISPLAY7,4    
  1053.         CLRF BSR
  1054.         CLRF PCLATH
  1055.         RETURN
  1056.  
  1057.         ORG 0x0E00
  1058. ;#########################################
  1059. DECRIPASC
  1060.         MOVLW 0x20
  1061.         XORWF TABLETEMP,W
  1062.         BTFSC STATUS,Z
  1063.         RETLW 0x00
  1064.         MOVLW 0x5B
  1065.         XORWF TABLETEMP,W
  1066.         BTFSC STATUS,Z
  1067.         RETLW 0x08
  1068.         MOVLW 0x2D
  1069.         XORWF TABLETEMP,W
  1070.         BTFSC STATUS,Z
  1071.         RETLW 0x08
  1072.         MOVLW 0x30
  1073.         SUBWF TABLETEMP,F
  1074.         MOVLW 0x2A
  1075.         SUBWF TABLETEMP,W
  1076.         BTFSS STATUS,C
  1077.         GOTO MAYUS
  1078.         MOVLW 0x20
  1079.         SUBWF TABLETEMP,F
  1080. MAYUS
  1081.         MOVLW 0x2A
  1082.         SUBWF TABLETEMP,W
  1083.         BTFSC STATUS,C
  1084.         CLRF TABLETEMP
  1085.         MOVLW 0x0E
  1086.         MOVWF PCLATH
  1087.         MOVF TABLETEMP,W
  1088. NUMEROS
  1089.         ADDWF PCL,F
  1090.         RETLW 0xD7 ;"0"
  1091.         RETLW 0x14 ;"1"
  1092.         RETLW 0xCE ;"2"
  1093.         RETLW 0x5E ;"3"
  1094.         RETLW 0x1D ;"4"
  1095.         RETLW 0x5B ;"5"
  1096.         RETLW 0xDB ;"6"
  1097.         RETLW 0x16 ;"7"
  1098.         RETLW 0xDF ;"8"
  1099.         RETLW 0x5F ;"9"
  1100.         NOP
  1101.         NOP
  1102.         NOP
  1103.         NOP
  1104.         NOP
  1105.         NOP
  1106.         NOP
  1107.         RETLW 0x9F ;"A"
  1108.         RETLW 0xD9 ;"B";
  1109.         RETLW 0xC3 ;"C"
  1110.         RETLW 0xDC ;"D"
  1111.         RETLW 0xCB ;"E"
  1112.         RETLW 0x8B ;"F"
  1113.         RETLW 0xDB ;"G"
  1114.         RETLW 0x9D ;"H"  
  1115.         RETLW 0x10 ;"I"
  1116.         RETLW 0xD4 ;"J"
  1117.         RETLW 0x89 ;"K"
  1118.         RETLW 0xC1 ;"L"
  1119.         RETLW 0x97 ;"M"
  1120.         RETLW 0x98 ;"N"
  1121.         RETLW 0xD8 ;"O"
  1122.         RETLW 0x8F ;"P"
  1123.         RETLW 0x1F ;"Q"
  1124.         RETLW 0x88 ;"R"
  1125.         RETLW 0x5B ;"S"
  1126.         RETLW 0xC9 ;"T"
  1127.         RETLW 0xD0 ;"U"
  1128.         RETLW 0xD5 ;"V"
  1129.         RETLW 0x00 ;"W"
  1130.         RETLW 0x95 ;"X"
  1131.         RETLW 0xCE ;"Z"
  1132. ;#############################
  1133. CONVERTBCD
  1134.         CLRF TEMPBCD
  1135.         CALL BCDCONVERT
  1136.         MOVLW 0x0E
  1137.         MOVWF PCLATH
  1138.     MOVLW 0x0F           ;   b'00001111'  d'015'
  1139.     ANDWF BCDTEMP6,W
  1140.     CALL NUMEROS             ; !!Bank!! 0x002E - 0x082E - 0x102E - 0x182E
  1141.     MOVWF DISPLAY3
  1142.     SWAPF BCDTEMP6,F
  1143.     MOVLW 0x0F           ;   b'00001111'  d'015'
  1144.     ANDWF BCDTEMP6,W
  1145.     CALL NUMEROS             ; !!Bank!! 0x002E - 0x082E - 0x102E - 0x182E
  1146.     MOVWF DISPLAY2
  1147.     SWAPF BCDTEMP5,F
  1148.     MOVLW 0x0F           ;   b'00001111'  d'015'
  1149.     ANDWF BCDTEMP5,W
  1150.     CALL NUMEROS             ; !!Bank!! 0x002E - 0x082E - 0x102E - 0x182E
  1151.     MOVWF DISPLAY4
  1152.     SWAPF BCDTEMP5,F
  1153.     MOVLW 0x0F           ;   b'00001111'  d'015'
  1154.     ANDWF BCDTEMP5,W
  1155.     CALL NUMEROS             ; !!Bank!! 0x002E - 0x082E - 0x102E - 0x182E
  1156.     MOVWF DISPLAY5
  1157.     SWAPF BCDTEMP4,F
  1158.     MOVLW 0x0F           ;   b'00001111'  d'015'
  1159.     ANDWF BCDTEMP4,W
  1160.     CALL NUMEROS             ; !!Bank!! 0x002E - 0x082E - 0x102E - 0x182E
  1161.     MOVWF DISPLAY6
  1162.     SWAPF BCDTEMP4,F
  1163.     MOVLW 0x0F           ;   b'00001111'  d'015'
  1164.     ANDWF BCDTEMP4,W
  1165.     CALL NUMEROS             ; !!Bank!! 0x002E - 0x082E - 0x102E - 0x182E
  1166.     MOVWF DISPLAY7
  1167.     BTFSS ABANDERADOS,1
  1168.     GOTO LIMPIACEROEXTRA ; !!Bank!! 0x04C2 - 0x0CC2 - 0x14C2 - 0x1CC2
  1169.         BSF DISPLAY5,5
  1170. LIMPIACEROEXTRA
  1171.     MOVLW 0xD7           ;   b'11011101'  d'221'
  1172.     SUBWF DISPLAY2,W
  1173.     BTFSS STATUS,Z
  1174.     GOTO QUITAABANDE     ; !!Bank!! 0x04DD - 0x0CDD - 0x14DD - 0x1CDD
  1175.     CLRF DISPLAY2
  1176.         BTFSC ABANDERADOS,6
  1177.         GOTO QUITAABANDE
  1178.     MOVLW 0xD7           ;   b'11011101'  d'221'
  1179.     SUBWF DISPLAY3,W
  1180.     BTFSS STATUS,Z
  1181.     GOTO QUITAABANDE     ; !!Bank!! 0x04DD - 0x0CDD - 0x14DD - 0x1CDD
  1182.     CLRF DISPLAY3
  1183.         BTFSC ABANDERADOS,5
  1184.         GOTO QUITAABANDE
  1185.     MOVLW 0xD7           ;   b'11011101'  d'221'
  1186.     SUBWF DISPLAY4,W
  1187.     BTFSS STATUS,Z
  1188.     GOTO QUITAABANDE     ; !!Bank!! 0x04DD - 0x0CDD - 0x14DD - 0x1CDD
  1189.     CLRF DISPLAY4
  1190.     BTFSC ABANDERADOS,1
  1191.     GOTO QUITAABANDE     ; !!Bank!! 0x04DD - 0x0CDD - 0x14DD - 0x1CDD
  1192.     MOVLW 0xD7           ;   b'11011101'  d'221'
  1193.     SUBWF DISPLAY5,W
  1194.     BTFSS STATUS,Z
  1195.     GOTO QUITAABANDE     ; !!Bank!! 0x04DD - 0x0CDD - 0x14DD - 0x1CDD
  1196.     CLRF DISPLAY5
  1197.     MOVLW 0xD7           ;   b'11011101'  d'221'
  1198.     SUBWF DISPLAY6,W
  1199.     BTFSS STATUS,Z
  1200.     GOTO QUITAABANDE     ; !!Bank!! 0x04DD - 0x0CDD - 0x14DD - 0x1CDD
  1201.     CLRF DISPLAY6
  1202. QUITAABANDE
  1203.         BCF ABANDERADOS,6
  1204.         BCF ABANDERADOS,5
  1205.     BCF ABANDERADOS,1
  1206.     RETURN
  1207. ;###############################
  1208. ;####################################
  1209. BCDCONVERT
  1210.     BCF STATUS,C
  1211.     MOVLW 0x18           ;   b'00011000'  d'024'
  1212.     MOVWF TEMPDECRE
  1213.     CLRF BCDTEMP6
  1214.     CLRF BCDTEMP5
  1215.     CLRF BCDTEMP4
  1216.     CLRF BCDTEMP3
  1217. PASSTROUGHT
  1218.     RLF BCDTEMP0,F
  1219.     RLF BCDTEMP1,F
  1220.     RLF BCDTEMP2,F
  1221.     RLF BCDTEMP4,F
  1222.     RLF BCDTEMP5,F
  1223.     RLF BCDTEMP6,F
  1224.     RLF BCDTEMP3,F
  1225.     DECFSZ TEMPDECRE,F
  1226.     GOTO PASSOUT     ; !!Bank!! 0x07BD - 0x0FBD - 0x17BD - 0x1FBD
  1227.     RETURN
  1228. PASSOUT
  1229.     MOVLW 0x3A           ;   b'00110000'  d'048'  "0"
  1230.     MOVWF FSR0
  1231.     CALL ADICIONBCD      ; !!Bank!! 0x07CA - 0x0FCA - 0x17CA - 0x1FCA
  1232.     MOVLW 0x3B           ;   b'00101111'  d'047'  "/"
  1233.     MOVWF FSR0
  1234.     CALL ADICIONBCD      ; !!Bank!! 0x07CA - 0x0FCA - 0x17CA - 0x1FCA
  1235.     MOVLW 0x3C           ;   b'00101110'  d'046'  "."
  1236.     MOVWF FSR0
  1237.     CALL ADICIONBCD     ; !!Bank!! 0x07CA - 0x0FCA - 0x17CA - 0x1FCA
  1238.     MOVLW 0x39           ;   b'00110001'  d'049'  "1"
  1239.     MOVWF FSR0
  1240.     CALL ADICIONBCD      ; !!Bank!! 0x07CA - 0x0FCA - 0x17CA - 0x1FCA
  1241.     GOTO PASSTROUGHT     ; !!Bank!! 0x07B3 - 0x0FB3 - 0x17B3 - 0x1FB3
  1242. ADICIONBCD
  1243.     MOVLW 0x03           ;   b'00000011'  d'003'
  1244.     ADDWF INDF0,W
  1245.     MOVWF TEMPBCD
  1246.     BTFSC TEMPBCD,3
  1247.     MOVWF INDF0
  1248.     MOVLW 0x30           ;   b'00110000'  d'048'  "0"
  1249.     ADDWF INDF0,W
  1250.     MOVWF TEMPBCD
  1251.     BTFSC TEMPBCD,7
  1252.     MOVWF INDF0
  1253.     RETURN
  1254.  
  1255. DIV16X16:
  1256.     CLRF RESULT0         ; Clear the result
  1257.     CLRF RESULT1         ; Clear the result
  1258.     MOVF DIVISOR0,W       ; Check for zero
  1259.     IORWF DIVISOR1,W     ;
  1260.     BTFSC STATUS,Z        ; Check for zero
  1261.     RETLW 0xFF           ; return 0xFF if illegal
  1262.     MOVLW 0x01               ; Start count at 1
  1263.     MOVWF DIV_COUNT       ; Clear Count
  1264. D1
  1265.         BTFSC DIVISOR1,7      ; High bit set ?
  1266.     GOTO D2              ; Yes then continue
  1267.     INCF DIV_COUNT,F     ; Increment count
  1268.         BCF STATUS,C
  1269.     RLF DIVISOR0,F       ; Shift it left
  1270.         RLF DIVISOR1,F
  1271.     GOTO    D1
  1272. D2
  1273.         BCF STATUS,C
  1274.     RLF RESULT0,F       ; Shift it left
  1275.         RLF RESULT1,F
  1276.         MOVF DIVISOR0,W
  1277.         SUBWF DIVIDENDO0,F
  1278.         MOVF DIVISOR1,W
  1279.         BTFSS STATUS,C
  1280.         INCF DIVISOR1,W
  1281.         SUBWF DIVIDENDO1,F
  1282.     BTFSC   STATUS, C       ; Did it reduce?        
  1283.     GOTO    D3              ; No, so it was less than
  1284.         MOVF DIVISOR0,W
  1285.         ADDWF DIVIDENDO0,F
  1286.         MOVF DIVISOR1,W
  1287.         BTFSC STATUS,C
  1288.         INCF DIVISOR1,W
  1289.         ADDWF DIVIDENDO1,F
  1290.     GOTO    D4              ; Continue the process
  1291. D3
  1292.     BSF     RESULT0,0        ; Yes it did, this gets a 1 bit
  1293. D4
  1294.     DECF    DIV_COUNT,F     ; Decrement N_COUNT
  1295.     BTFSC   STATUS,Z        ; If its not zero then continue
  1296.     RETLW       0x00               ; Else return, as we are done.
  1297.         BCF STATUS,C
  1298.         RRF DIVISOR1,F
  1299.         RRF DIVISOR0,F
  1300.     GOTO    D2              ; Next bit.
  1301.  
  1302. ;################################
  1303.         ORG 0x0F00
  1304. ;################################
  1305. DEBIT  
  1306.     MOVLW   0x07            ; PARA 19200 BAUDIOS / XTAL DE 4 MEGA HZ.
  1307.     MOVWF   CONTBAU
  1308. X02      
  1309.     NOP
  1310.     NOP
  1311.     DECFSZ  CONTBAU,1
  1312.     GOTO    X02
  1313.     RETLW   00H
  1314. ;***************************************************
  1315. TXRUTINA
  1316.         MOVLW 0x0C
  1317.         MOVWF FSR1
  1318.         MOVLW 0x01
  1319.         MOVWF FSR1H             ;UBICACION DE LATB
  1320.         BCF INTCON,GIE
  1321.     BCF      INDF1,1         ; START BITS
  1322.     CALL     DEBIT
  1323.     MOVLW    08H         ; SIETE BITS
  1324.     MOVWF    COUNTBIT    
  1325.         NOP
  1326.         NOP
  1327.     NOP    
  1328. S7      
  1329.         BCF STATUS,C
  1330.         NOP
  1331.         RRF      TXENV,1
  1332.     BTFSS    STATUS,C             ;                      0
  1333.     GOTO     S4                   ; FUE CERO             1
  1334.     GOTO         S3
  1335. S3
  1336.         BSF      INDF1,1              ; FUE UNO              1
  1337.     GOTO     S5                   ;                      2
  1338. S4
  1339.         NOP
  1340.         BCF      INDF1,1              ;                      2
  1341.         GOTO S5
  1342. S5
  1343.     CALL     DEBIT                ; DELAY ENTRE BITS     3              
  1344.     DECFSZ   COUNTBIT,F
  1345.     GOTO     S7  
  1346.         MOVLW 0x02;
  1347.         MOVWF COUNTBIT
  1348. CDELAYTX
  1349.         DECFSZ COUNTBIT,F
  1350.         GOTO CDELAYTX
  1351.         NOP
  1352.     BSF      INDF1,1              ; STOP BITS
  1353.         CLRF BSR
  1354.         CLRF PCLATH
  1355.         BSF INTCON,GIE
  1356.         RETLW 0x00
  1357. ;#########################################
  1358. LETRERO
  1359.         MOVF TABLETEMP,W; 9D D8 C1 9F
  1360.         ADDWF PCL,F
  1361.         RETLW 0x9F
  1362.         RETLW 0xC1
  1363.         RETLW 0xD8
  1364.         RETLW 0x9D
  1365.         RETLW 0x00
  1366.         RETLW 0x00
  1367.         RETLW 0x00
  1368. SNDLETRE
  1369.         MOVF TABLETEMP,W
  1370.         ADDWF PCL,F
  1371.         RETLW 0x00
  1372.         RETLW 0x00
  1373.         RETLW 0x00
  1374.         RETLW 0x00
  1375.         RETLW 0xFC
  1376.         RETLW 0x98
  1377.         RETLW 0x5B
  1378. ;#########################################
  1379. EEPROMESCRITURA
  1380.         CLRF BSR
  1381.         MOVF EEADT,W ;
  1382.         BANKSEL EEADRL ;
  1383.         MOVWF EEADRL ;Data Memory Address to write
  1384.         CLRF BSR
  1385.         MOVF EEWR,W ;
  1386.         BANKSEL EEDATL ;
  1387.         MOVWF EEDATL      ;Data Memory Value to write
  1388.         BCF EECON1, CFGS ;Deselect Configuration space
  1389.         BCF EECON1, EEPGD ;Point to DATA memory
  1390.         BSF EECON1, WREN ;Enable writes
  1391.         MOVLW 0x55 ;
  1392.         MOVWF EECON2 ;Write 55h
  1393.         MOVLW 0xAA ;
  1394.         MOVWF EECON2 ;Write AAh
  1395.         BSF EECON1, WR ;Set WR bit to begin write
  1396.         BCF EECON1, WREN ;Disable writes
  1397. EEWRWAIT
  1398.         BTFSC EECON1, WR ;Wait for write to complete
  1399.         GOTO EEWRWAIT ;Done    
  1400.         CALL EEPROMLECTURA
  1401.         XORWF EEWR,W
  1402.         BTFSS STATUS,Z
  1403.         GOTO EEPROMESCRITURA
  1404.         CLRF PCLATH
  1405.         RETURN
  1406. ;###################################
  1407. EEPROMLECTURA
  1408.         CLRF BSR
  1409.         MOVF EEADT,W
  1410.         BANKSEL EEADRL
  1411.         MOVWF EEADRL
  1412.         BCF EECON1, CFGS
  1413.         BCF EECON1, EEPGD
  1414.         BSF EECON1, RD
  1415.         MOVF EEDATL, W
  1416.         CLRF BSR
  1417.         MOVWF INDF0
  1418.         CLRF PCLATH
  1419.         RETURN
  1420. ;################################################
  1421.     End
« Última modificación: 28 de Julio de 2015, 22:54:44 por escalera »
?????

Desconectado escalera

  • PIC10
  • *
  • Mensajes: 18
Re: Reset 16F1827 MCLR input y 74LS145
« Respuesta #1 en: 26 de Julio de 2015, 18:30:19 »
En este link pueden ver la falla en fisico al momento de oprimir un boton, estoy desesperado  :(, En proteus si funciona en fisico, no


Este es el esquematico que logre rescatar, estan junto con el zip adjunto en el mensaje principal

« Última modificación: 27 de Julio de 2015, 13:40:42 por escalera »
?????

Desconectado escalera

  • PIC10
  • *
  • Mensajes: 18
Re: Reset 16F1827 MCLR input y 74LS145
« Respuesta #2 en: 26 de Julio de 2015, 19:29:17 »
Olvide mencionar que el maestro puso su codigo y funciono sin modificacion alguna al hardware, probe su pic en la tablilla que me dio y funcionaba bien, asi que no es falla de hardware :/, ya lo rectifique
?????

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Reset 16F1827 MCLR input y 74LS145
« Respuesta #3 en: 26 de Julio de 2015, 20:38:39 »
Código: ASM
  1. __config _CONFIG1, 0x0E04
  2. ;_FCMEN_OFF  & _IESO_OFF & _CLKOUTEN_OFF & _BOREN_ON &
  3. ;_CPD_ON & _CP_ON & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF &
  4. ;_FOSC_INTOSC
  5.     __config _CONFIG2, 0x1CFC;1CFF
  6. ;_LVP_OFF &  _WRT_ON & _BORV_19 & _STVREN_OFF & _PLLEN_OFF &
  7. ;_DEBUG_OFF ;0x3EFF

Lo tenes comentado a los fuses

Código: ASM
  1. __config _CONFIG1, 0x0E04 _FCMEN_OFF  & _IESO_OFF & _CLKOUTEN_OFF & _BOREN_ON & _CPD_ON & _CP_ON & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF & _FOSC_INTOSC
  2.     __config _CONFIG2, 0x1CFC _LVP_OFF & _WRT_ON & _BORV_19 & _STVREN_OFF & _PLLEN_OFF & _DEBUG_OFF

Sino el MPLAB X tiene un generador de fuses simple que podes usar y crear los tuyos

Desconectado escalera

  • PIC10
  • *
  • Mensajes: 18
Re: Reset 16F1827 MCLR input y 74LS145
« Respuesta #4 en: 26 de Julio de 2015, 21:36:33 »
Si, se supone que esos fuses comentados los puse en valor hexadecimal (tomando en cuenta la datasheet)
Config 1 con 0x0E04
Config 2 con 0x1CFC
porque al poner
Código: ASM
  1. __config _CONFIG1, _FCMEN_OFF  & _IESO_OFF & _CLKOUTEN_OFF & _BOREN_ON & _CPD_ON & _CP_ON & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF & _FOSC_INTOSC
  2.     __config _CONFIG2, _LVP_OFF &_WRT_ALL & _BORV_19 & _STVREN_OFF & _PLLEN_OFF; & _DEBUG_OFF

Me marca este error, por eso opte por poner el valor en hexadecimal y el maestro nos dio el valor hexadecimal de su codigo (el cual compilo y quemo frente a nosotros, lo probo y funciono), los fuses los acomode en base al valor hexadecimal y lo que decia la datasheet, por eso los comente

Código: [Seleccionar]
Message[303] C:\USERS\CARLOS ISRAEL ORTA\DESKTOP\PROYECTOS\COMPACTARIF\SOFFARIX\PROYECTO\PROYECTO.ASM 3 : Program word too large.  Truncated to core size. (CE04)
Message[303] C:\USERS\CARLOS ISRAEL ORTA\DESKTOP\PROYECTOS\COMPACTARIF\SOFFARIX\PROYECTO\PROYECTO.ASM 7 : Program word too large.  Truncated to core size. (BCFC)
Message[303] C:\USERS\CARLOS ISRAEL ORTA\DESKTOP\PROYECTOS\COMPACTARIF\SOFFARIX\PROYECTO\PROYECTO.ASM 1421 : Program word too large.  Truncated to core size. (CE04)
Message[303] C:\USERS\CARLOS ISRAEL ORTA\DESKTOP\PROYECTOS\COMPACTARIF\SOFFARIX\PROYECTO\PROYECTO.ASM 1421 : Program word too large.  Truncated to core size. (BCFC)

Crees que el MPLAB X me pueda servir para encontrar mas facil el error?, el MPLAB X casi no lo uso porque no le encontre para hacer y compilar codigo en ASM, solo lo vi para C y en C no puedo hacerlo :/
« Última modificación: 27 de Julio de 2015, 13:35:46 por escalera »
?????

Desconectado escalera

  • PIC10
  • *
  • Mensajes: 18
Re: Reset 16F1827 MCLR input y 74LS145
« Respuesta #5 en: 26 de Julio de 2015, 22:31:44 »
Afectara que programe el pic con el PicKit 2?
?????

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Reset 16F1827 MCLR input y 74LS145
« Respuesta #6 en: 26 de Julio de 2015, 23:08:30 »
Citar
Crees que el MPLAB X me pueda servir para encontrar mas facil el error?, el MPLAB X casi no lo uso porque no le encontre para hacer y compilar codigo en ASM, solo lo vi para C y en C no puedo hacerlo :/

El MPLAB X es el IDE y viene por default para ser usado con ASM, es decir viene con el compilador mpasm, si ademas de ASM queres programar en C, instalas XC8 o XC16  (segun los pics que necesites programar) y de ahi podes elegir entre todos esos, por ejemplo yo tengo proyectos en ASM, y proyectos en C.

Genere los fuses con el MPLAB X, son un poco distinto algunos valores, pero cambie algunos bits como los de proteccion de codigo y datos,

Código: ASM
  1. ; PIC16F1827 Configuration Bit Settings
  2.  
  3. ; ASM source line config statements
  4.  
  5. #include "p16F1827.inc"
  6.  
  7. ; CONFIG1
  8. ; __config 0xEF84
  9.  __CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_ON
  10. ; CONFIG2
  11. ; __config 0xDCFF
  12.  __CONFIG _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_OFF & _BORV_LO & _LVP_OFF

Proba con esos. (Espero que el .inc de este sea igual que el .inc del tuyo, sino ponele los valores que aparecen comentados arriba

Código: ASM
  1. __CONFIG _CONFIG1, 0xEF84
  2.  __CONFIG _CONFIG2, 0xDCFF

Si ya no funciona entonces hay otra cosa que esta cambiando y puede ser el programa.
Tambien resulta interesante que te aparece 2 veces el mensaje sobre los config 2 veces en ves de una. como si los tuvieras escritos en 2 lugares.
Y los mensajes dice nomas que el valor es muy grande y que va a truncar ( es decir a acomodar al valor de la palabra de configuracion )

Y no afecta en nada con que lo programes

Desconectado escalera

  • PIC10
  • *
  • Mensajes: 18
Re: Reset 16F1827 MCLR input y 74LS145
« Respuesta #7 en: 26 de Julio de 2015, 23:35:27 »
al poner la config

Código: ASM
  1. __CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_ON
  2.  __CONFIG _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_OFF & _BORV_LO & _LVP_OFF

Me marca:

Código: [Seleccionar]
Message[303] C:\USERS\CARLOS ISRAEL ORTA\DESKTOP\PROYECTOS\COMPACTARIF\SOFFARIX\SOFFARIX.ASM 6 : Program word too large.  Truncated to core size. (EF84)
Message[303] C:\USERS\CARLOS ISRAEL ORTA\DESKTOP\PROYECTOS\COMPACTARIF\SOFFARIX\SOFFARIX.ASM 9 : Program word too large.  Truncated to core size. (BCFF)
Message[303] C:\USERS\CARLOS ISRAEL ORTA\DESKTOP\PROYECTOS\COMPACTARIF\SOFFARIX\SOFFARIX.ASM 2410 : Program word too large.  Truncated to core size. (EF84)
Message[303] C:\USERS\CARLOS ISRAEL ORTA\DESKTOP\PROYECTOS\COMPACTARIF\SOFFARIX\SOFFARIX.ASM 2410 : Program word too large.  Truncated to core size. (BCFF)

Al seleccionar la linea

Código: [Seleccionar]
Message[303] C:\USERS\CARLOS ISRAEL ORTA\DESKTOP\PROYECTOS\COMPACTARIF\SOFFARIX\SOFFARIX.ASM 2410 : Program word too large.  Truncated to core size. (EF84)
Message[303] C:\USERS\CARLOS ISRAEL ORTA\DESKTOP\PROYECTOS\COMPACTARIF\SOFFARIX\SOFFARIX.ASM 2410 : Program word too large.  Truncated to core size. (BCFF)

En el codigo me muestra la instruccion END al final del codigo, no se a que se deba, es la primera vez que en un codigo me sale repetido eso

Y al poner la config

Código: ASM
  1. __CONFIG _CONFIG1, 0xEF84
  2.  __CONFIG _CONFIG2, 0xDCFF

Y continua persistiendo el problema, supongo que si es el codigo, el problema es que no encuentro error y en proteus funciona :/

Llegue a pensar que tal vez un desbordamiento de pila pero no de habilita la bandera y un error por PCLATH no me ha aparecido tampoco

Supongo para no entrar en conflicto dejare los fuses en Hex para evitar el warning
« Última modificación: 27 de Julio de 2015, 12:27:56 por escalera »
?????

Desconectado escalera

  • PIC10
  • *
  • Mensajes: 18
Re: Reset 16F1827 MCLR input y 74LS145
« Respuesta #8 en: 28 de Julio de 2015, 23:05:45 »
Se aceptan comentarios del tipo "Sabes que?, no entiendo para nada tu código, explicalo ó bien comenta el código que posteaste y vuelve a resubir los archivos bien comentados" o no se, lo que necesiten saber.

A grandes rasgos, es un prototipo, el principal es el PIC16 y el secundario el PIC12, el PIC16, maneja las funciones de los botones, los displays, lectura y conteo de pulsaciones, mostrar datos de la EEPROM y la comunicación serie al exterior (recepción serial de un PC), el PIC16, pregunta la hora al PIC12 mediante RS232 a 19200 Baudios (la comunicación entre PIC's, ya la implemente), el PIC12 pregunta la hora mediante BurstMode del DS1302 y dependiendo la petición dice si es AM o PM (1 o 0) y también pasa la trama del BurstMode para que el PIC16 la muestre en Display.

Lo anterior son solo para el segundo botón y parte de la función principal, el botón primero mostrara un mensaje, el botón tercero permitirá escribir mensajes en el EEPROM y el botón cuarto mostrara las pulsaciones asi como los datos contenidos en la EEPROM, eso es todo lo que hará y lo único que necesito es que funcionen los botones sin que se resete, lo demás me es súper fácil, pero los botones son la dificultad, el poder leerlo (aplicarle GND para leer cual fue presionado mediante la combinación de 74LS145) y hacer la función correspondiente, espero puedan orientarme a saber que estoy haciendo mal
« Última modificación: 29 de Julio de 2015, 01:43:34 por escalera »
?????

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Reset 16F1827 MCLR input y 74LS145
« Respuesta #9 en: 29 de Julio de 2015, 04:49:39 »
Acabo de ver el video. Y recien le doy importancia al tema del circuito.

Hace una cosa, hacete un programa simple y trata de probar si funciona el MCLR, si los fuses estan bien entonces el MCLR no te va a afectar en nada.
En el programa hace que RB3,RB4 y RB5 sean salidas y con un 0, de esa forma se habilita un solo boton (salida 0 del 74ls145). Encende un led de algun display. y procede a tocar los botones (mantenelos presionados), uno solo funcionaria nomas, si alguno apaga los leds significa que tiene el MCLR habilitado y no funciona como pin de entrada. Si no se apaga el led significa que funciona como entrada/salida y es problema de programacion
Podes tambien tratar de leer el PIC luego de grabado mirando los fuses, para ver si estan activos o no.

Pero para separar si es realmente eso o si es el programa.

PD: No confio en el Proteus

Desconectado escalera

  • PIC10
  • *
  • Mensajes: 18
Re: Reset 16F1827 MCLR input y 74LS145
« Respuesta #10 en: 02 de Agosto de 2015, 00:32:54 »
Hice lo que me mencionaste y al quemarlo al micro ocurre lo siguiente:

1) Oprimo el botón y si hace lo que le puse, pero en ocasiones, al oprimirlo solo se ve un destello como si hubiera cambiado de segmento pero muy muy rápido aun y cuando esta validado que el botón se oprima y luego se suelte parece ser que a veces al oprimirlo hace el intercambio tan rápido que enciende el otro segmento y luego se queda donde estaba como si se hubiera oprimido el botón 2 veces cuando solo se oprimió una.
2) Se supone un solo display debería estar activo y uno se encuentra encendiendo en fantasma; no lo había notado hasta que hice esta prueba y por lo lo que veo ese display prende cuando RB3 y RB5 están en HIGH y RB4 en LOW, no se si algo estoy poniendo mal al poner los registros, se supone que todas las funciones de este micro por defecto están deshabilitadas y las funciones principales son TTL I/O, pero parece ser que algo esta afectando.
3) Efectivamente ningún otro botón esta en funcionamiento solo el botón 4 y los demás (y el mismo botón 4) no ocasionan reset ni nada por el estilo, oh bien eso es lo que parece.

Esta es la imagen de lo que ocurre (un display extra encendiendo muy tenue):


Este es el codigo de la prueba en base a lo que me dijiste:

Código: ASM
  1. processor 16F1827
  2.     #include <P16F1827.INC>
  3.     __config _CONFIG1, 0x0E04
  4. ;_FCMEN_OFF  & _IESO_OFF & _CLKOUTEN_OFF & _BOREN_ON &
  5. ;_CPD_ON & _CP_ON & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF &
  6. ;_FOSC_INTOSC
  7.     __config _CONFIG2, 0x1CFC;1CFF
  8. ;_LVP_OFF &  _WRT_ON & _BORV_19 & _STVREN_OFF & _PLLEN_OFF &
  9. ;_DEBUG_OFF ;0x3EFF
  10.  
  11. ;    __idlocs 0x0214
  12.  
  13.         ERRORLEVEL -302
  14.         ERRORLEVEL -306
  15.  
  16.  
  17. ; Program
  18.  
  19.     Org 0x0000
  20.  
  21. ;   Reset-Vector
  22. ORIGEN
  23.         GOTO INICIO
  24.         ;##########################################    
  25.         NOP
  26.         NOP
  27.         NOP
  28. INTERRUP
  29.         BANKSEL PORTA   ;En caso de interrupcion apagaria el display y se quedaria infinitamente aqui
  30.         CLRF PORTA        ;esto lo puse porque no sabia si al oprimir el boton se metia en la interrupcion o no lo se
  31.         BANKSEL LATA
  32.         CLRF LATA
  33.         GOTO INTERRUP
  34. INICIO
  35.         CLRF BSR
  36.         CLRF FSR0
  37.         CLRF PORTA
  38.         CLRF PORTB              ;Se borran puertos
  39.         MOVLB 0x01
  40.         MOVLW 0x6A
  41.         MOVWF OSCCON    ;Se selecciona oscilador a 4 Mhz
  42.         MOVLB 0x03
  43.         CLRF ANSELA
  44.         CLRF ANSELB             ;Ninguna entrada analoga
  45.         MOVLB 0x02
  46.         CLRF CM1CON1
  47.         CLRF CM1CON0
  48.         CLRF CM2CON1
  49.         CLRF CM2CON0            ;Se borran los registros para comparadores
  50.         BANKSEL CCP1CON
  51.         CLRF CCP1CON
  52.         CLRF CCP2CON
  53.         BANKSEL CCP3CON
  54.         CLRF CCP3CON
  55.         CLRF CCP4CON         ;Se deslindan los timers de los comparadores
  56.         MOVLB 0x01
  57.         MOVLW 0x02;07           ;Lectora de switch por flanco bajada y
  58.         MOVWF OPTION_REG        ;Preescales 1:8 retardo cada 2ms aprox.
  59.         MOVLW 0x03      
  60.         MOVWF TRISB             ;RB0, RB1 como entradas (RB1 RX USART)
  61.         MOVLW 0x20      
  62.         MOVWF TRISA             ;RA5/MCLR Como entrada
  63.         BANKSEL APFCON0
  64.         MOVLW 0x46
  65.         MOVWF APFCON0       ;RB1 como RX y RB2 como TX, lo demás no me sirve y no lo uso
  66.         CLRF APFCON1
  67.         BANKSEL WPUA
  68.         MOVLW 0x00;20
  69.         MOVWF WPUA                      ;PullUps Activos en RB
  70.         MOVLW 0xFF
  71.         MOVWF WPUB
  72.         BANKSEL MDCON
  73.         CLRF MDCON
  74.         MOVLW 0x8A
  75.         MOVWF MDSRC
  76.         MOVLW 0x80          ;Cheque la datasheet para ver si el Modulador era el que encendía RB3 y RB5 pero aunque los desactive sigue encendiendo y no responde el boton
  77.         MOVWF MDCARH
  78.         MOVWF MDCARL
  79.         CLRF BSR       ; !!Bank Register-Bank(0/1)-Select
  80.         MOVLW 0x00;70           ;Interrupciones externas, timer y periferias desactivado
  81.         MOVWF INTCON    ;activas
  82.         BANKSEL LATB
  83.         MOVLW 0x07              ;RB0, RB1, RB2, ACTIVOS todo lo demas en LOW
  84.         MOVWF LATB
  85.         MOVLW 0x04              ;RA2 ACTIVO (SEGMENTO DISPLAY)    El 0x14 enciende el numero 1, por lo que no encendí un segmento para prueba
  86.         MOVWF LATA
  87.         CLRF BSR
  88. LOOP
  89.         BTFSC PORTA,5
  90.         GOTO LOOP
  91. PRESION
  92.         BTFSS PORTA,5
  93.         GOTO PRESION
  94.         BANKSEL LATA       ;Si se oprimió y soltó el botón cambia el segmento
  95.         BTFSS LATA,4
  96.         GOTO ENCENDER
  97.         BSF LATA,2
  98.         BCF LATA,4
  99.         CLRF BSR
  100.         GOTO LOOP
  101. ENCENDER
  102.         BCF LATA,2
  103.         BSF LATA,4
  104.         CLRF BSR
  105.         GOTO LOOP
  106.  
  107.         END

Cabe destacar (aunque no sea muy confiable) en proteus RA6 y RA7 se quedan el HIGH no entiendo porque en proteus los enciende y en FÍSICO no
« Última modificación: 02 de Agosto de 2015, 13:06:14 por escalera »
?????

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Reset 16F1827 MCLR input y 74LS145
« Respuesta #11 en: 02 de Agosto de 2015, 21:48:04 »
Bueno entonces se descarta que sea tema de los FUSES, ya que NO produce el reset?

1, es por el rebote, a veces no es un escalon, sino que se producen varios escalones con la presion de 1 sola ves, esto con un delay y se soluciona.

3, Podes probar otra cosa (que recien recuerdo):

PCON: POWER CONTROL REGISTER

RMCLR: MCLR Reset Flag bit
1 = A MCLR Reset has not occurred or set to ‘1’ by firmware
0 = A MCLR Reset has occurred (set to ‘0’ in hardware when a MCLR Reset occurs)

Ese te va a indicar si ocurrio algo o no, al momento del reset inicia con un 1, asi que si esta en 0, significa que se produjo el reset por el MCLR.
Esto seria lo ideal para saber a ciencia cierta si es que ocurre el reset por el MCLR o si finalmente es problema de Hardware o Software.

Aunque si me decis que en un momento quedo como si se hubiera presionado 2 veces, entonces no se esta reseteando, ya que si se reseteara, nunca llegaria a ese punto. Al menos creo yo.

Para eso tu programa bastaria con un:

LOOP
   BTFSS PCON,RMCLR
        BSF    LED       ;Aca enciendo un led, si esta en 0 se encenderia este
   GOTO LOOP

Ya con eso sabrias que se reseteo, si no se enciende el led tocando el switch entonces no se produjo un reset por MCLR
« Última modificación: 03 de Agosto de 2015, 06:10:58 por KILLERJC »