Autor Tema: MicroChip CURSILLO (Empezar desde cero)  (Leído 29839 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #120 en: 02 de Agosto de 2004, 07:16:00 »
Cierto,se me escapó el detalle que valor depende directamente del valor que contenga el puerto A.
En cuanto al tipo de la variable,si lo miramos desde un punto de vista práctico,"valor" puede considerarse tanto con signo como sin él,dependerá del tratamiento que posteriormente se le vaya a dar;pero por definición es una variable entera con signo.
Para un entero sin signo se usa el tipo predefinido unsigned int.
Un saludo

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #121 en: 02 de Agosto de 2004, 10:17:00 »
Algunos datos para el compilador de CCS:

- int --> De 0 a 255

- signed int --> De -128 a 127

- long --> De 0 a 65535

- signed long --> De -32768 a 32767

Desconectado Chile_irc

  • PIC12
  • **
  • Mensajes: 66
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #122 en: 04 de Agosto de 2004, 09:21:00 »
Gente
con respecto a lo de trabajar en C

Se acordo  de trabajar en este foro por lo menos en ASM

cosa que se puede verificar, echando unas miradas en las paginas anteriores, acuerdo que deberia segun yo ser respetado, sin animos de ofender a nadie si no mas bien de seguir una linea que hemos venido trabajando con el resto, por lo menos ami me ha servido mucho y creo que a otros tambien.

Espero poder seguir discutiendo esta inquietud.
una abrazo y saludos


Chile_irc

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #123 en: 04 de Agosto de 2004, 10:10:00 »
Tienes más razón que un Santo, esto ha sido un paréntesis C_eraniego hasta que vuelva (n) el profe (s) de ensamblador.

El que lo desee que habrá un Microcursillo en C.

Desconectado YF-21

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 185
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #124 en: 04 de Agosto de 2004, 22:35:00 »
OK, OK, entendí la indirecta, es una pena porque creo que al final de cuentas ensamblador es más lio pero bueno ...
esperaré el curso de C

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #125 en: 05 de Agosto de 2004, 00:39:00 »
Pásate por el subFORO de C, ya ha sido abierto el microcursillo de C.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #126 en: 05 de Agosto de 2004, 18:04:00 »
Estuvo medio rudo lo de no querer que hubiera clases de C aquí en este thread, pero que bueno que ya abrieron el otro.

Realmente el poder de los pic se encuentra cuando uno programa en C, ya que el límite de las 35 op-codes hace un poco difícil y tardado escribir una operación en ensamblador, por ejemplo: una multiplicación.

En los AVR (microcontroladores de Atmel), un simple código de operación ya hace la operación, pero aquí hay que inventar una subrutina sólo para ello.

C simplifica todo ello y pues ya que uno agarró la onda en ASM, pues es bueno brincar a C.

Desconectado Chile_irc

  • PIC12
  • **
  • Mensajes: 66
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #127 en: 07 de Agosto de 2004, 08:01:00 »
jajajja

Perdon por lo rudo no fue mi intencion si no de poder seguir aprendiendo ASM ya que de C no se nada y tener que aprenderlo desde 0 ufff aun me queda mucho..

ademas ya aprendi a manejar su resto ASM por lo que me gustaria seguir en esa linea y me imagino que el resto que lo estaba haciendo tambien..

pido disculpas si fui muy directo jejej  


Un saludos

Chile_irc.

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #128 en: 14 de Agosto de 2004, 11:49:00 »
Este cursillo hace mucho que esta parado. Que se ha echo de los profesores de asm???

Seria una pena que esto se quedara asi...

Salu2

Desconectado andyros

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 70
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #129 en: 14 de Agosto de 2004, 14:33:00 »
Hola,  por mi parte, me he tomado las vacaciones en plan relax ,y mañana salgo de viaje hacia las Canarias a relajarme 2 semanitas mas , en volver seguiremos , y sacaremos el curso adelante

UN SALUDO Y FELICES VACACIONES






ANDRES DESDE ALICANTE  ------------------CANARIAS
                                                         


 

Desconectado Chile_irc

  • PIC12
  • **
  • Mensajes: 66
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #130 en: 24 de Agosto de 2004, 08:38:00 »
Hola Gente uff he tenido mucho trabajo y no he podido seguir con nada...  pero igual si no esta el profe que algun alumno continue con alguna subrrutina para comenzar a ver algunos retardos..




Saludos

Chile_irc

Desconectado toc-toc

  • PIC12
  • **
  • Mensajes: 57
Re: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #131 en: 12 de Febrero de 2007, 19:40:28 »
Hola! Antes que nada un saludo a todos.

 He estado leyendo todos los 'post' y he comprobado que el cursillo realmente se ha convertido
en Microcursillo (por lo corto que ha quedado), acaso se han atragantado con el retardo. Parecía
que todo iba bien hasta ese momento. Después hubo quien lo intercepto con el 'C', posteriormente
las vacaciones y por fin el olvido?

 No he podido resistirme a participar y he de decir que sigo aprendiendo de todos los foros que
leo y respecto del tema, la idea de usar dos o tres bytes me parece correcta aunque deberíamos
usar unos registros donde guardar los valores a introducir, para luego usando lazos o bucles
anidados conseguir el retardo deseado.

 No se si me he explicado. De todas formas, si en unos días no hay respuesta a este 'post' ya
pasaré el código (para el F84A) al que me refiero y luego ya veremos si la gente se 'engancha'.

 Un saludo de Vicente.

Incluso la época de agobio es digna de respeto.
Porque, no la ha creado el hombre, sino la naturaleza que puede ser dura pero jamas absurda.

Desconectado toc-toc

  • PIC12
  • **
  • Mensajes: 57
Re: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #132 en: 16 de Febrero de 2007, 22:16:48 »
 Hola! Saludos a todos los que lean este hilo.

 En mi anterior post, dije de presentar un listado del código en ASM de un retardo que es
lo que que se postulaba en su momento (hace algunos meses), por lo tanto voy a cumplir
con lo dicho y sin más, este es el código que propongo:

Código: [Seleccionar]
; Produce un retardo por un tiempo controlado, Xtal de 4 MHz.
; Se requieren unos registros para guardar el valor del retardo en milisegundos
; El valor Alto en 1Ah y el valor Bajo 1B
; Para observar los resultados encendemos un LED y despues del retardo lo apagamos
;
LIST P=PIC16F84
#INCLUDE <P16F84.INC> ;Inclusion de fichero de etiquetas
__CONFIG      h'3FF7' ; __CONFIG  _CP_OFF & _WDT_ON & _PWRTE_ON & _RC_OSC
errorlevel      -302 ; Elimina avisos

;Definicion de equ (igualdades)
PCL equ 0x02 ;Contador de programa
STATUS equ 0x03 ;Registro del estado Aritmético de la ALU
PORTA equ 0x05 ;Puerto A
PORTB equ 0x06 ;Puerto B
OPTION_REG  equ 0x81 ;Registro de Configuración multiple
TRISA equ 0x85 ;Registro de configuración del Puerto A
TRISB equ 0x86 ;Registro de configuración del Puerto B
INTCON equ 0x0B ;Registro para el control de Interrupciones

reg0 equ 0x20 ; 19h
reg1 equ 0x21 ; 1A
reg2 equ 0x22 ; 1B
reg3 equ 0x23 ; 1C
reg4 equ 0x24 ; 1D

#define BANK1 bsf STATUS,5 ;Macro para abreviar el BANCO 1
#define BANK0 bcf STATUS,5 ;Macro para abreviar el BANCO 0

Org 0 ;Posición 0 de la Memoria de Programa (apuntador)
goto INICIO ;Va a la etiqueta INICIO

;*****************************************************************************
; EN ESTA PARTE DEL PROGRAMA SE ATIENDE LA INTERRUPCION
;QUE EN NUESTRO CASO ES POR FLANCO DE BAJADA EN EL PIN RB0/INT
;*****************************************************************************
Org 4   ;Vector de Interrupción, cuando sucede la interrupción

Inicio: BSF 03,5 ;Ir a page1 para ajustar los puertos
MOVLW 00h ;Cargar 00 en W             
MOVWF 05h ;Hacer salida todas las líneas RA       
MOVWF 06h ;Hacer salida todas las líneas RB   
BCF 03,5 ;Ir a Page0 para seguir programa

CLRF PORTB ; ponemos a 0 portb

MOVLW .1 ; enciende el LED
MOVWF PORTB     ;
BCF STATUS,C     ; Asegura que ingrese un 0 en PORTB,7
COMF PORTB,1
CALL pausa ; salta a retardo
GOTO $-2 ; va a inicio

; Cargamos los registros 1A y 1B 

pausa MOVLW 00     ; cargamos con 00
MOVWF 1Ah        ; el archivo 1Ah, geg1
MOVLW 02 ; cargamos con 2
MOVWF 1Bh        ; el archivo 1Bh, reg2
CALL Pausa_mS     ; Saltamos a la subrutina de tiempo
CALL led    ;saltamos a LED para que avise.

; Hemos cargado en 1Ah y 1Bh los valores de los milisegundos que queremos
; en este caso 00 + 02 = 2 mS. Para 15 mS, sería: en 1Ah = 0A y en 1Bh = 05

; Empieza rutina de retardo.
Pausa_mS
MOVF 1B,0   ;Move 1B to W , reg2
MOVWF 19h ;Move W to 19h reg0
Lazo1 MOVLW F8       ;Put 248 cycles in W
MOVWF 1C ;Put 248 into 1C , reg3
Lazo2 MOVLW 0B      ;Put 11 cycles in W
MOVWF 1D ;Put 11 into 1D , reg4
Lazo3 DECFSZ 1D,1     ; reg4
GOTO Lazo3
DECFSZ 1C,1 ; reg3
GOTO Lazo2
DECFSZ 19h,1 ; reg0
GOTO Lazo1
INCF 1A,1    ; reg1
DECFSZ 1A,1 ; reg1
GOTO Lazo4
RETURN            ;Return to Main etc

Lazo4 MOVLW 64h ;Put 100 loops into W
MOVWF 1B   ;Load 1B with 100 reg2
Lazo5 MOVLW F8 ;Put 248 cycles in W
MOVWF 1C   ;Put 248 into 1C reg3
Lazo6 MOVLW 0B ;Put 11 cycles in W
MOVWF 1D   ;Put 11 into 1D reg4
Lazo7 DECFSZ 1D,1 ; reg4
GOTO Lazo7
DECFSZ 1C,1   ; reg3
GOTO Lazo6
DECFSZ 1B,1   ; reg2
GOTO Lazo5
DECFSZ 1A,1   ; reg1
GOTO Lazo4

RETURN              ;Return a Principal etc 

END

 Es un poco largo, sin duda, sin embargo espero que le sirva a mucha gente que anda buscando
una forma sencilla de hacer un retardo de un número de milisegundos muy concreto. Por este
motivo lo muestro en este hilo.

 Saludos de Vicente.



Incluso la época de agobio es digna de respeto.
Porque, no la ha creado el hombre, sino la naturaleza que puede ser dura pero jamas absurda.

Desconectado toc-toc

  • PIC12
  • **
  • Mensajes: 57
Re: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #133 en: 29 de Marzo de 2007, 15:32:06 »
 Que hay, saludos a todos.

 Aquí les dejo otra pequeña rutina en ASM que funciona. En esta ocasión se trata de detectar cuando se presiona un pulsador que se encuentre conectado al puerto A, en el ejemplo hay 3 pulsadores. Este es el código:

 
Código: [Seleccionar]
;  Fecha: 24 Marzo 2007.
;  Version: 00
;  Funcion : Controlar 3 pulsadores forzados a + y saltar a la subrutina indicada
; para encender LED y esperar para encender otro.

TITLE "3puls02.asm" ; MPLAB solo admite nombres de 9 letras
SUBTITLE "Revision Nº 1"
ERRORLEVEL -302, -306
PROCESSOR 16F628          ;
;           
;#############################################################
;       Definiciones de Registros
;============================================================
  LIST P=PIC16F628
#include <P16F628.inc>
  __CONFIG  _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _LVP_OFF & _INTRC_OSC_NOCLKOUT
;  __CONFIG h'3F50'

  ;Definicion o Declaracion de equs (igualdades)

d1 equ 0x20 ; siempre se necesitan un par
d2 equ 0x21 ; de registros auxiliares
d3 equ 0x22

;----- Ficheros de Registro ---------------------------------

;DEFINIMOS LOS BANCOS
#define bank1 bsf STATUS,5 ;Macro para abreviar el BANCO 1
#define bank0 bcf STATUS,5 ;Macro para abreviar el BANCO 0

Org 0x00 ;Posicion 0 de la Memoria de Programa (apuntador)
;
GOTO inicio ;Va a la etiqueta INICIO
;
inicio: CLRF STATUS
CLRF PORTA ;limpia el puerto A
MOVLW b'00000111' ; comparadores desactivados,
MOVWF CMCON ; I/O digitales.
bank1 ;Va a page1 para configurar puertos
MOVLW 0x07 ;pone el literal 07h = b0000 0111 en el regitro W
MOVWF PORTA ;define RA0-RA2 como entrada, los otros, salidas
CLRF PORTB ;limpia el puerto B,  salidas
                    ;define todo el puerto B como salida
bank0 ;Regresa a page0 para continuar



;    Escanea los 3 pulsadores hasta que se pulsa uno
        CLRF PORTB
scaner: BTFSS PORTA,0              ; bit 0 del puerto A esta en nivel bajo, salta 1 linea
        CALL  luce1              ;salta a encender LED1
        BTFSS PORTA,1              ; bit 1 del puerto A esta en nivel bajo, salta 1 linea
        CALL  luce2              ;salta a encender LED2
        BTFSS PORTA,2              ; bit 2 del puerto A esta en nivel bajo, salta 1 linea
        CALL  luce3              ;salta a encender LED3
        GOTO  scaner              ;repite secuencia

luce1:  MOVLW 0x01 ; pone a 1
        MOVWF 06 ;para encender LED1
        CALL pausa ;salta a rutina de retardo
        RETURN

luce2:  MOVLW 0x02 ;pone a 1
MOVWF 06 ;para encender LED2
CALL pausa ;salta a rutina de retardo
RETURN

luce3:  MOVLW 0x04 ;pone a 1
        MOVWF 06 ;para encender LED3
        CALL pausa ;salta a rutina de retardo
        RETURN



pausa: MOVLW 0x07      ; b'00000111 = 7d
MOVWF d1          ;2Ah
MOVLW 0x2F      ;b'00101111 = 47d
MOVWF d2
MOVLW 0x03      ;b'00000011 = 3d
MOVWF d3

pausa1: 
        DECFSZ   d1,1            ; Lazo interior

        GOTO $+2
DECFSZ   d2,1

GOTO $+2
DECFSZ   d3,1
GOTO     pausa1

goto      $+1
goto      $+1
goto      $+1

RETURN

END

 Espero que le sirva a algún lector.

 Saludos.

Incluso la época de agobio es digna de respeto.
Porque, no la ha creado el hombre, sino la naturaleza que puede ser dura pero jamas absurda.

Meta

  • Visitante
Re: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #134 en: 14 de Agosto de 2007, 21:06:22 »
Muy buen ejemplo. ¿Hay más por aí?

Deberían continuar.