Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1788 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  un petit programme pour temporisateur-decompte avec un AT90S1200

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

un petit programme pour temporisateur-decompte avec un AT90S1200

n°608995
bentaih
la vie ne apprend encore
Posté le 12-01-2004 à 15:06:43  profilanswer
 

merci du fond du coeur


---------------
thanks lot
mood
Publicité
Posté le 12-01-2004 à 15:06:43  profilanswer
 

n°608997
chrisbk
-
Posté le 12-01-2004 à 15:07:42  profilanswer
 

ah ben de rien alors

n°609000
bentaih
la vie ne apprend encore
Posté le 12-01-2004 à 15:09:19  profilanswer
 

si c pour faire le malin c pas la peine  


---------------
thanks lot
n°609089
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-01-2004 à 16:04:16  profilanswer
 

bentaih a écrit :

si c pour faire le malin c pas la peine  
 


c'est pas la peine de quoi ?
tu te rends compte du topic que tu viens d'ouvrir ?
- aucune explication,
- "faites moi ce programme et démerdez vous"
- surement une demande de TP, ce qui est interdit sur ce forum
- etc...
et tu te permets d'engueuler quelqu'un qui te répond sur le même ton que tu utilises ? pardon mais j'assimile çà à du foutage de gueule.
si tu ne donnes pas plus d'infos d'ici ce soir, je ferme ton topic.


---------------
J'ai un string dans l'array (Paris Hilton)
n°609230
bentaih
la vie ne apprend encore
Posté le 12-01-2004 à 17:46:56  profilanswer
 

ca n'a rien a avoir avec tt ca c pas un tp de un et de deux c un travail c une plaque que j'ai construit et que le programme que j'ai trouvé ne marche pas trés bien dessus  
alors je demande pour voir s'il y a pas qq qui a travailler ce genre de programmme pour faire une petite comparaison  
une autre chose c pas parceque tu me dis que tu vas fermer mon topic que je te reponds car j'en ai rien a foutre de ce que tu penses ou de quoi t'as envie  
 


---------------
thanks lot
n°609235
bentaih
la vie ne apprend encore
Posté le 12-01-2004 à 17:51:04  profilanswer
 

encore une chose c pas de l'aide humanitaire que présente ce forum alors ca sert a rien de faire des menace d'ejecter les gens des frums y'en des milliers sur le net  
alors continu a partager tonsavoir avec d'autre qui ont en peut etre plus que toi ou moins que toi  
c a ca que sert un forum de discussion


---------------
thanks lot
n°609268
Tentacle
Posté le 12-01-2004 à 18:12:23  profilanswer
 

Disons que je pense que ça ne se fait pas trop de juste demander un programme tout chaud. J'ai l'impression d'être en examen avec le sujet que vient de distribuer le prof.
Ca donne l'impression que tu n'as fait aucun effort et que tu délègues le boulot aux gens de ce forum.
Au moins, explique nous en détails ce que tu veux, montre nous ce que tu as déjà fait, les problèmes que tu as rencontrés ... bref montre nous que tu n'es pas venu les mains dans les poches, les doigts de pieds en éventail. Et puis même, cette considération mise à part, ton expérience sur ce problème sera sûrement d'un grand secours pour ceux qui voudront (pourront surtout) t'aider, qui n'auront donc pas ainsi tout à refaire.
 
Voilà A+  :hello:  
 

n°609309
printf
Baston !
Posté le 12-01-2004 à 19:04:20  profilanswer
 

un petit programme pour gestion de fichiers sous linux
 
merci du fond du coeur


---------------
Un matin je me lèverai et il fera beau.
n°609319
bjone
Insert booze to continue
Posté le 12-01-2004 à 19:12:26  profilanswer
 

un petit programme pour générer des tangentes pour mon plug-in d'export 3dsmax
 
merci du fond du coeur

n°609323
chrisbk
-
Posté le 12-01-2004 à 19:14:28  profilanswer
 

un generateur de cathedrale gothique
 
merci du fond du coeur
 
(bjone : tangente au D3DX et basta [:joce])

mood
Publicité
Posté le 12-01-2004 à 19:14:28  profilanswer
 

n°609329
bjone
Insert booze to continue
Posté le 12-01-2004 à 19:16:54  profilanswer
 

(ah ouais, même pas regardé  :hello: )
 
sinon un matérialiseur de pensées ça serait pas mal ?
 
merci du fond du coeur

n°609335
bjone
Insert booze to continue
Posté le 12-01-2004 à 19:20:02  profilanswer
 

bentaih >> sinon tout ça c'est pour te faire comprendre que tu poses une question vague sur du hardware dont l'environnement n'est même pas décrit....

