Toon posts:

Assembler: digitaal uurwerk

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

"K heb alles duidelijk en opnieuw uitgelegd helemaal onderaan!"

Dank,
Midnight

[ Voor 98% gewijzigd door Verwijderd op 15-03-2007 20:30 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:17

Janoz

Moderator Devschuur®

!litemod

Het is niet echt de bedoeling om een lap code neer te plempen met de mededeling "Hij doet het niet". Dit is ook allemaal in de quickstart te lezen.

Het werkt een stuk makkelijker wanneer je duidelijker aangeeft wat niet werkt, waarom het niet werkt, wat er wel gebeurt en waarom dat niet het gewenste effect is. Daarnaast is het handiger om je code te beperken tot de relevante delen. Tot slot is het ook handig om aan te geven wat je al geprobeert hebt en waarom dat niet gewerkt heeft.

Zou je je topicstart kunnen aanpassen zodat deze hier wel aan voldoet?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Daarnaast is het ook nog eens nuttig om je code in [rml][ code]...[ /code][/] tags te plaatsen en erbij te vermelden wat voor architectuur je gebruikt, aangezien niet elke CPU dezelfde instructieset heeft. Daarnaast is het assembly, assembler is het programmaatje dat je code omzet naar machinecode.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

.oisyn schreef op maandag 12 maart 2007 @ 11:39:
Daarnaast is het ook nog eens nuttig om je code in [rml][ code]...[ /code]
tags te plaatsen en erbij te vermelden wat voor architectuur je gebruikt, aangezien niet elke CPU dezelfde instructieset heeft.
[/quote]
Hij vermeldt de architectuur ook, hij gebruikt een PIC16F627a, een processor van Microchip. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:17

Janoz

Moderator Devschuur®

!litemod

Vermeld de topicstarter niet, dat staat toevallig nog in zijn code.

[ Voor 63% gewijzigd door een moderator op 12-03-2007 13:14 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

simpel lijstje die je even na mag gaan:

wat doet het wel en wat doet het niet? bijvoorbeeld blijven de uren en minuten op 0 staan? tellen ze verkeerd op? gaan ze voorbij de resp 24 en 60? etc.

geeft hij foutmeldingen?
indien je debugger het mogelijk maakt, step dan door de code. bij 59 seconden, gaat hij dan weer naar 0?

etc
etc

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Als de seconden goed gaan lijkt me de rest geen probleem meer. Aan het debuggen jij :P

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • IEF
  • Registratie: Februari 2004
  • Laatst online: 27-11 20:42

IEF

Why so serious?

klinkt mij nogal als 'maak mijn huiswerk aub af' in de oren.
zie ook boven mij :)

  • oeLangOetan
  • Registratie: Maart 2002
  • Laatst online: 28-11 17:13
Ik weet dat debuggen met MPLab niet leuk is maar je zal toch beter je best moeten doen dan gewoon een brok code te posten.
Kan je eens ruw schetsen hoe je programma verloopt? (trouwens teleen, teltwee enzovoort zijn verschrikkelijk slecht gekozen namen) Haal alle code ivm je display (inclusief omzetting naar bcd) eruit zodat je enkel nog telroutines overhoud & dan debuggen :) (je kan het format van je watches instellen ;)).
Dat je seconden goed gaan is normaal, je gebruikt waarschijnlijk ringtellers voor de minuten en uren, misschien even de datasheet opnieuw doornemen en controlleren ofdat die goed zijn ingesteld.

Verwijderd

Topicstarter
Sorry voor de weinige informate,
Het was meschien niet duidelijk, maar ik heb er echt wel al uren op zitten zoeken.
Het grote probleem is dat men seconden perfect werken.
Wanneer ik de code een beetje aanpas dat ik ze kan zien op een display kloppen de seconden.
De minuten echter verspringen veel te snel.
Hij toont 1min na 20 seconden
2min na 30 seconden
3min na 45 seconden

Ik kan er dus ook geen logica in terug vinden.
Om te kijken of ik een minuut moet bijvoegen kijk ik gewoon of 60 - (de seconden) als resultaat 0 geeft, als dit zo is doe ik de minuuten + 1. Voor de uren gebruik ik het zelfde prinicipe

Ik werk inderdaad met mplap en een pic controler van microchip (16F627a)

Dank bij voorbaat,
Hardware

De fout moet volgens mij ergens in dit stuk code zitten:
code:
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
;*********************************************************
;*            Hieronder bevindt zich het hoofdprogramma!
;*********************************************************

Hoofdlus
    

    call    MinutenConv
    call    UurenConv
    movf     teleen, W
    call    Tabel
    movwf    ESD
    movf    teltwee, W
    call    Tabel
    movwf    TSD
    movf    teldrie, W
    call    Tabel
    movwf    DSD
    movf    telvier, W
    call    Tabel
    movwf    VSD
    call    Display
    btfsc    invert, 0
    bsf        IO3
    btfss    invert, 0
    bcf        IO3


    goto     Hoofdlus        ;goto, Hoofdlus om het programma blijvend uit te voeren

;********************************************************

;********************************************************
Isr    

    movlw    b'11011011'
    movwf    TMR1L
    movlw    b'00001011'
    movwf    TMR1H
    bcf        PIR1,TMR1IF
    call    Instel
    incf    invert, F
    btfss    invert, 0
    return
    incf    sec, F
    movf    sec, W
    sublw    .60    
    btfss    STATUS, Z
    return
    clrf    sec
    incf    min, F
    movf    min, W
    sublw    .60
    btfss    STATUS, Z
    return
    clrf    min
    clrf    sec
    incf    uur, F
    movf    uur, W
    sublw    .24
    btfsc    STATUS, Z
    clrf    uur
    
    return
;********************************************************

;********************************************************
Tabel ;deze tabel bevat de 7segment-aansturing
    addwf PCL,F ;bereken de jump via optellen van w met de laagste 8 bit van de Program Counter
    retlw b'01111110'    ;0    DP    E    G    D    C    B    A    F
    retlw b'01010000'    ;1
    retlw b'00111101'    ;2
    retlw b'01110101'    ;3
    retlw b'01010011'    ;4
    retlw b'01100111'    ;5
    retlw b'01101111'    ;6
    retlw b'01110000'    ;7
    retlw b'01111111'    ;8
    retlw b'01110111'    ;9


;********************************************************

;********************************************************
Instel ;Subroutine voor het instellen van de clok
    btfsc    inmin
    incf    min, F
    btfss    inuur
    incf    uur, F

    return
;********************************************************

;********************************************************
;* Hier moet de Time waarde nog omgezet worden naar 4-digits
MinutenConv
    clrf    teleen
    clrf    teltwee
    movf    sec,w
    movwf    teleen
    call    ConvLow
    return

ConvLow
    movlw    .10
    subwf    teleen,w
    btfss    STATUS,C        ;carry flag is 1 als het resultaat positief is en 0 als het negatief is
    return
    movwf    teleen
    incf    teltwee,f
    goto    ConvLow

;;********************************************************

;********************************************************
;* Hier moet de Time waarde nog omgezet worden naar 4-digits
UurenConv
    clrf    teldrie
    clrf    telvier
    movf    uur, W
    movwf    teldrie
    call    ConvFirs
    return

ConvFirs
    movlw    .10
    subwf    teldrie,w
    btfss    STATUS,C        ;carry flag is 1 als het resultaat positief is en 0 als het negatief is
    return
    movwf    teldrie
    incf    telvier,f
    goto    ConvFirs

;;********************************************************
Pagina: 1