Discussion in "Project Help" started by    richard1976    Jun 24, 2017.
Sat Jun 24 2017, 11:31 pm
#1
hi i have written this programme and can send data to the object and receive data however when i try to continuously transmit and receive data from device it dos not want to know it works in Isis simulation but not in real pic any help please.
here is my complete code im in pic16f874a asm.
these are the bits that are not working.
test_coins

		MOVLW   b'00000000'
     	MOVWF   RCSTA  

 		MOVLW   b'10010000'
     	MOVWF   RCSTA   
		
		
		
	
		movlw	0x0E
		movwf	datacount
		movlw	0x30
		movwf	FSR

		movlw	0x00
		call	XMIT_RS232
		movlw	0x00
		call	XMIT_RS232
		movlw	0x01
		call	XMIT_RS232
		movlw	0xE5
		call	XMIT_RS232
		movlw	0x1A
		call	XMIT_RS232
	
		goto	rs232_1

rs232_1
			btfss   PIR1,	RCIF 	      ; check for received data
     		goto    rs232_1
		 	movf    RCREG,W
			movwf	INDF
			incf	FSR
			decfsz	datacount
			goto	rs232_1
			goto	senddata_count

senddata_count
			movf	data12,w
			movwf	BIN
			movlw	0x8B
			movwf	address
			call	setaddress1
			call	BIN2BCD
			movf	tens,w
			call	senddata1
			movlw	0x8C
			movwf	address
			call	setaddress1
			movf	ones,w
			call	senddata1
			goto	senddata_coin

senddata_coin
			movlw	0xC5
			movwf	address
			call	setaddress1
			movf	data13,w
			addlw	0x30
			call	senddata1
			goto	senddata_route
			
senddata_route
			movlw	0xCD
			movwf	address
			call	setaddress1
			movf	data14,w
			addlw	0x30
			call	senddata1
			call	Delay_0.2
			call	Delay_0.2
			call	Delay_0.2
			call	Delay_0.2
			goto	test_coins


BIN2BCD



;in: BIN
;out huns. tens, ones

;uses ADD-3 algoerthm

	movlw 8
	movwf countt
	clrf huns
	clrf tens
	clrf ones

BCDADD3

	movlw 5
	subwf huns, 0
	btfsc STATUS, C
	CALL ADD3HUNS
	movlw 5
	subwf tens, 0
	btfsc STATUS, C
	CALL ADD3TENS
	movlw 5
	subwf ones, 0
	btfsc STATUS, C
	CALL ADD3ONES
	decf countt, 1
	bcf STATUS, C
	rlf BIN, 1
	rlf ones, 1
	btfsc ones,4 ; 
	CALL CARRYONES
	rlf tens, 1
	btfsc tens,4 ; 
	CALL CARRYTENS
	rlf huns,1
	bcf STATUS, C
	movf countt, 0
	btfss STATUS, Z
	GOTO BCDADD3
	movf huns, 0 ; add ASCII Offset
	addlw h'30'
	movwf huns
	movf tens, 0 ; add ASCII Offset
	addlw h'30'
	movwf tens
	movf ones, 0 ; add ASCII Offset
	addlw h'30'
	movwf ones
	RETURN
ADD3HUNS
	movlw 3
	addwf huns,1
	RETURN
ADD3TENS
	movlw 3
	addwf tens,1
	RETURN
ADD3ONES
	movlw 3
	addwf ones,1
	RETURN
CARRYONES
	bcf ones, 4
	bsf STATUS, C
	RETURN
CARRYTENS
	bcf tens, 4
	bsf STATUS, C
	RETURN
and this.
coin_drop
	MOVLW   b'00000000'
     	MOVWF   RCSTA  

 		MOVLW   b'10010000'
     	MOVWF   RCSTA  
		movlw	0x0B
		movwf	datacount
		movlw	0x30
		movwf	FSR
		movlw	0x00
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		movlw	0x00
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		movlw	0x01
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		movlw	0xE2
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		movlw	0x1D
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
	
		goto	rs232_2

rs232_2
			btfss   PIR1,	RCIF 	      ; check for received data
     		goto    rs232_2
		 	movf    RCREG,W
			movwf	INDF
			incf	FSR
			decfsz	datacount
			goto	rs232_2
			goto	display_coin_drop
			
display_coin_drop
			movlw	0xC7
			movwf	address
			call	setaddress1
			movf	data1,w
			movwf	BIN
			call	BIN2BCD
			movf	ones,w
			call	senddata1
			movf	data1,w
			xorlw	0x08
			btfss	STATUS,Z
			goto	call_senddata
			goto	prog_finished
call_senddata
			
		
			call	Delay_0.2
			call	Delay_0.2
			goto	coin_drop


and this is the complete programme:
;**********Pic header file**********
        #include <P16F874A.inc>
#define		_0 0x30
#define		_1 0x31
#define		_2 0x32
#define		_3 0x33
#define		_4 0x34
#define		_5 0x35
#define		_6 0x36
#define		_7 0x37
#define		_8 0x38
#define		_9 0x39
#define		_a 0x41
#define		_b 0x42
#define		_c 0x43
#define		_d 0x44
#define		_e 0x45
#define		_f 0x46
#define		_g 0x47
#define		_h 0x48
#define		_i 0x49		; for display characters
#define		_j 0x4a
#define		_k 0x4b
#define		_l 0x4c
#define		_m 0x4d
#define		_n 0x4e
#define		_o 0x4f
#define		_p 0x50
#define		_q 0x51
#define		_r 0x52
#define		_s 0x53
#define		_t 0x54
#define		_u 0x55
#define		_v 0x56
#define		_w 0x57
#define		_x 0x58
#define		_y 0x59
#define		_z 0x5a
#define		_sp	0x20
#define		_equals 0x3d
#define		_slash	0x2f        
#define		_#	0x23
#define		_star 0x2a
#define		_.		0x2e		
;**********File Registers (Bank 0)**********
count1		equ		0x20
count2		equ		0x21
address		equ		0x22
count		equ		0x23
count3		equ		0x24
count4		equ		0x25
count5		equ		0x26
second		equ		0x27
first		equ		0x28
datacount	equ		0x29
tx			equ		0x2A
datacheck	equ		0x2B
datacheck1	equ		0x2C
count6		equ		0x2D
count7		equ		0x2E
count8		equ		0x2F
data1       equ		0x30
data2		equ		0x31
data3		equ		0x32
data4		equ		0x33
data5		equ		0x34
data6		equ		0x35
data7		equ		0x36
data8		equ		0x37
data9		equ		0x38
data10		equ		0x39
data11		equ		0x3a
data12		equ		0x3b
data13		equ		0x3c
data14		equ		0x3d
data15		equ		0x3e
data16		equ		0x3f
data17		equ		0x40
data18		equ		0x41
data19		equ		0x42
data20		equ		0x43
data21		equ		0x44
data22		equ		0x45
datacheck2	equ		0x46
countt		equ		0x47
huns		equ		0x48
tens		equ		0x49
ones		equ		0x4A
BIN			equ		0x4B
erase_count		equ		0x4C
erase2		equ		0x4D
count9		equ		0x4E
count10		equ		0x4F
d1			equ		0x50
d2			equ		0x51
d3			equ		0x52
id_count	equ		0x53
channel_No	equ		0x54
channel_id_1	equ	0x55
channel_id_2	equ	0x56
channel_id_3	equ	0x57
channel_id_4	equ	0x58
channel_id_5	equ	0x59
channel_id_6	equ	0x5A
crc			equ		0x5B
route_channel	equ	0x5C
route_number	equ	0x5D
crc_added		equ	0x5E
;**********Reset Vectors **********
 
        org    0x00    ;16F877A reset vector
        goto  INIT
       	
