; ****************************************************************** ; ; D.A.T.A. ELETTRONICA Progetto : TEST M5450.ASM ; ; Autore : Benente Bruno ; Versione : 1.0 ; Inizio : 31/10/2002 ; ; QUESTO PROGRAMMA FA LO SHIFT DI UN LED ACCESO.....SOLO 8 LED ; E VISUALIZZA IL 9 IN BINARIO......... ; ; *************************************************************************** $TITLE (TEST M5450) $DATE (31/10/02) $MOD751 ORG 0 AJMP START ;*************************************************************************** ; VARIABILI DEL PROGRAMMA IN AREA RAM 00 - 3FH _INDIR DATA 8H ;RX...1 DATO _CODICE DATA 9H ;RX...2 DATO _PIPPO1 DATA 10H ;RX...3 DATO _PIPPO2 DATA 11H ;RX...4 DATO COUNT DATA 12H ;CONTATORE DI BIT FLAG DATA 13H ;*************************************************************************** ; ATTIVAZIONE PIN SULLE PORTE CLK_M BIT P0.0 ; CLOCK M5450 DATA_M BIT P0.1 ; DATO M5450 ENA_M BIT P0.2 ; ENABLE M5450 ;**************************************************************************** ; RITARDO BASE DI 2 MILLISECONDI ; Quarzo =10MHZ ; Ciclo macchina = 0,1 microS / 12 = 1,2 microS per 87C751 WAITBASE: MOV R4,B ; COPIA DI B PER EVITARE WB_1: MOV TL,#119 ; DI PERDERLO SUCCESSIVAMENTE MOV TH,#249 CLR TF SETB TR WB_2: JNB TF,WB_2 ;LOOP SU SE STESSO...QUANDO=1 PROSEGUI DJNZ R4,WB_1 DJNZ R3,WAITBASE CLR TR CLR TF MOV R3,#1 RET ;*************************************************************************** ; M5450 AZZERA LED VERDE/GIALLO/ROSSO...LOCAZIONI RAM RAM_ERASE: CLR A MOV R0,#14H ;LOCAZ. RAM 20 MOV @R0,A INC R0 ;LOCAZ. RAM 21 MOV @R0,A INC R0 ;LOCAZ. RAM 22 MOV @R0,A INC R0 ;LOCAZ. RAM 23 MOV @R0,A RET ;**************************************************************************** ; M5450 VISUALIZZA LED VERDE/GIALLO/ROSSO LED_OUT: PUSH ACC CLR CLK_M ;PARTO DA CLOCK BASSO SETB DATA_M ;CICLO.... SETB CLK_M ;....DI... CLR CLK_M ;......START MOV R5,#4 ;4 BYTE DA LEGGERE MOV R0,#14H ;CARICO LA LOCAZ, RAM DI PARTENZA RIP1: MOV A,@R0 ;CONTENUTO LOCAZ. RAM ATTUALE IN A MOV R2,#8 ;CONTATORE 7 BIT MANI1: CLR C RRC A JC MANI2 ;SE C=1 SALTA CLR DATA_M ;DATO=0 SJMP TROI MANI2: SETB DATA_M ;DATO=1 TROI: SETB CLK_M ;STROBE...... CLR CLK_M ;DEL BIT DJNZ R2,MANI1 ;SCANSIONE DEGLI 8 BIT...DI RAM INC R0 ;PASSO ALLA LOCAZ. RAM SUCCESSIVA DJNZ R5,RIP1 ;ANALIZZO 4 LOCAZIONI RAM CLR DATA_M ; SETB CLK_M ;33...USCITA 0 CLR CLK_M SETB CLK_M CLR CLK_M ;34...USCITA 0 SETB CLK_M ;35=1 ...LOAD 35 LATCHES CLR CLK_M NOP ;....RESET ;DELLO SHIFT REGISTER POP ACC RET ;************************************************************************** ; RESET GENERALE RES_GEN: MOV P0,#255 MOV R3,#1 CLR ENA_M RET ;************************************************************************** ; MAIN PROGRAM START: MOV SP,#37H LOOP3: ACALL RES_GEN ACALL RAM_ERASE ;TUTTO SPENTO MOV R7,#8 MOV R1,#14H ;LOCAZ. 20 RAM MOV A,#1 ;1 NELLA LOCAZ. 20 LOOP1: MOV @R1,A ;MEMORIZZO A NELLA 20 ACALL LED_OUT ;SCRIVI IN M5450 E VISUALIZZA ;USA A,R0,R2,R5...PUSH,POP A MOV B,#50 ;RITARDO 0,1S ACALL WAITBASE ;....NON USA A RL A DJNZ R7,LOOP1 MOV A,#9 MOV R1,#14H MOV @R1,A ACALL LED_OUT MOV B,#150 ACALL WAITBASE SJMP LOOP3 END