Bueno una disculpa por lo de las mayusculas
, bueno los fuses los tengo de la siguiente manera
__config _CONFIG1, _FCMEN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _BOREN_ON & _CPD_ON & _CP_ON & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF & _FOSC_INTOSC;XT
__config _CONFIG2, _LVP_OFF & _WRT_OFF
en la configuracion la puse de la siguiente manera
BSF BSR,0 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x68 ; b'01100110' d'102' "f"
MOVWF OSCCON ; !!Bank!! TMR1H - OSCCON - EEADRH - Unimplemented
CLRF BSR
CLRF FSR0
CLRF PORTA ; !!Bank!! PORTA - TRISA - WDTCON - SRCON
MOVLW 0x06
MOVWF PORTB ; !!Bank!! PORTB - TRISB - PORTB - TRISB
BSF BSR,0 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x06 ; b'00000110' d'006'
MOVWF ADCON1 ; !!Bank!! ADCON0 - ADCON1 - RAM - RAM
MOVLB 0x02;CLRF OSCCON ; !!Bank Register-Bank(0/1)-Select
BANKSEL ANSELA ; !!Bank Register-Bank(0/1)-Select
CLRF ANSELA ; !!Bank!! Unimplemented - Unimplemented - CM2CON0 - ANSEL
CLRF ANSELB ; !!Bank!! PORTE - TRISE - CM2CON1 - ANSELH
BANKSEL WPUA
CLRF WPUA
CLRF WPUB
MOVLB 0x01 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x01 ; b'00000001' d'001'
MOVWF PORTB ; !!Bank!! PORTB - TRISB - PORTB - TRISB
MOVLW 0x20 ; b'01100000' d'096' "`"
MOVWF PORTA ; !!Bank!! PORTA - TRISA - WDTCON - SRCON
CLRF BSR
BSF PORTB,1
BSF PORTB,2
MOVLB 0x01
MOVLW 0x20
MOVWF PIE1
MOVLW 0x02 ; b'10000010' d'130'
MOVWF OPTION_REG ; !!Bank!! TMR0 - OPTION_REG - TMR0 - OPTION_REG
BANKSEL SPBRGL
MOVLW 0x19 ; b'00011001' d'025'
MOVWF SPBRGL ; !!Bank!! TXREG - SPBRG - RAM - RAM
BCF TXSTA,4 ; !!Bank!! RCSTA - TXSTA - RAM - RAM
CLRF BSR ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x1B ; b'00011011' d'027'
MOVWF PR2 ; !!Bank!! T2CON - PR2 - RAM - RAM
MOVLW 0xF0
MOVWF INTCON
CLRF BSR
MOVLW 0x20
MOVWF FSR0
BCF INTCON,GIE
ERASEREG
CLRF INDF0
INCF FSR0,F
BTFSS FSR0,7
GOTO ERASEREG
CLRF TMR0
BCF INTCON,TMR0IF
BSF INTCON,GIE
MOVLW 0x06 ; b'01000000' d'064' "@"
MOVWF PORTB ; !!Bank!! PORTB - TRISB - PORTB - TRISB
BANKSEL RCSTA
BSF RCSTA,7 ; !!Bank!! RCSTA - TXSTA - RAM - RAM
BCF TXSTA,5
BSF RCSTA,4
BAUDER
BSF BAUDCON,4
BTFSS BAUDCON,4
GOTO BAUDER
CLRF BSR
y la rutina de envio es esta (la de recepcion es mediante UART)
;################################
ORG 0x0F00
;################################
DEBIT
MOVLW 0x50;12 ; PARA 9600 BAUDIOS / XTAL DE 4 MEGA HZ. (si pongo 0x50 en vez de 0x12, si funciona en proteus, pero en caso contrario recibe "00" ó "EF" ó "FE"
MOVWF CONTBAU
X02
CLRWDT
NOP
DECFSZ CONTBAU,1
GOTO X02
NOP
NOP
RETLW 00H
;***************************************************
TXRUTINA
BCF INTCON,GIE
BCF PORTB,1 ; START BITS
CALL DEBIT
MOVLW 08H ; SIETE BITS
MOVWF COUNTBIT
NOP
S7
RRF TXENV,1
BTFSS STATUS,C ; 0
GOTO S4 ; FUE CERO 1
BSF PORTB,1 ; FUE UNO 1
GOTO S5 ; 2
S4
BCF PORTB,1 ; 2
S5
CALL DEBIT ; DELAY ENTRE BITS 3
DECFSZ COUNTBIT,1
GOTO S7
BSF PORTB,1 ; STOP BITS
CALL DEBIT
CALL DEBIT
BANKSEL TXREG
MOVF RCREG,W
CLRF BSR
CLRF PCLATH
BSF INTCON,GIE
RETLW 0x00
;#########################################
estas rutinas ambos PIC las tienen; esta rutina solo es para el 12f1822
;#############################################
IOCAE
BANKSEL IOCAP
MOVLW 0xFF
XORWF IOCAF,W
ANDWF IOCAF,F
BTFSC IOCAN,3
GOTO DESHAP1A
CLRF IOCAP
BSF IOCAN,3
CLRF BSR
BSF PORTA,1
BANKSEL TRISA
BCF TRISA,1
CLRF BSR
GOTO ENDINTERR0
DESHAP1A
CLRF IOCAN
BSF IOCAP,3
BANKSEL TRISA
BSF TRISA,1
CLRF BSR
GOTO ENDINTERR0
ENDINTERR0
MOVLW 0x01
XORWF INTCON,W
ANDWF INTCON,F
GOTO ENDINTERR
;###################################
y la uso para la interrupcion por cambio y el inicio es igual salvo unas cosillas para la interrupcion por cambio
;3####################################
CLRF BSR
CLRF FSR0
CLRF PORTA ; !!Bank!! PORTA - TRISA - WDTCON - SRCON
BSF BSR,0 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x06 ; b'00000110' d'006'
MOVWF ADCON1 ; !!Bank!! ADCON0 - ADCON1 - RAM - RAM
MOVLB 0x02;CLRF OSCCON ; !!Bank Register-Bank(0/1)-Select
BANKSEL ANSELA ; !!Bank Register-Bank(0/1)-Select
CLRF ANSELA ; !!Bank!! Unimplemented - Unimplemented - CM2CON0 - ANSEL
BANKSEL WPUA
CLRF WPUA
MOVLB 0x01 ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x0A ; b'01100000' d'096' "`"
MOVWF PORTA ; !!Bank!! PORTA - TRISA - WDTCON - SRCON
MOVLW 0x20
MOVWF PIE1
MOVLW 0x02 ; b'10000010' d'130'
MOVWF OPTION_REG ; !!Bank!! TMR0 - OPTION_REG - TMR0 - OPTION_REG
BANKSEL SPBRGL
MOVLW 0x19 ; b'00011001' d'025'
MOVWF SPBRGL ; !!Bank!! TXREG - SPBRG - RAM - RAM
BCF TXSTA,4 ; !!Bank!! RCSTA - TXSTA - RAM - RAM
BANKSEL IOCAN
MOVLW 0x08
MOVWF IOCAN
CLRF BSR ; !!Bank Register-Bank(0/1)-Select
MOVLW 0x1B ; b'00011011' d'027'
MOVWF PR2 ; !!Bank!! T2CON - PR2 - RAM - RAM
MOVLW 0xD8
MOVWF INTCON
CLRF BSR
MOVLW 0x20
MOVWF FSR0
ERASEREG
CLRF INDF0
INCF FSR0,F
BTFSS FSR0,7
GOTO ERASEREG
CLRF TMR0
BANKSEL RCSTA
BSF RCSTA,7 ; !!Bank!! RCSTA - TXSTA - RAM - RAM
BCF TXSTA,5
BSF RCSTA,4
BAUDER
BSF BAUDCON,4
BTFSS BAUDCON,4
GOTO BAUDER
CLRF BSR
;##################################
y pues si ocupas que te pase las rutinas para el envio avisame para postearlas, bueno mejor de una vez adjunto la del 16f1827
BCF PORTB,2
MOVLW 0x0F
MOVWF TXENV
MOVLP 0x0F
CALL TXRUTINA
BSF BSR,0
BSF PORTB,1
CLRF BSR
BSF PORTB,2
BSF CONTROLRECI,0
ESPERARES
CLRF BOTONES
BTFSC CONTROLRECI,0
GOTO ESPERARES
BSF PORTB,1
BSF BSR,0
BCF PORTB,1
CLRF BSR
BCF PORTB,2
RETURN
esa es la que normalmente uso para envio de datos y luego espera mediante una interrupcion la recepcion de un grupo de datos, que levanten una bandera y dejen seguir con el programa.
si ocupas algo mas dime, de verdad quisiera saber que hago mal :/y pues el porque funciona en proteus y en fisico no; con el esquema te refieres a las conexiones?
PD: Hice una modificacion, cheque los registros y vi que tenia BRGH = 0 y SPBRG = 25, cheque en las tablas y estaba enviando a una velocidad de 2500 baudios si mal no recuerdo, al ponerle BRGH = 1, y la rutina de envio como la saque de aqui, en proteus funciona, fisico no :/, aun no veo el error, creo que la tablilla ha de tener un problema que no veo; la tablilla no es mia, me la dio mi maestro y me dijo que hiciera un programa para prueba, es como un proyecto.
La pata RA3 del 12f1822 esta conectada a el RB2 del 16f1827 y estas a su vez van a una resistencia de 10Kohms conectada a corriente