;**********Subroutines**********
; Delay = 1 seconds
; Clock frequency = 20 MHz

; Actual delay = 1 seconds = 5000000 cycles
; Error = 0 %

	

_1_sec_delay
			;4999993 cycles
	movlw	0x2C
	movwf	d1
	movlw	0xE7
	movwf	d2
	movlw	0x0B
	movwf	d3
_1_sec_delay_0
	decfsz	d1, f
	goto	$+2
	decfsz	d2, f
	goto	$+2
	decfsz	d3, f
	goto	_1_sec_delay_0

			;3 cycles
	goto	$+1
	nop

			;4 cycles (including call)
	return
;100ms delay

_100ms_delay
		movlw	0x00		;1F
		movwf	count1
		movlw	0x08
		movwf	count2
delay1_0 
		decfsz	count1, f		; 100ms delay
		goto	$+2
		decfsz	count2, f
		goto	delay1_0
		goto	$+1
		return
switch_delay
		movlw	0xFF		;1F
		movwf	count9
		movlw	0xFF
		movwf	count10
delay1_1
		decfsz	count9, f		; 100ms delay
		goto	$+2
		decfsz	count10, f
		goto	delay1_1
		goto	$+1
		return
_3_second_delay
	movlw	0x88
	movwf	count3
	movlw	0xB3
	movwf	count4
	movlw	0x21
	movwf	count5
_1_second_delay_0
	decfsz	count3, f
	goto	$+2
	decfsz	count4, f
	goto	$+2
	decfsz	count5, f
	goto	_1_second_delay_0

			;6 cycles
	goto	$+1
	goto	$+1
	goto	$+1
	return

Delay_0.2
			;999990 cycles
	movlw	0x07
	movwf	count6
	movlw	0x2F
	movwf	count7
	movlw	0x03
	movwf	count8
Delay_0.2_0
	decfsz	count6, f
	goto	$+2
	decfsz	count7, f
	goto	$+2
	decfsz	count8, f
	goto	Delay_0.2_0

			;6 cycles
	goto	$+1
	goto	$+1
	goto	$+1

			;4 cycles (including call)
	return

_10ms_delay
		movlw	0xFF		;1F
		movwf	count4
		movlw	0x4F
		movwf	count5
delay1
		decfsz	count4, f		; 100ms delay
		goto	$+2
		decfsz	count5, f
		goto	delay1
		goto	$+1
		return
;************ make rb0 to rb7 outputs ********************
INIT
		bsf		STATUS,RP0 		; BANK 1

		MOVLW B'00000111' ;DISABLE COMPARATORS MODULES
		MOVWF CMCON

		movlw b'00000110'
		movwf ADCON1

		movlw b'111000'	    	; make porta outputs
		movwf TRISA	

		movlw b'00000000'		; make portb  outputs
		movwf TRISB	

		movlw b'10000000'		; make portc outputs
		movwf TRISC

		movlw	b'00000000'		; make portd rd0 to rd2 outputs rd3 to rd 6 inputs
		movwf	TRISD

		movlw b'000'	    	; make porte outputs
		movwf TRISE	

		bcf		STATUS,RP0		; bank 0
		clrf	PORTA
		clrf	PORTB
		clrf	PORTC
		clrf	PORTD	
		clrf	PORTE




;USART Serial routines

SER_INIT
            BSF     STATUS, RP0           ;select bank 1
     		MOVLW   d'129'                ;9600 baud @ 20 Mhz Fosc +0.16 err
     		MOVWF   SPBRG
     		MOVLW   b'00100100'           ;brgh = 1
     		MOVWF   TXSTA                 ;enable Async Transmission, set brgh
            BCF     STATUS, RP0           ;select bank 0
     		MOVLW   b'10010000'
     		MOVWF   RCSTA                 ;enable Async Reception

;End of serial routines

;**********Initialise**********
START	 
		nop ; FOR ICD
		call	_1_sec_delay
		movlw 0x0c		; no cursor or blink 
		movwf PORTB
		bcf	  PORTA,0
		bsf	  PORTA,1
		call  _100ms_delay
		bcf	  PORTA,1

		movlw 0x38		; 2 line display
		movwf PORTB
		bcf	  PORTA,0
		bsf	  PORTA,1
		call  _100ms_delay
		bcf	  PORTA,1
		
		
mainprog
		lcall	initialise
		bcf		PCLATH,3
		bcf		PCLATH,4
		call	_3_second_delay
		lcall	name
		bcf		PCLATH,3
		bcf		PCLATH,4
		call	_3_second_delay
		
start
		
		call	cleardisplay1
		lcall 	connect_coin_mech
		bcf		PCLATH,3
		bcf		PCLATH,4
		lcall	then_press_enter
		bcf		PCLATH,3
		bcf		PCLATH,4
wait
		call	Delay_0.2
		btfsc	PORTA,5
		goto 	wait
		goto	connecting


connecting
		lcall	connecting_now
		bcf		PCLATH,3
		bcf		PCLATH,4
		goto	request_id
		
request_id
		MOVLW   b'10000000'
     	MOVWF   RCSTA  

 		MOVLW   b'10010000'
     	MOVWF   RCSTA   
		

		movlw	0xFF
		movwf	datacheck
		movlw	0xFF
		movwf	datacheck1
		movlw	0x0D
		movwf	datacount
		movlw	0x30
		movwf	FSR
		

requestid
		movlw	0x00
		call	XMIT_RS232
		movlw	0x00
		call	XMIT_RS232
		movlw	0x01
		call	XMIT_RS232
		movlw	0xF4
		call	XMIT_RS232
		movlw	0x0B
		call	XMIT_RS232
		
		goto	rs232


		
		

	
;********* RS232 TX RX ***************
XMIT_RS232  
			bcf		STATUS,RP0
busy
			btfss   PIR1,	TXIF 	      ;xmit buffer empty?
     		goto	busy          ;no, wait
     		movwf   TXREG		      ;now send
            return  





Rcv_RS232   
			decfsz	datacheck
			goto	rs232
			decfsz	datacheck1
			goto	rs232
			goto	not_connected



rs232
			btfss   PIR1,	RCIF 	      ; check for received data
     		goto    Rcv_RS232
		 	movf    RCREG,W
			movwf	INDF
			incf	FSR
			decfsz	datacount
			goto	Rcv_RS232 
			goto	get_data1
			


not_connected
			call	cleardisplay1
			lcall	_not
			bcf		PCLATH,3
			bcf		PCLATH,4
			lcall	_connected
			bcf		PCLATH,3
			bcf		PCLATH,4
			call	_3_second_delay
			lcall	check_connection
			bcf		PCLATH,3
			bcf		PCLATH,4
			lcall	then_press_enter
			bcf		PCLATH,3
			bcf		PCLATH,4
			call	_3_second_delay
			goto	wait


	
get_data1
			call	cleardisplay1
			movlw	0x80
			movwf 	address
			call	setaddress
			movf	data10,w
			call	senddata1	
			movf	data11,w
			call	senddata1
			movf	data12,w
			call	senddata1
			movf	data13,w
			call	senddata1
			lcall	_connected
			bcf		PCLATH,3
			bcf		PCLATH,4
			

			call	_3_second_delay
			goto	wait3
wait3	
			call	cleardisplay1	
			lcall	select_option
erase1		bcf		PCLATH,3
			bcf		PCLATH,4
			lcall	erase_channel
			bcf		PCLATH,3
			bcf		PCLATH,4
press_enter
			
			btfsc	PORTA,5
			goto 	press_select
enter_1		btfss	PORTA,5
			goto	enter_1
			goto	erase_channels
press_select
			btfsc	PORTA,4
			goto 	press_enter
select_1	btfss	PORTA,4
			goto	select_1
			goto	prog
prog		lcall	prog_channel
			bcf		PCLATH,3
			bcf		PCLATH,4
