; ********************************************************************** ; * File S1DEB4.asm scheda: GPC 554 con SXA51 * ; * GRIFO(R) via Dell'Artigiano 8/6 40016 S. Giorgio di Piano (BO) * ; * Tel. +39 051 892052 Fax. +39 051 893661 * ; * http://www.grifo.it http://www.grifo.com * ; * by Alessio Francesconi del 30.09.04 * ; ********************************************************************** ; Programma di esempio per la sezione 1 della DEB 01, comandata da una ; GPC 554. Tale sezione č composta da 16 tasti collegati a 16 led: ; la pressione di uno o pių di questi tasti determina lo stato logico ; 0 sulla linea, e l'accensione del led corrispondente via hardware. ; Questo programma ha il compito di comunicare con il pc e di riportare ; lo stato dei due jumper J7 e J8, sul port 0 (port 4 GPC 554): ; ossia le combinazioni create dai due jumper della GPC 554, faranno ; variare rispettivamente l'accensione dei led LD8 e LD7 port 0 della DEB 01. ; Per i movimenti e posizionamenti del cursore sono state ; adoperate alcune sequenze di comando secondo lo standard ADDS Viewpoint ; (vedi manuale GET51). ; Il collegamento č realizzato tramite un flat 26+20 vie che congiunge il ; connettore 26 vie CN5 della GPC 554 e il connettore 20 vie CN15 della DEB 01. ; ; ; Indirizzi delle periferiche di bordo ; PORT1 EQU 00090H ;registro dati del port 1 del 80c552 PORT4 EQU 000C0H ;registro dati del port 4 del 80c552 JUMPER EQU 000C4H ;registro dati di J7 e J8 contenuti nel ;port 5 del 80c552 ; ; Gestione memorie ; FPORT EQU 08H ;indirizzo di memoria interna contenente il valore rel. del port 4 SECPORT EQU 09H ;indirizzo di memoria interna contenente il valore rel. del port 1 TXCHAR EQU 0DH ;indirizzo di memoria contenente il valore da trasmettere sulla seriale J7J8 EQU 0AH ;indirizzo di memoria interna contenente il valore rel. del port 5 ; ; Inizio programma (main) ; ORG 2050H ;Inizio del codice in memoria MOV PORT4,#00H ;setto il port 4 GPC 554 (port 0 DEB 01) in output MOV SP,#2FH ;inizializzo il puntatore della prima locazione libera dello stack CLR RS0 ;imposto l'indirizzo di memoria dei registri (00H-07H) CLR RS1 ACALL SERIAL ;inizializza la seriale MOV DPTR,#HEADING ;stampo a monitor la stringa "HEADING" ACALL STRING ; CYCLE: ACALL INJUMP ;richiamo la procedura che legge il dato di J7 e J8 ORL J7J8,#3FH ;maschero i tutti i bit tranne i due pių significativi (J7,J8) MOV FPORT,J7J8 ;metto lo stato dei due jumper sul port 0 ACALL OUTPORT0 ;richiamo la procedura che va a scrivere sul port 0 AJMP CYCLE ; ; INJUMP: PUSH PSW ;salvo i registri utilizzati nello stack PUSH DPL PUSH DPH PUSH ACC MOV A,JUMPER ;carico l'indirizzo del port 5 MOV J7J8,A ;e lo metto in FPORT POP ACC ;ripristina i registri utilizzati POP DPH POP DPL POP PSW RET ; ; Procedura per la rappresentazione sul Port 4 GPC 554 del dato acquisito ; OUTPORT0: PUSH PSW ;salvo i registri utilizzati nella procedura PUSH DPL PUSH DPH PUSH ACC MOV A,FPORT ;carico il valore da rappresentare in ACC MOV PORT4,A ;e lo sparo sul port 0 della DEB 01 POP ACC ;ripristino i suddetti registri POP DPH POP DPL POP PSW RET ; ; ; Procedura di inizializzazione seriale ; SERIAL: PUSH PSW ;salvo PSW MOV SCON,#50H ;seleziono modo 1, rx attivo MOV TH1,#253 ;imposto a 253 il TH1 ANL PCON,#7FH ;azzero il bit 7 del PCON (SMOD):imposto baud rate POP PSW ;ripristino PSW RET ; ; Procedura che consente la trasmissione di dati sulla seriale ; TRASMSER: PUSH PSW ;salvo PSW TRASM1: JBC TI,TRASM2 ;salta a TRASM2 se TI = 1 e azzera TI SJMP TRASM1 ;salta a TRASM1 perche' TI = 0 ;seriale ancora in fase di trasmissione TRASM2: MOV SBUF,TXCHAR ;scrive nel buffer della seriale il car. da trasmettere POP PSW ;ripristino PSW RET ; ; Procedura per scrivere parti di testo via seriale ; STRING: PUSH PSW ;salvo registri utilizzati dalla procedura PUSH ACC PUSH TXCHAR STRINGLOOP: MOVX A,@DPTR ;carica in A il contenuto della memoria puntata da DPTR JZ ENDSTRING ;se l'ultimo carattere letto e' nullo (00H),salta alla fine MOV TXCHAR,A ;carica il carattere nella variabile per la trasmissione ACALL TRASMSER ;trasmetti il carattere INC DPTR ;incrementa il puntatore al carattere SJMP STRINGLOOP ;il ciclo riparte per un altro carattere ENDSTRING: POP TXCHAR ;ripristina i registri sopra indicati POP ACC POP PSW RET ; ; HEADING: DB 0CH,' Riporta sul port 0, la immagine dei jumper J7 e J8 rispettivamente',1DH,' su LD8 e LD7 della DEB 01',00H END