Hi
I must try youre code my friend.thanks a lot.and I must read webs which dog have introduce to me.
for a while bye but here is my code
just serout and serin is my problem
include <p16f84a.inc>
__config _WDT_OFF & _PWRTE_OFF & _CP_OFF & _HS_OSC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CBLOCK 0X0C ;;
Reg_1 ;;
Reg_2 ;;
Reg_3 ;;
COUNTER ;;
RCV ;;
LS ;;
bitc
ENDC ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org 0x00 ;;
goto main ;;
main ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BSF STATUS,5 ;;;;;;;;;;;;;;;;;;;;;
CLRF TRISB ;RB7 -->INPUT ;;
BSF TRISB,7 ;;
BCF STATUS,5 ;;;;;;;;;;;;;;;;;;;;;
BSF PORTB,6
CALL LCD_init ;;
MOVLW "T"
CALL LCD_CHR
MOVLW "o"
CALL LCD_CHR
MOVLW "h"
CALL LCD_CHR
MOVLW "i"
CALL LCD_CHR
MOVLW "d"
CALL LCD_CHR
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
CALL SERIN ;READ DATA ;;
CALL LCD_CHR
MOVLW "T"
CALL SEROUT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
GOTO $-4 ;BACK TO READ AGAIN ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SERIN BTFSC PORTB,7 ;CHECK ;;
GOTO $-1 ;START BIT ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CALL DELAY52US ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW 0X08 ;;
MOVWF COUNTER ;;
BTFSC PORTB,7 ;CHECK ;;
GOTO SERIN ;START BIT;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CALL DELAY104US ;;
BTFSC PORTB,7 ;;
BSF STATUS,C ;;
BTFSS PORTB,7 ;;
BCF STATUS,C ;;
RRF RCV,F ;;
DECFSZ COUNTER,F ;;
GOTO $-7 ;;
MOVF RCV,0 ;;
RETURN ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;SEND DATA ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SEROUT MOVWF RCV
MOVLW 0X08
MOVWF COUNTER
BCF PORTB,6
CALL DELAY104US
RRF RCV,1
BTFSC STATUS,C
BSF PORTB,6
BTFSS STATUS,C
BCF PORTB,6
CALL DELAY104US
DECFSZ COUNTER,1
GOTO $-7
BSF PORTB,6
CALL DELAY104US
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DELAY ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY52US ;;
movlw .33 ;;
movwf Reg_1 ;;
decfsz Reg_1,F ;;
goto $-1 ;;
nop ;;
NOP ;;
RETURN ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY104US ;;
movlw .68 ;;
movwf Reg_1 ;;
decfsz Reg_1,F ;;
goto $-1 ;;
NOP ;;
RETURN ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY1S ;;
movlw .93 ;;
movwf Reg_1 ;;
movlw .38 ;;
movwf Reg_2 ;;
movlw .11 ;;
movwf Reg_3 ;;
decfsz Reg_1,F ;;
goto $-1 ;;
decfsz Reg_2,F ;;
goto $-3 ;;
decfsz Reg_3,F ;;
goto $-5 ;;
nop ;;
nop ;;
RETURN ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;////////////////////////////////////////////////////////////////////////
;///////////////////////////////LCD.inc//////////////////////////////////
;////////////////////////////////////////////////////////////////////////
;//////////////////////////////8 bit LCD/////////////////////////////////
;////////////////////////////////////////////////////////////////////////
; //
; Amin Aghakhani //
;
**broken link removed** //
;
vishtaspahoraii@yahoo.com //
; //
;////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////
; LCD port ----------> 74164 pinouts ----->CLC:RB1 & DATA:RB0//
; LCD_RS ----------> RB3 //
; LCD_E ----------> RB2 //
; Reg_1 ----------> use for delay //
; Reg_2 ----------> use for delay //
;////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////
;intizaling LCD //
LCD_init ;//
movlw 0x30 ;8bit mode //
call LCD_CMD ;goto LCD_CMD //
movlw 0x30 ;8bit mode //
call LCD_CMD ;goto LCD_CMD //
movlw 0x30 ;8bit mode //
call LCD_CMD ;goto LCD_CMD //
movlw 0x38 ;8bit LCD mode //
call LCD_CMD ;goto LCD_CMD //
movlw 0x0f ;cursor blink //
call LCD_CMD ;goto LCD_CMD //
movlw 0x01 ;clear display //
call LCD_CMD ;goto LCD_CMD //
call delay1500us ;delay1500us //
return ;go back //
;////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////
;send commands to LCD //
LCD_CMD ;//
movwf LS ;copy w to LS //
movlw 0x08 ;copy 0 to w //
movwf bitc ;copy w to bitc //
sendingcmd ;//
rlf LS ;rotate left LS //
btfsc STATUS,0 ;is C/1? //
bsf PORTB,0 ;yes so set RB0 //
btfss STATUS,0 ;no it's not equal 1 so is it 0? //
bcf PORTB,0 ;yes so clear RB0 //
call send_bit ;call send_bit //
decfsz bitc,1 ;decrease form bitc and check it not be 0 //
goto sendingcmd ;it's not 0 so goto sendingcmd //
bsf PORTB,2 ;not!bitc/0 so set RB2 or EN //
call delay800us ;delay800us //
bcf PORTB,2 ;clear EN //
return ;go back //
;////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////
;send character //
LCD_CHR ;//
movwf LS ;copy w to LS //
movlw 0x08 ;copy 8 to w //
movwf bitc ;copy w to bitc //
sendingchr ;//
rlf LS ;rotate LS to left //
btfsc STATUS,0 ;is C/1? //
bsf PORTB,0 ;yes so set RB0 //
btfss STATUS,0 ;no! is C/0? //
bcf PORTB,0 ;yes so clear RB0 //
call send_bit ;sending_bit //
decfsz bitc,1 ;decrease from bitc and check it!is it 0? //
goto sendingchr ;no! so goto LCD_CHR //
bsf PORTB,2 ;yes! so set EN //
bsf PORTB,3 ;and RS //
call delay800us ;delay800us //
bcf PORTB,2 ;clear EN //
bcf PORTB,3 ;clear RS //
return ;go back //
;////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////
;send bit to 74164 //
send_bit ;//
bsf PORTB,1 ;set RB1 //
nop ;a bit delay //
nop ;... //
nop ;... //
nop ;... //
bcf PORTB,1 ;clear RB1 //
bcf PORTB,0 ;clear RB0 //
return ;go back //
;////////////////////////////////////////////////////////////////////////
;///////////////////////////Delay routines///////////////////////////////
;////////////////////////////////////////////////////////////////////////
delay1500us ;//
movlw .48
movwf Reg_1
movlw .6
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
;//
return ;//
delay800us ;//
movlw .151
movwf Reg_1
movlw .3
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop ;//
return ;//
;////////////////////////////////////////////////////////////////////////
;////////////////////////End of file/////////////////////////////////////
;////////////////////////////////////////////////////////////////////////
END
I wanna use 8mhz and 9600bps in 628A
again
thanks