• Martes 5 de Noviembre de 2024, 09:28

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Gokuden

Páginas: [1]
1
ASM (Ensamblador) / I2c Y Pic. Controla Memoria Y Perifericos.
« en: Domingo 10 de Abril de 2005, 21:20 »
hola. aqui les dejo unas rutinas que hice esta semana y funcionana a la perfeccion. junto con un ejemplo. estas rutinas estan en asm y son para los micros de microhip que posean el modulo MSSP i2c. para cualquier, probe la misma rutina en un 877a, y en un 88 y todo bien.

COSAS PARA QUE TE FUNCIONE, debes colocar el  pto PORTC como entrada, aunque no he probado solo poniendo los pines que involucran al i2c.

saben que el i2c, lleva un start, stop, envio de byte y recepcion de byte, entonces habra una rutina para cada uno y las iras llamando dependiendo de como sea la comunicacion con el periferico.

S_STAR  es la rutina de start
S_STOP es la rutina de stop
S_BYTE  es la rutina de enviar byte
R_BYTE es la rutina de recivir byte.


;-----------------INICIO, CONFIGURACION DE PTOS Y I2C-------------------
                CALL        BANK_1              ; TE CAMBIAS AL BANCO 1
                MOVLW   0FFH
   MOVWF   TRISC
   MOVLW   B'10000000'
   MOVWF   SSPSTAT
   MOVLW   .9
   MOVWF   SSPADD
   CALL   BANK_0             ; TE CAMBIAS AL BANCO 0
   MOVLW   B'00101000'
   MOVWF   SSPCON
   MOVLW   .0



;-------------RUTINAS I2C-------------------
S_START   BCF   PIR1,SSPIF   ; CON ACK
   CALL   BANK_1
   BSF   SSPCON2,SEN
   CALL   BANK_0
START_W   BTFSS   PIR1,SSPIF
   GOTO   START_W
   RETURN



S_STOP   BCF   PIR1,SSPIF
   CALL   BANK_1
   BSF   SSPCON2,PEN
   CALL   BANK_0
STOP_W   BTFSS   PIR1,SSPIF
   GOTO   STOP_W
   RETURN



S_BYTE   BCF   PIR1,SSPIF
   MOVWF   SSPBUF
SEND_B   BTFSS   PIR1,SSPIF
   GOTO   SEND_B
   RETURN


R_BYTE   BCF   PIR1,SSPIF  ;PARA GRABAR
   CALL   BANK_1
   BSF   SSPCON2,RCEN
   CALL   BANK_0
READ_W   BTFSS   PIR1,SSPIF
   GOTO   READ_W
   BCF   PIR1,SSPIF
   CALL   BANK_1
   BCF   SSPCON2,ACKDT
   BSF   SSPCON2,ACKEN
   CALL   BANK_0
ACK_W   BTFSS   PIR1,SSPIF
   GOTO   ACK_W
   MOVF   SSPBUF,W
   RETURN


;---------------------------BANCOS------------------
BANK_0   BCF   STATUS,RP0
   BCF   STATUS,RP1
   RETURN

BANK_1   BSF   STATUS,RP0
   BCF   STATUS,RP1
   RETURN

BANK_2   BCF   STATUS,RP0
   BSF   STATUS,RP1
   RETURN
   
BANK_3   BSF   STATUS,RP0
   BSF   STATUS,RP1
   RETURN






EJEMPLO

vamos a usar una memoria i2c 24c32, o 64, 128, 16, como deseen.
la conectamos a la patitas SCK y SDA con sus respectivas resistencias de pull up a Vcc de 1k.


para grabar en la memoria, primero ponemos un start, luego le enviamos un dato que es siempre el mismo que es el de indetificacion, es 10100000, donde el ultimo bit significa leer o grabar. revisar pdf. luego le mandamos la direccion alta y luego a direccion baja de donde deseamos grabar ya que tiene 11bits de direccionamiento esta memoria. y luego le mandamos un byte que es el dato para grabar, si le sigues mandando dato, el automaticamente se incrementa de direccion y va grababdo el dato, al final le mandas un stop. entonces. el programa seria asi..


                CALL   S_START      ;start   
   MOVLW   B'10100000'             ; byte identificador a W
   CALL   S_BYTE                     ; envio de byte en W, que es identificador
   MOVLW   .0                              ; direccion alta
   CALL   S_BYTE                    ; envio de direccion alta
   MOVLW   .0                            ; direccion baja
   CALL   S_BYTE                   ; envio de direccion baja
                MOVLW   .233                        ; dato a grabar en posicion 000h
   CALL   S_BYTE                   ; envio de dato a grabar
   CALL   S_STOP                  ; stop, si deseas, mandas mas datos antes de parar

