5.Interruption externe

Étapes de configuration de l'initialisation des interruptions :

  1. Configuration d'initialisation du port IO

  2. Activez les interruptions et autorisez toujours EA

  3. Activer l'autorisation d'interruption d'un port IO

  4. Activez l'activation d'interruption d'un certain bit du port IO

  5. Configurer le mode de déclenchement d'interruption de ce bit

Fonction d'interruption :

#pragma vector = PxINT_VECTOR
__interrupt void 函数名(void){
     
     }

#pragma vector = PxINT_VECTOR
__interrupt void 函数名(void){}

image-20230927151133992

Registre de configuration des interruptions

Registre d'activation d'interruption IENx

image-20230927151945997

image-20230927151707935

image-20230927151729874

Si l'interruption du port P0 est activée, elle peut être utilisée directement P0IE = 1. Cependant, si l'interruption du port P1/P2 est activée, un seul bit ne peut pas être utilisé directement. Il doit être ouvert ou utilisé, commeIEN2 |= 0x10; // 0001 0000 相当于P1IE=1

Interruption générale d'E/S PxIEN

Les broches d'E/S à usage général, lorsqu'elles sont configurées comme entrées, peuvent être utilisées pour générer des interruptions. Les interruptions peuvent être configurées pour se déclencher sur le front montant ou descendant d'un signal externe. Les ports P0, P1 ou P2 ont tous des bits d'activation d'interruption

image-20230927152159630

Registre de bord d'interruption PICTL

image-20230927152314064

Registre des indicateurs d'état d'interruption PxIFG

Lorsqu'une condition d'interruption se produit sur l'une des broches d'E/S, l'indicateur d'état d'interruption correspondant dans le registre d'indicateur d'interruption P0-P2 P0IFG, P1IFG ou P2IFG sera mis à 1. L'indicateur d'état d'interruption est activé, que le bit d'activation d'interruption de la broche soit activé ou non. Lorsque l'interruption a été exécutée, l'indicateur d'état de l'interruption est effacé et 0 est écrit dans cet indicateur.

[Le matériel définit 1, le logiciel efface 0]

image-20230927152543051

Indicateur d'état d'interruption du port IO

image-20230927155024657

image-20230927155039070

Fonction d'interruption de service

#pragma vector = PxINT_VECTOR

PxINT_VECTOR : Vous devez le modifier en fonction du port d'interruption que vous choisissez (0,1,2)

Ne changez pas d'autres pièces

__interrupt void 函数名(void){ //清除中断标志 PxIFG=0; PxIF=0;}

Écrivez le nom de la fonction en fonction de vos besoins, puis effacez le bit d'indicateur en fonction du port IO d'interruption ouvert

Échantillon d'interruption

#include<iocc2530.h>

void main(){
    
    
  
   P0SEL &= ~0x20;//P0_5设置为通用I/O口 1101 1111
   P0DIR &= ~0x20;//P0_5设置为输入
   P0INP &= ~0x20;//P0_5设置为上下拉
   P2INP &= ~0X20;//P0_5设置为上拉  
   
   //1.打开中断总允许
   EA=1;
   //2.打开P0口中断允许
   P0IE = 1;
   
   /*
   P1IE如果要设置为1,不能直接用P1IE = 1,不能直接使用位操作
   应该使用 IEN2 |= 0x10; // 0001 0000 相当于P1IE=1
   */

   //3.打开组内的某一位中断允许
   P0IEN |= 0x20;//P0_5中断打开 0010 0000
   //4.设置触发方式
   PICTL |=0x01;//把P0这一组配置成下降沿触发

   while(1);
}

#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void){
    
     //P0_ISR为函数名,可自行定义
   if(P0IFG & 0x20)//判断P0_5是否发生中断
   {
    
    
   }
   //清除中断标志 
   P0IFG=0;
   P0IF=0;
}

#include<iocc2530.h>

