2016-05-17 2 views
0

J'ai ce code ici pour générer une onde carrée de 50% du cycle de service et la fréquence de 0,1 Hz avec 8 MHz Fosc:0.1Hz générateur d'onde rectangulaire avec 30% du cycle de service dans l'assemblage

BCF TRISD,7 
MOVLW 0x07 
MOVWF T0CON 
HERE MOVLW 0x67 
MOVWF TMR0L 
MOVLW 0x69 
MOVWF TMR0H 
BCF INTCON,TMR0IF 
BTG PORTD,7 
BSF T0CON,TMROON 
AGAIN BTFSS INTCON,TMR0IF 
BRA AGAIN 
BCF T0CON,TMR0ON 
BRA HERE 

Ce que je veux est de savoir comment pour modifier ce code afin d'effectuer une onde rectangulaire au lieu de l'onde carrée et avec un facteur de marche de 30% au lieu de 50%.

J'espère que quelqu'un peut me aider et grâce avancées

+0

ont deux boucles, l'une après l'autre, avec des valeurs de minuterie différentes. L'un contrôle la sortie haute, l'autre contrôle la sortie basse. Leur somme donne la période requise et leur rapport donne le cycle de service requis. Donc, 50% serait le cas spécial où les deux comptes de minuterie sont égaux. –

+0

Merci pour votre réponse ** M. Weather Vane **, je n'ai pas compris votre point exact ... cela vous dérangerait-il de me montrer ce que vous entendez par code? –

+0

Cela ressemble au code PIC, que je n'ai pas écrit depuis un certain temps. Mais supposons que la période de forme d'onde nécessite 10 000 comptages de minuterie, en fonction de la configuration des paramètres de minuterie. Pour un cycle de travail de 30%, vous écrivez la sortie haute, et utilisez une minuterie pour retarder 3000 comptes. Ensuite, vous écrivez la sortie basse, et utilisez la minuterie pour retarder 7000 comptes (période totale 10000). Répétez maintenant. Si c'est votre code, vous ne devriez pas le trouver trop difficile, ayant réussi un cycle de service de 50% pour une période de forme d'onde donnée. –

Répondre

0

Merci pour l'aide M. Girouette J'ai modifié le code pour effectuer le cycle de service de 30%, mais la partie de retard que je ne pouvais pas le résoudre si loin ....

Voici la mise à jour ..

BCF TRISD,2 
MOVLW 0x07 
MOVWF T0CON 
HERE: MOVLW 0xE5 
MOVWF TMR0L 
MOVLW 0x48 
MOVWF TMR0H 
BCF INTCON,TMR0IF 
BTG PORTD,2 
BSF T0CON,TMR0ON 
AGAIN: BTFSS INTCON,TMR0IF 
BRA AGAIN 
BCF T0CON,TMR0ON 
BRA HERE