2
ASM (Ensamblador) / Pantalla Nokia 3310 Mas Pic Mas Asm
« en: Domingo 10 de Abril de 2005, 21:02 »
para facilitarle la vida, aqui les coloco todo lo necesario para hacer funcionar esta pantalla,estas rutinas fueron ya probadas por mi u otros y funcionan a la perfeccion  y aqui se las traigo algo ams ordenano.

primero tienen que decarar la variable afisaj o cambiarle el nombre , como deseen, y declarar los bit como aparecen ah i pero pueden cambia rlas asignaciones de bit y pto. luego llaman primero la rutina INILCD que es la que configura la lcd y luego ya puede mandar datos a ella poniendo el dato en acumulador o afisaj y llamando la rutina LCCMD.







LPH7779, LPH7677 Pins (front view)

 
      pin1     V+
      pin2     Sclk
      pin3     Sda
      pin4     DorC
      pin5     Cs
      pin6     Gnd
      pin7     Vout(DC/DC voltage converter)
      pin8     Reset



;--------------DELCALRACIONES DE BIT----------------
#DEFINE sclk   PORTB,0   ; Rb6 is serial clock line   
#DEFINE sdta   PORTB,1   ; Rb7 is input serial data line
#DEFINE dorc   PORTB,2   ; Ra0 is select register (H = Data, L =Command)
#DEFINE rset   PORTB,3   ; Ra1 is reset (L = Enable)
#DEFINE tens   PORTB,4   ; Ra2 is Vcmd LCD power supply on / off
#DEFINE enab   PORTB,5   ; Ra3 is Chip select (L = Enable)


   


;--------------INICIACION DE LCD----------------

INILCD   Call   pause   
   bsf   dorc            
   bsf   enab   
   bsf   tens   
   call    lcres   
   movlw    21H   
   movwf    afisaj
   call   lccmd   
   movlw    .197   
   movwf   afisaj      
   call   lccmd   
   movlw    13H   
   movwf    afisaj
   call   lccmd
   movlw    20H   
   movwf    afisaj
   call   lccmd   
   movlw    09H   
   movwf    afisaj
   call   cbild
   call   lccmd
   call   pause
   call   pause
   call   pause
   call   pause
   movlw    08H   
   movwf    afisaj
   call   lccmd   
   call   pause
   call   pause
   movlw    0CH   
   movwf    afisaj
   call   lccmd   
   movlw    40H   
   movwf    afisaj
   call   lccmd   
   movlw    80H   
   movwf    afisaj
   call   lccmd   
                return

;*****************************************************************
;      RUTINAS DATO, COMANDO Y RESETEO LCD NOKIA
;*****************************************************************
lcdta   bsf   dorc   ; bytes are stored in the display data ram, address
         ; incremented automatically
   bcf   enab   ; chip enabled
   call   varsa   
   bsf   enab   ; chip disabled
   retlw   00

lccmd   bcf   dorc   ; byte is a command it is read with the eight SCLK
   bcf   enab   ; chip enabled
   call   varsa   
   bsf   enab   ; chip disabled
   retlw   00   

lcres   bcf   rset   ; reset enabled
   call   pause
   bsf   rset    ; reset disabled
   retlw   00