n°609344
bjone
Insert booze to continue
Posté le 12-01-2004 à 19:41:10  profilanswer
 

sinon pour ceux que ça interresse, c'est de ça dont parle le monsieur:
 
http://www.atmel.com/dyn/resources [...] OC0838.PDF
 
un microcontrôleur RISC qui contients 1Ko de mémoire flash pour le code (512 instructions de 16bits), 64 octets en eeprom (pas de ram, pile matérielle limitée), 32 registres 8 bits.
 

n°609347
printf
Baston !
Posté le 12-01-2004 à 19:46:20  profilanswer
 

bjone a écrit :

sinon pour ceux que ça interresse, c'est de ça dont parle le monsieur:
 
http://www.atmel.com/dyn/resources [...] OC0838.PDF
 
un microcontrôleur RISC qui contients 1Ko de mémoire flash pour le code (512 instructions de 16bits), 64 octets en eeprom (pas de ram, pile matérielle limitée), 32 registres 8 bits.


 
Sans les affectations des entrées/sorties (donc sans le schéma de sa carte), sans plus de précision, on ne peut rien faire.
 
De toutes façons, vu comment c'est demandé [:spamafote]


---------------
Un matin je me lèverai et il fera beau.
n°609362
bjone
Insert booze to continue
Posté le 12-01-2004 à 20:13:33  profilanswer
 

toutafé...
 
mais d'un coté si c'est pour de la temporisation, et si l'on connaissait la fréquence d'horloge, on devrait pouvoir au moins écrire une boucle d'attente basique bien crade ou jouer avec le Timer/Counter0....

n°610255
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-01-2004 à 11:49:01  profilanswer
 

bentaih a écrit :

ca n'a rien a avoir avec tt ca c pas un tp de un et de deux c un travail c une plaque que j'ai construit et que le programme que j'ai trouvé ne marche pas trés bien dessus  
alors je demande pour voir s'il y a pas qq qui a travailler ce genre de programmme pour faire une petite comparaison
une autre chose c pas parceque tu me dis que tu vas fermer mon topic que je te reponds car j'en ai rien a foutre de ce que tu penses ou de quoi t'as envie  
 


Dans ce cas c'est tellement dur de formuler correctement ta question, plutot que de la mettre dans le sujet, puis d'imaginer que tout le monde aura compris ce que tu demandes ?
 
C'est tellement dur d'écrire "Bonjour à tous, ayant réalisé un programme pour temporisateur-décompte avec un AT90S1200, je me rends compte qu'il fonctionne finalement assez mal.
L'un d'entre vous a t'il déjà réalisé ce genre de programme, afin de pouvoir me donner des conseils et m'aider à faire fonctionner le mien correctement ? Merci par avance."
 
Tu postes éventuellement un bout de ton source, et puis voilà, ça t'aurait évité de te faire enflammer et tout le monde était content.


---------------
J'ai un string dans l'array (Paris Hilton)
n°610256
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-01-2004 à 11:52:19  profilanswer
 

bentaih a écrit :

encore une chose c pas de l'aide humanitaire que présente ce forum alors ca sert a rien de faire des menace d'ejecter les gens des frums y'en des milliers sur le net  


Exactement ! Y'a des milliers de forums sur le net, et si tu m'en trouves un qui arrive à te répondre avec la même quantité d'infos que tu donnes, je te tire mon chapeau !
Quant à la "menace", elle vient du fait que vu le peu d'infos que tu donnes, on peut penser que tu demandes un programme tout fait pour un exo/TP, ce qui, si tu lis les règles, est interdit. Donc plutot que de fermer ton sujet sans autre forme de procés, et dans le doute, j'ai laissé ouvert mais en te prévenant néanmoins.


---------------
J'ai un string dans l'array (Paris Hilton)
n°610447
bentaih
la vie ne apprend encore
Posté le 13-01-2004 à 14:42:50  profilanswer
 

Harkonnen a écrit :


Exactement ! Y'a des milliers de forums sur le net, et si tu m'en trouves un qui arrive à te répondre avec la même quantité d'infos que tu donnes, je te tire mon chapeau !
Quant à la "menace", elle vient du fait que vu le peu d'infos que tu donnes, on peut penser que tu demandes un programme tout fait pour un exo/TP, ce qui, si tu lis les règles, est interdit. Donc plutot que de fermer ton sujet sans autre forme de procés, et dans le doute, j'ai laissé ouvert mais en te prévenant néanmoins.


bon ok puis tt le monde prends ma question mal a ce point je vous reexplique tt a zero et je m'excuse si ma ma question etait si mal formuler  
alors la carte que je viens de faire est un temporisateur a decompte a deux afficheur 7 segments avec un buzzer se declanchant a la fin de decompte le hard est fini et tester donc de ce coté ya pas de prob mais c le prog concu pour la carte ne marche pas qd je l'ai charger ds mon at90S1200


