asm version 52 words
Code:
#CONFIG
__config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_ON & _CP_OFF
#ENDCONFIG
DEFINE OSC 8 'LETS PBP KNOW WE WILL BE RUNNING AT 8MHZ
'PIN DEFENITIONS
'
'GP3
'GP4 USED FOR TRIGGER INPUT
'GP5 USED FOR LED
'SET UP THE REGISTERS
OSCCON = %01110001 '8MHZ INTERNAL CLOCK USED
CMCON0 = %00000111 'CIN PINS ARE I/O, COUT PIN IS I/O
TRISIO = %00111010 ' GP2 OUTPUT THE REST ARE INPUTS
ANSEL = 0 'NO ANALOG PORTS - ALL DIGITAL
WPU = %00010000 'GP4 WEAK PULL UP ENABLED.
' DEFINE DEBUG_REG GPIO
' DEFINE DEBUG_BIT 2
' DEFINE DEBUG_BAUD 9600
' DEFINE DEBUG_MODE 0
'' LATB.7=1
'PBP software serial out 8N1
delay var byte bank0 ' set baud rate delay
txbyte var byte bank0' byte to send
bcount var byte bank0' counter
serpin var gpio.0
; set serial delay for 9600b
main:
txbyte = "H"
GOSUB serialout
txbyte = "E"
GOSUB serialout
txbyte = "L"
GOSUB serialout
txbyte = "L"
GOSUB serialout
txbyte = "O"
GOSUB serialout
txbyte = $20 ' space
GOSUB serialout
goto main
serialout:
asm
movlw 8
movwf _bcount
bcf GPIO ,0
call pausedelay
sendbyte
btfss _txbyte ,0
goto snd0
bsf GPIO ,0
goto sndd
snd0
bcf GPIO ,0
sndd
rrf _txbyte ,F
call pausedelay
decfsz _bcount ,F
goto sendbyte
bsf GPIO ,0
pausedelay
movlw 67
movwf _delay
zpausedelay
decfsz _delay ,F
goto zpausedelay
return
endasm
Bookmarks