;*****************************************************************
;      RUTINAS VARIAS DE LA LCD NOKIA
;*****************************************************************
varsa   bcf   sclk       
   btfsc    afisaj,7   ;bit0(MSB) if bit 7 of afisaj = 1 then sdta=1
   bsf   sdta   ; serial data line is high
   btfss    afisaj,7   ; if bit 7 of afisaj = 0 then sdta=0
   bcf   sdta   ; serial data line is low
   nop      ; can be replaced with a nop if a higher speed it is
   bsf   sclk   ; positive edge
   nop      ; can be replaced with a nop if a higher speed it is
   bcf   sclk   ; negative edge
   btfsc    afisaj,6   ;bit1 if bit 6 of afisaj = 1 then sdta=1
   bsf   sdta   ; serial data line is high
   btfss    afisaj,6; if bit 6 of afisaj = 0 then sdta=0
   bcf   sdta   ; serial data line is low
   nop
   bsf   sclk   ; positive edge
   nop
   bcf   sclk   ; negative edge
   btfsc    afisaj,5   ;bit2
   bsf   sdta   ; serial data line is high
   btfss    afisaj,5
   bcf   sdta   ; serial data line is low
   nop
   bsf   sclk   ; positive edge
   nop
   bcf   sclk   ; negative edge
   btfsc    afisaj,4   ;bit3
   bsf   sdta   ; serial data line is high
   btfss    afisaj,4
   bcf   sdta   ; serial data line is low
   nop
   bsf   sclk   ; positive edge
   nop
   bcf   sclk   ; negative edge
   btfsc    afisaj,3   ;bit4
   bsf   sdta   ; serial data line is high
   btfss    afisaj,3
   bcf   sdta   ; serial data line is low
   nop
   bsf   sclk   ; positive edge
   nop
   bcf   sclk   ; negative edge
   btfsc    afisaj,2   ;bit5
   bsf   sdta   ; serial data line is high
   btfss    afisaj,2
   bcf   sdta   ; serial data line is low
   nop
   bsf   sclk   ; positive edge
   nop
   bcf   sclk   ; negative edge
   btfsc    afisaj,1   ;bit6
   bsf   sdta   ; serial data line is high
   btfss    afisaj,1
   bcf   sdta   ; serial data line is low
   nop
   bsf   sclk   ; positive edge
   nop
   bcf   sclk   ; negative edge
   btfsc    afisaj,0   ;bit7(LSB)
   bsf   sdta   ; serial data line is high
   btfss    afisaj,0
   bcf   sdta   ; serial data line is low
   nop
   bsf   sclk   ; positive edge
   nop
   bcf   sclk   ; negative edge
   retlw   00

cbild   bcf   sdta   ; serial data line is low a null value it is send to
   movlw   .6   ; set the maximal value for Y axe
   movwf   COUNT3
c3   movlw   .84   ; set the maximal value for X axe
   movwf   COUNT1
c1   movlw   .8  ; for a serial transmission of one byte , a number of 8 clock
   movwf   COUNT2
   bsf   dorc      ; null value bytes are stored in the display
            ; incremented automatically
   bcf   enab      ; chip enabled  
c2   bcf   sclk      ; negative edge ;at this stage sdta=0 and
   nop         ; no operation
   nop         ; no operation
   bsf   sclk      ; positive edge
   decfsz  COUNT2   
   goto    c2
   bsf   enab      ; chip disabled       
   decfsz  COUNT1   
   goto    c1      
   decfsz  COUNT3    
   goto  c3          
   retlw    00   

;*****************************************************************
;      RETARDOS DE LA LCD NOKIA
;*****************************************************************
pause   movlw   .7      
   movwf   COUNT3   
d3   movlw   .50
   movwf   COUNT1
d1   movlw   .250   
   movwf   COUNT2
d2   decfsz  COUNT2   
   goto    d2      
   decfsz  COUNT1   
   goto    d1      
   decfsz  COUNT3    
   goto  d3          
   retlw    00

halta   movlw   20H      
   movwf   COUNT1   
g1   movlw   40H      
   movwf   COUNT2   
g2   decfsz  COUNT2   
   goto    g2      
   decfsz  COUNT1   
   goto    g1      
   retlw   00

3
Microcontroladores ATMEL / Aprende Arquitectura 8051
« en: Viernes 8 de Abril de 2005, 18:36 »
hola.

aqui les dejo un rar con un completo paquete en español de funcionamiento e instrucciones, registros de estos micros.



les recomiendo que si desean comenzar, usen un 89c51 o 52. si desean tambien, puedo poner aqui una introduccion de como se programa para que vean como se programa ... junto con un compilador...


http://usuarios.lycos.es/gokudenelavismo/temporal/pdf 51 todo.rar

Páginas: [1]