merci pour l'info
ca marche mnt.
je laisse mon code pour ceux à qui ça pourrais servir.

rem: #use fast_io(a) pour pouvoir utiliser set_tris_a() (voir l'aide de ccs)

le code suivant fait varier la luminosité de 2 led branchée sur les pin A0 et A1 d'un 16f84 et affiche la valeur (de 0 à 9) de "l'intensité" de la led sur A0 sur un 7seg (à anode commune)
ps: le code d'affichage sur 7seg pourrais être facilement optimisable en utilisant des OUTPUT_B au lieu des OUTPUT_LOW... mais bon

#include <16F84A.h>
#use delay(clock=20000000)
#fuses NOWDT,HS, NOPUT, NOPROTECT
#use fast_io(a)
//definition des pin
#define OUT PIN_A0
#define OUT2 PIN_A1

#define SEGa PIN_B5
#define SEGb PIN_B4
#define SEGc PIN_B2
#define SEGd PIN_B1
#define SEGe PIN_B0
#define SEGf PIN_B6
#define SEGg PIN_B7
#define SEGdp PIN_B3
void setOut(char valeur);

void main()
{
char pwm=70;
char pwm2=20;
char cpt=0,div=0;
signed char sens=1,sens2=1;
set_tris_a(0x0C);//A0,A1 out A2,A3 in
while(1)
{
if(cpt<pwm) output_high(OUT);
else output_low(OUT);
if(cpt<pwm2) output_high(OUT2);
else output_low(OUT2);
delay_us(10);
cpt++;
if(cpt==100)
{//debordement toute les millisecondes
cpt=0;
div++;
if(div==10)
{//100 fois par secondes
div=0;
pwm=pwm+sens;
pwm2=pwm2+sens2;
if(pwm==0) sens=1;
if(pwm==100) sens=-1;
if(pwm2==0) sens2=1;
if(pwm2==100) sens2=-1;
setOut(pwm/10);
}
}
}
}

void setOut(char valeur)
{
OUTPUT_B(0xff);
switch(valeur)
{
case 0: OUTPUT_LOW(SEGa);
OUTPUT_LOW(SEGb);
OUTPUT_LOW(SEGc);
OUTPUT_LOW(SEGd);
OUTPUT_LOW(SEGe);
OUTPUT_LOW(SEGf);
//OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 1: //OUTPUT_LOW(SEGa);
OUTPUT_LOW(SEGb);
OUTPUT_LOW(SEGc);
//OUTPUT_LOW(SEGd);
//OUTPUT_LOW(SEGe);
//OUTPUT_LOW(SEGf);
//OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 2: OUTPUT_LOW(SEGa);
OUTPUT_LOW(SEGb);
//OUTPUT_LOW(SEGc);
OUTPUT_LOW(SEGd);
OUTPUT_LOW(SEGe);
//OUTPUT_LOW(SEGf);
OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 3: OUTPUT_LOW(SEGa);
OUTPUT_LOW(SEGb);
OUTPUT_LOW(SEGc);
OUTPUT_LOW(SEGd);
//OUTPUT_LOW(SEGe);
//OUTPUT_LOW(SEGf);
OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
brEak;
case 4: //OUTPUT_LOW(SEGa);
OUTPUT_LOW(SEGb);
OUTPUT_LOW(SEGc);
//OUTPUT_LOW(SEGd);
//OUTPUT_LOW(SEGe);
OUTPUT_LOW(SEGf);
OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 5: OUTPUT_LOW(SEGa);
//OUTPUT_LOW(SEGb);
OUTPUT_LOW(SEGc);
OUTPUT_LOW(SEGd);
//OUTPUT_LOW(SEGe);
OUTPUT_LOW(SEGf);
OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 6: OUTPUT_LOW(SEGa);
//OUTPUT_LOW(SEGb);
OUTPUT_LOW(SEGc);
OUTPUT_LOW(SEGd);
OUTPUT_LOW(SEGe);
OUTPUT_LOW(SEGf);
OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 7: OUTPUT_LOW(SEGa);
OUTPUT_LOW(SEGb);
OUTPUT_LOW(SEGc);
//OUTPUT_LOW(SEGd);
//OUTPUT_LOW(SEGe);
//OUTPUT_LOW(SEGf);
//OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 8: OUTPUT_LOW(SEGa);
OUTPUT_LOW(SEGb);
OUTPUT_LOW(SEGc);
OUTPUT_LOW(SEGd);
OUTPUT_LOW(SEGe);
OUTPUT_LOW(SEGf);
OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 9: OUTPUT_LOW(SEGa);
OUTPUT_LOW(SEGb);
OUTPUT_LOW(SEGc);
OUTPUT_LOW(SEGd);
//OUTPUT_LOW(SEGe);
OUTPUT_LOW(SEGf);
OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 10: OUTPUT_LOW(SEGa);
OUTPUT_LOW(SEGb);
OUTPUT_LOW(SEGc);
//OUTPUT_LOW(SEGd);
OUTPUT_LOW(SEGe);
OUTPUT_LOW(SEGf);
OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 11: //OUTPUT_LOW(SEGa);
//OUTPUT_LOW(SEGb);
OUTPUT_LOW(SEGc);
OUTPUT_LOW(SEGd);
OUTPUT_LOW(SEGe);
OUTPUT_LOW(SEGf);
OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 12: OUTPUT_LOW(SEGa);
//OUTPUT_LOW(SEGb);
//OUTPUT_LOW(SEGc);
OUTPUT_LOW(SEGd);
OUTPUT_LOW(SEGe);
OUTPUT_LOW(SEGf);
//OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 13: //OUTPUT_LOW(SEGa);
OUTPUT_LOW(SEGb);
OUTPUT_LOW(SEGc);
OUTPUT_LOW(SEGd);
OUTPUT_LOW(SEGe);
//OUTPUT_LOW(SEGf);
OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 14: OUTPUT_LOW(SEGa);
//OUTPUT_LOW(SEGb);
//OUTPUT_LOW(SEGc);
OUTPUT_LOW(SEGd);
OUTPUT_LOW(SEGe);
OUTPUT_LOW(SEGf);
OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
case 15: OUTPUT_LOW(SEGa);
//OUTPUT_LOW(SEGb);
//OUTPUT_LOW(SEGc);
//OUTPUT_LOW(SEGd);
OUTPUT_LOW(SEGe);
OUTPUT_LOW(SEGf);
OUTPUT_LOW(SEGg);
OUTPUT_LOW(SEGdp);
break;
}
}