W
wilyam
Guest
Este seria o que eu quero fazer
; * RA1 <--- serial pinout
; * RB7-rb0 <--- paralelo input-MSB LSB
; * 19200 é o baudrate ([(fosc / 4) / BR] / 3) -2
; * 4MHz XT OSC
; * O programa irá apenas fazer o paralelo para PORTB entrada em uma saída serial em RA1
; "Mas im tendo um problema, meu programa não parecem funcionar como ele shoud, alguém poderia verificar isso por um momento.
Onde foi que eu fui mal?
processador p16f84a
#
include "p16f84a.inc"
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSClargura EQU 23H
count EQU 24H
txreg EQU 25h
ulitwidth EQU 26H
d3 EQU 29H
temp EQU 2AH
d1 EQU 2BH
d2 EQU 2CHORG 0x00
goto principal
principais chamada inicial
nextm chamada putBw
chamada enviar convite onesec
goto nextm
inicial BSF STATUS, RP0
movlw h'FF 'movwf TRISB
movlw h'00 'movwf TRISA
BCF STATUS, RP0
BCF STATUS, C
clrf temp
clrf txreg
regresso
enviar movwf txreg
BCF PORTA, 1; enviar iniciar bit
movlw d'15 '
movwf largura
movlw ,9
movwf count
txbaudwait decfsz largura
goto txbaudwait
movlw d'15 '
movwf largura
movwf ulitwidth
decfsz count
goto sendnextbit
movlw ,9
movwf count
BSF PORTA, 1; mandar parar bit
loopw decfsz ulitwidth
goto loopw
regresso
sendnextbit DRR txreg, 1
btfss STATUS, C
goto setlo
BSF PORTA, 1; enviar um pouco alto
goto txbaudwait
setlo BCF PORTA, 1; enviar um pouco baixa
goto txbaudwaitputBw btfss PORTB, 0 <== sondagens
BCF temp, 0
btfsc PORTB, 0
BSF temp, 0
btfss PORTB, 1
BCF temp, 1
btfsc PORTB, 1
BSF temp, 1
btfss PORTB, 2
BCF temp, 2
btfsc PORTB, 2
BSF temp, 2
btfss PORTB, 3
BCF temp, 3
btfsc PORTB, 3
BSF temp, 3
btfss PORTB, 4
BCF temp, 4
btfsc PORTB, 4
BSF temp, 4
btfss PORTB, 5
BCF temp, 5
btfsc PORTB, 5
BSF temp, 5
btfss PORTB, 6
BCF temp, 6
btfsc PORTB, 6
BSF temp, 6
btfss PORTB, 7
BCF temp, 7
btfsc PORTB, 7
BSF temp, 7
movf temp, w
regresso
onesec; <== tenho esse código gerador de atraso
movlw 0x08
movwf d1
movlw 0x2F
movwf d2
movlw 0x03
movwf d3
onesec_0
decfsz d1, f
goto $
2decfsz d2, f
goto $
2decfsz d3, f
goto onesec_0; 3 ciclos
goto $
1nop
regresso
fim
; * RA1 <--- serial pinout
; * RB7-rb0 <--- paralelo input-MSB LSB
; * 19200 é o baudrate ([(fosc / 4) / BR] / 3) -2
; * 4MHz XT OSC
; * O programa irá apenas fazer o paralelo para PORTB entrada em uma saída serial em RA1
; "Mas im tendo um problema, meu programa não parecem funcionar como ele shoud, alguém poderia verificar isso por um momento.
Onde foi que eu fui mal?
processador p16f84a
#
include "p16f84a.inc"
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSClargura EQU 23H
count EQU 24H
txreg EQU 25h
ulitwidth EQU 26H
d3 EQU 29H
temp EQU 2AH
d1 EQU 2BH
d2 EQU 2CHORG 0x00
goto principal
principais chamada inicial
nextm chamada putBw
chamada enviar convite onesec
goto nextm
inicial BSF STATUS, RP0
movlw h'FF 'movwf TRISB
movlw h'00 'movwf TRISA
BCF STATUS, RP0
BCF STATUS, C
clrf temp
clrf txreg
regresso
enviar movwf txreg
BCF PORTA, 1; enviar iniciar bit
movlw d'15 '
movwf largura
movlw ,9
movwf count
txbaudwait decfsz largura
goto txbaudwait
movlw d'15 '
movwf largura
movwf ulitwidth
decfsz count
goto sendnextbit
movlw ,9
movwf count
BSF PORTA, 1; mandar parar bit
loopw decfsz ulitwidth
goto loopw
regresso
sendnextbit DRR txreg, 1
btfss STATUS, C
goto setlo
BSF PORTA, 1; enviar um pouco alto
goto txbaudwait
setlo BCF PORTA, 1; enviar um pouco baixa
goto txbaudwaitputBw btfss PORTB, 0 <== sondagens
BCF temp, 0
btfsc PORTB, 0
BSF temp, 0
btfss PORTB, 1
BCF temp, 1
btfsc PORTB, 1
BSF temp, 1
btfss PORTB, 2
BCF temp, 2
btfsc PORTB, 2
BSF temp, 2
btfss PORTB, 3
BCF temp, 3
btfsc PORTB, 3
BSF temp, 3
btfss PORTB, 4
BCF temp, 4
btfsc PORTB, 4
BSF temp, 4
btfss PORTB, 5
BCF temp, 5
btfsc PORTB, 5
BSF temp, 5
btfss PORTB, 6
BCF temp, 6
btfsc PORTB, 6
BSF temp, 6
btfss PORTB, 7
BCF temp, 7
btfsc PORTB, 7
BSF temp, 7
movf temp, w
regresso
onesec; <== tenho esse código gerador de atraso
movlw 0x08
movwf d1
movlw 0x2F
movwf d2
movlw 0x03
movwf d3
onesec_0
decfsz d1, f
goto $
2decfsz d2, f
goto $
2decfsz d3, f
goto onesec_0; 3 ciclos
goto $
1nop
regresso
fim