programme1
			btfsc	PORTA,5
			goto 	press_select1
enter_2		btfss	PORTA,5
			goto	enter_2
			goto	programme_channels
press_select1
			btfsc	PORTA,4
			goto 	programme1
select_2	btfss	PORTA,4
			goto	select_2
			goto	coin_id
coin_id
			lcall	set_coin_id
			bcf		PCLATH,3
			bcf		PCLATH,4
coin_id1
			btfsc	PORTA,5
			goto	press_select2
enter_3		btfss	PORTA,5
			goto	enter_3
			goto	prog_id
press_select2
			btfsc	PORTA,4
			goto	coin_id1
select_3	btfss	PORTA,4
			goto	select_3
			goto	routing
routing		
			lcall	set_routing
			bcf		PCLATH,3
			bcf		PCLATH,4
routing1
			btfsc	PORTA,5
			goto	press_select3
enter_4		btfss	PORTA,5
			goto	enter_4
			goto	prog_routing
press_select3
			btfsc	PORTA,4
			goto	routing1
select_4	btfss	PORTA,4
			goto	select_4
			goto	test_all_coins
test_all_coins
			lcall	test_coin
			bcf		PCLATH,3
			bcf		PCLATH,4
coin1
			btfsc	PORTA,5
			goto	press_select5
enter_5	    btfss	PORTA,5
			goto	enter_5
			goto	enable_all_coins
press_select5
			btfsc	PORTA,4
			goto	coin1
select_5	btfss	PORTA,4
			goto	select_5
			goto	exit_to_start
exit_to_start
			lcall	exit
			bcf		PCLATH,3
			bcf		PCLATH,4
start1
			btfsc	PORTA,5
			goto	press_select4
enter_6		btfss	PORTA,5
			goto	enter_6
			goto	start		
press_select4
			btfsc	PORTA,4
			goto	start1
select_6	btfss	PORTA,4
			goto	select_6
			lcall	erase_channel
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	press_enter

;************************************
enable_all_coins

		
	
		movlw	0x00
		call	XMIT_RS232
		movlw	0x02
		call	XMIT_RS232
		movlw	0x01
		call	XMIT_RS232
		movlw	0xE7
		call	XMIT_RS232
		movlw	0xFF
		call	XMIT_RS232
		movlw	0xFF
		call	XMIT_RS232
		movlw	0x18
		call	XMIT_RS232

		
		
		call	cleardisplay1
		lcall	coin_count
		bcf		PCLATH,3
		bcf		PCLATH,4
		lcall	coin
		bcf		PCLATH,3
		bcf		PCLATH,4
		lcall	route
		bcf		PCLATH,3
		bcf		PCLATH,4
		call	Delay_0.2
		call	Delay_0.2
		call	Delay_0.2
		call	Delay_0.2	;*********** added in delay ********23/06/17
		goto	test_coins
		
		
		

;************************************
		
erase_channels
			lcall	select_channel
			bcf		PCLATH,3
			bcf		PCLATH,4
			lcall	to_erase
			bcf		PCLATH,3
			bcf		PCLATH,4
			movlw	0x01
			movwf	erase_count
			call	display_erase_number
			goto	get_enter_pressed1	
get_enter_pressed1
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed1
			btfss	PORTA,5
			goto	$-1
			goto	erase_1
get_select_pressed1
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed1
			btfss	PORTA,4
			goto	$-1
			incf	erase_count
			call	display_erase_number

			movf	erase_count,w
			xorlw	0x11
			btfss	STATUS,Z
			goto	get_enter_pressed1
			lcall	exit
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	get_enter_pressed_erase
get_enter_pressed_erase
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed_erase
			btfss	PORTA,5
			goto	$-1
			goto	wait3
get_select_pressed_erase
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed_erase
			btfss	PORTA,4
			goto	$-1
			goto	erase_channels
		
erase_1
			movf	erase_count,w
			xorlw	0x01
			btfss	STATUS,Z
			goto	$+4
			movlw	0xA3
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x02
			btfss	STATUS,Z
			goto	$+4
			movlw	0xA2
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x03
			btfss	STATUS,Z
			goto	$+4
			movlw	0xA1
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x04
			btfss	STATUS,Z
			goto	$+4
			movlw	0xA0
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x05
			btfss	STATUS,Z
			goto	$+4
			movlw	0x9F
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x06
			btfss	STATUS,Z
			goto	$+4
			movlw	0x9E
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x07
			btfss	STATUS,Z
			goto	$+4
			movlw	0x9D
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x08
			btfss	STATUS,Z
			goto	$+4
			movlw	0x9C
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x09
			btfss	STATUS,Z
			goto	$+4
			movlw	0x9B
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x0A
			btfss	STATUS,Z
			goto	$+4
			movlw	0x9A
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x0B
			btfss	STATUS,Z
			goto	$+4
			movlw	0x99
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x0C
			btfss	STATUS,Z
			goto	$+4
			movlw	0x98
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x0D
			btfss	STATUS,Z
			goto	$+4
			movlw	0x97
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x0E
			btfss	STATUS,Z
			goto	$+4
			movlw	0x96
			movwf	crc
			goto	send_erase	
			movf	erase_count,w
			xorlw	0x0F
			btfss	STATUS,Z
			goto	$+4
			movlw	0x95
			movwf	crc
			goto	send_erase
			movf	erase_count,w
			xorlw	0x10
			btfss	STATUS,Z
			goto	$+4
			movlw	0x94
			movwf	crc
			goto	send_erase
send_erase
		movlw	0x00
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG		      
		movlw	0x02
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movlw	0x01
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movlw	0x60
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movlw	0xF9
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	erase_count,w
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	crc,w  
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	


			lcall	finished
			bcf		PCLATH,3
			bcf		PCLATH,4
			call	_3_second_delay
			goto	erase_channels
;******************************************
display_erase_number
			movf	erase_count,w
			movwf	BIN
			movlw	0xC9
			movwf	address
			call	setaddress1
			call	BIN2BCD
			movf	tens,w
			call	senddata1
			movlw	0xCA
			movwf	address
			call	setaddress1
			movf	ones,w
			call	senddata1
			return


;******************************************			
programme_channels
			lcall	select_channel
			bcf		PCLATH,3
			bcf		PCLATH,4
			lcall	to_prog
			bcf		PCLATH,3
			bcf		PCLATH,4
			movlw	0x01
			movwf	erase_count
			call	display_erase_number
			goto	get_enter_press_1
get_enter_press_1
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_press_1
			btfss	PORTA,5
			goto	$-1
			goto	programme_1
get_select_press_1
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_press_1
			btfss	PORTA,4
			goto	$-1
			incf	erase_count
			call	display_erase_number

			movf	erase_count,w
			xorlw	0x11
			btfss	STATUS,Z
			goto	get_enter_press_1
			lcall	exit
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	get_enter_pressed171
get_enter_pressed171
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed171
			btfss	PORTA,5
			goto	$-1
			goto	wait3
get_select_pressed171
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed171
			btfss	PORTA,4
			goto	$-1
			goto	programme_channels