---------------
thanks lot
n°610452
bentaih
la vie ne apprend encore
Posté le 13-01-2004 à 14:46:46  profilanswer
 

le schema et le board sont fait par eagle 4.11 si qq veut jeter un coup d'oeil je peux lui envoyer par mail les deux avec le code source que j'ai trouvé aussi sauf qu'il est un peu long
 
 
 


---------------
thanks lot
n°610453
bentaih
la vie ne apprend encore
Posté le 13-01-2004 à 14:47:35  profilanswer
 

j'attends vos reponse plus plus en discuter


---------------
thanks lot
n°610548
*syl*
--> []
Posté le 13-01-2004 à 16:17:31  profilanswer
 

Désolé j'peux pas aider but IWH \o/

n°610858
printf
Baston !
Posté le 13-01-2004 à 18:22:46  profilanswer
 

C'est déjà mieux ;)
Par contre, si tu veux compléter un message, tu peux l'éditer en cliquant sur l'icône appropriée. C'est beaucoup mieux que de poster plusieurs messages à la suite.
 
Sinon, pour ton problème : le mieux est que tu donne le code source ici (en prenant bien soin de le placer entre des balises C/C++), ou que tu indique l'URL qui permet de le récupérer. Même si nous ne connaissons pas les spécificités du langage d'assemblage Atmel, nous pourrons peut-être essayer de faire quelque chose. Mais il faut bien comprendre que tu dois mâcher le travail le plus possible si tu veux être aidé (en donnant des liens vers les documentations/datasheets nécessaires, etc.).


---------------
Un matin je me lèverai et il fera beau.
n°610878
bjone
Insert booze to continue
Posté le 13-01-2004 à 18:52:12  profilanswer
 

donc ton truc y décompte les secondes, et affiche le temps restant sur les affichages 7 segments ?

n°611119
bentaih
la vie ne apprend encore
Posté le 13-01-2004 à 21:53:33  profilanswer
 

bjone a écrit :

donc ton truc y décompte les secondes, et affiche le temps restant sur les affichages 7 segments ?


exactement c en fait des 7 segement  
et le decomptage et terminer par le declanchement d'un buzzer lampre.....


---------------
thanks lot
n°611128
bentaih
la vie ne apprend encore
Posté le 13-01-2004 à 21:59:18  profilanswer
 

dans 10min je vais mettre mon code source je fini encore qq truc dessus


---------------
thanks lot
n°611156
bentaih
la vie ne apprend encore
Posté le 13-01-2004 à 22:44:37  profilanswer
 

printf a écrit :

C'est déjà mieux ;)
Par contre, si tu veux compléter un message, tu peux l'éditer en cliquant sur l'icône appropriée. C'est beaucoup mieux que de poster plusieurs messages à la suite.
 
Sinon, pour ton problème : le mieux est que tu donne le code source ici (en prenant bien soin de le placer entre des balises C/C++), ou que tu indique l'URL qui permet de le récupérer. Même si nous ne connaissons pas les spécificités du langage d'assemblage Atmel, nous pourrons peut-être essayer de faire quelque chose. Mais il faut bien comprendre que tu dois mâcher le travail le plus possible si tu veux être aidé (en donnant des liens vers les documentations/datasheets nécessaires, etc.).


 
 
 
 
voici mon code source que j'ai trouvé j'ai tt verifier pour moi sa semble trés logique mais ca foncitione pa
alors c quoi votre avis la dessus ?
j'ai l'impression qu'il manque qq chose mais en suivant la logique j'arive pas a trouver ? :cry:  :pt1cable:


---------------
thanks lot
n°611157
printf
Baston !
Posté le 13-01-2004 à 22:45:40  profilanswer
 

bentaih a écrit :


 
 
 
 
voici mon code source que j'ai trouvé j'ai tt verifier pour moi sa semble trés logique mais ca foncitione pa
alors c quoi votre avis la dessus ?
j'ai l'impression qu'il manque qq chose mais en suivant la logique j'arive pas a trouver ? :cry:  :pt1cable:  


 
Il est où le code source :??:  :??:


---------------
Un matin je me lèverai et il fera beau.
n°611159
bentaih
la vie ne apprend encore
Posté le 13-01-2004 à 22:47:39  profilanswer
 

printf a écrit :

C'est déjà mieux ;)
Par contre, si tu veux compléter un message, tu peux l'éditer en cliquant sur l'icône appropriée. C'est beaucoup mieux que de poster plusieurs messages à la suite.
 
