ON 20060427@6:02:45 PM at page: http://www.piclist.com/techref/member/FL-gmail-A53/index.htm#38834.7519097222 Fredy Lievano[FL-gmail-A53] Code:
aqui esta un comverzor a/d que envia los datos por el rs323 y adeams recibe datos los manda al portb  a su vez retorna el dato  al pc 
here is  c a/d  that takes al the data referent to a volt on portb and send all that data to the pc via rs232 and it also reads data from the PC shows it on the portb and resend it  to the serial port.

  LIST  P=16F873
  #INCLUDE "p16f873.inc"


;STATUS	EQU	03H
PORT_A	EQU	05H
PORT_B	EQU	06H
PORT_C	EQU	07H
;PCLATC	EQU	0AH
;INTCON	EQU	0BH
;PIR1	EQU	0CH
;RCSTA	EQU	18H
;TXREG	EQU	19H
;RCREG	EQU	1AH
;ADRESH	EQU	1EH
;ADCON0	EQU	1FH
;TRISA	EQU	85H
;TRISB	EQU	86H
;TRISC	EQU	87H
;TXSTA	EQU	98H
;SPBRG	EQU	99H
ADRES1	EQU	9EH
;ADCON1	EQU	9FH
;RP0	EQU	5
;RP1	EQU	6
;IRP	EQU	7
;Z	EQU	2
;C	EQU	0
;TXIF	EQU	4
LOOPS	EQU	20H
LOOPS2	EQU	21H
CAJA1	EQU	22H
CAJA2	EQU	23H
CAJA3	EQU	24H
BUFFER	EQU	25H

;receive EQU	26H
	__CONFIG _CP_OFF & _PWRTE_OFF& _WDT_OFF & _XT_OSC & _LVP_OFF & _BODEN_OFF    	;CONFIGURO
;            PARA LA GRABACION, CODE PROTECT OFF, RESET DE ENCENDIDO ,ETC

;*************************  COMIENZO DEL PROGRAMA  *********************
	ORG	00
	GOTO	INICIO
;-----------------------------------------------------------------------
RETARDO	MOVWF	LOOPS	;RUTINA DE RETARDO EN MILISEGUNDOS
TOP2	MOVLW	.110	;EL NUMERO DE MILISEC LLEGA CARGADO
	MOVWF	LOOPS2	;EN EL REGISTRO	LOOPS
TOP	NOP
	
	DECFSZ	LOOPS2,1   	;PREGUNTA SI TERMINO 1 mS.
	GOTO	TOP
	DECFSZ	LOOPS,1		;PREGUNTA SI TERMINO RETARDO
	GOTO 	TOP2
	RETLW	0
;-----------------------------------------------------------------------;
;            RUTINA DE CONVERSION A/D A 10 BITS	DEVUELVE 3 DATOS EN HEXADECIMAL GUARDADOS			;
;         			;
;       EN LOS REGISTROS CAJA1, CAJA2 Y CAJA3			;
;-----------------------------------------------------------------------;
CONVER	BSF	STATUS,RP0
	MOVLW	B'10000010'	;SELECCIONA Vref INTERNO(+5 Y GND)
	MOVWF	ADCON1		;DATOS EN ADRESL Y 2 BITS EN ADRESH
	BCF	STATUS,RP0
	BSF	ADCON0,GO	;INICIO DE CONVERSION
	NOP
	NOP
CONSU	BTFSC	ADCON0,GO	;ESPERA QUE TERMINE DE CONVERTIR
	GOTO 	CONSU
	MOVF	ADRESH,W
	MOVWF	CAJA1		;PASA TRES DIGITOS HEXADECIMALES
	MOVLW	30H		;A REGISTROS INDIVIDUALES
	ADDWF	CAJA1,1		;PARA SER TRANSMITIDO
	BSF	STATUS,RP0	;AL REGISTRO CAJA1 LE SUMA 30H
	MOVF	ADRES1,W	;PARA CONVERTIRLO EN ASCII
	BCF	STATUS,RP0
	MOVWF	BUFFER
	ANDLW	0FH
	MOVWF	CAJA3		;EL REGISTRO CAJA3 QUE CONTIENE
	MOVLW	0AH		;EL DIGITO MENOS SIGNIFICATIVO DEBE
	SUBWF	CAJA3,0	;PROBARSE PARA VER SI ES UN NUMERO
	MOVLW	37H		;DE 0 A 9 O SI ES LA LETRA A HASTA F
	BTFSS	STATUS,C	;PARA HACER LA CONVERSION A ASCII
	MOVLW	30H
	ADDWF	CAJA3,1
	SWAPF	BUFFER,0
	ANDLW	0FH
	MOVWF	CAJA2		;EL DIGITO CAJA2 TIENE EL MISMO
	MOVLW	0AH		;PROCEDIMIENTO QUE CAJA3
	SUBWF	CAJA2,0
	MOVLW	37H
	BTFSS	STATUS,C
	MOVLW	30H
	ADDWF	CAJA2,1
	RETLW	0