;*******************************************
programme_1
			movf	erase_count,w
			xorlw	0x01
			btfss	STATUS,Z
			goto	$+4
			movlw	0x33
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x02
			btfss	STATUS,Z
			goto	$+4
			movlw	0x32
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x03
			btfss	STATUS,Z
			goto	$+4
			movlw	0x31
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x04
			btfss	STATUS,Z
			goto	$+4
			movlw	0x30
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x05
			btfss	STATUS,Z
			goto	$+4
			movlw	0x2F
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x06
			btfss	STATUS,Z
			goto	$+4
			movlw	0x2E
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x07
			btfss	STATUS,Z
			goto	$+4
			movlw	0x2D
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x08
			btfss	STATUS,Z
			goto	$+4
			movlw	0x2C
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x09
			btfss	STATUS,Z
			goto	$+4
			movlw	0x2B
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x0A
			btfss	STATUS,Z
			goto	$+4
			movlw	0x2A
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x0B
			btfss	STATUS,Z
			goto	$+4
			movlw	0x29
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x0C
			btfss	STATUS,Z
			goto	$+4
			movlw	0x28
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x0D
			btfss	STATUS,Z
			goto	$+4
			movlw	0x27
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x0E
			btfss	STATUS,Z
			goto	$+4
			movlw	0x26
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x0F
			btfss	STATUS,Z
			goto	$+4
			movlw	0x25
			movwf	crc
			goto	send_prog
			movf	erase_count,w
			xorlw	0x10
			btfss	STATUS,Z
			goto	$+4
			movlw	0x24
			movwf	crc
			goto	send_prog
send_prog
		movlw	0x00
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG		      
		movlw	0x01
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movlw	0x01
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movlw	0xCA
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	erase_count,w
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	crc,w  
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		
		call	cleardisplay1
		lcall	start_coin_drop
		bcf		PCLATH,3
		bcf		PCLATH,4
		clrf	data1
		clrf	tens
		clrf	ones
		clrf	BIN
		
coin_drop
	MOVLW   b'00000000'
     	MOVWF   RCSTA  

 		MOVLW   b'10010000'
     	MOVWF   RCSTA  
		movlw	0x0B
		movwf	datacount
		movlw	0x30
		movwf	FSR
		movlw	0x00
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		movlw	0x00
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		movlw	0x01
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		movlw	0xE2
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		movlw	0x1D
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
	
		goto	rs232_2

rs232_2
			btfss   PIR1,	RCIF 	      ; check for received data
     		goto    rs232_2
		 	movf    RCREG,W
			movwf	INDF
			incf	FSR
			decfsz	datacount
			goto	rs232_2
			goto	display_coin_drop
			
display_coin_drop
			movlw	0xC7
			movwf	address
			call	setaddress1
			movf	data1,w
			movwf	BIN
			call	BIN2BCD
			movf	ones,w
			call	senddata1
			movf	data1,w
			xorlw	0x08
			btfss	STATUS,Z
			goto	call_senddata
			goto	prog_finished
call_senddata
			
		
			call	Delay_0.2
			call	Delay_0.2
			goto	coin_drop


prog_finished
		movlw	0x00
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		movlw	0x00
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		movlw	0x01
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		movlw	0x01
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		movlw	0xFE
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG
		lcall	finished
		bcf		PCLATH,3
		bcf		PCLATH,4
		call	_3_second_delay
		goto	programme_channels
;*******************************************



prog_1
	goto	prog_1


prog_id
			lcall	select_channel
			bcf		PCLATH,3
			bcf		PCLATH,4
			lcall	to_id
			bcf		PCLATH,3
			bcf		PCLATH,4
			movlw	0x01
			movwf	erase_count
			call	display_erase_number
			goto	get_enter_press_id1
get_enter_press_id1
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_press_id1
			btfss	PORTA,5
			goto	$-1
			goto	prog_id_1
get_select_press_id1
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_press_id1
			btfss	PORTA,4
			goto	$-1
			incf	erase_count
			call	display_erase_number
			movf	erase_count,w
			xorlw	0x11
			btfss	STATUS,Z
			goto	get_enter_press_id1
			lcall	exit
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	get_enter_pressed_id17
get_enter_pressed_id17
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed_id17
			btfss	PORTA,5
			goto	$-1
			goto	wait3
get_select_pressed_id17
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed_id17
			btfss	PORTA,4
			goto	$-1
			goto	prog_id
;***************************************************
;***************************************************
prog_id_1
			movlw	0x01
			movwf	id_count
			lcall	select_id
			bcf		PCLATH,3
			bcf		PCLATH,4
			lcall	gb200a
			bcf		PCLATH,3
			bcf		PCLATH,4
get_enter_pressed_id101
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed_id101
			btfss	PORTA,5
			goto	$-1
			goto	prog_id_101
get_select_pressed_id101
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed_id101
			btfss	PORTA,4
			goto	$-1
			lcall	gb100a
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	get_enter_pressed_id111
get_enter_pressed_id111
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed_id111
			btfss	PORTA,5
			goto	$-1
			movlw	0x02
			movwf	id_count
			goto	prog_id_101
get_select_pressed_id111
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed_id111
			btfss	PORTA,4
			goto	$-1
			lcall	gb050a
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	get_enter_pressed_id121
get_enter_pressed_id121
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed_id121
			btfss	PORTA,5
			goto	$-1
			movlw	0x03
			movwf	id_count
			goto	prog_id_101
get_select_pressed_id121
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed_id121
			btfss	PORTA,4
			goto	$-1
			lcall	gb020a
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	get_enter_pressed_id131
get_enter_pressed_id131
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed_id131
			btfss	PORTA,5
			goto	$-1
			movlw	0x04
			movwf	id_count
			goto	prog_id_101
get_select_pressed_id131
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed_id131
			btfss	PORTA,4
			goto	$-1
			lcall	gb010a
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	get_enter_pressed_id141
get_enter_pressed_id141
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed_id141
			btfss	PORTA,5
			goto	$-1
			movlw	0x05
			movwf	id_count
			goto	prog_id_101
get_select_pressed_id141
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed_id141
			btfss	PORTA,4
			goto	$-1
			lcall	gb005a
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	get_enter_pressed_id151
get_enter_pressed_id151
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed_id151
			btfss	PORTA,5
			goto	$-1
			movlw	0x06
			movwf	id_count
			goto	prog_id_101
get_select_pressed_id151
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed_id151
			btfss	PORTA,4
			goto	$-1
			lcall	blank
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	get_enter_pressed_id161
get_enter_pressed_id161
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed_id161
			btfss	PORTA,5
			goto	$-1
			movlw	0x07
			movwf	id_count
			goto	prog_id_101
get_select_pressed_id161
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed_id161
			btfss	PORTA,4
			goto	$-1
			lcall	exit
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	get_enter_pressed_id171
get_enter_pressed_id171
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed_id171
			btfss	PORTA,5
			goto	$-1
			goto	wait3
get_select_pressed_id171
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed_id171
			btfss	PORTA,4
			goto	$-1
			goto	prog_id_1
;***********************************************
prog_id_101
			call	cleardisplay
			movf	id_count,w
			xorlw	0x01
			btfss	STATUS,Z
			goto	next
			goto	send_id_GB200A
next		movf	id_count,w
			xorlw	0x02
			btfss	STATUS,Z
			goto	next1
			goto	send_id_GB100A
next1		movf	id_count,w
			xorlw	0x03
			btfss	STATUS,Z
			goto	next2
			goto	send_id_GB050A
next2		movf	id_count,w
			xorlw	0x04
			btfss	STATUS,Z
			goto	next3
			goto	send_id_GB020A
next3		movf	id_count,w
			xorlw	0x05
			btfss	STATUS,Z
			goto	next4
			goto	send_id_GB010A
next4		movf	id_count,w
			xorlw	0x06
			btfss	STATUS,Z
			goto	next5
			goto	send_id_GB005A
next5		movf	id_count,w
			xorlw	0x07
			btfss	STATUS,Z
			goto	next6
			goto	send_id_BLANK
next6
			goto	next6
;*****************send channel id routine ********************
send_channel_id
		movlw	0x00
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG		      
		movlw	0x07
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movlw	0x01
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movlw	0xB9
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	channel_No,w
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	channel_id_1,w
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	channel_id_2,w
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	channel_id_3,w
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	channel_id_4,w
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	channel_id_5,w
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	channel_id_6,w
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	crc,w  
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	


			lcall	finished
			bcf		PCLATH,3
			bcf		PCLATH,4
			call	_3_second_delay
			goto	prog_id
	
