
Originally Posted by
Darrel Taylor
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
Bookmarks