Programación Específica > Microcontroladores

 Pic16f88

(1/1)

thevy:
hola quisiera me pudieran ayudar, con algo: quiero grabar un programa en el pic16f88, quiero recibir un valor de un voltimetro luego convertirlo a señal digital para luego enviarlo por medio del puerto serie..... se puede? dejo mi correo por cualquier cosa,,, please help me,,,,, sandrathevy@hotmail.com

thevy:
HOLA TENGO ESTE COD PERO ME DA UN ERROR EN EL CONFIG.. ALGUIEN ME AYUDA?

--- 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  

Navegación

[0] Índice de Mensajes

Ir a la versión completa