;************************************************************		
send_id_GB200A
			
			movf	erase_count,w
			movwf	channel_No
			movlw	_g
			movwf	channel_id_1
			movlw	_b
			movwf	channel_id_2
			movlw	_2
			movwf	channel_id_3
			movlw	_0
			movwf	channel_id_4
			movlw	_0
			movwf	channel_id_5
			movlw	_a
			movwf	channel_id_6
GB200A		movf	erase_count,w
			xorlw	0x01
			btfss	STATUS,Z
			goto	$+4
			movlw	0xE2
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x02
			btfss	STATUS,Z
			goto	$+4
			movlw	0xE1
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x03
			btfss	STATUS,Z
			goto	$+4
			movlw	0xE0
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x04
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDF
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x05
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDE
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x06
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDD
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x07
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDC
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x08
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDB
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x09
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDA
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0A
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD9
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0B
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD8
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0C
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD7
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0D
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD6
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0E
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD5
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0F
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD4
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x10
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD3
			movwf	crc
			goto	send_channel_id	
			
send_id_GB100A
			lcall	programming
			bcf		PCLATH,3
			bcf		PCLATH,4
			movf	erase_count,w
			movwf	channel_No
			movlw	_g
			movwf	channel_id_1
			movlw	_b
			movwf	channel_id_2
			movlw	_1
			movwf	channel_id_3
			movlw	_0
			movwf	channel_id_4
			movlw	_0
			movwf	channel_id_5
			movlw	_a
			movwf	channel_id_6
GB100A		movf	erase_count,w
			xorlw	0x01
			btfss	STATUS,Z
			goto	$+4
			movlw	0xE3
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x02
			btfss	STATUS,Z
			goto	$+4
			movlw	0xE2
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x03
			btfss	STATUS,Z
			goto	$+4
			movlw	0xE1
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x04
			btfss	STATUS,Z
			goto	$+4
			movlw	0xE0
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x05
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDF
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x06
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDE
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x07
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDD
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x08
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDC
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x09
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDB
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0A
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDA
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0B
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD9
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0C
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD8
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0D
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD7
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0E
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD6
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0F
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD5
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x10
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD4
			movwf	crc
			goto	send_channel_id	
send_id_GB050A
			lcall	programming
			bcf		PCLATH,3
			bcf		PCLATH,4
			movf	erase_count,w
			movwf	channel_No
			movlw	_g
			movwf	channel_id_1
			movlw	_b
			movwf	channel_id_2
			movlw	_0
			movwf	channel_id_3
			movlw	_5
			movwf	channel_id_4
			movlw	_0
			movwf	channel_id_5
			movlw	_a
			movwf	channel_id_6
GB050A		movf	erase_count,w
			xorlw	0x01
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDF
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x02
			btfss	STATUS,Z
			goto	$+4
			movlw	0xE2
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x03
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDE
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x04
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDD
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x05
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDC
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x06
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDB
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x07
			btfss	STATUS,Z
			goto	$+4
			movlw	0xDA
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x08
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD9
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x09
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD8
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0A
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD7
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0B
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD6
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0C
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD5
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0D
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD4
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0E
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD3
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0F
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD2
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x10
			btfss	STATUS,Z
			goto	$+4
			movlw	0xD1
			movwf	crc
			goto	send_channel_id	
send_id_GB020A
			lcall	programming
			bcf		PCLATH,3
			bcf		PCLATH,4
			movf	erase_count,w
			movwf	channel_No
			movlw	_g
			movwf	channel_id_1
			movlw	_b
			movwf	channel_id_2
			movlw	_0
			movwf	channel_id_3
			movlw	_2
			movwf	channel_id_4
			movlw	_0
			movwf	channel_id_5
			movlw	_a
			movwf	channel_id_6
			goto	GB200A
send_id_GB010A
			lcall	programming
			bcf		PCLATH,3
			bcf		PCLATH,4
			movf	erase_count,w
			movwf	channel_No
			movlw	_g
			movwf	channel_id_1
			movlw	_b
			movwf	channel_id_2
			movlw	_0
			movwf	channel_id_3
			movlw	_1
			movwf	channel_id_4
			movlw	_0
			movwf	channel_id_5
			movlw	_a
			movwf	channel_id_6
			goto	GB100A
send_id_GB005A
			lcall	programming
			bcf		PCLATH,3
			bcf		PCLATH,4
			movf	erase_count,w
			movwf	channel_No
			movlw	_g
			movwf	channel_id_1
			movlw	_b
			movwf	channel_id_2
			movlw	_0
			movwf	channel_id_3
			movlw	_0
			movwf	channel_id_4
			movlw	_5
			movwf	channel_id_5
			movlw	_a
			movwf	channel_id_6
			goto	GB050A
send_id_BLANK
			lcall	programming
			bcf		PCLATH,3
			bcf		PCLATH,4
			movf	erase_count,w
			movwf	channel_No
			movlw	_.
			movwf	channel_id_1
			movlw	_.
			movwf	channel_id_2
			movlw	_.
			movwf	channel_id_3
			movlw	_.
			movwf	channel_id_4
			movlw	_.
			movwf	channel_id_5
			movlw	_.
			movwf	channel_id_6
			movf	erase_count,w
			xorlw	0x01
			btfss	STATUS,Z
			goto	$+4
			movlw	0x2A
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x02
			btfss	STATUS,Z
			goto	$+4
			movlw	0x29
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x03
			btfss	STATUS,Z
			goto	$+4
			movlw	0x28
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x04
			btfss	STATUS,Z
			goto	$+4
			movlw	0x27
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x05
			btfss	STATUS,Z
			goto	$+4
			movlw	0x26
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x06
			btfss	STATUS,Z
			goto	$+4
			movlw	0x25
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x07
			btfss	STATUS,Z
			goto	$+4
			movlw	0x24
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x08
			btfss	STATUS,Z
			goto	$+4
			movlw	0x23
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x09
			btfss	STATUS,Z
			goto	$+4
			movlw	0x22
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0A
			btfss	STATUS,Z
			goto	$+4
			movlw	0x21
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0B
			btfss	STATUS,Z
			goto	$+4
			movlw	0x20
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0C
			btfss	STATUS,Z
			goto	$+4
			movlw	0x1F
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0D
			btfss	STATUS,Z
			goto	$+4
			movlw	0x1E
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0E
			btfss	STATUS,Z
			goto	$+4
			movlw	0x1D
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x0F
			btfss	STATUS,Z
			goto	$+4
			movlw	0x1C
			movwf	crc
			goto	send_channel_id	
			movf	erase_count,w
			xorlw	0x10
			btfss	STATUS,Z
			goto	$+4
			movlw	0x1B
			movwf	crc
			goto	send_channel_id	
;**********************************************************************
;****************************************ROUTING***ROUTING***ROUTING***
;**********************************************************************
prog_routing
			lcall	cleardisplay
			bcf		PCLATH,3
			bcf		PCLATH,4
			lcall	select_channel
			bcf		PCLATH,3
			bcf		PCLATH,4
			lcall	to_route
			bcf		PCLATH,3
			bcf		PCLATH,4
			movlw	0x01
			movwf	erase_count
			call	display_erase_number
			goto	get_prog_routing
get_prog_routing
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_routing
			btfss	PORTA,5
			goto	$-1
			goto	prog_routing_ok
get_select_routing
			call	switch_delay
			btfsc	PORTA,4
			goto	get_prog_routing
			btfss	PORTA,4
			goto	$-1
			incf	erase_count
			call	display_erase_number
			movf	erase_count,w
			xorlw	0x11
			btfss	STATUS,Z
			goto	get_prog_routing
			lcall	exit
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	get_enter_pressed_id20
get_enter_pressed_id20
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed_id20
			btfss	PORTA,5
			goto	$-1
			goto	wait3
get_select_pressed_id20
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed_id20
			btfss	PORTA,4
			goto	$-1
			goto	prog_routing

prog_routing_ok
			movf	erase_count,w
			movwf	route_channel
re_route	lcall	cleardisplay
			bcf		PCLATH,3
			bcf		PCLATH,4
			lcall	select_route
			bcf		PCLATH,3
			bcf		PCLATH,4
	
				
			movlw	0x01
			movwf	erase_count
			call	display_erase_number
			goto	get_routing
get_routing
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_routing1
			btfss	PORTA,5
			goto	$-1
			goto	prog_routing_ok1
get_select_routing1
			call	switch_delay
			btfsc	PORTA,4
			goto	get_routing
			btfss	PORTA,4
			goto	$-1
			incf	erase_count
			call	display_erase_number
			movf	erase_count,w
			xorlw	0x05
			btfss	STATUS,Z
			goto	get_routing
			lcall	exit
			bcf		PCLATH,3
			bcf		PCLATH,4
			goto	get_enter_pressed_id21
get_enter_pressed_id21
			call	switch_delay
			btfsc	PORTA,5
			goto	get_select_pressed_id21
			btfss	PORTA,5
			goto	$-1
			goto	wait3
get_select_pressed_id21
			call	switch_delay
			btfsc	PORTA,4
			goto	get_enter_pressed_id21
			btfss	PORTA,4
			goto	$-1
			goto	re_route

prog_routing_ok1
			movf	erase_count,w
			movwf	route_number
			movf	route_channel,w
			addwf	route_number,w
			addlw	0x27
			movwf	crc
			
			goto	send_routing
			;*************************** NOW HERE!!!!!!!!!****

send_routing
		movlw	0x00
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG		      
		movlw	0x02
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movlw	0x01
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movlw	0xD2
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	route_channel,w
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	route_number,w
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		movf	crc,w
		btfss   PIR1,	TXIF 	      
     	goto	$-1         
     	movwf   TXREG	
		lcall	finished
			bcf		PCLATH,3
			bcf		PCLATH,4
			call	_3_second_delay
			goto	prog_routing

test_coins


		MOVLW   b'00000000'
     	MOVWF   RCSTA  

 		MOVLW   b'10010000'
     	MOVWF   RCSTA   
		
		
		
	
		movlw	0x0E
		movwf	datacount
		movlw	0x30
		movwf	FSR

		movlw	0x00
		call	XMIT_RS232
		movlw	0x00
		call	XMIT_RS232
		movlw	0x01
		call	XMIT_RS232
		movlw	0xE5
		call	XMIT_RS232
		movlw	0x1A
		call	XMIT_RS232
	
		goto	rs232_1

rs232_1
			btfss   PIR1,	RCIF 	      ; check for received data
     		goto    rs232_1
		 	movf    RCREG,W
			movwf	INDF
			incf	FSR
			decfsz	datacount
			goto	rs232_1
			goto	senddata_count

senddata_count
			movf	data12,w
			movwf	BIN
			movlw	0x8B
			movwf	address
			call	setaddress1
			call	BIN2BCD
			movf	tens,w
			call	senddata1
			movlw	0x8C
			movwf	address
			call	setaddress1
			movf	ones,w
			call	senddata1
			goto	senddata_coin

senddata_coin
			movlw	0xC5
			movwf	address
			call	setaddress1
			movf	data13,w
			addlw	0x30
			call	senddata1
			goto	senddata_route
			
senddata_route
			movlw	0xCD
			movwf	address
			call	setaddress1
			movf	data14,w
			addlw	0x30
			call	senddata1
			call	Delay_0.2
			call	Delay_0.2
			call	Delay_0.2
			call	Delay_0.2
			goto	test_coins


BIN2BCD



;in: BIN
;out huns. tens, ones

;uses ADD-3 algoerthm

	movlw 8
	movwf countt
	clrf huns
	clrf tens
	clrf ones

BCDADD3

	movlw 5
	subwf huns, 0
	btfsc STATUS, C
	CALL ADD3HUNS
	movlw 5
	subwf tens, 0
	btfsc STATUS, C
	CALL ADD3TENS
	movlw 5
	subwf ones, 0
	btfsc STATUS, C
	CALL ADD3ONES
	decf countt, 1
	bcf STATUS, C
	rlf BIN, 1
	rlf ones, 1
	btfsc ones,4 ; 
	CALL CARRYONES
	rlf tens, 1
	btfsc tens,4 ; 
	CALL CARRYTENS
	rlf huns,1
	bcf STATUS, C
	movf countt, 0
	btfss STATUS, Z
	GOTO BCDADD3
	movf huns, 0 ; add ASCII Offset
	addlw h'30'
	movwf huns
	movf tens, 0 ; add ASCII Offset
	addlw h'30'
	movwf tens
	movf ones, 0 ; add ASCII Offset
	addlw h'30'
	movwf ones
	RETURN
ADD3HUNS
	movlw 3
	addwf huns,1
	RETURN
ADD3TENS
	movlw 3
	addwf tens,1
	RETURN
ADD3ONES
	movlw 3
	addwf ones,1
	RETURN
CARRYONES
	bcf ones, 4
	bsf STATUS, C
	RETURN
CARRYTENS
	bcf tens, 4
	bsf STATUS, C
	RETURN
;************ set data address routine page 0 *************
setaddress1
		movf  address,w	; address
		movwf PORTB
		bcf	  PORTA,0
		bsf	  PORTA,1
		call  _100ms_delay
		bcf	  PORTA,1
		return
	
	
;************ send data routine page 0 *************
senddata1
        movwf	PORTB
		bsf		PORTA,0
		bsf	  PORTA,1
		call  _100ms_delay
		bcf	  PORTA,1 
		return   
;*********** clear display routine page 0**********
cleardisplay1
		movlw 0x01
		movwf PORTB
		bcf	  PORTA,0
		bsf	  PORTA,1
		call  _100ms_delay
		bcf	  PORTA,1
		return

;********* NEW PAGE 0X800 ***********************
		org		0x800
;************************************************

sec_delay
	movlw	0x23
	movwf	count3
	movlw	0xB9
	movwf	count4
	movlw	0x09
	movwf	count5
sec_delay_1
	decfsz	count3, f
	goto	$+2
	decfsz	count4, f
	goto	$+2
	decfsz	count5, f
	goto	sec_delay_1

			;6 cycles
	goto	$+1
	goto	$+1
	goto	$+1
	return

;100ms delay

_100ms
		movlw	0x00		;1F
		movwf	count1
		movlw	0x08
		movwf	count2
delay1_00 
		decfsz	count1, f		; 100ms delay
		goto	$+2
		decfsz	count2, f
		goto	delay1_00
		goto	$+1
		return
;************ set data address routine *************
setaddress
		movf  address,w	; address
		movwf PORTB
		bcf	  PORTA,0
		bsf	  PORTA,1
		call  _100ms
		bcf	  PORTA,1
		return
	
	
;************ send data routine *************
senddata
        movwf	PORTB
		bsf		PORTA,0
		bsf	  PORTA,1
		call  _100ms
		bcf	  PORTA,1 
		return   
;*********** clear display routine **********
cleardisplay
		movlw 0x01
		movwf PORTB
		bcf	  PORTA,0
		bsf	  PORTA,1
		call  _100ms
		bcf	  PORTA,1
		return
;*********** display strings ****************
_not	
		call	cleardisplay
		movlw	0x80
		movwf 	address
		call	setaddress
		movlw	_n
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_t
		call	senddata
		movlw	_sp
		call	senddata
		movlw	0x84
		movwf 	address
		call	setaddress
		return