Sinon, pour ton problème : le mieux est que tu donne le code source ici (en prenant bien soin de le placer entre des balises C/C++), ou que tu indique l'URL qui permet de le récupérer. Même si nous ne connaissons pas les spécificités du langage d'assemblage Atmel, nous pourrons peut-être essayer de faire quelque chose. Mais il faut bien comprendre que tu dois mâcher le travail le plus possible si tu veux être aidé (en donnant des liens vers les documentations/datasheets nécessaires, etc.).


 
oooooooops j'ai oublier de la coller ds le message précédent  
le voila il est un peu long :heink:  :sarcastic:  
 
 
.DEF    SAVE_STATUS     =       R1      ;
.DEF    EERTMP          =       R2      ;
.DEF    EE_DRDS         =       R3      ;
 
 
.DEF    COUNTER         =       R16     ;
.DEF    COUNTER_NEXT    =       R17     ;
.DEF    COUNTER_NEXT1   =       R20     ;        
.DEF    FLASH_FLAG      =       R21     ;
 
.DEF    COUNT1          =       R18      ;UNITS OF MINUTES
.DEF    COUNT2          =       R19      ;TENS OF MINUTES
.DEF    COUNT1_RESULT   =       R20
.DEF    COUNT2_RESULT   =       R21
.DEF    DURATION        =       R22
.DEF    DURATION1       =       R23
.DEF    SECONDS         =       R24
;
.DEF    TEMP            =       R25
.DEF    FLAG_1          =       R26
.DEF    TIME_OUT        =      R28 ;R27
;
.DEF    REG_LOW         =       R30
.DEF    REG_HIGH        =       R31            
 
 
;===========================================================================
 
.EQU    ALARM_SET       =       01      ;
.EQU    LED_SET         =       01      ; IDENTICAL TO "ALARM_SET"
 
 
;==========================================================================
 
 
.include "1200def.inc"
 
;============================================================================
 
.ESEG
 