vide principal(){

P0SEL &= ~0x20;//P0_5 est défini comme port d'E/S général 1101 1111
P0DIR &= ~0x20;//P0_5 est défini comme entrée
P0INP &= ~0x20;//P0_5 est défini comme pull-up et pull- down
P2INP &= ~0X20;/ /P0_5 est réglé sur pull-up

//1. Activez l'autorisation d'interruption totale
EA=1 ;
//2. Activez l'autorisation d'interruption du port P0
P0IE = 1 ;

/*
Si vous souhaitez définir P1IE sur 1, vous ne pouvez pas utiliser directement P1IE = 1, ni utiliser directement des opérations sur les bits. Vous devez utiliser
IEN2 |= 0x10 ; // 0001 0000 est équivalent à P1IE=1
*/

//3. Activez une certaine interruption dans le groupe pour autoriser
P0IEN |= 0x20 ; // L'interruption P0_5 est activée 0010 0000
//4. Définissez le mode de déclenchement
PICTL |= 0x01 ; // Configurez le groupe P0 comme front descendant déclenchement

tandis que(1);
}

#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void){ //P0_ISR est le nom de la fonction, vous pouvez le définir vous-même
si (P0IFG & 0x20) // Détermine si une interruption se produit dans P0_5
{ } //Effacer l'indicateur d'interruption P0IFG= 0; P0IF=0; } Le nom Zigbee s'inspire de la façon dont les abeilles communiquent : les abeilles volent en zigzag pour communiquer l'emplacement, la distance et la direction de la nourriture trouvée. La Zigbee Alliance prend ce nom comme nom de cette nouvelle génération de technologie de communication sans fil. [2] Après avoir découvert un buisson de fleurs, les abeilles utiliseront un langage corporel spécial pour informer leurs compagnons de l'emplacement de la source de nourriture nouvellement découverte. Ce langage corporel est la danse ZigZag, qui est un moyen simple pour les abeilles de communiquer des informations. En ce sens, Zigbee est considéré comme une nouvelle génération de technologie de communication sans fil. Avant cela, ZigBee était également connu sous le nom de technologie radio « HomeRF Lite », « RF-EasyLink » ou « fireFly », collectivement appelés ZigBee. En termes simples, ZigBee est un réseau de transmission de données sans fil très fiable, similaire aux réseaux CDMA et GSM. Le module de transmission de données ZigBee est similaire à une station de base de réseau mobile. La distance de communication varie de 75 m standard à des centaines de mètres et plusieurs kilomètres, et prend en charge une expansion illimitée. ZigBee est une plate-forme de réseau de transmission de données sans fil composée de modules de transmission de données sans fil jusqu'à 65 535. Dans l'ensemble du réseau, chaque module de transmission de données du réseau ZigBee peut communiquer entre eux, et la distance entre chaque nœud de réseau peut aller de la norme à 75 m d'extension illimitée.









Différent du réseau CDMA ou du réseau GSM de communications mobiles, le réseau ZigBee est principalement destiné à la transmission de données de contrôle d'automatisation dans le domaine industriel. Il doit donc être simple, facile à utiliser, fiable et peu coûteux. Les réseaux de communication mobile sont principalement construits pour les communications vocales : la valeur de chaque station de base est généralement supérieure à un million de yuans, tandis que chaque « station de base » ZigBee coûte moins de 1 000 yuans.
Chaque nœud du réseau ZigBee peut non seulement être utilisé comme objet de surveillance, par exemple, les capteurs qui y sont connectés peuvent directement collecter et surveiller les données, mais peuvent également transférer automatiquement les données d'autres nœuds du réseau. De plus, chaque nœud de réseau ZigBee (FFD) peut également être connecté sans fil à plusieurs sous-nœuds isolés (RFD) qui n'effectuent pas de tâches de transfert d'informations sur le réseau dans la portée de sa propre couverture de signal.

Je suppose que tu aimes

Origine blog.csdn.net/qq_61228493/article/details/133354790
conseillé
Classement