_connected
		movlw	0x86
		movwf 	address
		call	setaddress
		movlw	_c
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_n
		call	senddata
		movlw	_n
		call	senddata
		movlw	_e
		call	senddata
		movlw	_c
		call	senddata
		movlw	_t
		call	senddata
		movlw	_e
		call	senddata
		movlw	_d
		call	senddata
		return

name	
		call	cleardisplay
		movlw	0x84
		movwf 	address
		call	setaddress
		movlw	_g
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_l
		call	senddata
		movlw	_d
		call	senddata
		movlw	_r
		call	senddata
		movlw	_u
		call	senddata
		movlw	_s
		call	senddata
		movlw	_h
		call	senddata

		movlw	0xc3
		movwf 	address
		call	setaddress
		movlw	_p
		call	senddata	
		movlw	_r
		call	senddata
		movlw	_o
		call	senddata
		movlw	_g
		call	senddata
		movlw	_r
		call	senddata
		movlw	_a
		call	senddata
		movlw	_m
		call	senddata
		movlw	_m
		call	senddata
		movlw	_e
		call	senddata
		movlw	_r
		call	senddata
		return

initialise
		movlw	0x82
		movwf 	address
		call	setaddress
		movlw	_i
		call	senddata	
		movlw	_n
		call	senddata
		movlw	_i
		call	senddata
		movlw	_t
		call	senddata
		movlw	_i
		call	senddata
		movlw	_a
		call	senddata
		movlw	_l
		call	senddata
		movlw	_i
		call	senddata
		movlw	_s
		call	senddata
		movlw	_i
		call	senddata
		movlw	_n
		call	senddata
		movlw	_g
		call	senddata
		return

connect_coin_mech

		movlw	0x80
		movwf 	address
		call	setaddress
		movlw	_c
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_n
		call	senddata
		movlw	_n
		call	senddata
		movlw	_e
		call	senddata
		movlw	_c
		call	senddata
		movlw	_t
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_c
		call	senddata
		movlw	_o
		call	senddata
		movlw	_i
		call	senddata
		movlw	_n
		call	senddata
		movlw	_m
		call	senddata
		movlw	_e
		call	senddata
		movlw	_c
		call	senddata
		movlw	_h
		call	senddata
		return

sr5
		call	cleardisplay
		movlw	0x80
		movwf 	address
		call	setaddress
		movlw	_s
		call	senddata
		movlw	_r
		call	senddata
		movlw	_5
		call	senddata
		movlw	_sp
		call	senddata
		return

sr5ie	
		call	cleardisplay
		movlw	0x80
		movwf 	address
		call	setaddress
		movlw	_s
		call	senddata
		movlw	_r
		call	senddata
		movlw	_5
		call	senddata	
		movlw	_sp
		call	senddata
		movlw	_i
		call	senddata
		movlw	_slash
		call	senddata
		movlw	_e
		call	senddata
		movlw	_sp
		call	senddata
		return





connecting_now
		call	cleardisplay
		movlw	0x80
		movwf 	address
		call	setaddress
		movlw	_c
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_n
		call	senddata
		movlw	_n
		call	senddata
		movlw	_e
		call	senddata
		movlw	_c
		call	senddata
		movlw	_t
		call	senddata
		movlw	_i
		call	senddata
		movlw	_n
		call	senddata
		movlw	_g
		call	senddata
		call	sec_delay
		movlw	_star
		call	senddata
		call	sec_delay
		movlw	_star
		call	senddata
		call	sec_delay
		movlw	_star
		call	senddata
		call	sec_delay
		movlw	_star
		call	senddata
		call	sec_delay
		movlw	_star
		call	senddata
		call	sec_delay
		movlw	_star
		call	senddata
		return

check_connection
		
		call	cleardisplay
		movlw	0x80
		movwf 	address
		call	setaddress
		movlw	_c
		call	senddata	
		movlw	_h
		call	senddata
		movlw	_e
		call	senddata
		movlw	_c
		call	senddata
		movlw	_k
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_c
		call	senddata
		movlw	_o
		call	senddata
		movlw	_n
		call	senddata	
		movlw	_n
		call	senddata
		movlw	_e
		call	senddata
		movlw	_c
		call	senddata
		movlw	_t
		call	senddata
		movlw	_i
		call	senddata
		movlw	_o
		call	senddata
		movlw	_n
		call	senddata
		return

then_press_enter
		movlw	0xc0
		movwf 	address
		call	setaddress
		movlw	_t
		call	senddata	
		movlw	_h
		call	senddata
		movlw	_e
		call	senddata
		movlw	_n
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_p
		call	senddata
		movlw	_r
		call	senddata
		movlw	_e
		call	senddata
		movlw	_s
		call	senddata
		movlw	_s
		call	senddata
		movlw	_sp
		call	senddata	
		movlw	_e
		call	senddata
		movlw	_n
		call	senddata
		movlw	_t
		call	senddata
		movlw	_e
		call	senddata
		movlw	_r
		call	senddata
	
		return
		
select_option
		movlw	0x80
		movwf 	address
		call	setaddress
		movlw	_s
		call	senddata	
		movlw	_e
		call	senddata
		movlw	_l
		call	senddata
		movlw	_e
		call	senddata
		movlw	_c
		call	senddata
		movlw	_t
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_o
		call	senddata
		movlw	_p
		call	senddata
		movlw	_t
		call	senddata
		movlw	_i
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_n
		call	senddata
		return	

select_route
		movlw	0x80
		movwf 	address
		call	setaddress
		movlw	_s
		call	senddata	
		movlw	_e
		call	senddata
		movlw	_l
		call	senddata
		movlw	_e
		call	senddata
		movlw	_c
		call	senddata
		movlw	_t
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_r
		call	senddata
		movlw	_o
		call	senddata
		movlw	_u
		call	senddata
		movlw	_t
		call	senddata	
		movlw	_e
		call	senddata
		return	

erase_channel
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_e
		call	senddata	
		movlw	_r
		call	senddata
		movlw	_a
		call	senddata
		movlw	_s
		call	senddata
		movlw	_e
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_c
		call	senddata
		movlw	_h
		call	senddata
		movlw	_a
		call	senddata
		movlw	_n
		call	senddata
		movlw	_n
		call	senddata	
		movlw	_e
		call	senddata
		movlw	_l
		call	senddata
		return	

prog_channel
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_p
		call	senddata	
		movlw	_r
		call	senddata
		movlw	_o
		call	senddata
		movlw	_g
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_c
		call	senddata
		movlw	_h
		call	senddata
		movlw	_a
		call	senddata
		movlw	_n
		call	senddata
		movlw	_n
		call	senddata	
		movlw	_e
		call	senddata
		movlw	_l
		call	senddata
		movlw	_sp
		call	senddata
		return	

set_coin_id
	
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_s
		call	senddata	
		movlw	_e
		call	senddata
		movlw	_t
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_c
		call	senddata
		movlw	_o
		call	senddata
		movlw	_i
		call	senddata
		movlw	_n
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_i
		call	senddata
		movlw	_d
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_sp
		call	senddata	
		return	

set_routing
	
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_s
		call	senddata	
		movlw	_e
		call	senddata
		movlw	_t
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_r
		call	senddata
		movlw	_o
		call	senddata
		movlw	_u
		call	senddata
		movlw	_t
		call	senddata
		movlw	_i
		call	senddata
		movlw	_n
		call	senddata
		movlw	_g
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_sp
		call	senddata	
		return	

exit
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_e
		call	senddata	
		movlw	_x
		call	senddata
		movlw	_i
		call	senddata
		movlw	_t
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_sp
		call	senddata
		return