;       ('LPM' DOESN'T WORK ON 1200AVR CHIP.)
;   TO BE LOADED IN EEROM MANUALLY OR AUTOMATICALLY VIA AVR PROGRAMMER SOFTWARE
;   - WE DID THE FORMER! (EEROM ADDRESS $0000 - $000A
 
TABLE:
;============================================================================
;                 0   1   2  3   4   5   6   7   8   9   -
;----------------------------------------------------------------------------
        .DB     $3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$67,$01
 
;============================================================================
 
 
 
.CSEG
 
 
 
        .ORG 0
 
        RJMP    RESET                  ;Reset Handle
 
        .ORG    1
 
         RETI
 
        .ORG 2
 
         RJMP TIMER0_INT_ROUTINE
 
 
;===========================================================================
         
 
         .ORG   $0030
 
RESET:
 
         LDI    TEMP,0B00000100    ;DIV 256  
         OUT    TCCR0,TEMP         ;      
 
         SER    TEMP               ;PORTB OUTPUTS
         OUT    DDRB,TEMP          ;      
 
         LDI    TEMP,0B11100011    ;BIT 0,1,5,6, = O/P; BIT 7 = N/A
         OUT    DDRD,TEMP          ;BIT 2,3,4 = I/P
 
         LDI    TEMP, 2            ;Set the TOIE0 bit to enable  
         OUT    TIMSK, TEMP        ;the Timer0 Interrupt to occur
 
         CLI                     ;DISABLE INTERRUPTS
 
         LDI     TIME_OUT,$00    ;COUNT FOR SECOND UP
         CLR     SECONDS         ;SECONDS COUNT
         CLR     FLAG_1          ;
         SBI     PORTD,ALARM_SET ;TURN OFF LED        
         SBI     PORTB,7         ;TURN OFF BUZZER
;============================================================================
 
 
         CLR    COUNT1          ; CLEAR LED DISPLAY
         CLR    COUNT2          ; BOTH DIGITS
 
;============================================================================
 
 
WAIT_FOR_KEYPRESS:
         CLI                       ;      
 
         CLR    FLAG_1             ;
         SBI     PORTD,ALARM_SET   ;LED OFF        
         SBIS    PIND,4            ;
         RCALL   INC_DISP_1        ;
         ;
         SBIS    PIND,3            ;
         RCALL   INC_DISP_2        ;
         ;
         RCALL   GET_SEVEN_SEGMENT ;
         RCALL   DISPLAY_IT        ;
         SBI     PORTB,7           ;TURN OFF BUZZER
 
         SBIC   PIND,2             ;
         RJMP   WAIT_FOR_KEYPRESS  ;
WAIT:
         RCALL   GET_SEVEN_SEGMENT ;
         RCALL   DISPLAY_IT        ;
         SBI     PORTB,7           ;TURN OFF BUZZER
         ;
         SBIS   PIND,2              ;    
         RJMP   WAIT                ;
LOOP_LOOP:
         CBI     PORTD,ALARM_SET    ;        
         SEI                        ;                
         SER    FLAG_1              ;
         ;
WAIT_HERE:
        CLI
        CBI     PORTD,LED_SET       ;        
        RCALL   GET_SEVEN_SEGMENT
        RCALL   DISPLAY_IT
        SBI     PORTB,7             ;TURN OFF BUZZER
        SEI
        NOP
        RCALL   DELAY
        RJMP    WAIT_HERE           ;
 
         
;============================================================================
 
INC_DISP_1:
        INC     COUNT1  
        CPI     COUNT1,$0A
        BREQ    MAKE_COUNT1_ZERO
        RJMP    LOOP_ONE
 
MAKE_COUNT1_ZERO:
        CLR     COUNT1
LOOP_ONE:
        RCALL   DELAY  
        SBIS    PIND,4
        RJMP    LOOP_ONE
        RET
;============================================================================
 
INC_DISP_2:
        INC     COUNT2
        CPI     COUNT2,$0A
        BREQ    MAKE_COUNT2_ZERO
        RJMP    LOOP_TWO
 
MAKE_COUNT2_ZERO:
        CLR     COUNT2
LOOP_TWO:
        RCALL   DELAY  
        SBIS    PIND,3
        RJMP    LOOP_TWO
        RET
 
 
;============================================================================
 
;============================================================================
 
;================  INTERRUPT ROUTINE  =======================================
 
TIMER0_INT_ROUTINE:
         CLI                             ;DISABLE INTERRUPT
         ;
         SBI     PORTB,7                 ;TURN OFF BUZZER
         CBI     PORTD,ALARM_SET         ;LED ON
         RCALL   DISPLAY_DIGITS          ;SHOW IT ON LED DISPLAY
         ;
         RCALL  CONVERT_TO_BCD           ;
         ;
         CPI     FLAG_1,$FF              ;START BUTTON PRESSSED?
         BRNE    ALARM_NOT_SET_YET      ;
         ;
         CBI     PORTD,ALARM_SET        ;LED OFF        
         ;
         ;
         CPI    COUNT1, 00              ;
         BRNE   NOT_ZERO                ;
         CPI    COUNT2, 00              ;
         BRNE   NOT_ZERO                ;
         RJMP   TIME_UP                 ; EXIT WITH INTERRUPT DISABLED
ALARM_NOT_SET_YET:
 
NOT_ZERO:
         SEI
         RETI
;============================================================================
 
CONVERT_TO_BCD:
        IN      SAVE_STATUS, SREG       ;
 
KEEP_GOING:
 
        SUBI    COUNT1, $0A             ;
        BRCS    LESS_THEN_TEN           ;IF $0A > COUNT1, CARRY IS SET!
        ;IF COUNT1 > $0A CONTINUE        
        SUBI    COUNT2,$0A              ;UPPER BYTE < 10 ?
        BRCS    LESS_THEN_TEN_AS_WELL   ;WAS BRCC
IS_ZERO:
        OUT     SREG, SAVE_STATUS       ;
        RET                             ;
 
LESS_THEN_TEN_AS_WELL:
        LDI     TEMP, $0A               ;
        ADD     COUNT2,TEMP             ;
        RJMP    KEEP_GOING              ;
 
LESS_THEN_TEN:
        LDI     TEMP, $0A               ;
        ADD     COUNT1,TEMP             ;
        OUT     SREG, SAVE_STATUS       ;
        RET
                   
;============================================================================
 
GET_SEVEN_SEGMENT:
        ;
 
        IN      SAVE_STATUS, SREG       ;
        LDI     TEMP, TABLE - 1         ;
        ADD     TEMP,COUNT1             ;
        OUT     EEAR, TEMP              ; ADDRESS OF TABLE
 
        RCALL   EEREAD_IT               ;GET BYTE FROM EEPROM
        MOV     COUNT1_RESULT,EE_DRDS   ;                                                                                                                                                                                    V     COUNT1_RESULT,EE_DRDS   ;
        ;
        ;
        LDI     TEMP, TABLE - 1         ;
        ADD     TEMP,COUNT2             ;
        OUT     EEAR, TEMP              ; ADDRESS OF TABLE
 
        RCALL   EEREAD_IT               ;GET BYTE FROM EEPROM
        MOV     COUNT2_RESULT,EE_DRDS   ;
        OUT     SREG,SAVE_STATUS        ;
        RET
 
;============================================================================
 
DISPLAY_IT:
 
 
        IN      SAVE_STATUS, SREG       ;
        COM     COUNT1_RESULT           ; LOW BYTE
        COM     COUNT2_RESULT           ; HIGH BYTE
        OUT     PORTB,COUNT1_RESULT     ; DISPLAY DIGIT1
        SBI     PORTB,7                 ; TURN OFF BUZZER
        CBI     PORTD,5                 ; TURN ON DIGIT 1
        SBI     PORTD,6                 ; TURN OFF DIGIT 2
        ;
        RCALL   LONG_DELAY              ;
        ;
        OUT     PORTB,COUNT2_RESULT     ; DISPLAY DIGIT 2
        SBI     PORTB,7                 ; BUZZER OFF
        SBI     PORTD,5                 ; TURN OFF DIGIT 1
        CBI     PORTD,6                 ; TURN ON DIGIT 2
        RCALL   LONG_DELAY              ;
        ;
        OUT     SREG, SAVE_STATUS       ;
        RET
        ;
 
;=============================================================================
;=============================================================================
DISPLAY_DIGITS:
        ;
        IN      SAVE_STATUS, SREG       ;
        CPI     FLAG_1,$FF              ;START BUTTON PRESSSED?
        BRNE    ALARM_NOT_SET           ;
        ;
        INC     TIME_OUT                ;
        CPI     TIME_OUT, 61            ;1 SECOND
        BREQ    TIMER_OUT               ;
        ;
ALARM_NOT_SET:
        OUT     SREG, SAVE_STATUS       ;
        RET
TIMER_OUT:
        CLR     TIME_OUT                ;1 SEC UP
        INC     SECONDS                 ;
        CPI     SECONDS,60              ;
        BREQ    MINUTE_UP               ;
 
        OUT     SREG, SAVE_STATUS       ;
        RET
;============================================================================
        ;  BCD ROUTINE HERE
        ;
MINUTE_UP:                              ;
        CLR     SECONDS                 ;1 MINUTE UP
        SUBI    COUNT1, 01              ;
        BRCS    LESS_THEN_1             ;IF 01 > COUNT1, CARRY SET
        OUT     SREG, SAVE_STATUS       ;
        RET                             ;
LESS_THEN_1:
        SUBI    COUNT1, 06              ;
        CPI     COUNT2, 00              ;IS COUNT2 ZERO?
        BREQ    COUNT2_ZERO
        SUBI    COUNT2, 01              ;
COUNT2_ZERO:                            ;
        OUT     SREG, SAVE_STATUS       ;
        RET                             ;
                 
;============================================================================
TIME_UP:
         CLI                            ;
         CLR    COUNTER                 ;
         CLR    COUNTER_NEXT            ;
         CLR    COUNTER_NEXT1           ;
         CBI     PORTD,LED_SET           ;LED ON
         CBI    PORTB,7                 ;BUZZER ON
 
TIME_UP_1:
 
         CLI                             ;
         ;
         CPI     FLASH_FLAG, $FF         ;IF DISPLAY OFF
         BREQ    TIME_UP_2               ;- KEEP IT OFF
         ;                               ;ELSE ON!
         CBI     PORTD, LED_SET          ;LED ON.
         LDI     COUNT1, $3F             ;FLASH DISPLAY
         COM     COUNT1                  ;SEGMENT 'G' ON.
         OUT     PORTB, COUNT1           ;
         ;
TIME_UP_2:
 
         CBI     PORTB, 7                ;BUZZER ON
         RCALL   LONG_DELAY_1            ;
         RCALL   LONG_DELAY_1            ;
         RCALL   LONG_DELAY_1            ;
         RCALL   LONG_DELAY_1            ;
         RCALL   LONG_DELAY              ;
         ;
         INC     COUNTER                 ;
         CPI     COUNTER, $FF            ;
         BREQ    NEXT_COUNTER            ;
         RJMP    TIME_UP_1               ;
NEXT_COUNTER:
         CLR     FLASH_FLAG              ;
         CLR     COUNTER                 ;
         INC     COUNTER_NEXT            ;
         CPI     COUNTER_NEXT, $02       ;
         BRNE    TIME_UP_1               ;
        ;
NEXT_COUNTER1:
        SER      FLASH_FLAG             ;
        CLR      COUNTER_NEXT            ;
        SBI      PORTD,ALARM_SET         ;LED OFF
        SER      COUNT1                  ;DISPLAY OFF
        OUT      PORTB, COUNT1           ;
        ;
        SBI      PORTB, 7                ;BUZZER OFF
        INC      COUNTER_NEXT1           ;
        CPI      COUNTER_NEXT1, $10      ;
        BRNE     TIME_UP_1               ;
        ;
        ;
        SBI      PORTD,ALARM_SET         ;LED OFF
        SER      COUNT1                  ;DISPLAY OFF
        OUT      PORTB, COUNT1           ;
        SBI      PORTB,7                  ;TURN OFF BUZZER
        ;
        ;
        SLEEP                            ;
STOPP:
        RJMP    STOPP                    ;
         
;============================================================================
 
DELAY:
        LDI     DURATION,$FF
COUNT_DOWN:
        DEC     DURATION
        CPI     DURATION,$00
        BRNE    COUNT_DOWN
        RET
 
;=============================================================================
 
 
LONG_DELAY:
        LDI     DURATION,$FF
        LDI     DURATION1,$0A
 
LOOP_DELAY:
        DEC     DURATION
        CPI     DURATION,0
        BRNE    LOOP_DELAY
        ;
        DEC     DURATION1
        CPI     DURATION1,0
        BRNE    LOOP_DELAY
        RET
 
;=============================================================================
 
        ;
LONG_DELAY_1:
        LDI     DURATION,$FF
        RCALL   COUNT_DOWN
        ;
        RET
 
;==============================================================================
 
EEREAD_IT:
        IN      EERTMP, EEAR    ;GET ADDRESS
        INC     EERTMP          ;NEXT ADDRESS
        OUT     EEAR,EERTMP     ;OUTPUT ADDRESS
        SBI     EECR,EERE       ;EEPROM READ STROBE
        SBI     EECR,EERE       ;STROBE AGAIN
        IN      EE_DRDS,EEDR    ;GOT DATA.
        RET
 
;


---------------
thanks lot
n°611224
bjone
Insert booze to continue
Posté le 14-01-2004 à 00:14:01  profilanswer
 

alors: (on est parti pour se prendre la tête :D)
 
c'est quoi l'ordre de grandeur de ta tempo vu COUNT1 et COUNT2, tu peux aller jusqu'a 99 minutes ?
 
le code tu l'as trouvé sur un site, ou t'as tout écrit toi même ? tu as l'algo ?  (ça évitera que je refasse du reverse engineering)
 
y'a un truc qui se passe ou pas ?
=> état initial (ça passe l'init, t'as un truc d'affiché par les affichages 7 segments), état au moment du crash ?

n°611281
bentaih
la vie ne apprend encore
Posté le 14-01-2004 à 01:48:25  profilanswer
 

bjone a écrit :

alors: (on est parti pour se prendre la tête :D)
 
c'est quoi l'ordre de grandeur de ta tempo vu COUNT1 et COUNT2, tu peux aller jusqu'a 99 minutes ?
 
le code tu l'as trouvé sur un site, ou t'as tout écrit toi même ? tu as l'algo ?  (ça évitera que je refasse du reverse engineering)
 
y'a un truc qui se passe ou pas ?
=> état initial (ça passe l'init, t'as un truc d'affiché par les affichages 7 segments), état au moment du crash ?  


 
oui efectivement ma tempo peux aller juqqu'a 99 min
l'algorytme je l'ai sur papier je le ferais sur word et je vous l'envoi demain  
en ce concerne le programme c un code sur pris sur le net normalement c celui concu opur aller avec ma carte mais c marche pas  
quand je pbranche ma carte les afficheur s'allume entierement( 88)
en apuiyant sur le boutan concu pour choisir le nombre de minutes voulu l'un des afficheur clignote tt en gardant le (8)
et qd j'essaye de lancer le decomptage (autre bouton )le dexieme afficheur affiche (0) et commence a clignoter
 :cry: tu vois c un peu le bordel  
ca me rend fou j'arrive pas a trouver l'erreur :pt1cable:  
demain j'envois l'algo et d'autre trucs que j'ai trouvé
merci


---------------
thanks lot
n°611718
bentaih
la vie ne apprend encore
Posté le 14-01-2004 à 16:14:15  profilanswer
 

bjone a écrit :

alors: (on est parti pour se prendre la tête :D)
 
c'est quoi l'ordre de grandeur de ta tempo vu COUNT1 et COUNT2, tu peux aller jusqu'a 99 minutes ?
 
le code tu l'as trouvé sur un site, ou t'as tout écrit toi même ? tu as l'algo ?  (ça évitera que je refasse du reverse engineering)
 
y'a un truc qui se passe ou pas ?
=> état initial (ça passe l'init, t'as un truc d'affiché par les affichages 7 segments), état au moment du crash ?  


 
le logigramme est fait mais j'arrive pas a l'envoer comme message (ce qui est normal d'ailleurs)il est en format word je te l'envoi sur ton mail
 
ps si qq d'autre veut y jeter un coup d'oeil il peut me faire signe et je lui envois sur son mail


---------------
thanks lot
n°613400
bentaih
la vie ne apprend encore
Posté le 16-01-2004 à 13:14:43  profilanswer
 

salut a tous c encore moi voila je vous passe les algo  
il sont sur   http://bentaih.site.voila.fr/algo.htm


---------------
thanks lot
n°613403
bjone
Insert booze to continue
Posté le 16-01-2004 à 13:16:21  profilanswer
 

bon on va pouvoir t'aider un peu mieux...

n°613412
bentaih
la vie ne apprend encore
Posté le 16-01-2004 à 13:20:07  profilanswer
 

bjone a écrit :

bon on va pouvoir t'aider un peu mieux...


 
merci  
si vous voulez savoir qq chose d'autre sur ma carte  
je serais connecté tte la journnée voir la soirée aussi
 


---------------
thanks lot
n°613417
bjone
Insert booze to continue
Posté le 16-01-2004 à 13:22:34  profilanswer
 

bon, moi ce que je te conseillerai, c'est de te servir du buzzer pour voir quand est-ce que ça vautre...

n°613421
bentaih
la vie ne apprend encore
Posté le 16-01-2004 à 13:25:09  profilanswer
 

bjone a écrit :

bon, moi ce que je te conseillerai, c'est de te servir du buzzer pour voir quand est-ce que ça vautre...


 
 
utiliser le buzzer pour savoir quoi?  
j'ai pas compris le dernier mot


---------------
thanks lot
n°613422
bjone
Insert booze to continue
Posté le 16-01-2004 à 13:25:29  profilanswer
 

par contre LONG_DELAY_1 et DELAY c'est la même chose hormis le call/ret qui rajoutent quelques cycles, mais vu que c'est hors de la boucle d'attente ils sont un peu "neutres" (c'est pas 3µs qui va changer grand chose :??:)

n°613427
bentaih
la vie ne apprend encore
Posté le 16-01-2004 à 13:27:46  profilanswer
 

bjone a écrit :

par contre LONG_DELAY_1 et DELAY c'est la même chose hormis le call/ret qui rajoutent quelques cycles, mais vu que c'est hors de la boucle d'attente ils sont un peu "neutres" (c'est pas 3µs qui va changer grand chose :??:)


 
donc je suprime l'une des deux ?(delay ou delay1


---------------
thanks lot
n°613441
bjone
Insert booze to continue
Posté le 16-01-2004 à 13:34:36  profilanswer
 

bentaih a écrit :


 
 
utiliser le buzzer pour savoir quoi?  
j'ai pas compris le dernier mot
 


 
bin tu actives le buzzer au début, puis après, etc, etc, ça te fera une traçe de debuggage..
 
tu as:
SBI     PORTB,7                 ;TURN OFF BUZZER  
pour couper le buzzer apparement.
 
donc tu trouves le symétrique pour l'activé.
 
et tu insère cette ligne le long du programme, pour voir si tout se déroule comme il faut.
 
--
 
aussi, tu peux "désactiver" le code qui sert à savoir si le départ du décompte a été lancé.
 
du style tu laisse le truc décompter/afficher depuis 99 minutes.(et tu réduits l'attente histoire d'avoir un décompte tous les secondes).
 
--
 
en fait de manière générale, faut que tu te trouves un moyen de savoir ce qui se passe (via le buzzer), et si des conditions mal évaluées. (genre un coup buzzer après l'init => ok pour l'init, puis un coup de buzzer après le premier chiffe => ok pour la saisie, si ça buzze sans rien saisir => a pas bon, etc)
 
la technique pour débugguer, c'est d'une part se faire un système de trace, puis tester les parties séparément les unes des autres.
 
donc genre tester les routines de décompte avec un compteur fixe (pas saisi)
 
puis tester la saisie du décompte (et affichage de ce qu'il y a de saisi), sans éxécution du décompte etc etc....

n°613443
bentaih
la vie ne apprend encore
Posté le 16-01-2004 à 13:35:26  profilanswer
 

bentaih a écrit :


 
donc je suprime l'une des deux ?(delay ou delay1
 


 
je n'arrive vraiment pas a voir a quoi ca sert le longdelay1


---------------
thanks lot
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  un petit programme pour temporisateur-decompte avec un AT90S1200

 

Sujets relatifs
[VB] petit defi : récuperer le nom d'une variable dans un TYPEprogramme pascal
programme pour faire des menus pour dvd ?Petit problème avec expression régulière...
Structogrammes? un programme?Visual Basic - programme à part ou Excel ?
Un petit peu d'aide en ASP svpRécupere depuis combien de temps est lancé un programme en C.
Programme de "simulateur de panne"Je cherche qqun pour écrire un prgm (petit)
Plus de sujets relatifs à : un petit programme pour temporisateur-decompte avec un AT90S1200


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR