| ??? 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 |
| Topic | Author | Date |
| 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 |



