Programación Específica > Microcontroladores

 Pic16f88

(1/1)

thevy:
Este programa supuestamente envia y recibe un voltaje,, pero me da un error en el config, y no se por que?


--- Código: Text ---  ;------------------------------------------------------------; Código assembler generado por Niple V5.2.1; Proyecto: Voltimetro Digital; Autor: ---; Fecha: 07/02/2008; PIC: 16F88; Velocidad de reloj: 4 Mhz; Descripcion: Medir un voltaje cada segundo y mostrar el resultado. enviarlo por el puerto serial;------------------------------------------------------------  LIST    P=PIC16F88  _XT_OSC             equ  0x3FFD_DEBUG_OFF          equ  0x3FFF_WDT_OFF            equ  0x3FFB_PWRTE_ON           equ  0x3FF7_BODEN_OFF          equ  0x3FBF_LVP_OFF            equ  0x3F7F_CPD_OFF            equ  0x3FFF_CP_OFF             equ  0x3FFF;_WRT_ENABLE_OFF     equ  0x3DFF __config _XT_OSC & _DEBUG_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF  ;------------------------------------------------------------;                  Declaración de Registros;------------------------------------------------------------w                     equ  0x0000status                equ  0x0003portb                 equ  0x0006pclath                equ  0x000aadresh                equ  0x001eadcon0                equ  0x001fvoltaje_1             equ  0x0021voltaje_2             equ  0x0022_np_temp1             equ  0x0023_np_temp2             equ  0x0024_np_temp3             equ  0x0025_np_temp4             equ  0x0026_np_temp5             equ  0x0027_np_rs232_t           equ  0x0028_np_rs232_t1          equ  0x0029_np_config_interrup   equ  0x002a_np_tiempo            equ  0x002c_np_tiempo1           equ  0x002e_np_tiempo2           equ  0x002f_np_tiempo3           equ  0x0030trisa                 equ  0x0085trisb                 equ  0x0086adresl                equ  0x009eadcon1                equ  0x009f  ;------------------------------------------------------------;                  Declaración de Bits;------------------------------------------------------------adfm                  equ  7 &#59;adon                  equ  0 &#59;c                     equ  0 &#59;carry / borrow bitgo_done               equ  2 &#59;rp0                   equ  5 &#59;registrer bank select bitrp1                   equ  6 &#59;registrer bank select bitz                     equ  2 &#59;bit cero  ;------------------------------------------------------------;                        Inicio;------------------------------------------------------------ reset   org 0  goto paso2  org 4  retfie  ;------------------------------------------------------------;                      programa principal;------------------------------------------------------------paso2  movlw b'00000001'              &#59;configurar el puerto a como xxsssssa  bsf status,rp0                 &#59;cambiar a banco 1  bcf status,rp1  movwf trisa  movlw b'10001110'              &#59;configuracion a/d = dddda  movwf adcon1  bcf status,rp0                 &#59;cambiar a banco 0  bsf adcon0,adon                &#59;activar activar el conversor a/d.  movlw b'00000000'              &#59;configurar el puerto b como ssssssss  bsf status,rp0                 &#59;cambiar a banco 1  movwf trisbpaso5  movlw b'10000001'              &#59;conversión  bcf status,rp0                 &#59;cambiar a banco 0  bcf status,rp1  movwf adcon0  bsf status,rp0                 &#59;cambiar a banco 1  bsf adcon1,adfm                &#59;alinear el resultado a la derecha  bcf status,rp0                 &#59;cambiar a banco 0  clrf _np_temp3  clrf _np_temp4  movlw .16  movwf _np_temp5paso5_ciclos  call leer_ad  bsf status,rp0                 &#59;cambiar a banco 1  movf adresl,w                  &#59;recuperar el registro bajo de la conversion a/d  bcf status,rp0                 &#59;cambiar a banco 0  movwf voltaje_2  movf adresh,w                  &#59;recuperar el registro alto de la conversion a/d  movwf voltaje_1  movf voltaje_2,w  addwf _np_temp4,1  btfsc status,c  incf _np_temp3,1  movf voltaje_1,w  addwf _np_temp3,1  decfsz _np_temp5,1  goto paso5_ciclos  bcf status,c  rrf _np_temp3,1  rrf _np_temp4,1  bcf status,c  rrf _np_temp3,1  rrf _np_temp4,1  bcf status,c  rrf _np_temp3,1  rrf _np_temp4,1  bcf status,c  rrf _np_temp3,1  rrf _np_temp4,1  movf _np_temp3,w  movwf voltaje_1  movf _np_temp4,w  movwf voltaje_2  movf voltaje_1,w               &#59;enviar el dato voltaje_1  movwf _np_temp1  call rs232_tb1_9600  movlw .1                       &#59;temporizador 1 seg  call tiempo_1_255_mega_c  goto paso5                     &#59;cierra el ciclo  ;------------------------------------------------------------;                  Declaración de Subrutinas;------------------------------------------------------------ tiempo_1_255_mega_c  movwf _np_tiempo  goto tiempo_1_255_mega_c_1tiempo_1_255_mega_c_bucle2  nop  nop  nop  nop  nop  nop  noptiempo_1_255_mega_c_1  movlw .10  movwf _np_tiempo1tiempo_1_255_mega_c_bucle1  nop  nop  movlw .99  movwf _np_tiempo2tiempo_1_255_mega_c_bucle0  nop  nop  nop  movlw .200  movwf _np_tiempo3tiempo_1_255_mega_c_bucle  nop  nop  decfsz _np_tiempo3,1  goto tiempo_1_255_mega_c_bucle  nop  nop  nop  decfsz _np_tiempo2,1  goto tiempo_1_255_mega_c_bucle0  nop  nop  nop  decfsz _np_tiempo1,1  goto tiempo_1_255_mega_c_bucle1  decfsz _np_tiempo,1  goto tiempo_1_255_mega_c_bucle2  return  leer_ad&#59;realizar conversion a/d  movlw .200  movwf _np_temp1  bsf adcon0,go_doneleer_ad_esperar  decfsz _np_temp1,1  goto leer_ad_esperar  nop  nopleer_ad_esperar_fin  btfsc adcon0,go_done  goto leer_ad_esperar_fin  return rs232_tb1_9600&#59;enviar un dato rs232 por portb,1 (por codigo)&#59;_np_temp1 = dato a enviar&#59;_np_temp2 = contador de bits  movlw .8  bcf status,rp0                 &#59;cambiar a banco 0  bcf status,rp1  movwf _np_temp2  bcf portb,1  call rs232_9600_bitrs232_tb1_9600_tx_otro  bcf portb,1  bcf status,c  rrf _np_temp1,1  btfsc status,c  bsf portb,1  call rs232_9600_bit  decfsz _np_temp2,1  goto rs232_tb1_9600_tx_otro  bsf portb,1  call rs232_9600_bit  return  rs232_9600_bit  movlw .9  movwf _np_rs232_t  goto rs232_9600_bit_2rs232_9600_bit_bucle  nop  nop  nop  nop  nop  nop  noprs232_9600_bit_2  decfsz _np_rs232_t,1  goto rs232_9600_bit_bucle  nop  nop  nop  nop  nop  nop  nop  nop  nop  returnrs232_9600_mbit  movlw .4  movwf _np_rs232_t  goto rs232_9600_mbit_2rs232_9600_mbit_bucle  nop  nop  nop  nop  nop  nop  noprs232_9600_mbit_2  decfsz _np_rs232_t,1  goto rs232_9600_mbit_bucle  nop  nop  nop  nop  nop  nop  nop  nop  nop  return End  

Alternative:
Saludos.
una observacion, la transmision serial no
envia y recibe voltajes, nose quien te dijo eso.

La transmision serial manda y recibe datos a una dterminada
velocidad que se llama baudios, y depende su configuracion
bit de Stop, de paridad, cuantos bit's de datos mandas etc.

Te recomiendo que antes que realices el programa
o copies programas de alguien que lo realizo
te pongas a leer y estudiar que es transmision de
datos serialmente, por que si te explico ni idea vas a tener

En el DataSheet del 16F88 utiliza el USAR
es mas sencillo
suerte bye

resistencio:
Hola, es mi primer mensaje...el codigo para transmitir serie es mucho mas sencillo que eso que hiciste...Yo lo hice en menos de 20 lineas...revisa un poquito !!!

Navegación

[0] Índice de Mensajes

Ir a la versión completa