	LIST		P=16F877A
	INCLUDE		<P16F877A.INC>
	
	__CONFIG 	_CP_ALL & _DEBUG_OFF & _WRT_OFF & _CPD_ON & _LVP_OFF & _BODEN_ON & _HS_OSC & _WDT_OFF & _PWRTE_ON

		ERRORLEVEL -302
		ERRORLEVEL -305
		ERRORLEVEL -306


Guarda_W			equ		0x05C
Guarda_STATUS		equ		0x05D
Guarda_RESUL		equ		0x05E
Guarda_R_ContA		equ		0x05F
Guarda_R_ContB		equ		0x060
IDIOMAS_TEMP		equ		0x06E

dato_enviar			equ		0x061
contador			equ		0x062
cont_bit			equ		0x063
dato_enviar_temp	equ		0x064
REGISTRO			equ		0x065



RESET		ORG			H'00'
			GOTO		main
			ORG		H'04'			;VECTOR INTERRUPCION
			goto	INTERRUP

main        BCF            STATUS,RP0
            BCF            STATUS,RP1              ;BANCO 0
            CLRF           PORTA
            CLRF            PORTB
            CLRF            PORTC
            CLRF            PORTD
            CLRF            PORTE
            BSF             STATUS,RP0              ;BANCO 1
            CLRF            TRISA
            MOVLW           H'00'
            MOVWF           TRISB
            CLRF            TRISC
            CLRF            TRISD
            CLRF            TRISE
            MOVLW           0x06
            MOVWF           ADCON1
	        BSF             TRISC,7
;
;INICIALIZACION DEL MODULO USART
;
    		bsf				PORTC, 5
	        BSF             TXSTA,BRGH
            MOVLW           .25
            MOVWF           SPBRG
            BCF             TXSTA,SYNC
            BCF             STATUS,RP0              ;BANCO 0
            BSF             RCSTA,SPEN
;
;ACTIVACION DEL MODULO USART
;
TRANSMITIR      BSF                     STATUS,RP0              ;BANCO 1
                BSF                     TXSTA,TXEN
;
;ENVIO DE DATOS AL USART
;
                BCF             STATUS,RP0              ;BANCO 0
REPETIR         incf			REGISTRO
				movfw			REGISTRO
				movwf			PORTD
;				MOVFW           PORTB
                MOVWF           TXREG
                BSF             STATUS,RP0              ;BANCO 1
ESPERAR         BTFSS           TXSTA,TRMT              ;?SE VACIO EL REGISTRO TSR?
                GOTO            ESPERAR                 ;NO, ESPERAMOS PARA ELLO
                BCF             TXSTA,TXEN              ;DESHABILITO LA TRANSMISION
                BCF             STATUS,RP0              ;BANCO 0
				call			Retardo_500ms
                GOTO            TRANSMITIR

;*******************************************************************************
;****************************************RETARDOS*******************************
;*******************************************************************************



R_ContA		equ		0x066					
R_ContB		equ		0x067
R_ContC		equ		0x068


Retardo_10micros				
	nop							
	nop							
	nop							
	nop							
	nop							
Retardo_5micros					
	nop							
Retardo_4micros					
	return						
Retardo_500micros				
	nop							
	movlw	d'164'				
	goto	RetardoMicros		
Retardo_200micros				
	nop							
	movlw	d'64'				
	goto	RetardoMicros		
Retardo_100micros				
	movlw	d'31'				
	goto	RetardoMicros		
Retardo_50micros				
	nop							
	movlw	d'14'				
	goto	RetardoMicros		
Retardo_20micros				
	movlw	d'5'				
RetardoMicros
	movwf	R_ContA				
Rmicros_Bucle
	decfsz	R_ContA,F			
	goto	Rmicros_Bucle		
	return						
Retardo_200ms					
	movlw	d'200'				
	goto	Retardos_ms			
Retardo_100ms					
	movlw	d'100'				
	goto	Retardos_ms			
Retardo_50ms					
	movlw	d'50'				
	goto	Retardos_ms			
Retardo_20ms					
	movlw	d'20'				
	goto	Retardos_ms			
Retardo_10ms					
	movlw	d'10'				
	goto	Retardos_ms			
Retardo_5ms						
	movlw	d'5'				
	goto	Retardos_ms			
Retardo_2ms						
	movlw	d'2'				
	goto	Retardos_ms			
Retardo_1ms						
	movlw	d'1'				
Retardos_ms
	movwf	R_ContB				
R1ms_BucleExterno
	movlw	d'249'				
	movwf	R_ContA				
R1ms_BucleInterno
;	clrwdt
	nop							
	decfsz	R_ContA,F			
	goto	R1ms_BucleInterno	
	decfsz	R_ContB,F			
	goto	R1ms_BucleExterno 	
	return						
Retardo_20s						
	movlw	d'200'				
	goto	Retardo_1Decima		
Retardo_10s						
	movlw	d'100'				
	goto	Retardo_1Decima		
Retardo_5s						
	movlw	d'50'				
	goto	Retardo_1Decima		
Retardo_2s						
	movlw	d'20'				
	goto	Retardo_1Decima		
Retardo_1s						
	movlw	d'10'				
	goto	Retardo_1Decima		
Retardo_500ms					
	movlw	d'5'				
Retardo_1Decima
	movwf	R_ContC				
R1Decima_BucleExterno2
	movlw	d'100'				
	movwf	R_ContB				
R1Decima_BucleExterno
	movlw	d'249'				
	movwf	R_ContA				
R1Decima_BucleInterno          
;	clrwdt
	nop							
	decfsz	R_ContA,F			
	goto	R1Decima_BucleInterno	
	decfsz	R_ContB,F			
	goto	R1Decima_BucleExterno	
	decfsz	R_ContC,F			
	goto	R1Decima_BucleExterno2	
	return						





INTERRUP
				nop
				nop
				retfie


			END