;-----------------------------------------------------------------------;
;           ESTA RUTINA ENVIA LOS DATOS de	CONVERSION				;		;
;            
;-----------------------------------------------------------------------;
ENVIAR	MOVF	CAJA1,0	;TRANSMITE EL DIGITO HEXADECIMAL
ESPER	BTFSS	PIR1,TXIF	;PDE MAYOR PESO
	GOTO 	ESPER
	MOVWF	TXREG
	MOVF	CAJA2,0	;TX EL SEGUNDO DIGITO HEXA
ESPERA	BTFSS	PIR1,TXIF	;PERO DEBE ESPERAR QUE TERMINE DE
	GOTO	ESPERA		;TX EL DATO ANTERIOR
	MOVWF	TXREG
	MOVF	CAJA3,0	;TX TERCER DIGITO
ESPER2	BTFSS	PIR1,TXIF
	GOTO 	ESPER2
	MOVWF	TXREG	
	MOVLW	.88		;TX EL CARACTER "x" PARA SEPARAR
ESPER3	BTFSS	PIR1,TXIF	;CADA DATO DE LOS DIFERENTES CANALES 
	GOTO	ESPER3
	MOVWF	TXREG
	RETLW	0

;-----------------------------------------------------------------------;
;           ESTA RUTINA recive SERIALMENTE LOS DATOS			;
;-----------------------------------------------------------------------;		
dato	bcf STATUS,RP0          ; RAM PAGE 0 
		
        movlw b'10010000'       ; enable Async Reception 
        movwf RCSTA  
	    nop
		nop
		movf RCREG,W            ; save received data in W 
     	movwf TXREG             ; send data in W 

TransWt bsf STATUS,RP0          ; RAM PAGE 1 
WtHere  btfss TXSTA,TRMT        ; aquireboto dato para comprobar qeu leyo 
        goto WtHere 

        bcf STATUS,RP0          ; RAM PAGE
		movf RCREG,W
		movwf PORT_B
		RETLW	0
	
;-----------------------------------------------------------------------;
;      		
;-----------------------------------------------------------------------;	
;-----------------------------------------------------------------------;
							;PROGRAMA PRINCIPAL
;-----------------------------------------------------------------------;
INICIO	BSF	STATUS,RP0	;RAM PAGE 0	
	MOVLW	B'11111111'
	MOVWF	TRISA
	MOVLW	B'00000000'
	MOVWF	TRISB		;PUERTOS A Y B COMO ENTRADAS
	MOVLW	B'10101111'
	MOVWF	TRISC		;PUERTO C ENTRADAS Y PIN TX SALIDA
	MOVLW	B'00100110'	;PROGRAMA USART ASINCRONO PARA TX
	MOVWF	TXSTA		;ALTA RATA DE BAUDIOS
	MOVLW	.25			;CONFIGURA TEMPORIZADOR A 4MHZ
	MOVWF	SPBRG		;9600 BPS (8,N,1)
	call	dato
	BCF	STATUS,RP0		;RAM PAGE 0
	BSF	PIR1,TXIF
	MOVLW	B'10000001'	;SELECCIONA CANAL 0 Y  RELOJ DE CONV
	MOVWF	ADCON0		;CONVERTIDOR ENCENDIDO	;call	dato
	CALL	CONVER		;LLAMA RUTINA CONVERSION A/D
	CALL	ENVIAR		;ENVIA DATOS SERIALES
	MOVLW	B'10001001'	;SELECCIONA CANAL1 Y RELOJ DE CONVERSION
	MOVWF	ADCON0		;CONVERTIDOR ENCENDIDO
	CALL	CONVER
	CALL	ENVIAR
	MOVLW	.13			;LA SEPARACION ENTRE CADA BLOQUE
