Frustré: 8051 Problème Timer Got Me Scratchin 'My Head

0

02h43

Guest
Tout d'abord, je tiens à me présenter aux forums.Ceci est mon premier post!J'ai surtout signé à titre d'information et d'aide sur l'ancienne 8051 micros et de l'apprentissage de nouvelles infos sur les micros AVR, qui semblent être le choix le plus populaire de la RCH aujourd'hui de qualité.J'ai été jouer avec le 8051 depuis environ 10 ans maintenant, mais j'ai le regret de dire que je ne le faisons pas assez pour être un pro!J'ai donc besoin d'aide

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />Quoi qu'il en soit, j'ai un prototype, je travaille sur la AT89S51.Je suis de codage utilisant uVision, et je code en ASM.En ce moment, mon programme de test est de mettre en place Timer0 et l'utiliser comme une interruption de sortir, bouger la valeur du CAC à Port0, tournez la valeur de l'ACC laissé un peu, le retour de l'interruption ... et tout cela, plus à nouveau.Huit voyants sont Port0 (P0.0-P0.7).cristal 16MHz, 12 horloges par partie MC.

Mon objectif est un retard de 10 ms en utilisant Timer0.La durée de la minuterie est utilisée pour analyser les voyants afin qu'ils apparaissent constamment allumé.Je pense rafraîchissement de 100Hz devrait être bon pour un test.

Mais le problème semble être que, peu importe ce que je charger dans TH0 et TL0, le délai ne change pas quand on regarde les voyants sur mon prototype!Le seul moment où elle change est si je change le mode Timer0 (TMOD) soit à la 8-bits ou bits modes 13 ... mais même dans ces modes, l'évolution et TH0 TL0 ne pas faire une chose darn!

Qu'est-ce que je fais erreur?Voici le code.Merci pour l'aide!

; START
ORG 0000H;
LJMP suivante;

;------------------------------------------------- ------------------------
TIMER_0_INTERRUPT:
ORG 000Bh;
MOV P0, A;
RL A;
RETI; de retour de d'interruption de l'endroit où le programme est venu de
;------------------------------------------------- ------------------------NEXT:
;-----------Bit TIMER ------------- Setup 16
; Configurer et Activer minuterie.Activer les interruptions.
MOV TMOD, # 01h; 16-bit Timer0 Mode
SCON MOV, # 0x0; Reset contrôle série
SETB ET0; Activer Timer0 interruption
EA SETB; activer les interruptions
MOV TH0, # 0xcb; octet supérieur
MOV TL0, # 0xEB; Basse-Byte
CLR TF0; Clear Timer0 Drapeau
SETB TR0; Premier Timer0
;------------------------------------------------- -

MOV A, # 01111111B;

DO_NOTHING:
NOP;
NOP;
JMP DO_NOTHING;

END;

 
En plus de connaître l'assembleur 8051, vous devez également savoir, comment le 8051 fonctionne matériel, vous pouvez consulter le 80S51
Feuille de données.Il n'ya pas de recharge automatique en 16-bit mode timer 0.Timer 2, il a, au contraire.

 
FVM a écrit:

En plus de connaître l'assembleur 8051, vous devez également savoir, comment le 8051 fonctionne matériel, vous pouvez consulter le 80S51

Feuille de données.
Il n'ya pas de recharge automatique en 16-bit mode timer 0.
Timer 2, il a, au contraire.
 

Welcome to EDABoard.com

Sponsor

Back
Top