Autor Tema: trabajando con el 16F873  (Leído 1956 veces)

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

Desconectado krostby

  • PIC10
  • *
  • Mensajes: 33
trabajando con el 16F873
« en: 24 de Febrero de 2010, 21:09:57 »
hola amigos,  favor requiero de vuestras sugerencias.  estoy trabajando con el pic 16F873 y no puedo activar las puertas rb y rc cuando doy la orden a traves de una declaración de registro.  Expongo mi problema con un ejemplo muy simple:

1.-  comando todas las salidas de los puertos rb y rc dependiendo del estado de entrada del ra0 (on/off).  como resultado todos los puertos de salida rb y rc debiera de activarse o desantivarse, sin embargo esto ocurre solo con los rb1, rb2, rb7, rc0, rc2 y rc7, el resto permanecen sin actividad.   Expongo el prog y observa lo escrito en MAYUSCULAS.

activa   equ 0xff
no_activa   equ  0x00

   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   clrf porta
   movlw b'00000001'                ;configurar el puerto a como xxssssse
   bsf status,rp0                   ;cambiar a banco 1
   movwf trisa
   movlw b'00000111'                ;puerto a = e/s digital
   movwf adcon1
   bcf status,rp0                   ;cambiar a banco 0
   clrf portb
   movlw b'00000000'                ;configurar el puerto b como ssssssss
   bsf status,rp0                   ;cambiar a banco 1
   movwf trisb
   bcf status,rp0                   ;cambiar a banco 0
   clrf portc
   movlw b'00000000'                ;configurar el puerto c como ssssssss
   bsf status,rp0                   ;cambiar a banco 1
   movwf trisc

 .......................  inicio...........................
paso5
   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   btfss porta,ra0                  ;si el bit ra0 = 1
   goto paso7
   movf activa,w
   movwf portb             ;SE INTENTA LEVANTAR TODAS LAS PUERTAS RB
   movwf portc             ;SE INTENTA LEVANTAR TODAS LAS PUERTAS RC
   goto paso5                       ;cierra el ciclo
paso7
   movf no_activa,w
   movwf portb              ;se bajan todas las puertas b
   movwf portc             ;se bajan todas las puertas c
   goto paso5                       ;cierra el ciclo


   
gracias y a la espera de vuestras observaciones.




Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: trabajando con el 16F873
« Respuesta #1 en: 24 de Febrero de 2010, 21:21:15 »
Hay varias cositas que arreglar, primero que nada podes hacer :

Código: ASM
  1. bcf status,rp0                   ;cambiar a banco 0
  2.    bcf status,rp1
  3.    clrf porta
  4.    clrf portb
  5.    clrf portc
  6.    bsf status,rp0                   ;cambiar a banco 1
  7.    movlw b'00000001'                ;configurar el puerto a como xxssssse
  8.    movwf trisa
  9.    movlw b'00000111'                ;puerto a = e/s digital
  10.    movwf adcon1
  11.    clrf  trisb
  12.    clrf  trisc
  13.    bcf status,rp0                   ;cambiar a banco 0


Para ahorrar lineas. Luego para cargar activa o no_activa debes hacerlo de la siguiente manera:

Código: ASM
  1. movlw  activa
  2.   movwf  portb


Saludos!
No contesto mensajes privados, las consultas en el foro