Vous êtes sur la page 1sur 3

Ex2 

2.b)  
void display (int digit1, int pt1, int digit2, 
1)   
int pt2) 
ext_int_edge(L_TO_H); 

enable_interrupts(INT_EXT); 
   // sortie digit1 sur RB3‐RB0 
enable_interrupts(GLOBAL); 
 output_bit(PIN_B0, digit1 & 0x01); 
2)   
  output_bit(PIN_B1, (digit1 >>1) & 0x01); 
int RA0 = 0; 
  output_bit(PIN_B2, (digit1 >>2) & 0x01); 
#int_ext 
  output_bit(PIN_B3, (digit1 >>3) & 0x01); 
void gen_freq() 
  //sortie du pt1 sur DP 

  output_bit(PIN_B6, pt1); 
   RA0 =~RA0 ; 
  //Activation de AN1 pendant 20ms 
   output_bit(PIN_A0, RA0); 
  output_high(PIN_B4); 

  delay_ms(20); 
 
  output_low(PIN_B4);   
Ou encore 
  // sortie digit2 sur RB3‐RB0 
#byte RA=5 
  output_bit(PIN_B0, digit2 & 0x01); 
#int_ext 
  output_bit(PIN_B1, (digit2 >>1) & 0x01); 
void gen_freq() 
  output_bit(PIN_B2, (digit2 >>2) & 0x01); 

  output_bit(PIN_B3, (digit2 >>3) & 0x01); 
   output_bit(PIN_A0, ~RA); //bien que 
  //sortie du pt2 sur DP 
ceci affecte tout le PORTA !! 
  output_bit(PIN_B6, pt2); 

  //Activation de AN2 pendant 20ms 
 
  output_high(PIN_B5); 
Problème    delay_ms(20); 
1)      output_low(PIN_B5); 
void PIC_init()  } 
{   
  set_tris_a(0x1f);  //ou 0xff  2.c)  
  set_tris_b(0x00);  void offset_display() 
  output_b(0x00) ;  { 
}    int dg1, dg2, mv; 
2)      digits_extract(&dg1, &dg2, &mv); // !! 
2.a)   les variables sont passées par adresse 
void digits_extract(int *digit1, int *digit2,    display (dg1, 0, dg2, mv); //le point pt1 
int *mvt)  n’est pas activé 
{  } 
  int rh_data, mesure;   
  rh_data = input_a();  3)   
  mesure = rh_data & 0x0f;  3.a)   
  *digit1 = mesure % 10;  void tone() 
  *digit2 = mesure / 10;  { 
  *mvt = rh_data >>3;    int i; 
}    int spk=0; 
    for (i=0; i<1000 ; i++) // 1 boucle de 1s 
  { 
    spk = ~spk; 
    output_bit(PIN_B7,spk); 
    delay_ms(1); //demi‐période = 1ms 
  } 

 
3.b)  
void deadline_detect() 

  int rh_data; 
  rh_data = input_a(); 
  if ((rh_data==0x10)||(rh_data==0x0f)) 
    tone();      

 
4)   
#include <16f84a.h> 
#use delay(clock=1000000) 
 
//déclarations des fonctions du 
programme principal 
void PIC_init() ; 
void offset_display() ; 
void deadline_detect() ; 
 
//Programme principal 
void main() 

  PIC_init(); 
  while(1) 
  { 
    offset_display();     
    deadline_detect(); 
  } 

Vous aimerez peut-être aussi