Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Hitno Objasnjenje, potrebno

[es] :: Asembler :: Hitno Objasnjenje, potrebno

[ Pregleda: 3213 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

CarGovedar

Član broj: 12889
Poruke: 17
*.dip.t-dialin.net



Profil

icon Hitno Objasnjenje, potrebno27.06.2004. u 15:23 - pre 241 meseci
Jeli moze neko da mi malo opsirnije objasni sta tacno radi ovaj Source-Code?

Code:

;-----------------------------------------------------------------------------
$SAVE
$NOLIST

Px    equ P4
LED1    equ P6
LED2    equ P5
RESET     bit P3.7
HALF    bit P3.6
NCLK    bit P3.5
CLKW     bit P3.4
CONTROL    bit P3.1
ENABLE    bit P3.0

$RESTORE
;-----------------------------------------------------------------------------
$INCLUDE (..\reg517aw.inc)
$INCLUDE (deklaration.inc)

    Name    Main    ;Programmname

    extrn    code(Start_Tastatur)
    extrn    code(start_hp)     
    extrn    code(STARTmotor) 
    extrn    code(Zeile)

PROG     SEGMENT CODE        
; Dient der Speicherreservierung des Hauptprogramms 

CSEG    AT    0000H

        LJMP    MAIN     ;Sprung ins Hauptprogramm 

RSEG    PROG            ; Nachfolgende Befehle stehen im Programmsegment PROG             ; Adresse wird vom Linker automatisch vergeben!
;-----------------------------------------------------------------------------
MAIN:

SETB     NCLK            ; Clockleitung auf 1
CLR    RESET        ; L297 Reset
CLR    HALF            ; Halbschritt aus
SETB    CLKW            ; Rechtsherum
SETB    CONTROL        ; ABCD-Betrieb
SETB    RESET        ; L297 Reset
LJMP    Start_Main

Start_Main:

lcall Start_Tastatur
lcall start_hp

LJMP Start_Main

END 
;-----------------------------------------------------------------------------

$INCLUDE (..\reg517aw.inc)
$INCLUDE (deklaration.inc)

Name    Tastatur

public Start_Tastatur

PROG     SEGMENT CODE    ; Dient der Speicherreservierung des 
;Hauptprogramms 

LJMP    Start_Tastatur         ;Sprung ins Hauptprogramm 

RSEG    PROG
                    ; Nachfolgende Befehle stehen im 
;Programmsegment PROG 
MOV    LED1,#00000000B
MOV    LED2,#00000000B        ; Adresse wird vom Linker automatisch vergeben!

;Start Tastaturprogramm
Start_Tastatur:

MOV     Px,#11111111B
;-----------------------------------Zeile 1 abfragen
MOV    Px,#11001111B        ; BITMUSTER FÜR ERSTE ZEILE
MOV    A,Px

;Spaltenabfrage

CJNE    A,#11000100B,weiter1    ; PRÜFEN AUF TASTE 1

MOV     LED1,#00000001B
weiter1:

CJNE    A,#11000011B,weiter2    ; PRUFEN AUF TASTE 2

MOV     LED1,#00000010B
weiter2:

CJNE    A,#11000010B,Zeile2    ;PRÜFEN AUF TASTE 3

MOV     LED1,#00000100B
Zeile2:

;-----------------------------------Zeile 2 abfragen
MOV    Px,#10111111B        ;BITMUSTER FÜR ZWEITE ZEILE
MOV    A,Px

;Spaltenabfrage

CJNE    A,#10110100B,weiter3    ;PRÜFEN AUF TASTE 4

MOV     LED1,#00001000B
weiter3:

CJNE    A,#10110011B,weiter4    ;PRÜFEN AUF TASTE 5

MOV     LED1,#00010000B
weiter4:

CJNE    A,#10110010B,Zeile3    ;PRÜFE NAUF TASTE 6

MOV     LED1,#00100000B
Zeile3:

;----------------------------------Zeile 3 abfragen
MOV    Px,#10101111B        ;BITMUSTER FÜR DRITTE ZEILE
MOV    A,Px

;Spaltenabfragen

CJNE    A,#10100100B,weiter5    ;PRÜFEN AUF TASTE 7

MOV     LED1,#01000000B
weiter5:

CJNE    A,#10100011B,weiter6    ;PRÜFEN AUF TASTE 8

MOV     LED1,#10000000B
weiter6:

CJNE    A,#10100010B,Zeile4    ;PRÜFEN AUF TASTE 9

MOV     LED2,#00000001B
Zeile4:

;----------------------------------Zeile 4 abfragen
MOV    Px,#10011111B        ;BITMUSTER FÜR VIERTE ZEILE
MOV    A,Px

;Spaltenabfragen

CJNE    A,#10010100B,weiter7    ;PRÜFEN AUF TASTE *

MOV     LED2,#00000010B
weiter7:

CJNE    A,#10010011B,weiter8    ;PRÜFEN AUF TASTE 0


MOV     LED2,#00000100B
weiter8:

CJNE    A,#10010010B,weiter9    ;PRÜFEN AUF TASTE #

MOV     LED2,#00001000B

weiter9:

RET
END
;-----------------------------------------------------------------------------
$INCLUDE (..\reg517aw.inc)
$INCLUDE (deklaration.inc)

    Name    Torsteuerung    ;Programmname


public STARTtor

PROG     SEGMENT CODE    ; Dient der Speicherreservierung des
;Hauptprogramms 

LJMP    STARTtor             ;Sprung ins Hauptprogramm 

RSEG    PROG
;-----------------------------------------------------------------------------

STARTtor:

    CLR    NCLK            ; Takt
    LCALL    WAIT        ; Warte
    SETB    NCLK            ; Takt rücksetzen
    LCALL    WAIT        ; Warte
JMP    STARTtor            ; nächster Takt


WAIT:
marke1: mov     R6,#001h    ; Vorladen des Registers 6 100ms
marke2: mov     R5,#010h    ; Vorladen des Registers 5
marke3: mov     R4,#064h    ; Vorladen des Registers 4
marke4: djnz        R4,marke4    ; innerste Schleife
       djnz        R5,marke3    ; mittlere Schleife
       djnz        R6,marke2    ; äußere Schleife

RET

END
;-----------------------------------------------------------------------------
 
Odgovor na temu

obranko
severna amerika

Član broj: 36599
Poruke: 152
*.cpe.net.cable.rogers.com.



+1 Profil

icon Re: Hitno Objasnjenje, potrebno17.10.2004. u 22:48 - pre 237 meseci
Pozdrav,

Nedostaje kod za proceduru start_hp koja je definisana kao extern. Takodje za razumevanje ovog koda pozeljno je imati semu.
Iz koda se vidi da uredjaj ima 3x4 tastaturu. Ono sto se takodje vidi je da procesor (neki derivat 8051) kontrolise jos jedno integralno kolo. Kod skanira tastaturu i izbacuje na portove P5 i P6 vrednost koja zavisi od toga koji je taster pritisnut. Zatim poziva start_hp, pa tako dok ne nestane struje.
 
Odgovor na temu

[es] :: Asembler :: Hitno Objasnjenje, potrebno

[ Pregleda: 3213 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.