Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
01/17/00 21:29
Read: times


 
#1244 - Light FX
Hi
I am attempting to build a light effect system using the atmel 805. Taking seven inputs, sampling them and realsing the inputs through P1. Also the fact that I am using a dip switch, after each switch activitated, it needs about 30 mS time delay, in order to skip the distortion. I will attach what I wrote and can anybody help out. Thanks

$INCLUDE(CONTROL)
$INCLUDE(AT891051.MAP)
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@1ST PROJECT-CONTROL SOFTWARE FOR LIGHT EFFECTS @
;@12/01/2000 @
;@MICRO IS AT89C1051 CLOCK IS 11.059MHz @
;@BAYRAK NUR @
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

COUNT1 EQU BYTA00 ;COUNTER FOR 25 mS TIMER
COUNT2 EQU BYTA01 ;COUNTER FOR 0.25 S TIMER
OUTPUT EQU BYTA02 ;MIRROR THE OUTPUT PORT

TIME EQU 100 ;POST-SCALE FOR 25 mS
TIME2 EQU 10 ;POST-SCALE FOR 0.25 S


;CRYSTAL 11059000Hz THE SPEED OF CRYSTAL
;TMRCYCLE 12 THE NO. OF CRYSTAL CYCLE PER TIMER INCREMENT
;TMR_SEC 11059000/12 = 92158 THE # OF TIMER INCREMENTS PER SECOND
;30mS_CYC TMR_SEC * 0.003 = 2764 HOW MANY CYCLES THE TIMER WILL COUNT IN 30mS
;INI_TMR 65536 - 2764 = 62769 THE NUMBER OF CYCLES IT WILL TAKE TO INITIALISE THE TIMER
;RESET_VALUE EQU 62769 INITIALISATION VALUE

SAMPLE_NEW EQU BITA02 ;RECORD OF INPUT STATUS FOR CURRENT SWITCH
SAMPLE_OLD EQU BITA03 ;RECORD OF INPUT STATUS FOR PREVIOUS SWITCH
TD_FLAG EQU BITA04.0 ;TIMER EXPIRED - ACT ON IT

INPUT EQU P1
;RESET VECTOR
ORG 0000H
JMP SETUP

;TIMER O INTERRUPT VECTOR
ORG 000BH
JMP TIMER_0

TIMER_0:
DJNZ COUNT1,END_INT ;DECREMENT LOOP COUNTER - 25 mS
MOV COUNT1,#TIME ;RELOAD COUNTER
SETB TD_FLAG ;
CPL P3.0 ;REMOVE AFTER TESTING
DJNZ COUNT2,END_INT ;DECREMENT NEXT COUNTER - .25 S
MOV COUNT2,#TIME2 ;RELOAD
SETB TD_FLAG ;FLAG FOR TIME DELAY TO BE TAKEN
INC SAMPLE_OLD ;
ANL SAMPLE_OLD,#00000111B ;
CPL P3.1 ;REMOVE AFTER TESTING

END_INT:
RETI


;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

ORG 0040H

SETUP:
SETB IE.7 ;ENABLE GLOBAL INTERRUPTS
SETB IE.1 ;ALLOW TIMER 0 TO OPERATE WHEN ON
CLR A ;CLEAR ACC
MOV R0,#63 ;MOVE 63 INTO REGISTER

SETUP_00:
MOV @R0,A ;
DJNZ R0,SETUP_00 ;CLEAR ALL RAM LOCATION
MOV COUNT1,#TIME ;PRE-LOAD COUNTING BYTE
MOV COUNT2,#TIME2 ;PRE-LOAD
MOV TMOD,#02 ;TIMER 0 IN 8-BIT AUTO-RELOAD MODE
MOV TH0,#5 ;TIMER RELOAD VALUE FOR MAIN LOOP
;MOV P3,#0FFH ;RESET PORT 3
MOV OUTPUT,#0FFH ;STARTUP VALUE FOR OUTPUT

FORGRND:
;JNB TD_FLAG,FORGRND ;CHCKING FOR INTERRUPT
;CLR TD_FLAG ;

JB INPUT,$ ;WAIT FOR INPUT TO GO LOW
CLR TD_FLAG ;CLEAR FLAG
SETB TR0 ;ENABLE TIMER 0
CLR P1.0 ;GET INPUT

MOV P3,#0000H ;CLEAR IT,SO IT READS THE 1ST VALUE
RR A
RR A
CPL A ;INVERT IT
INC A
;JZ ZERO ;IF ALL INPUT ARE LOW, JUMP
MOV SAMPLE_OLD,A ;STORE
SETB INPUT ;RAISE PIN
;MOV SAMPLE_NEW,SAMPLE_OLD ;
;CLR SAMPLE_OLD ;
;CJNE A,SAMPLE_OLD,UPDATED ;DID INPUT CHANGE?
;JMP FORGRND ; NO - RELOOP

UPDATED:
MOV A,SAMPLE_OLD ;GET PREVIOUS READING
CPL A ;INVERT IT
ANL A,SAMPLE_NEW ;AND IT WITH NEW SAMPLE
JZ ZERO ;GO TO ZERO - IF A BIT HAS TURNED OFF
MOV SAMPLE_NEW,A ;
CPL A ;INVERT FOR ACTIVE LOW
MOV OUTPUT,A ;GOOD BYE
MOV SAMPLE_OLD,SAMPLE_NEW ;
JMP FORGRND ;RELOOP

ZERO:
MOV A,SAMPLE_NEW ;GET NEW STATUS
ANL A,SAMPLE_NEW ;AND IT WITH NEW SAMPLE
;JNZ SAMPLING ;NO, GO TO SAMPLING
MOV SAMPLE_NEW,SAMPLE_OLD ;OK - LAEVE IT ALONE
JMP WR_TBL ;RELOOP

;SAMPLING:
;MOV A,SAMPLE_NEW ;GET CURRENT STATUS
;MOV SAMPLE_NEW,P3 ;COLLECT THE CHOSEN CONFIGURATION
;MOV OUTPUT,#11111111B ;REFRENCE ADDRESS

;SAMPLING_END:
;MOV SAMPLE_OLD,SAMPLE_NEW ;


WR_TBL:
MOV DPTR,#TABLE ;
MOV A,SAMPLE_OLD ;
MOVC A,@A+DPTR ;
RET




TABLE:
DB 01111111B ;
DB 01111110B ;
DB 00111100B ;
DB 00011000B ;
DB 00111111B ;
DB 00001111B ;
DB 11110000B ;
DB 11111110B ;
END

List of 4 messages in thread
TopicAuthorDate
Light FX            01/01/70 00:00      
RE: Light FX            01/01/70 00:00      
RE: Light FX            01/01/70 00:00      
RE: Light FX            01/01/70 00:00      

Back to Subject List