ESPER4	BTFSS	PIR1,TXIF	;DE 4 DATOS
	GOTO 	ESPER4		;SE HACE CON EL CARRIAGE RETURN
	MOVWF	TXREG		;Y UN CARACTER LINE FEED
	MOVLW	.10			;SIRVE PARA SEPARAR LAS LINEAS DE
						;DATOS QUE SE RECIBEN, BAJA UN RENGLON
ESPER5	BTFSS	PIR1,TXIF	;EN EL PROGRAMA TERMINAL DE WINDOWS
	GOTO	ESPER5		;CADA LINEA DE DATOS TIENE
						;CANAL0, CANAL1 , CANAL2 , CANAL3
	MOVWF	TXREG
ESPER6	BTFSS	PIR1,TXIF	;ESTA COMPROBACION ES PARA
						;GARANTIZAR QUE SE TRANSMITA
	GOTO	ESPER6		;EL ULTIMO CARACTER ANTES DE SEGUIR
	MOVLW	.110		;RETARDO ENTRE BLOQUES DE 4 DATOS
	CALL	RETARDO		
						
	GOTO	INICIO		;COMIENZA NUEVAMENTE PARA ENVIAR
						;OTRO PAQUETE DE DATOS
	END
any questions email me to fredylg@gmail.com
ON 20060427@6:11:52 PM at page: http://www.piclist.com/techref/member/FL-gmail-A53/index.htm#38834.7582407407 Fredy Lievano[FL-gmail-A53] Says 2 stepper motor driver ,
;;---------------Encabezado-------------

LIST P=16F873
#INCLUDE "p16f873.inc"
radix hex

;------------mapa de memoria---------
LOOPS EQU 20H
LOOPS2 EQU 21H
estado equ 0x03 ; Haciendo asignaciones
dc1 equ 0x0C ; Estos 3 registros los utilizaré
dc2 equ 0x0D ; para hacer el retardo
reg3 equ 0x0E
CONTADOR EQU 21H
cont EQU 0A
MEMORIA EQU 28H

__CONFIG _CP_OFF & _PWRTE_OFF& _WDT_OFF & _XT_OSC & _LVP_OFF & _BODEN_OFF ;CONFIGURO
;-------**** COMIENZO DEL PROGRAMA ****-----
ORG 00
GOTO INICIO

;-----------------------
LOOP
NO BTFSS PORTA,2
GOTO NO
MOVFW PORTA ;lee el dato y lo mandada
MOVWF MEMORIA ;a memoria
BTFSS MEMORIA,1 ;lee el dato de ra1
GOTO STEPCCW ;
BTFSS MEMORIA,0 ;si el pusador en ra0 esta en uno vulveve a mirara
GOTO STEPCW ;sino entonces anda hacia el otro lado
GOTO LOOP ; SI AMOS SON CERO VOALVO A LEER HASTA QEU CAMBIE


STEPCW
NOOO BTFSS PORTA,2
GOTO NOOO
CALL S1 ;da un paso y
BTFSS PORTA,1 ;si el pulsador 1 cambio
GOTO LOOP ;checkea
CALL S2
BTFSS PORTA,1
GOTO LOOP
CALL S3
BTFSS PORTA,1
GOTO LOOP
CALL S4
GOTO STEPCW

STEPCCW
NOO BTFSS PORTA,2
GOTO NOO
CALL S4
BTFSS PORTA,0
GOTO LOOP
CALL S3
BTFSS PORTA,0
GOTO LOOP
CALL S2
BTFSS PORTA,0
GOTO LOOP
CALL S1
GOTO STEPCCW





S1 MOVLW B'00000101'
MOVWF PORTC
CALL DELAY
CALL DELAY
RETURN
S2 MOVLW B'000000110'
MOVWF PORTC
CALL DELAY
CALL DELAY
RETURN
S3 MOVLW B'000001010'
MOVWF PORTC
CALL DELAY
CALL DELAY
RETURN
S4 MOVLW B'0000001001'
MOVWF PORTC
CALL DELAY
CALL DELAY
RETURN




;------------------------------------------------
DELAY movlw 35 ; Outer loop iteration count
movwf dc1
dl1 clrf dc2 ; Initialize inner loop
dl2 nop
nop
decfsz dc2,F
goto dl2
decfsz dc1,F
goto dl1
return

