Hello,
Can you say to me if my code is good for the definition of the variables (rcif)and if there are not other errors.
Thank you
Code:'************************************************* *************** '* Name : UNTITLED.BAS * '* Author : [select VIEW...EDITOR OPTIONS] * '* Notice : Copyright (c) 2006 [select VIEW...EDITOR OPTIONS] * '* : All Rights Reserved * '* Date : 26/01/2006 * '* Version : 1.0 * '* Notes : * '* : * '************************************************* *************** DEFINE OSC 20 ' for pic 16f627 DEFINE HSER_BAUD 250000 DEFINE HSER_CLROERR 1 ' Variables diverves counter VAR word ' Variable de travail WORD idleflag VAR WORD dummy VAR WORD RCIF VAR byte startcode VAR WORD aminus VAR WORD adresse_grada VAR WORD x VAR WORD newlevel1 VAR WORD adresse_grada = 20 ' my adress for exemple 20 'This next routine is called on a gosub from my main housekeeping loop: checkdmx: counter = 1 'just a dummy variable pulsin portB.1,0,counter 'here I'm looking for the break signal if counter = 0 then idleflag = 1 'either no dmx, or break was too long to count 'return endif if counter < 40 then checkdmx 'watching for 'break 'if you get here, an active low pulse was detected, but it was too short. 'probably just part of the datastream. So go back and look again. 'otherwise, a valid break was found and it's time to read the start code dummy = RCREG 'clear out any garbage which may be in the USART dummy = RCREG SPBRG = 0 TXSTA.2 = 0 'brgh = 0 TXSTA.4 = 0 RCSTA.7 = 1 RCSTA.6 = 0 'setting 8 bit receive mode, no parity, etc RCSTA.4 = 0 'check the datasheet to see what all these bits do RCSTA.4 = 1 'now, the USART is on and ready to receive while RCIF = 0:wend 'hover here after break, before start code startcode = RCREG 'This is the first byte received after the break if startcode <> 0 then checkdmx 'do your own stuff here on a non-zero code aminus = adresse_grada - 1 'address1 is my target address for x = 1 to aminus 'set up a loop to count almost to the address while RCIF = 0:WEND 'sit here until a byte is received dummy = RCREG 'stash the byte somewhere unimportant next x newlevel1 = RCREG 'This is your target channel data portA.2 = newlevel1 'i want dimming a LED on PORTA.2 RCSTA.7 = 0 'turn off the USART goto checkdmx return




Bookmarks