Autor Beitrag
boozzz
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66

Win XP, Win 2000, SuSe Linux

BeitragVerfasst: Sa 14.01.06 17:20 
Hi zusammen,
Das folgende Programm soll durch einem Mikrocontroller an einer 5x7-Matrix eine Ziffer ausgeben. Immer wenn man den Button an P3.2 betätigt, soll sich die Zahl an der Matrix ändern. Die Matrix besteht aus 5x7 (also 35) LED's.

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
INCLUDE C51RD2.INC

code at 0

spalte data 7fh
spaltencode data 7eh 

anfang:   MOV R0,#0
start:    JNB P3.2,ausgabe
          INC R0
          CJNE R0,#4,ausgabe
          MOV R0,#0
ausgabe:  MOV spalte,#0
          MOV spaltencode,#11111110b
          MOV DPTR,#hex_5x7

loop:     MOV A,R0
          MOV b,#5
          MUL Ab
          ADD A,spalte
          MOVC A,@a+DPTR
          CPL A

          MOV P2,#11111111b
          MOV P0,A
          MOV P2,spaltencode

          MOV A,spaltencode
          RL A
          MOV spaltencode,A
          call zeit
          INC spalte
          MOV A,spalte
          CJNE A,#5,loop
          LJMP start

zeit:    DJNZ R2,zeit
         RET

hex_5x7:
   db 0110001b    ;Ziffer 2
   db 1001001b
   db 1000101b
   db 1000011b
   db 0100001b

   db 0000110b    ;Ziffer 6
   db 1001001b
   db 1001001b
   db 1000101b
   db 0111110b

   db 0111110b
   db 1000001b
   db 1000001b
   db 1000001b
   db 0111110b

   db 0000000b
   db 0000001b
   db 1111111b
   db 0100001b
   db 0000000b
END


Leider funktioniert es nicht, wie es soll. Die LED's läuchten einfach durcheinander.
Würde mich sehr freuen, wenn mir jemand sagen könnte wieso.
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: So 15.01.06 10:48 
Hallo,

hier geht es zwar um Assembler, aber ich glaube mehr in Richtung 80x86 CPU's unter Delphi (BASM?).
Du benutzt doch eine 8051 CPU, oder ??
Das waere schon gut zu wissen.
Vielleicht findest Du in einem Forum fuer deine spezielle CPU schneller Hilfe.
www.google.de/search...ssembler&spell=1
oder
Hier ein Simulator, der hoffentlich anzeigt wo der Knoten im Hirn war:
home.arcor.de/jensaltmann/jsim-g.htm

Gruss Horst