Autor Tema: algun programita basico pero bien basico para el 18f452  (Leído 3081 veces)

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

Desconectado BINARIO

  • PIC16
  • ***
  • Mensajes: 156
algun programita basico pero bien basico para el 18f452
« en: 30 de Marzo de 2007, 12:06:11 »
Hola gente en esta ocasion los molesta, para ver si alguien por ahi tiene un programa tipo prender dos leds o variar la frecuencia de oscilacion de un led, variando una entrada analogica, es que estoy empezando a ver a este 18f452, pero la verdad es que no puedo sacar andando los programas que antes corria en el 16f877, hize algunas modificaciones pero no pasa nada, si alguien tiene un programita basico como esto espero pueda compartirlo conmigo le estare muy agradecido.
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100 101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00 00011111111 0011111 011110001111111111 1011111111101100000000

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: algun programita basico pero bien basico para el 18f452
« Respuesta #1 en: 30 de Marzo de 2007, 17:15:21 »
hola aamigo dejame buscar mis ejemplos q hice para el 18f4550 q tb funkarian en tu pic18, junto con kedutpic (el se compro un 18f2550) vamos a reventar ese pic con asm y c18. tened paciencia y seria interesante q postees tus codigos q no funcionan para ver el error q habras cometido (apuesto q es un detalle minimo)  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: algun programita basico pero bien basico para el 18f452
« Respuesta #2 en: 30 de Marzo de 2007, 21:39:36 »
Binario, acá te dejo un link de un ejemplo simple para un PIC 18F452 de un eco de usart.

ECO USART para PIC18F452

Te servirá como punto de partida.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado BINARIO

  • PIC16
  • ***
  • Mensajes: 156
Re: algun programita basico pero bien basico para el 18f452
« Respuesta #3 en: 03 de Abril de 2007, 10:08:23 »
BUENO ESTE LO USO PARA EL 16f877

Es bien pavo, y lo paso al 18f452 cambiando el archivo list y el include pero las patas no parecen responder, lo voy a simular hoy en proteus a ve rque pasa.

list       p=16f877
radix      HEX
include       "p16f877.inc"
org         0x00
goto        INICIO
org         0x05         

INICIO         bsf      STATUS, RP0
            bcf      STATUS, RP1
            movlw   b'00000110'
            movwf   TRISA
            clrf   TRISB
            movlw   b'00000110'
            movwf   ADCON1
            bcf      STATUS, RP0
            clrf   PORTB
            clrf   PORTA

BUCLE         movf   PORTA, W
            btfss   STATUS, Z
            goto   APAGAR
            goto   ENCENDER

APAGAR         clrf   PORTB
            goto   BUCLE

ENCENDER      movlw   0xFF
            movwf   PORTB
            goto   BUCLE
            end
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100 101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00 00011111111 0011111 011110001111111111 1011111111101100000000

Desconectado BINARIO

  • PIC16
  • ***
  • Mensajes: 156
Re: algun programita basico pero bien basico para el 18f452
« Respuesta #4 en: 03 de Abril de 2007, 10:49:44 »
Nada gente, en el Isis tampoco cambian los estados de las patas 34 y 33 cuando vario las entradas de las patas 3 y 4, que es como esta configurado el programa. Varian los estados de estas entradas pero ni noticias en la salida, alguna idea, porque por aca se estan agotando, verificare nuevamente el programa a lo mejor omiti algun registro.  :-/ :-/ :-/
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100 101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00 00011111111 0011111 011110001111111111 1011111111101100000000

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: algun programita basico pero bien basico para el 18f452
« Respuesta #5 en: 03 de Abril de 2007, 12:01:26 »
Hola binario

prueba quitando las lineas

bsf      STATUS, RPn

y configura directamente al trisX

