![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> Hallo, > der .S19 Treiber ist nicht für die C-Control I V1.1, also nicht für die M-Unit V2.0 oder die Micro. Hallo Danke für die prompte Anwort. Ich habe den Assemblercode mal gepostet. Wer hätte eine Idee den Code für die "M"Unit umzuschreiben. Ich bin Assembler Neuling und habe keine Ahnung wie ich das machen soll: PS Ich kann den Author des Progs nicht per Email erreichen! ************************************************************* * -- U H R 5 7 S M 3 . A S M --------------- AUGUST 2004 -- * * TREIBER FUER 7-SEGMENTANZEIGEN * ************************************************************* * TREIBER AUF DAS LAYOUT FR 57mm 7-SEGMENTANZEIGEN VOM * * TYP "LTS23805 HRB" MIT GEMEINSAMMER ANODE ABGESTIMMT. * * (SCHIEBEREGISTER UND TREIBER-IC IN SMD TECHNIK) * ************************************************************* * a * * AUSGABEREIHENFOLGE: ŚÄÄÄÄæ * * f ³ g ³ b * * DP;G;F;A;B;E;D;C ĆÄÄÄÄ“ * * e ³ ³ c * * ĄÄÄÄÄŁ .dp * * d * * BEI EINEM HIGH AM AUSGANG 74 HC 595 LEUCHTET DAS SEGMENT * ************************************************************* * ADRESSEN FUER DEN C-CONTROL/BASIC SYS-BEFEHL: * * define LEDVAL &H101 ANZEIGE VON ZAHLENWERTEN * * define LEDDIGIT &H192 ANZEIGE VON EINZELNEN ZEICHEN * * define DCFSTATUS &H1C0 MERKER DCF-STATUS AKTUALISIEREN * * define DEFINIERT &H1CB PORT-A AUF AUSGANG SCHALTEN * ************************************************************* * VERWENDETE PORTS UND MERKER/BITS * * CC-PORT 6 CLOCK FUER DIE SCHIEBEREGISTER * * CC-PORT 7 CLOCK FUER DIE UEBERNAHME ZUR ANZEIGE * * CC-PORT 8 DATEN FUER DIE SCHIEBEREGISTER * * CC-BIT [192] DCFSTATUS WIRD EIN DCF SIGNAL EMPFANGEN? * ************************************************************* USRDATA equ $A1 ; ANFANG DER 24 USERBYTES IM RAM VSTACK equ $91 ; ANFANG DER 7 WORDS DES RECHEN-STACKS _A equ $91 ; ZULETZT AUF DEN RECHENSTACK GEBRACHTER WERT _A_lo equ $92 ; RECHENERGEBNIS _B equ $93 _B_lo equ $94 _C equ $95 _C_lo equ $96 _D equ $97 _D_lo equ $98 _E equ $99 _E_lo equ $9A _F equ $9B _F_lo equ $9C _G equ $9D _G_lo equ $9E *** PROZESSORPORTS DEFINIEREN/AUSWAEHLEN ********************* ledshclk equ 5 ;CC-PORT 6 CLOCK SCHIEBEREGISTER ledclk equ 6 ;CC-PORT 7 CLOCK UEBERNAHME ZUR ANZEIGE ledshdat equ 7 ;CC-PORT 8 DATEN *** BYTEPORT DEFINIEREN/AUSWAEHLEN *************************** pcdat equ $01 ;PORT B ($01) = CCPORT 1 BIS 8 pcdir equ $05 ;PORT B DATENRICHTUNGSREGISTER ($05) *** EINSPRUNGADRESSEN IN DAS C-CONTROL BASIC BETRIEBSSYSTEM ** NumPush equ $1187 Abs equ $13BA Div equ $137E Mul equ $1360 Sub equ $1351 *** LED INTERFACE ******************************************** org $101 LEDVAL: lda _C ;LADE AKKUMULATOR sta _D ;SPEICHERE AKKUMULATOR lda _C_lo ;LADE AKKUMULATOR sta _D_lo ;SPEICHERE AKKUMULATOR lda _A ;LADE AKKUMULATOR sta _C ;SPEICHERE AKKUMULATOR lda _A_lo ;LADE AKKUMULATOR sta _C_lo ;SPEICHERE AKKUMULATOR lda _D ;LADE AKKUMULATOR sta _A ;SPEICHERE AKKUMULATOR lda _D_lo ;LADE AKKUMULATOR sta _A_lo ;SPEICHERE AKKUMULATOR brclr 7,_A,nextdigit ;SPRINGE WENN BIT 7,_A GELOESCHT ZU .. bset 0, _B ;SETZE BIT 0 , _B jsr Abs ;SPRINGE ZUR UNTERROUTINE ... nextdigit: jsr NumPush ;SPRINGE ZUR UNTERROUTINE ... jsr NumPush ;SPRINGE ZUR UNTERROUTINE ... lda _C ;LADE AKKUMULATOR sta _A ;SPEICHERE AKKUMULATOR sta _B ;SPEICHERE AKKUMULATOR lda _C_lo ;LADE AKKUMULATOR lda _A_lo ;LADE AKKUMULATOR lda _B_lo ;LADE AKKUMULATOR jsr NumPush ;SPRINGE ZUR UNTERROUTINE ... jsr load10 ;SPRINGE ZUR UNTERROUTINE ... jsr Div ;SPRINGE ZUR UNTERROUTINE ... jsr NumPush ;SPRINGE ZUR UNTERROUTINE ... jsr load10 ;SPRINGE ZUR UNTERROUTINE ... jsr Mul ;SPRINGE ZUR UNTERROUTINE ... jsr Sub ;SPRINGE ZUR UNTERROUTINE ... ldx _A_lo ;LADE INDEX REGISTER lda ledcodes,x ;ZEICHEN AUS VORRAT LADEN ldx _C_lo ;LADE INDEX REGISTER beq nopoint ;DEZIMALPUNKT NICHT VERWENDET dec _C_lo ;REGISTER C_LOW UM 1 VERMINDERN bne nopoint ;DEZIMALPUNKT VERWENDET, ABER ANDERE STELLE bra point ;DEZIMALPUNKT VERWENDET, DIESE STELLE nopoint: and #$7F ;DEZIMALPUNKT ABSCHALTEN (BIT 7) point: jsr digit ;SPRINGE ZUR UNTERROUTINE ... jsr load10 ;SPRINGE ZUR UNTERROUTINE ... jsr Div ;SPRINGE ZUR UNTERROUTINE ... lda _B_lo ;LADE AKKUMULATOR bne no0check ;SPRINGE WENN NICHT GLEICH ... lda _A ;LADE AKKUMULATOR ora _A_lo ;LOGISCHE ODER VERKNUEPFUNG beq sign ;SPRINGE, WENN NULL ... no0check: dec _C_lo ;VERMINDERE REGISTER UM 1 bne nextdigit ;SPRINGE, WENN NICHT GLEICH ... rts ;UNTERROUTINE BEENDEN sign: dec _C_lo ;VERMINDERE REGISTER UM 1 beq exit ;SPRINGE, WENN NULL ... brclr 0,_B,space ;SPRINGE, WENN BIT 0,_B = LOW brclr 1,_B,minus ;SPRINGE, WENN BIT 1,_B = LOW lda #$BF ;LADE AKKU MIT CODE FUER "0" jsr digit ;SPRINGE ZUR UNTERROUTINE ... jmp nextspace ;SPRINGE NACH NEXTSPACE minus: lda #$40 ;BITMUSTER FUER DAS MINUSZEICHEN jsr digit ;SPRINGE ZUR UNTERROUTINE ... nextspace: dec _C_lo ;VERMINDERE REGISTER UM 1 beq exit ;SPRINGE, WENN NULL space: lda #0 ;ALLE SEGMENTE AUS = LEERZEICHEN jsr digit ;SPRINGE ZUR UNTERROUTINE ... bra nextspace ;SPRINGE IMMER ... exit: rts ;UNTERROUTINE BEENDEN LEDDIGIT: lda _A_lo ;LADE AKKUMULATOR digit: jsr shift ;SPRINGE ZUR UNTERROUTINE ... jsr shift ;SPRINGE ZUR UNTERROUTINE ... jsr shift ;SPRINGE ZUR UNTERROUTINE ... jsr shift ;SPRINGE ZUR UNTERROUTINE ... jsr shift ;SPRINGE ZUR UNTERROUTINE ... jsr shift ;SPRINGE ZUR UNTERROUTINE ... jsr shift ;SPRINGE ZUR UNTERROUTINE ... jsr shift ;SPRINGE ZUR UNTERROUTINE ... rts ;UNTERROUTINE BEENDEN shift: bclr ledshdat,pcdat ;PORT DATA LOW SCHALTEN lsra ;SHIFT NACH LINKS bcc shftex ;SPRINGE, WENN CARRY GELOESCHT ... bset ledshdat,pcdat ;PORT DATA HIGH SCHALTEN shftex: bset ledshclk,pcdat ;PORT CLOCK HIGH SCHALTEN bclr ledshclk,pcdat ;PORT CLOCK LOW SCHALTEN rts ;UNTERROUTINE BEENDEN load10: clr _A ;LOESCHE AKKUMULATOR lda #10 ;LADE TEILUNGSFAKTOR HIER DEZIMAL sta _A_lo ;SPEICHERE AKKUMULATOR rts ;UNTERROUTINE BEENDEN * ABFRAGE OB DCF SIGNAL EMPFANGEN WIRD ********************** * WIRD KEIN SIGNAL EMPFANGEN SO IST MERKER [192] = LOW * WIRD EIN SIGNAL EMPFANGEN SO IST MERKER [192] AM BLINKEN 1-SEK TAKT * IST DAS DCF SIGNAL ERKANNT. D.H. DIE INNERE UHR IST DCF SYNCRON, * DANN IST DER MERKER [192] = HIGH. DCFSTATUS: brset 4,$00,dcf1 ;WENN BIT-5 PORT-A GESETZT SPRINGE NACH DCF1 bset 7,$B8 ;SETZE CC-MERKER = BIT [192] jmp dcfend ;SPRINGE NACH DCFEND dcf1: bclr 7,$B8 ;LOESCHE CC-MERKER = BIT [192] dcfend: rts ;UNTERROUTINE BEENDEN * ALLE EINGAENGE VON PORT-A AUF AUSGANG SCHALTEN: *********** * WENN DIE EINGAENGE ALS AUSGANG DEFINIERT SIND, SO SIND DIESE * NIEDEROHMIG UND LIEGEN AUF GND POTENTIAL * D.H. SIE SIND WENIGER EMPFINDLICH GEGEN STATISCHE ENTLADUNGEN DEFINIERT: lda $04 ;DDRA HOLEN (SOLLTE %01011111 SEIN) ora #%11011110 ;CTS ZUSAETZLICH ALS AUSGANG SCHALTEN sta $04 ;AKKU AUF ADRESSE .. SPEICHERN lda $01 ;PORT A HOLEN and #%01111111 ;CTS AUF 0-VOLT SETZEN (GND) sta $01 ;AKKU AUF ADRESSE .. SPEICHERN rts ;UNTERROUTINE BEENDEN * ZEICHENTABELLE FUER DIE ZEICHEN 0,1,2,3,4 ***************** * ............................... 5,6,7,8,9 * DIESE TABELLE MUSS IMMER AM ENDE DES ASSEMBLERPROGRAMMS STEHEN! ledcodes: fcb $BF, $89, $DE, $DB, $E9 fcb $F3, $F7, $99, $FF, $FB Danke im Voraus!! Gruß OLLI |
Antwort schreiben |