Académique Documents
Professionnel Documents
Culture Documents
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();
}
}