User: alciro    User
 Original    Translate to:  Deutsch  English  Français  中文  
 

Microcontroladores 8051

7.3. Communications série d'échantillonnage (sondage)

Exemple de communication série à l'aide de la méthode d'échantillonnage (interrogation):

 /************************************************* *********
 Exemple d'un programme de transmission de données par
 port série RS-232, l'échantillonnage d'exploitation (de vote).
 Pour la Keil C51 compilateur C et les microcontrôleurs
 8051.

 Description: Un programme qui donne un caractère a, b, c.. dans 
 minuscules ou en majuscules à 0 ou 1 bits
 port P1.

 Auteur: Rafael Aranda
 Date: 11/20/2009
 Version: 1.0
************************************************** ********/

# Inclure <reg52.h> / / Inclure les domaines génériques de 8052

/ / Définit la position du bit P1, microcontrôleur 8051
SBIT Led_0 = P1 ^ 0; / / Assigne la P1.0 bits symbole Led_0
SBIT LED_1 = ^ P1 1; / / Assigne le symbole LED_1 bits P1.1
SBIT LED_2 = P1 ^ 2 / / Assigne la P1.2 bits symbole LED_2
SBIT Led_3 = P1 ^ 3; / / Assigne le symbole bit P1.3 Led_3
SBIT Led_4 = P1 ^ 4; / / Assigne la P1.4 bits symbole Led_4
SBIT Led_5 = P1 ^ 5; / / Assigne la P1.5 symbole Led_5 bits
SBIT Led_6 = P1 ^ 6; / / Assigne le symbole Led_6 bits P1.6
SBIT Led_7 ^ = P1 7; / / Assigne le symbole Led_7 bits P1.7

/ / Déclaration des fonctions prototypes
void InitSerial (void) / / Démarre le port série
void RecDat (void) / / Fonction Recevoir des données

/ / Déclaration de variable globale


//------------------------------------------------ ----------
/ / Programme principal
//------------------------------------------------ ----------
void main (void) {
        
	/ / Force la préparation initiale
	P1 = 0, / / Mettez tous les bits de P1 à 0
	InitSerial (); / / Commencer communications
	
	/ / Corps du programme dans une boucle infinie
	while (1) {
		/ / Affiche le RI jusqu'à l'arrivée d'un nouveau Byte
		if (RI) {
			RecDat ();
		}
	}
}

//------------------------------------------------ ----------
/ / Fonction Recevoir des données
//------------------------------------------------ ----------
void RecDat (void) {
	unsigned char dat;
	
	RI = 0, / / Clear reçoivent un drapeau
	dat = SBUF; / / Récupération de l'octet de mémoire tampon de réception
	SBUF = dat; / / Echo des données reçues
	
	/ / Analyser les données reçues et en fonction de la nature
	/ / Mettre à 0 ou 1 du bit correspondant
	switch (dat) {
		/ / Port Zero 1 bits
		cas 'a':
			Led_0 = 0, / / Bit P1.0 à 0
			break;
		case 'b':
			LED_1 = 0, / / Bit P1.1 à 0
			break;
		case 'c':
			LED_2 = 0, / / Bit P1.2 à 0
			break;
		cas «d»:
			Led_3 = 0, / / Bit P1.3 à 0
			break;
		cas «e»:
			Led_4 = 0, / / Bit P1.4 à 0
			break;
		case 'f':
			Led_5 = 0, / / Bit P1.5 à 0
			break;
		cas «g»:
			Led_6 = 0, / / Bit P1.6 à 0
			break;
		case 'h':
			Led_7 = 0, / / Bit P1.7 à 0
			break;
		/ / Faire un port 1 bits
		cas «A»:
			Led_0 = 1, / / Bit P1.0 à 1
			break;
		cas «B»:
			LED_1 = 1, / / Bit P1.1 à 1
			break;
		cas «C»:
			LED_2 = 1, / / Bit P1.2 à 1
			break;
		cas «D»:
			Led_3 = 1, / / Bit P1.3 à 1
			break;
		cas «E»:
			Led_4 = 1, / / Bit P1.4 à 1
			break;
		case 'F':
			Led_5 = 1, / / Bit P1.5 à 1
			break;
		cas de «G»:
			Led_6 = 1, / / Bit P1.6 à 1
			break;
		cas de «H»:
			Led_7 = 1, / / Bit P1.7 à 1
			break;
	}

}

//------------------------------------------------ ----------
/ / Démarre le port série
//------------------------------------------------ ----------
void InitSerial (void) {
	TMOD | = 0x20 / / Timer 1 en mode 2 (rechargement automatique)
	TL1 = 0xFD / / un débit de 9600
	TH1 = 0xFD;
	SCON = 0x50, / / Setup UART mode 2
	TR1 = 1, / / Start Timer1 et UART

} 

Loading
copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |