[ บทความ : ตัวอย่างโปรแกรมของ CP-PIC877 V1/V2 ] ตอนที่ 2 การติดต่อกับ RS485

ตัวอย่างต่อไปนี้เป็น โปรแกรมที่เขียนขึ้นเพื่อใช้งานกับบอร์ด CP-PIC877 V1 หรือ V2 ของบริษัท ETT ตัวอย่าง นี้เป็นการติดต่อกับพอร์ตสื่อสารแบบ RS485 โดยเราสามารถเขียนเป็นภาษาแอสเซ็มบลีได้ดังนี้



	;**************************************
	; Test RS485
	; Hardware  : CP-PIC877 V1.0 & V2.0
	; Assembler : mpasm.exe
	; Programmer: Somkiat Siha
	; Company   : ETT  CO.,LTD.
	; Date      : 29/2/2000
	;**************************************


	     list p=16f877                 ; list directive to define processor
	     #include         ; processor specific variable definitions

	#define   DIR  PORTC,5        ; Direction
	count1    EQU  0x70
	count2    EQU  0x71
	temp      EQU  0x72

	          ORG       0x0000
	          goto      init

	          ORG       0x0004
	          movlw     0x0f
	          movwf     PORTD
	          goto      $
	          retfie

	;************ initial *******************
	init      bcf       PORTC,5
	          bsf       STATUS,RP0     ; select bank 1
	          bcf       TRISC,5        ; Direction control
	          movlw     0x19           ; BAUD rate 2400
	          movwf     SPBRG          ;
	          clrf      TRISD          ; PortD output
	          bcf       STATUS,RP0     ; select bank 0
	
	          movlw     TXSTA
	          movwf     FSR
	          bsf       INDF,5
	
	          clrf      RCSTA
	          bsf       RCSTA,SPEN      ; Serial port enabled
	          bsf       RCSTA,CREN      ; continuous receive
	          bcf       DIR

	;********** start to receive ************

	wait1     btfss     PIR1,RCIF       ; Check RCIF  bit in PIR1 register
	          goto      wait1           ; RCREG emty or RCIF = 0
	          movf      RCREG,w         ; RCREG full or RCIF = 1
	          movwf     temp
	          bsf       DIR             ; Dir =  TX
	          movf      temp,w
	          movwf     TXREG
	wait4     movlw     TXSTA           ;
	          movwf     FSR             ;
	          btfss     INDF,1          ; TSR = empty ?
	          goto      wait4           ; NO  (TRMT = 0) ,TSR full
                                    ; Yes (TRMT = 1) ,TSR empty
	          call      delay
	          call      delay
	          bsf       DIR             ; Dir = RX                      
	          goto      wait1
	
	;***********************************************			
	; Delay
	;***********************************************			
	delay     movlw     0xff
	          movwf     count1
	del2      movlw     0xff
	          movwf     count2
	del1      decfsz    count2
	          goto      del1
	          decfsz    count1
	          goto      del2
	          return

	          END

สำหรับใครที่ใช้ PIC BASIC Pro ก็สามารถเขียนโปรแกรมได้ดังนี้



	'*********************************************
	'Test RS-232 or RS-422
	'Hardware   : CP-PIC877 V1.0 & V2.0
	'file name  : PicBasic Pro compiler (PBP.EXE)
	'Programmer : Somkiat Siha
	'Company    : ETT  CO.,LTD.
	' Date      : 20/2/2000
	'*********************************************
	' After down load this program complete.
	'    1. Connect RS232 cable  between PC  & board.
	'    2. Run program terminal such as Procom Plus and set parameters follow
	'         9600 Baud, 8 bits data, 1 stop ,No parity
	'    3. Then press anykey(PC) you will see data that you press on screen(it echo)	

	INN  var  byte
	JJJ  var  byte
	include "bs2defs.bas"

	trisd=$0
	loop:
	          low   portc.5   'receive
	          serin portc.7,T2400,INN
	          portd=INN
	          jjj=INN
	          pause 10
	          high  portc.5   'send
	          serout portc.6,T2400,[jjj]
	goto loop     
	end

LiNK :

CP-PIC877 V1
CP-PIC877 V2

เขียนโดย : อีทีที
Author : ETT
e-mail : sales@etteam.com
วันที่ทำการปรับปรุง : ๑๖ ก.พ. ๒๕๔๔