Quote Originally Posted by Darrel Taylor View Post
Yes it will.
Sorry, my very poor english.
Im new pbp user.
can you help me why not work my code?
Device 16F628





Code:
DEFINE OSC 20
CLEAR

;_________________________Interrupt Context save locations]_________________

wsave       var byte    $20     SYSTEM      ' location for W if in bank0
wsave1      VAR BYTE    $A0     SYSTEM      ' location for W if in bank1
wsave2      VAR BYTE    $120    SYSTEM      ' location for W if in bank2
ssave       VAR BYTE    BANK0   SYSTEM      ' location for STATUS register
psave       VAR BYTE    BANK0   SYSTEM      ' location for PCLATH register
;----[ MIBAM Setup ]--------------------------------------------------------
BAM_COUNT CON 3                     ; How many BAM Pins are used?
INCLUDE "MIBAM.pbp"                 ; Mirror Image BAM module

BAM_FREQ    CON 100
DEFINE BAM_INFO 1  
DEFINE HSER_BAUD 250000
DEFINE HSER_CLROERR 1
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h 



KANAL       CON 3   
BREAKTIME   VAR BYTE
DMXFLAG     VAR BIT
STARTBYTE   VAR BYTE
ADR         VAR BYTE
RVAL        VAR BYTE
GVAL        VAR BYTE
BVAL        VAR BYTE
YVAL        VAR BYTE
X           VAR BYTE
DUMMY       VAR BYTE
i           VAR BYTE

'*****************  MIBAM  ***************************************************
RED         VAR BYTE
GREEN       VAR BYTE
BLUE        VAR BYTE

ASM
BAM_LIST  macro                     ; Define PIN's to use for BAM
     BAM_PIN (PORTB,5, RED)         ;   and the associated Duty variables
     BAM_PIN (PORTB,6, GREEN)
     BAM_PIN (PORTB,7, BLUE)
  endm
  BAM_INIT  BAM_LIST                ; Initialize the Pins
ENDASM
'*****************************************************************************
TRISA=%00111001
TRISB=%00000010 

ScopeSync   VAR     PORTB.2   
RXT         VAR     PORTB.1
ERR         VAR     PORTB.4

CMCON=7        
VRCON=0 
OPTION_REG.7 =0
INTCON =%11000000  



START:
PAUSE 100
DUMMY=0
ADR = KANAL-1
RED=50
GREEN=100
BLUE=180
ERR=0
GOTO LOOP
'--------->>>>>>>>

DMXBAK:
i=i+1
IF i> 200 THEN RETURN
BREAKTIME =1:DMXFLAG = 0
pulsin  RXT,0,BREAKTIME 

if BREAKTIME = 0 then return  
if BREAKTIME < 30 then DMXBAK 

PIE1.5=1 
RCREG = dummy 
RCREG = dummy '
SPBRG = 0 
TXSTA.2 = 0 
TXSTA.4 = 0 
RCSTA.7 = 1 
RCSTA.6 = 0  
RCSTA.4 = 0 
RCSTA.4 = 1 

while RCIF = 0:wend 
STARTBYTE = RCREG
if STARTBYTE = 0 then 
     
    for x = 1 to ADR
    while RCIF = 0:WEND 
    dummy = RCREG 
    next x
    
    DATAAL:
    RVAL= RCREG 
    RCREG = 0 
    RCREG = 0 
    GVAL= RCREG 
    RCREG = 0 
    RCREG = 0 
    BVAL= RCREG 
ENDIF
RCSTA.7 = 0 
DMXFLAG=1
return


LOOP:
    IF DMXFLAG=1 THEN
        RED= RVAL
        GREEN=GVAL
        BLUE=BVAL
    ENDIF
GOSUB DMXBAK
    IF i>200 THEN 
        ERR=0
        ELSE
        ERR=1
    ENDIF
i=0
DUMMY=0

GOTO LOOP

END