TMRO et la fonction interrupteur dans MikroC

B

bbgil

Guest
salut. J'ai ce code simple qui devait tourner sur afficheur 7 segments (anode commune) compter 0-9. J'utilise la fonction de commutation et l'TMR0. le problème est que je ne peux pas rendre compte. il bloqué à 8. je pense que le problème est mon TMRO et comment le compte donc contrôler la fonction de commutation. Toute aide que les gourous C là-bas sera appréciée. encore à apprendre comment utiliser C. voici le code. thnx à l'avance. unsigned cnt; CNT1 unsigned void interrupt () {cnt + +; if (cnt == 400) {cnt = 0; CNT1 = CNT1 + +;} / / Incrémente la valeur de cnt sur chaque INTCON interruption = 0x20; TMR0 = 96; / / Set T0IE, clair T0IF} / / ~ void main () {OPTION_REG = 0x84; / / Assigne prédiviseur à TMR0 TRISB = 0; / / PORTB est sortie PORTB = 0xFF; / / Initialisation du PORTB = 0x96 TMR0; INTCON = 0xA0; / / Validation de l'alarme TMRO cnt = 0; CNT1 = 0; / / Initialisation cnt do {if (CNT1
 
Salut, j'ai écrit ce code pour compter à rebours, mais il s'arrête à zéro . Elle compte 9 à 0, mais s'arrêter à boucle zero.No. do {for (i = 9; i> = 0; i -) {/ / / unsigned PORTA = 0; PORTB = masque (i); PORTA = 2; / / / 5V à la broche RA1 Delay_ms (1000);} } while (1); / / boucle sans fin Merci à l'avance
 
Salut, Changer à:
Code:
 do {for (i = 9; i> 0; i -) {/ / / unsigned PORTA = 0; PORTB = masque (i); PORTA = 2; / / / 5V à pin RA1 Delay_ms (1000);} if (i == 0) {PORTA = 0; PORTB = masque (i); PORTA = 2; / / / 5V à la broche RA1 Delay_ms (1000);}} while (1); / / boucle sans fin
Hope this helps. Tahmid. [COLOR = "Silver"] [SIZE = 1] ---------- Message ajouté à 14:52 ---------- Le post précédent était à 14:49 --- ------- [/SIZE] [/COLOR] Or,
Code:
 do {PORTA = 0; PORTB = masque (i); PORTA = 2; Delay_ms (1000); if (i> 0) {i -;} else {i = 9;}} while (1);
Hope this helps. Tahmid. [COLOR = "Silver"] [SIZE = 1] ---------- Message ajouté à 14:54 ---------- Le post précédent était à 14:52 --- ------- [/SIZE] [/COLOR] L 'essayer. Le problème est i est déclarée comme non signé. Alors, quand il est égal à 0, la condition de la boucle for est toujours valable, mais elle ne peut pas être diminuée. Donc, vous voyez .....
 

Welcome to EDABoard.com

Sponsor

Back
Top