;-----------------------------------------------------------------------
INICIO BSF STATUS,RP0
MOVLW 06h
MOVWF ADCON1
MOVLW B'00001111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC


bcf STATUS,RP0 ; RAM PAGE 0
CLRF PORTB
CLRF PORTC
CLRF MEMORIA
GOTO LOOP

END

;---------------------------------------------------------------------------


ON 20060427 at page: http://www.massmind.org/techref/member/FL-gmail-A53/index.htm someone[--] edited the page. Difference: "R:\bak\H\techref\member\FL-gmail-A53\index.htm.20060427.dif" ON 20060428@6:45:27 PM at page: http://www.piclist.com/techref/member/FL-gmail-A53/index.htm#38834.7582407407 James Newton[JMN-EFP-786] removed post 38834.7582407407 |Delete 'Fredy Lievano Says:
2 stepper motor driver ,
;;---------------Encabezado-------------

LIST P=16F873
#INCLUDE "p16f873.inc"
radix hex

;------------mapa de memoria---------
LOOPS EQU 20H
LOOPS2 EQU 21H
estado equ 0x03 ; Haciendo asignaciones
dc1 equ 0x0C ; Estos 3 registros los utilizaré
dc2 equ 0x0D ; para hacer el retardo
reg3 equ 0x0E
CONTADOR EQU 21H
cont EQU 0A
MEMORIA EQU 28H

__CONFIG _CP_OFF & _PWRTE_OFF& _WDT_OFF & _XT_OSC & _LVP_OFF & _BODEN_OFF ;CONFIGURO
;-------**** COMIENZO DEL PROGRAMA ****-----
ORG 00
GOTO INICIO

;-----------------------
LOOP
NO BTFSS PORTA,2
GOTO NO
MOVFW PORTA ;lee el dato y lo mandada
MOVWF MEMORIA ;a memoria
BTFSS MEMORIA,1 ;lee el dato de ra1
GOTO STEPCCW ;
BTFSS MEMORIA,0 ;si el pusador en ra0 esta en uno vulveve a mirara
GOTO STEPCW ;sino entonces anda hacia el otro lado
GOTO LOOP ; SI AMOS SON CERO VOALVO A LEER HASTA QEU CAMBIE


STEPCW
NOOO BTFSS PORTA,2
GOTO NOOO
CALL S1 ;da un paso y
BTFSS PORTA,1 ;si el pulsador 1 cambio
GOTO LOOP ;checkea
CALL S2
BTFSS PORTA,1
GOTO LOOP
CALL S3
BTFSS PORTA,1
GOTO LOOP
CALL S4
GOTO STEPCW

STEPCCW
NOO BTFSS PORTA,2
GOTO NOO
CALL S4
BTFSS PORTA,0
GOTO LOOP
CALL S3
BTFSS PORTA,0
GOTO LOOP
CALL S2
BTFSS PORTA,0
GOTO LOOP
CALL S1
GOTO STEPCCW





S1 MOVLW B'00000101'
MOVWF PORTC
CALL DELAY
CALL DELAY
RETURN
S2 MOVLW B'000000110'
MOVWF PORTC
CALL DELAY
CALL DELAY
RETURN
S3 MOVLW B'000001010'
MOVWF PORTC
CALL DELAY
CALL DELAY
RETURN
S4 MOVLW B'0000001001'
MOVWF PORTC
CALL DELAY
CALL DELAY
RETURN




;------------------------------------------------
DELAY movlw 35 ; Outer loop iteration count
movwf dc1
dl1 clrf dc2 ; Initialize inner loop
dl2 nop
nop
decfsz dc2,F
goto dl2
decfsz dc1,F
goto dl1
return

;-----------------------------------------------------------------------
INICIO BSF STATUS,RP0
MOVLW 06h
MOVWF ADCON1
MOVLW B'00001111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC


bcf STATUS,RP0 ; RAM PAGE 0
CLRF PORTB
CLRF PORTC
CLRF MEMORIA
GOTO LOOP

END

;---------------------------------------------------------------------------


' ON 20060429 at page: http://www.massmind.org/techref/member/FL-gmail-A53/new200604.txt someone[--] edited the page. Difference: "R:\bak\H\techref\member\FL-gmail-A53\new200604.txt.20060429.dif"