Kod: Markera allt
include <p16f690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
BAUD EQU .39
BAUD1 EQU .30
BAUDX EQU .29
BAUDY EQU .30
BAUDS EQU .32
cblock 0x20
XmtReg
Count
DlyCnt
offset
W_temp
endc
org 0
main
BCF STATUS,RP0 ;Bank 0
BCF STATUS,RP1 ;
CLRF PORTC ;Init PORTC
BSF STATUS,RP1 ;BANK 2
CLRF ANSEL
BSF STATUS,RP0 ;Bank 1
BCF STATUS,RP1
MOVLW b'11010000' ;Set RC5 as output and all DS to output
MOVWF TRISC ;
BCF STATUS,RP0 ;Bank 0
bsf PORTC,5
clrf offset
loop
Call HelloWorld
goto loop
HelloWorld
nextchar
movlw HIGH Text
movwf PCLATH
movf offset,0
Call Text
Call Printbyte
incf offset,1
movf offset,0
sublw .13
btfsc STATUS,Z
goto break
goto nextchar
break
clrf offset
return
Printbyte
movwf W_temp
movwf XmtReg
Xmtr
movlw 8
movwf Count
bcf PORTC,5
Call Delay1
X_next
bcf STATUS,C
rrf XmtReg,1
btfsc STATUS,C
bsf PORTC,5
btfss STATUS,C
bcf PORTC,5
Call DelayX
Decfsz Count,1
goto X_next
X_stop
bsf PORTC,5
Call DelayS
movf W_temp,0
return
DelayS
movlw BAUDS
goto SAVE
DelayY
movlw BAUDY
goto SAVE
DelayX
movlw BAUDX
goto SAVE
Delay1
movlw BAUD1
goto SAVE
Delay
movwf BAUD
SAVE
movwf DlyCnt
redo_1
decfsz DlyCnt,1
goto redo_1
return
org 0x300
Text
addwf PCL,1
retlw 'H'
retlw 'e'
retlw 'l'
retlw 'l'
retlw 'o'
retlw ' '
retlw 'W'
retlw 'o'
retlw 'r'
retlw 'l'
retlw 'd'
retlw '\r'
retlw '\n'
end
Kod: Markera allt
include <p16f676.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _BODEN_OFF )
BAUD EQU .39
BAUD1 EQU .30
BAUDX EQU .29
BAUDY EQU .30
BAUDS EQU .32
cblock 0x20
XmtReg
Count
DlyCnt
offset
W_temp
endc
org 0
main
bcf STATUS,RP0 ;Bank 0
clrf PORTC ;Init PORTC
bsf STATUS,RP0 ;Bank 1
clrf ANSEL ;digital I/O
MOVLW b'11010000' ;Set RC5 as output and all DS to output
movwf TRISC
bcf STATUS,RP0 ;Bank 0
bsf PORTC,5
clrf offset
loop
Call HelloWorld
goto loop
HelloWorld
nextchar
movlw HIGH Text
movwf PCLATH
movf offset,0
Call Text
Call Printbyte
incf offset,1
movf offset,0
sublw .13
btfsc STATUS,Z
goto break
goto nextchar
break
clrf offset
return
Printbyte
movwf W_temp
movwf XmtReg
Xmtr
movlw 8
movwf Count
bcf PORTC,5
Call Delay1
X_next
bcf STATUS,C
rrf XmtReg,1
btfsc STATUS,C
bsf PORTC,5
btfss STATUS,C
bcf PORTC,5
Call DelayX
Decfsz Count,1
goto X_next
X_stop
bsf PORTC,5
Call DelayS
movf W_temp,0
return
DelayS
movlw BAUDS
goto SAVE
DelayY
movlw BAUDY
goto SAVE
DelayX
movlw BAUDX
goto SAVE
Delay1
movlw BAUD1
goto SAVE
Delay
movwf BAUD
SAVE
movwf DlyCnt
redo_1
decfsz DlyCnt,1
goto redo_1
return
org 0x300
Text
addwf PCL,1
retlw 'H'
retlw 'e'
retlw 'l'
retlw 'l'
retlw 'o'
retlw ' '
retlw 'W'
retlw 'o'
retlw 'r'
retlw 'l'
retlw 'd'
retlw '\r'
retlw '\n'
end