y por supuesto cambia el inc por el del 18f452
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: algun programita basico pero bien basico para el 18f452
« Respuesta #6 en: 03 de Abril de 2007, 12:13:14 »
Código: ASM
  1. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  2. ;************************************************************************************************
  3. ;
  4. ;
  5. ;
  6.                 LIST            P=18F4520
  7.                 INCLUDE         "P18F4520.INC"
  8.                 CONFIG          OSC = HS,FCMEN = OFF,IESO = OFF
  9.                 CONFIG          PWRT = OFF,BOREN = OFF,BORV = 3
  10.                 CONFIG          WDT = OFF
  11.                 CONFIG          MCLRE = ON,LPT1OSC = OFF,PBADEN = OFF
  12.                 CONFIG          CCP2MX = PORTC,STVREN = OFF,LVP = OFF
  13.                 CONFIG          XINST = OFF,DEBUG = OFF
  14.                 CONFIG          CP0 = ON,CP1 = ON,CP2 = ON,CP3 = ON,CPB = ON,CPD = ON
  15.                 CONFIG          WRT0 = ON,WRT1 = ON,WRT2 = ON,WRT3 = ON,WRTB = ON,WRTC = ON,WRTD = ON
  16.                 CONFIG          EBTR0 = ON,EBTR1 = ON,EBTR2 = ON,EBTR3 = ON,EBTRB = ON
  17.                 ERRORLEVEL      -302
  18.                 RADIX           HEX
  19. ;************************************************************************************************
  20. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  21. ;
  22.                 CBLOCK  100
  23. CT_TIEMPO
  24.                 ENDC
  25. ;************************************************************************************************
  26. ;************************************************************************************************
  27.  
  28.                 ORG             0X0000
  29.                 GOTO    INICIO
  30.                 ORG             0X0020
  31.  
  32. ;************************************************************************************************
  33. ;************************************************************************************************
  34. ;
  35. INICIO  CLRF    ADCON0
  36.                 MOVLW   0X0F
  37.                 MOVWF   ADCON1         
  38.                 MOVLW   0X07
  39.                 MOVWF   CMCON
  40.                 CLRF    TRISA
  41.                 CLRF    TRISB
  42.                 CLRF    TRISC
  43.                 CLRF    TRISD
  44.                 CLRF    TRISE
  45.                 MOVLW   0XC7
  46.                 MOVWF   T0CON
  47.                 CLRF    LATA
  48.                 CLRF    LATB
  49.                 CLRF    LATC
  50.                 CLRF    LATD
  51. ;************************************************************************************************
  52. SECUENCIA
  53.                 SETF    LATA
  54.                 SETF    LATB
  55.                 SETF    LATC
  56.                 SETF    LATD
  57.                 SETF    LATE
  58.                 MOVLW   D'8'
  59.                 CALL    TIEMPO
  60.                 CLRF    LATA
  61.                 CLRF    LATB
  62.                 CLRF    LATC
  63.                 CLRF    LATD
  64.                 CLRF    LATE
  65.                 MOVLW   D'8'
  66.                 CALL    TIEMPO
  67.                 GOTO    SECUENCIA
  68. ;************************************************************************************************
  69. ;************************************************************************************************
  70. TIEMPO  MOVWF   CT_TIEMPO
  71.                 CLRF    TMR0L
  72.                 BTFSS   INTCON,TMR0IF
  73.                 GOTO    $-2
  74.                 BCF             INTCON,TMR0IF
  75.                 DECFSZ  CT_TIEMPO,F
  76.                 GOTO    TIEMPO+2
  77.                 RETURN
  78. ;************************************************************************************************
  79. ;************************************************************************************************
  80.                 END

