;------------------------------------------------------------
; Código assembler generado por Niple V5.2.0
; Proyecto: rs232-2
; Autor: 
; Fecha: 01/12/2009
; PIC: 16F84A
; Velocidad de reloj: 4 Mhz
; Descripcion: 
;------------------------------------------------------------


 LIST    P=PIC16F84A


_XT_OSC               equ  0x3FFD
_WDT_OFF              equ  0x3FFB
_PWRTE_ON             equ  0x3FF7
_CP_OFF               equ  0x3FFF

 __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF


;------------------------------------------------------------
;                  Declaración de Registros
;------------------------------------------------------------
w                     equ  0x0000
status                equ  0x0003
porta                 equ  0x0005
pclath                equ  0x000a
contador              equ  0x000d
_np_temp1             equ  0x000e
_np_temp2             equ  0x000f
_np_temp3             equ  0x0010
_np_rs232_t           equ  0x0011
_np_rs232_t1          equ  0x0012
_np_config_interrup   equ  0x0013
trisa                 equ  0x0085


;------------------------------------------------------------
;                  Declaración de Bits
;------------------------------------------------------------
c                     equ  0   ;carry / borrow bit
rp0                   equ  5   ;registrer bank select bit
rp1                   equ  6   ;registrer bank select bit
z                     equ  2   ;bit cero


;------------------------------------------------------------
;                        Inicio
;------------------------------------------------------------

reset   org 0
   goto paso2


;------------------------------------------------------------
;                      programa principal
;------------------------------------------------------------
paso2
   movlw b'00000000'                ;configurar el puerto a como xxxsssss
   bsf status,rp0                   ;cambiar a banco 1
   movwf trisa
   movlw 0x41
   bcf status,rp0                   ;cambiar a banco 0
   movwf contador
paso4
   movf contador,w                  ;enviar el dato contador
   movwf _np_temp1
   call rs232_ta0_9600

   incf contador,1                  ;contador = contador + 1
   movf contador,w                  ;si el reg contador <> 0x45
   xorlw 0x45
   btfss status,z
   goto paso4                       ;cierra el ciclo
   goto fin


;------------------------------------------------------------
;                  Declaración de Subrutinas
;------------------------------------------------------------

rs232_ta0_9600
   ;enviar un dato rs232 por porta,0 (por codigo)
   ;_np_temp1 = dato a enviar
   ;_np_temp2 = contador de bits
   movlw .8
   bcf status,rp0                   ;cambiar a banco 0
   movwf _np_temp2
   bcf porta,0
	call rs232_9600_bit
	bsf porta,0	;bcf 
   call rs232_9600_bit
rs232_ta0_9600_tx_otro
   bsf porta,0	;bcf
   bcf status,c
   rrf _np_temp1,1
   btfsc status,c
   bcf porta,0	;bsf
   call rs232_9600_bit
   decfsz _np_temp2,1
   goto rs232_ta0_9600_tx_otro
   bcf porta,0	;bsf
   call rs232_9600_bit
   return


rs232_9600_bit
   movlw .9
   movwf _np_rs232_t
   goto rs232_9600_bit_2
rs232_9600_bit_bucle
   nop
   nop
   nop
   nop
   nop
   nop
   nop
rs232_9600_bit_2
   decfsz _np_rs232_t,1
   goto rs232_9600_bit_bucle
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   return
rs232_9600_mbit
   movlw .4
   movwf _np_rs232_t
   goto rs232_9600_mbit_2
rs232_9600_mbit_bucle
   nop
   nop
   nop
   nop
   nop
   nop
   nop
rs232_9600_mbit_2
   decfsz _np_rs232_t,1
   goto rs232_9600_mbit_bucle
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   return
fin
 End