Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 systreiber für LED Kategorie: Programmierung ASM (von Michael - 11.01.2005 8:25)
Hi,

es ist wie verhext (wenn man nicht durchsteigt)!
ich benutze den SYS treiber LED, die Anzeige hängt am displayausgang alles funktioniert.
jetzt möchte ich aber die digiausgänge 1, 2 und 3 benutzen, also asm-programm umgeschrieben.
das ganze funktioniert ca. 5 sekunden dann schmiert was ab und die anzeige ist aus.
Anfänglich hatte ich alles in basic programmiert und hatte das gleiche phänomen.
hier der sys treiber, ich benötige nur leddigit.
*********************************************
* Systemtreiber fuer des LED-Modul
*
*  Adressen fuer C-Control/BASIC SYS-Befehl:
*
*  define LEDVAL   &H101
*  define LEDDIGIT &H187
*********************************************

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 Rechen-Stack gebrachter Wert, Rechenergebnis
_A_lo   equ $92
_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

* Steuerports des LED-Displays am Application Board
leddat equ 0    
ledclk equ 2
leden  equ 1

pcdat  equ $01
pcdir  equ $05

NumPush    equ $1187
Abs        equ $13BA
Div        equ $137E
Mul        equ $1360
Sub        equ $1351

*** LED interface ***

org $101

LEDVAL:
        lda _C
sta _D
        lda _C_lo
sta _D_lo

        lda _A
sta _C
        lda _A_lo
sta _C_lo

        lda _D
sta _A
        lda _D_lo
sta _A_lo

        brclr 7, _A, nextdigit
        bset 0, _B
jsr Abs

nextdigit:
jsr NumPush
jsr NumPush

lda _C
sta _A
sta _B
lda _C_lo
lda _A_lo
lda _B_lo

jsr NumPush
jsr load10
jsr Div
jsr NumPush
jsr load10
jsr Mul
jsr Sub                                

ldx _A_lo
lda ledcodes,x

        ldx _C_lo
        beq nopoint
dec _C_lo
bne nopoint
       
and #$7F

nopoint:
jsr digit

jsr load10
jsr Div

lda _B_lo
bne no0check

lda _A
ora _A_lo
beq sign

no0check:
dec _C_lo
bne nextdigit

rts

sign:   dec _C_lo
beq exit
        brclr 0, _B, space
        lda #$FD
        jsr digit

nextspace:
dec _C_lo
beq exit
space: lda #255
jsr digit
bra nextspace


exit:   rts

LEDDIGIT:
        lda _A_lo

digit:  jsr shift
jsr shift
jsr shift
jsr shift
jsr shift
jsr shift
jsr shift
jsr shift
rts

shift:  bclr leddat,pcdat ;set serial data
lsra              ;shift
bcc shftex
bset leddat,pcdat

shftex: bset ledclk,pcdat ;clock out
bclr ledclk,pcdat
rts

load10: clr _A
lda #10
sta _A_lo
rts

ledcodes:
fcb $82, $CF, $91, $85, $CC
fcb $A4, $A0, $8F, $80, $84

hier ein ausschnitt vom basicprog

define led_clk   port[3]
define led_en    port[2]
define led_data  port[1]


hour   = 18
minute = 31
second = 11


define LEDDIGIT &H187          


led_clk  =0
led_en   =0
led_data =0


#loop
  if second <> dummy then gosub zeit
loop


#zeit
led_en = ON  
dummy = second
tab = second mod 10
looktab numbercode, tab, out
sys leddigit out


hat hier jemand einen Tip?
mfg michael

 Antwort schreiben

Bisherige Antworten:

Re: systreiber für LED (von Kay - 11.01.2005 9:06)
    Re: systreiber für LED (von Michael - 11.01.2005 9:31)
        Re: systreiber für LED (von Michael - 11.01.2005 9:58)
            Re: systreiber für LED (von Michael - 11.01.2005 10:13)