este ejemplo se hace oscilar todo los pines de todos los puertos a 1/2 segundo.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: algun programita basico pero bien basico para el 18f452
« Respuesta #7 en: 03 de Abril de 2007, 12:22:19 »
Código: ASM
  1. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  2. ;************************************************************************************************
  3. ;
  4. ;
  5. ;
  6.                 LIST            P=18F4520
  7.                 INCLUDE         "P18F4520.INC"
  8.                 CONFIG          OSC = HS,FCMEN = OFF,IESO = OFF
  9.                 CONFIG          PWRT = OFF,BOREN = OFF,BORV = 3
  10.                 CONFIG          WDT = OFF
  11.                 CONFIG          MCLRE = ON,LPT1OSC = OFF,PBADEN = OFF
  12.                 CONFIG          CCP2MX = PORTC,STVREN = OFF,LVP = OFF
  13.                 CONFIG          XINST = OFF,DEBUG = OFF
  14.                 CONFIG          CP0 = ON,CP1 = ON,CP2 = ON,CP3 = ON,CPB = ON,CPD = ON
  15.                 CONFIG          WRT0 = ON,WRT1 = ON,WRT2 = ON,WRT3 = ON,WRTB = ON,WRTC = ON,WRTD = ON
  16.                 CONFIG          EBTR0 = ON,EBTR1 = ON,EBTR2 = ON,EBTR3 = ON,EBTRB = ON
  17.                 ERRORLEVEL      -302
  18.                 RADIX           HEX
  19. ;************************************************************************************************
  20. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  21. ;
  22.                 CBLOCK  100
  23. SEGUNDO
  24. MINUTO 
  25. HORA                   
  26. DIA
  27. MES        
  28. AÑO            
  29. CT_TIEMPO
  30. BYTE_DE_CONTROL
  31. CONTENIDO
  32. DIRECCION
  33. DIRECCION_H                     ;almacena la direccion de la EEPROM a acceder
  34. DIRECCION_L                     ;almacena la direccion de la EEPROM a acceder
  35. TXBUF                           ;posicion que alamcena los byytes a enviar
  36. FALLA                           ;tipo de error
  37. TEMP
  38. TEMP2
  39.                 ENDC
  40. ;************************************************************************************************
  41. ;************************************************************************************************
  42.  
  43.                 ORG             0X0000
  44.                 GOTO    INICIO
  45.                 ORG             0X0020
  46.  
  47. ;************************************************************************************************
  48. ;************************************************************************************************
  49. ;
  50. INICIO  CLRF    ADCON0
  51.                 MOVLW   0X0F
  52.                 MOVWF   ADCON1         
  53.                 MOVLW   0X07
  54.                 MOVWF   CMCON
  55.                 CLRF    TRISA
  56.                 MOVLW   0X01
  57.                 MOVWF   TRISB
  58.                 CLRF    TRISD
  59.                 CLRF    TRISE
  60.                 MOVLW   0XC7
  61.                 MOVWF   T0CON
  62.                 MOVLW   0X01
  63.                 MOVWF   BSR
  64. ;**********************
  65. INICIAR_I2C
  66.                 MOVLW   0X18
  67.                 MOVWF   TRISC;SDA Y SCL CMO ENTRADAS
  68.                 MOVLW   0X0C
  69.                 MOVWF   SSPADD;PARA 308KHZ CON OSC 4MHZ
  70.                 MOVLW   0X80
  71.                 MOVWF   SSPSTAT
  72.                 MOVLW   0X28
  73.                 MOVWF   SSPCON1
  74.                 CLRF    SSPCON2
  75.                 CALL    I2C_LIBERAR
  76. ;**********************
  77. INICIAR_DS1307
  78.                 MOVLW   0X15            ;MOVF   SEGUNDOS,W
  79.         MOVWF   CONTENIDO
  80.         CLRF    DIRECCION   ;CARGO SEGUNDOS 00
  81.         CALL    ESCRIBIR_DS1307
  82.         MOVLW   0X08            ;MOVF   MINUTOS,W
  83.         MOVWF   CONTENIDO
  84.         INCF    DIRECCION,F
  85.         CALL    ESCRIBIR_DS1307
  86.         MOVLW   0X04            ;MOVF   HORAS,W
  87.         MOVWF   CONTENIDO
  88.         INCF    DIRECCION,F
  89.         CALL    ESCRIBIR_DS1307
  90.         INCF    DIRECCION,F
  91.         MOVLW   0X03            ;CARGO DIA lunes
  92.         MOVWF   CONTENIDO
  93.         CALL    ESCRIBIR_DS1307
  94.         INCF    DIRECCION,F
  95.         MOVLW   0X07        ;CARGO DATO DEL DIA 02
  96.         MOVWF   CONTENIDO
  97.         CALL    ESCRIBIR_DS1307
  98.         INCF    DIRECCION,F
  99.         MOVLW   0X03        ;CARGO MES FEBRERO
  100.         MOVWF   CONTENIDO
  101.         CALL    ESCRIBIR_DS1307
  102.         INCF    DIRECCION,F
  103.         MOVLW   0X81        ;CARGO AÑO 2005
  104.         MOVWF   CONTENIDO
  105.         CALL    ESCRIBIR_DS1307
  106.         INCF    DIRECCION,F
  107.         MOVLW   0X10            ;ENCIENDO EL OSCILADOR A 1Hz
  108.         MOVWF   CONTENIDO
  109.         CALL    ESCRIBIR_DS1307
  110. ;************************************************************************************************
  111.                 CLRF    LATA
  112.                 CLRF    LATB
  113.                 CLRF    LATC
  114.                 CLRF    LATD
  115.                 CLRF    LATE
  116. ;************************************************************************************************
  117.                 MOVLW   D'16'
  118.                 CALL    TIEMPO
  119. ESPERA  BTFSS   PORTB,0
  120.                 GOTO    $-2
  121.  
  122.                 CLRF    DIRECCION
  123.                 CALL    LEER_DS1307
  124.                 MOVF    CONTENIDO,W,1
  125.                 MOVWF   SEGUNDO
  126.  
  127.                 INCF    DIRECCION,F
  128.                 CALL    LEER_DS1307
  129.                 MOVF    CONTENIDO,W,1
  130.                 MOVWF   MINUTO
  131.  
  132.                 INCF    DIRECCION,F
  133.                 CALL    LEER_DS1307
  134.                 MOVF    CONTENIDO,W,1
  135.                 MOVWF   HORA
  136.  
  137.                 INCF    DIRECCION,F
  138.                 INCF    DIRECCION,F
  139.                 CALL    LEER_DS1307
  140.                 MOVF    CONTENIDO,W,1
  141.                 MOVWF   DIA
  142.  
  143.                 INCF    DIRECCION,F
  144.                 CALL    LEER_DS1307
  145.                 MOVF    CONTENIDO,W,1
  146.                 MOVWF   MES
  147.  
  148.                 INCF    DIRECCION,F
  149.                 CALL    LEER_DS1307
  150.                 MOVF    CONTENIDO,W,1
  151.                 MOVWF   AÑO
  152.  
  153.                 BTFSC   PORTB,0
  154.                 GOTO    $-2
  155.                 GOTO    ESPERA
  156. ;
  157. ;************************************************************************************************
  158. ;               Rutina de Tiempo General
  159. ;************************************************************************************************
  160. ;
  161. TIEMPO  MOVWF   CT_TIEMPO
  162.                 CLRF    TMR0L
  163.                 BTFSS   INTCON,TMR0IF
  164.                 GOTO    $-2
  165.                 BCF             INTCON,TMR0IF
  166.                 DECFSZ  CT_TIEMPO,F
  167.                 GOTO    TIEMPO+2
  168.                 RETURN
  169. ;
  170. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  171. ;************************************************************************************************
  172. ;
  173. ;
  174. ;               RUTINAS PARA EL MANEJO DEL MODULO I2C EN MODO MASTER
  175. ;
  176. ;
  177. ;************************************************************************************************
  178. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  179. ;
  180. I2C_LIBERAR
  181.                 BTFSC   SSPSTAT,R_W
  182.                 GOTO    $-2
  183.                 MOVF    SSPCON2,W,0
  184.                 ANDLW   0X1F
  185.                 BTFSS   STATUS,Z
  186.                 GOTO    $-6
  187.                 RETURN
  188. ;************************************************************************************************
  189. ;               Escribir al DS1307
  190. ;************************************************************************************************
  191. ESCRIBIR_DS1307
  192.         CALL    BIT_START
  193.                 MOVLW   0XD0
  194.                 CALL    I2C_TX
  195.                 BTFSS   FALLA,0
  196.                 GOTO    FALLA_ESCRIBIR_DS1307
  197.                 MOVF    DIRECCION,W,1
  198.                 CALL    I2C_TX
  199.                 BTFSS   FALLA,0
  200.                 GOTO    FALLA_ESCRIBIR_DS1307
  201.                 MOVF    CONTENIDO,W,1
  202.                 CALL    I2C_TX
  203.                 BTFSS   FALLA,0
  204.                 GOTO    FALLA_ESCRIBIR_DS1307
  205.                 CALL    BIT_STOP
  206.                 RETURN
  207. FALLA_ESCRIBIR_DS1307
  208.                 CALL    BIT_STOP
  209.                 GOTO    ESCRIBIR_DS1307        
  210. ;************************************************************************************************
  211. ;               Leer del DS1307
  212. ;************************************************************************************************
  213. LEER_DS1307
  214.         CALL    BIT_START
  215.                 MOVLW   0XD0;ESCRITURA
  216.                 CALL    I2C_TX
  217.                 BTFSS   FALLA,0
  218.                 GOTO    FALLA_ESCRIBIR_DS1307
  219.                 MOVF    DIRECCION,W,1
  220.                 CALL    I2C_TX
  221.                 BTFSS   FALLA,0
  222.                 GOTO    FALLA_ESCRIBIR_DS1307
  223.                 CALL    BIT_RESTART
  224.                 MOVLW   0XD1;LECTURA
  225.                 CALL    I2C_TX
  226.                 BTFSS   FALLA,0
  227.                 GOTO    FALLA_ESCRIBIR_DS1307
  228.                 CALL    I2C_RX
  229.                 CALL    BIT_NACK
  230.                 CALL    BIT_STOP
  231.                 RETURN
  232. FALLA_LEER_DS1307
  233.                 CALL    BIT_STOP
  234.                 GOTO    ESCRIBIR_DS1307        
  235. ;************************************************************************************************
  236. I2C_GRABAR_PAGINA
  237.                 CALL    BIT_START                       ;llamada a subprograma que genera y comprueba bit de start.
  238.                 MOVF    BYTE_DE_CONTROL,W,1     ;cargamos en TXBUF la direccion de la EEPROM como esclavo que sera lo
  239.                 CALL    I2C_TX                          ;entonces el direccionamiento sera: 1010 000 0
  240.                 BTFSS   FALLA,0                         ;donde el ultimo bit es el 0 de escritura
  241.                 RETURN
  242.                 MOVF    DIRECCION_H,W,1
  243.                 CALL    I2C_TX
  244.                 BTFSS   FALLA,0
  245.                 RETURN
  246.                 MOVF    DIRECCION_L,W,1
  247.                 CALL    I2C_TX
  248.                 RETURN
  249.  
  250. I2C_GRABAR
  251.                 CALL    BIT_START                       ;llamada a subprograma que genera y comprueba bit de start.
  252.                 MOVF    BYTE_DE_CONTROL,W,1     ;cargamos en TXBUF la direccion de la EEPROM como esclavo que sera lo
  253.                 CALL    I2C_TX                          ;entonces el direccionamiento sera: 1010 000 0
  254.                 BTFSS   FALLA,0                         ;donde el ultimo bit es el 0 de escritura
  255.                 RETURN
  256.                 MOVF    DIRECCION_H,W,1
  257.                 CALL    I2C_TX
  258.                 BTFSS   FALLA,0
  259.                 RETURN
  260.                 MOVF    DIRECCION_L,W,1
  261.                 CALL    I2C_TX
  262.                 BTFSS   FALLA,0
  263.                 RETURN
  264.                 NOP
  265.                 NOP
  266.                 NOP
  267.                 NOP
  268.                 NOP
  269.                 NOP
  270.                 NOP
  271.                 NOP
  272.                 NOP
  273.                 NOP
  274.                 NOP
  275.                 NOP
  276.                 NOP
  277.                 NOP
  278.                 NOP
  279.                 NOP
  280.                 NOP
  281.                 NOP
  282.                 MOVF    CONTENIDO,W,1
  283.                 CALL    I2C_TX
  284.                 BTFSS   FALLA,0
  285.                 RETURN
  286.                 CALL    BIT_STOP
  287.                 RETURN
  288. ;************************************************************************************************
  289. I2C_LEER
  290.                 CALL    BIT_START
  291.  
  292.                 MOVF    BYTE_DE_CONTROL,W,1
  293.                 CALL    I2C_TX
  294.                 BTFSS   FALLA,0
  295.                 RETURN
  296.  
  297.                 MOVF    DIRECCION_H,W,1
  298.                 CALL    I2C_TX
  299.                 BTFSS   FALLA,0
  300.                 RETURN
  301.                 MOVF    DIRECCION_L,W,1
  302.                 CALL    I2C_TX
  303.                 BTFSS   FALLA,0
  304.                 RETURN
  305.        
  306.                 CALL    BIT_RESTART
  307.  
  308.                 MOVF    BYTE_DE_CONTROL,W,1
  309.                 IORLW   0X01;LECTURA
  310.                 CALL    I2C_TX
  311.                 BTFSS   FALLA,0
  312.                 RETURN
  313.  
  314.                 CALL    I2C_RX
  315.                 CALL    BIT_NACK
  316.                 CALL    BIT_STOP
  317.                 RETURN
  318. ;************************************************************************************************
  319. ;************************************************************************************************
  320. BIT_START
  321.                 CALL    I2C_LIBERAR
  322.                 BSF             SSPCON2,SEN
  323.                 BTFSC   SSPCON2,SEN
  324.                 GOTO    $-2;1
  325.                 BTFSS   PIR1,SSPIF
  326.                 GOTO    $-2;1
  327.                 BCF             PIR1,SSPIF
  328.                 RETURN
  329. ;************************************************************************************************
  330. BIT_RESTART
  331.                 BSF             SSPCON2,RSEN
  332.                 BTFSC   SSPCON2,RSEN
  333.                 GOTO    $-2;$-1
  334.                 RETURN
  335. ;************************************************************************************************
  336. BIT_ACK BCF             SSPCON2,ACKDT
  337.                 BSF             SSPCON2,ACKEN
  338.                 RETURN
  339. ;************************************************************************************************
  340. BIT_NACK
  341.                 BSF             SSPCON2,ACKDT
  342.                 BSF             SSPCON2,ACKEN
  343.                 BTFSC   SSPCON2,ACKEN
  344.                 GOTO    $-2
  345.                 RETURN
  346. ;************************************************************************************************
  347. BIT_STOP
  348.                 BSF             SSPCON2,PEN
  349.                 BTFSC   SSPCON2,PEN
  350.         GOTO    $-2
  351.                 CLRF    TEMP
  352.                 DECFSZ  TEMP,F
  353.                 GOTO    $-2
  354.                 RETURN
  355. ;************************************************************************************************
  356. ;************************************************************************************************
  357. I2C_TX  BCF             FALLA,0
  358.         MOVWF   SSPBUF         ;Carga el valor a enviar en el buffer y se inicia el envio de los datos
  359.         BTFSC   SSPSTAT,R_W   ;Continua con el programa solo si es completada la transmision
  360.         GOTO    $-2  
  361.                 NOP
  362.                 BTFSS   SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK
  363.                 GOTO    TX_CONFIRMADO
  364.                 BSF             SSPCON2,PEN
  365.                 CALL    I2C_LIBERAR
  366.                 RETURN
  367. TX_CONFIRMADO
  368.                 BTFSS   PIR1,SSPIF;NOVENO CLOCK
  369.                 GOTO    $-2
  370.                 BCF             PIR1,SSPIF
  371.                 BSF             FALLA,0
  372.                 CALL    I2C_LIBERAR
  373.                 RETURN
  374. ;************************************************************************************************
  375. I2C_RX  ;CALL   I2C_LIBERAR
  376.                 BSF             SSPCON2,RCEN
  377.                 BTFSC   SSPCON2,RCEN
  378.                 GOTO    $-2;$-1
  379.                 BTFSS   SSPSTAT,BF
  380.                 GOTO    $-2;$-1
  381.                 MOVF    SSPBUF,W,0
  382.                 MOVWF   CONTENIDO
  383.                 RETURN
  384. ;************************************************************************************************
  385. ;************************************************************************************************
  386. ;************************************************************************************************
  387. ;************************************************************************************************
  388.                 END