test_coin
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_t
		call	senddata	
		movlw	_e
		call	senddata
		movlw	_s
		call	senddata
		movlw	_t
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_c
		call	senddata
		movlw	_o
		call	senddata
		movlw	_i
		call	senddata
		movlw	_n
		call	senddata
		movlw	_s
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_sp
		call	senddata
		return

coin_count
		
		movlw	0x80
		movwf 	address
		call	setaddress
		movlw	_c
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_i
		call	senddata
		movlw	_n
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_c
		call	senddata
		movlw	_o
		call	senddata
		movlw	_u
		call	senddata
		movlw	_n
		call	senddata
		movlw	_t
		call	senddata
		return

coin
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_c
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_i
		call	senddata
		movlw	_n
		call	senddata
		return



route	
		movlw	0xC7
		movwf 	address
		call	setaddress
		movlw	_r
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_u
		call	senddata
		movlw	_t
		call	senddata
		movlw	_e
		call	senddata
		return

select_channel
		call	cleardisplay
		movlw	0x80
		movwf 	address
		call	setaddress
		movlw	_s
		call	senddata	
		movlw	_e
		call	senddata
		movlw	_l
		call	senddata
		movlw	_e
		call	senddata
		movlw	_c
		call	senddata
		movlw	_t
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_c
		call	senddata
		movlw	_h
		call	senddata	
		movlw	_a
		call	senddata
		movlw	_n
		call	senddata
		movlw	_n
		call	senddata
		movlw	_e
		call	senddata
		movlw	_l
		call	senddata
		return

to_erase
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_t
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_e
		call	senddata
		movlw	_r
		call	senddata
		movlw	_a
		call	senddata
		movlw	_s
		call	senddata
		movlw	_e
		call	senddata
		return

to_prog
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_t
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_p
		call	senddata
		movlw	_r
		call	senddata
		movlw	_o
		call	senddata
		movlw	_g
		call	senddata
		return

to_route
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_t
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_r
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_u
		call	senddata
		movlw	_t
		call	senddata
		movlw	_e
		call	senddata
		return

to_id
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_t
		call	senddata	
		movlw	_o
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_i
		call	senddata
		movlw	_d
		call	senddata
		return

select_id
		call	cleardisplay
		movlw	0x80
		movwf 	address
		call	setaddress
		movlw	_s
		call	senddata	
		movlw	_e
		call	senddata
		movlw	_l
		call	senddata
		movlw	_e
		call	senddata
		movlw	_c
		call	senddata
		movlw	_t
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_i
		call	senddata
		movlw	_d
		call	senddata	
		return
gb200a
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_g
		call	senddata	
		movlw	_b
		call	senddata
		movlw	_2
		call	senddata
		movlw	_0
		call	senddata
		movlw	_0
		call	senddata
		movlw	_a
		call	senddata
		return
gb100a
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_g
		call	senddata	
		movlw	_b
		call	senddata
		movlw	_1
		call	senddata
		movlw	_0
		call	senddata
		movlw	_0
		call	senddata
		movlw	_a
		call	senddata
		return
gb050a
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_g
		call	senddata	
		movlw	_b
		call	senddata
		movlw	_0
		call	senddata
		movlw	_5
		call	senddata
		movlw	_0
		call	senddata
		movlw	_a
		call	senddata
		return
gb020a
	
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_g
		call	senddata	
		movlw	_b
		call	senddata
		movlw	_0
		call	senddata
		movlw	_2
		call	senddata
		movlw	_0
		call	senddata
		movlw	_a
		call	senddata
		return
gb010a
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_g
		call	senddata	
		movlw	_b
		call	senddata
		movlw	_0
		call	senddata
		movlw	_1
		call	senddata
		movlw	_0
		call	senddata
		movlw	_a
		call	senddata
		return
gb005a
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_g
		call	senddata	
		movlw	_b
		call	senddata
		movlw	_0
		call	senddata
		movlw	_0
		call	senddata
		movlw	_5
		call	senddata
		movlw	_a
		call	senddata
		return
blank
		
		movlw	0xC0
		movwf 	address
		call	setaddress
		movlw	_b
		call	senddata	
		movlw	_l
		call	senddata
		movlw	_a
		call	senddata
		movlw	_n
		call	senddata
		movlw	_k
		call	senddata
		movlw	_sp
		call	senddata
		return

programming
		call	cleardisplay
		movlw	0x82
		movwf 	address
		call	setaddress
		movlw	_p
		call	senddata	
		movlw	_r
		call	senddata
		movlw	_o
		call	senddata
		movlw	_g
		call	senddata
		movlw	_r
		call	senddata
		movlw	_a
		call	senddata
		movlw	_m
		call	senddata
		movlw	_m
		call	senddata
		movlw	_i
		call	senddata
		movlw	_n
		call	senddata
		movlw	_g
		call	senddata
		movlw	0xC3
		movwf 	address
		call	setaddress
		call	sec_delay
		movlw	_star
		call	senddata
		call	sec_delay
		movlw	_star
		call	senddata
		call	sec_delay
		movlw	_star
		call	senddata
		call	sec_delay
		movlw	_star
		call	senddata
		call	sec_delay
		movlw	_star
		call	senddata
		call	sec_delay
		movlw	_star
		call	senddata
		return

finished
		call	cleardisplay
		movlw	0x84
		movwf 	address
		call	setaddress
		movlw	_f
		call	senddata	
		movlw	_i
		call	senddata
		movlw	_n
		call	senddata
		movlw	_i
		call	senddata
		movlw	_s
		call	senddata
		movlw	_h
		call	senddata
		movlw	_e
		call	senddata
		movlw	_d
		call	senddata
		return

start_coin_drop
		movlw	0x80
		movwf 	address
		call	setaddress
		movlw	_s
		call	senddata	
		movlw	_t
		call	senddata
		movlw	_a
		call	senddata
		movlw	_r
		call	senddata
		movlw	_t
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_c
		call	senddata
		movlw	_o
		call	senddata
		movlw	_i
		call	senddata
		movlw	_n
		call	senddata
		movlw	_sp
		call	senddata
		movlw	_d
		call	senddata
		movlw	_r
		call	senddata
		movlw	_o
		call	senddata
		movlw	_p
		call	senddata
		return

		end


[ Edited Tue Jul 04 2017, 10:06 am ]
Sun Jun 25 2017, 01:54 am
#2
Hi
Unfortunately there is too much code here to work on.
You need to narrow it down to the problem code.
Start by separating it into clearly defined sub routines.
Put the startup code into subroutines.
Separate the sub routines from the main program loop.
Comment every line of your code so that you and everyone else
knows what it should be doing.

Post your code as a zipped file, as shown on screen
it is very hard to follow.

If you can, post your Proteus project files as well.

Which assembler are you using ?
Sun Jun 25 2017, 02:17 am
#3
Hi can you tell me how to send and recieve usart data every 200ms as in polling a device pic asm im using mpasm
Tue Jun 27 2017, 02:12 am
#4
I have attached a demonstration file.
It will echo anything sent to the serial port.
It can use continuous polling or an interrupt.
I have marked the 3 lines you need to enable or disable to use either method.

When using on real hardware check that the configuration bits are being
programmed properly

Get Social

Information

Powered by e107 Forum System

Downloads

Comments

Lewisuhakeply
Thu Apr 18 2024, 06:00 pm
Darrellciz
Thu Apr 18 2024, 11:07 am
Charlessber
Thu Apr 18 2024, 09:29 am
BartonSem
Thu Apr 18 2024, 04:56 am
DonaldKnown
Thu Apr 18 2024, 12:24 am
utaletxcyw
Wed Apr 17 2024, 10:21 am
Anthonyvab
Wed Apr 17 2024, 08:48 am
RobertCix
Wed Apr 17 2024, 06:46 am