Simple question C codevision, plz help

T

Terminator

Guest
Salut

Qu'est-ce que ces lignes signifie?

Qu'est-ce que signifie l'expression suivante?

if (Array & A), tandis que array est une valeur hexadécimale variable, et «a» est une valeur constante hexadécimale

et ce que cela signifie?
a <<= 1;

Merci,

 
Merci pour l'aide ur, tout est désormais clair,,,,

par la façon dont,,, ne u avoir une idée comment écrire une interruption IR RC code% grâce?Parce que je celle faite avec seulement une minuterie et cela a fonctionné parfaitement, mais je n'ai aucune idée de comment commencer à écrire le code en utilisant des interruptions

 
Terminator électricité a écrit:

do u avoir une idée comment écrire une interruption code moteur IR% RC?
Parce que je celle faite avec seulement une minuterie et cela a fonctionné parfaitement, mais je n'ai aucune idée de comment commencer à écrire le code en utilisant des interruptions
 
Qu'est-ce que u veux dire par rapport de recherche internationale?

Ceci est mon code pour le récepteur IR RC5 l'aide d'un ATmega16

Code:

/************************************************* ****
Type de Capteur: ATMEGA16L

Programme de type: Application

Les fréquences d'horloge: 7.372800 MHz

modèle de mémoire: Petit

SRAM externe de taille: 0

Données taille de la pile: 256

************************************************** *** /void setup_AVR ();

# Define CHECKBIT (ADRESSE, BIT) (adresse & (1 <<BIT))

# Include <mega16.h>

# Include <stdio.h>

# Include <io.h>

unsigned char temp = 0;

unsigned char de commandement [10] = (0);

unsigned char système [10] = (0);

unsigned char timerH = 0;

unsigned char timerL = 0;

bitcnt int; / / nombre de bits en attente de réception

unsigned char ref1; / / 3 / 4 bit_time

unsigned char ref2 / / 5 / 4 bit_time

int i = 6;

int j = 5;

int k;interrompre [TIM0_OVF timer0_ovf_isr void] (void)

(

timerL ; / / tous les paliers * 255 1/7.372800 seconde

temp ;

if (temp == 255) (temp = 0; timerH ;) / / incrémente tous les 255 * 255 * 1/7.372800 seconde

)void main (void)

(

setup_AVR ();
# Asm ("sei")while (1)

(initialiser: temp = 0;

timerH = 0;detect1: timerL = 0;detect2: if (timerH> 15) / / Si aucun bit de départ détectée dans 132ms

Aller à la faute;if (timerL> 102) / / Si la ligne haute de plus de 3.5ms

Aller START1; / / puis d'attendre le premier départ peuif (! CHECKBIT (PIND, 2)) / / Si la ligne est:

Aller detect1; / / = 0 PIND Aller faible - à detect1 et réinitialiser le compteur

detect2 autre goto / / = 1 PIND haut - Aller à detect2 et revérifier pour 3,5 ms de haut idéalSTART1: while (CHECKBIT (PIND, 2)) / / garder le contrôle pour le premier départ peu

(

if (timerH> 15) / / Si aucun bit de départ détectée dans 132ms

Aller à la faute; / / puis la sortie printf ("5");

)timerL = 0; / halflength Mesure / du bit de départstart2: while (! CHECKBIT (PIND, 2)) / halflength Mesure / du bit de départ (longueur de bas niveau)

(

if (timerL> 26) / / Si bit de début de plus de 1.1ms,

Aller à la faute; / / sortie

)

/ / Temps timerL = 1 / 2 bits

ref1 = 3,0 * timerL/2.0; / / ref1 temps = 3 / 4 bits

ref2 = 5,0 * ref1/3.0; / / ref2 temps = 5 / 4 bits

timerL = 0;start3: while (CHECKBIT (PIND, 2)) / / vérifier si deuxième bit de départ est reçue

(

if (timerL> Ref1) / / Si front montant est trop long

Aller à la faute; / / sortie

)bitcnt = 12; / / Recevoir 12 bits

j = 5; / / Pour la commande

i = 5; / / Pour le système

extrait: timerL = 0;

while (timerL <Ref1); / / attendre jusqu'à la première 1 / 4 de peu à côtéwhile (bitcnt> 0)(

/ / Maintenant recevoir les 7 premiers bits dont le bit de bascule

while (bitcnt> 6)

(If (PIND.2 == 0) (/ / Le bit reçu est égal à 0

système = 0; / / stocker les bits dans le système

i -; bitcnt - / / se préparer pour le prochain bit

while (! CHECKBIT (PIND, 2)) / / attendre le prochain front

(

if (timerL faute> ref2 goto);

)

Aller échantillon; / / attendre le prochain bit

)else (/ / Le bit reçu est de 1

système = 1; / / stocker les bits dans le système

i -; bitcnt - / / se préparer pour le prochain bit

while (CHECKBIT (PIND, 2)) / / attendre le prochain front

(

if (timerL faute> ref2 goto);

)

Aller échantillon; / / attendre le prochain bit

)

)

/ / Maintenant recevoir les derniers 6 bitsif (PIND.2 == 0) (/ / Le bit reçu est égal à 0

commande [j] = 0; / / stocker les bits dans le commandement

j -; bitcnt - / / se préparer pour le prochain bit

while (! CHECKBIT (PIND, 2)) / / attendre le prochain front

(

if (timerL faute> ref2 goto);

)

Aller échantillon; / / attendre le prochain bit

)else (/ / Le bit reçu est de 1

commande [j] = 1; / / stocker les bits dans le commandement

j -; bitcnt - / / se préparer pour le prochain bit

while (CHECKBIT (PIND, 2)) / / attendre le prochain front

(

if (timerL faute> ref2 goto);

)

Aller échantillon; / / attendre le prochain bit

)

)

printf ("AA");

for (k = 5;> k = 0; k -)

printf ("% d", la commande [k]);

printf ("BB");

for (k = 5;> k = 0; k -)

printf ("% d", le système [k]);faute: initialiser goto;);

)

void setup_AVR ()

(

PORTD = 0x00;

DDRD = 0x00;

TCCR0 = 0x01;

TCNT0 = 0x00;

OCR0 = 0x00;

TIMSK = 0x01;

ACSR = 0x80;

SFIOR = 0x00;

)
 

Welcome to EDABoard.com

Sponsor

Back
Top