en este se maneja el famoso DS1307 con protocolo i2c, aca te deja la foto del esquematico en proteus


no he tenido tiempo de verificarlos en la realidad, asi que si puedes nos confirmas si funcionan  :-) jijij como en el simulador
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado BINARIO

  • PIC16
  • ***
  • Mensajes: 156
No soy mas bolu porque I can`t
« Respuesta #8 en: 03 de Abril de 2007, 12:51:20 »
Bueno Gente gracias por los ejemplos toca estudiarlos un momento, mas que interesantes, con respecto al programa basicon que postee anteriormente, hubo un error en una instruccion aunque tambien el erro estaba en la paginacion no entiendo porque no se puede paginar la memoria del 18f452, bueno me tocara estudiarlo, le saque el STATUS, RP0 cambie la instruccion erronea y salio andando


aca esta el susodicho

LIST      P=18f452
RADIX      HEX
INCLUDE      "P18F452.INC"

ORG         0X0000
GOTO      INICIO
ORG         0x00A0

INICIO      
         clrf   TRISB
         movlw   b'00000110'
         movwf   ADCON1
         movlw   b'00000110'
         movwf   TRISA
         clrf   PORTB
         clrf   PORTA
         
BUCLE                      movf   PORTA, W ; aqui le erre y puse movwf como veran mas arriba
         btfss   STATUS, Z
         goto   APAGAR
         goto   ENCENDER
         
APAGAR      clrf   PORTB
         goto   BUCLE

ENCENDER   movlw   0XFF
         movwf   PORTB
         goto   BUCLE

         END

Bueno a esto me referia con programa basico-idiota bien para principiants, esto es una nand que controla dos leds ubicados en RB0 y RB1, controlados por las entradas digitales RB1 y RB2, porque use estas entradas, qe se yo me gusto. Bueno espero que se ade provecho para los mas nuevos, y me pondre con los que han publicado aqui les cuento tambien que en el Proteus hay ejemplos a rollete asi que a darle nomas.
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100 101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00 00011111111 0011111 011110001111111111 1011111111101100000000

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: algun programita basico pero bien basico para el 18f452
« Respuesta #9 en: 03 de Abril de 2007, 12:59:35 »
es que en la familia 18 no hace falta hacer paginación, todo se puede ver como un bloque entero donde estan todos los SFR (registros de funciones especiales)

el siguiente ensayo que puedes hacer es con los ejemplos que posteó micro_cadaver

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado BINARIO

  • PIC16
  • ***
  • Mensajes: 156
Re: algun programita basico pero bien basico para el 18f452
« Respuesta #10 en: 03 de Abril de 2007, 14:45:11 »
Bueno palitroque gracias por la data y tambien a micro cadaver y maunix, aunque el ejemplo de maunix se me antoja mas compliado, me pongo con esto y posteo lo que vaya sacando, eso si creo que en la brevedad voy a migrar a C, porque los codigos se vuelven enormes y el compilador de C es mejor con assembler que yo, por lo de optimizar el programa en tamaño o en velocidad. jeje bueno nos vemos a la brevedad :-/ :-/ :-/ :-/
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100 101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00 00011111111 0011111 011110001111111111 1011111111101100000000