« LEDBARドライバを久々に更新 | トップページ | いよいよ3D時代か? »

2010年4月13日 (火)

調光型流れ点滅ソース公開。

調光型流れ点滅、フヮファっと流れて行きます。評判が良かった。PIC基板で動かします。

なんかIF文ばっか。

/****************************************
*  10ポート調光流れ点滅
*  interrupt1
***************************************/
#include  <16f886.h>
#fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP,MCLR,NOIESO,NOFCMEN,NODEBUG,BORV40 
#device adc=8 //A/D変換
#use delay(CLOCK = 20000000)  //クロック周波数指定
//// RS232C使用宣言
#use rs232(BAUD = 9600, XMIT = PIN_C6, RCV = PIN_C7)

#use fast_io(b)
#use fast_io(c)
static long i1=1,i2=1,i3=1,i4=1,i5=1,i6=1,i7=1,i8=1,i9=1,i10=1,md;//調光データ
long ss=0,max,pr=0;
int po=1,pp=0,p2=0,p3=0,p4=0,p5=0,p6=0,p7=0,p8=0,p9=0,p10=0,p11=0,data;
#int_timer0
void intval()
{   
   int cu,cd;

/*  if(!input(pin_B0))
   st=1;
   if(!input(pin_B1))
   st=3;
   if(!input(pin_B2))
   st=6; */
   ss=ss+1;
   if(ss>=md)//流れ速度
   {
      ss=0;
 
      if(1)//パターン1
       {
        cu=1; cd=1; max=125;
        if((po==1)||(po==2)||(po==3)||(po==4)||(po==5))                    //port1       
        i1=i1+cu;                                 
        if((po==6)||(po==7)||(po==8)||(po==9)||(po==10))
        i1=i1-cd; 
        if((po==2)||(po==3)||(po==4)||(po==5)||(po==6))                    //port2
        i2=i2+cu; 
        if(((po==7)||(po==8)||(po==9)||(po==10)||(po==1))&&(p5==1))
        i2=i2-cd;
        if((po==3)||(po==4)||(po==5)||(po==6)||(po==7))                     //port3       
        i3=i3+cu;         
        if(((po==8)||(po==9)||(po==10)||(po==1)||(po==2))&&(p6==1))
        i3=i3-cd;
        if((po==4)||(po==5)||(po==6)||(po==7)||(po==8))                    //port4
        i4=i4+cu;         
        if(((po==9)||(po==10)||(po==1)||(po==2)||(po==3))&&(p7==1))
        i4=i4-cd;
        if((po==5)||(po==6)||(po==7)||(po==8)||(po==9))                     //port5
        i5=i5+cu;         
        if(((po==10)||(po==1)||(po==2)||(po==3)||(po==4))&&(p8==1))
        i5=i5-cd;         
        if((po==6)||(po==7)||(po==8)||(po==9)||(po==10))                     //port6
        i6=i6+cu;         
        if(((po==1)||(po==2)||(po==3)||(po==4)||(po==5))&&(p10==1))
        i6=i6-cd;      
        if(((po==7)||(po==8)||(po==9)||(po==10)||(po==1))&&(p5==1))           //port7
        i7=i7+cu;         
        if(((po==2)||(po==3)||(po==4)||(po==5)||(po==6))&&(p10==1))
        i7=i7-cd;
        if(((po==8)||(po==9)||(po==10)||(po==1)||(po==2))&&(p5==1))           //port8
        i8=i8+cu;         
        if(((po==3)||(po==4)||(po==5)||(po==6)||(po==7))&&(p10==1))
        i8=i8-cd;
        if(((po==9)||(po==10)||(po==1)||(po==2)||(po==3))&&(p5==1))            //port9
        i9=i9+cu; 
        if(((po==4)||(po==5)||(po==6)||(po==7)||(po==8))&&(p10==1))
        i9=i9-cd;
        if(((po==10)||(po==1)||(po==2)||(po==3)||(po==4))&&(p6==1))            //port10
        i10=i10+cu;         
        if(((po==5)||(po==6)||(po==7)||(po==8)||(po==9))&&(p11==1)) 
        i10=i10-cd;   
        pp=pp+1; //回転回数
        if(pp>25)
        {
        po=po+1;
        pp=0;
        }
        if(po>10)
        po=1;
                
       if(pr<260)
        {
        pr=pr+1;   
        if(pr>25)
        p2=1;
        if(pr>50)
        p3=1;
        if(pr>75)
        p4=1;
        if(pr>100)
        p5=1;
        if(pr>125)
        p6=1;
        if(pr>150)
        p7=1;
        if(pr>175)
        p8=1;
        if(pr>200)
        p9=1;
        if(pr>225)
        p10=1; 
        if(pr>250)
        p11=1;
        }
   
    }//パターン1
   
}
}   
/************ メイン関数 ******************/
void main()
{   
    //// タイマ0初期設定
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_2| RTCC_8_BIT);
set_timer0(0);
//// 割り込み許可
enable_interrupts(INT_TIMER0); //タイマ0割り込み許可
enable_interrupts(GLOBAL);  //グローバル割り込み許可
    setup_adc_ports(sAN0 | VSS_VDD);
    setup_adc(ADC_CLOCK_DIV_32);
   
    
     set_tris_c(0);
     output_c(0);

     while(1)
{      
     long m=0,n;    
     short an1,an2,an3,an4,an5,an6,an7,an8,an9,an10,bn1,bn2,bn3,bn4,bn5,bn6,bn7,bn8,bn9,bn10;

     set_adc_channel(0);   //タイマー1ch
     delay_us(15);
     data=read_adc();   
     md=data;
     md=md+5;
   /*  putc(md);*/

     for(n=0;n<max;n=n+1)//スキャン
     {
     m=m+1;
     if(m<=i1)
     an1=1;
     else
     an1=0;
      if(m<=i2)
     an2=1;
     else
     an2=0;
      if(m<=i3)
     an3=1;
     else
     an3=0;
      if(m<=i4)
     an4=1;
     else
     an4=0;
     if(m<=i5)
     an5=1;
     else
     an5=0;
     if(m<=i6)
     an6=1;
     else
     an6=0;
     if(m<=i7)
     an7=1;
     else
     an7=0;
      if(m<=i8)
     an8=1;
     else
     an8=0;
      if(m<=i9)
     an9=1;
     else
     an9=0;
      if(m<=i10)
     an10=1;
     else
     an10=0;    
   
    if(!input(pin_b0))
       {bn1=an1; bn2=an2; bn3=an3; bn4=an4; bn5=an5; bn6=an6; bn7=an7; bn8=an8; bn9=an9; bn10=an10; }

    if(!input(pin_b1))
       {bn10=an1; bn9=an2; bn8=an3; bn7=an4; bn6=an5; bn5=an6; bn4=an7; bn3=an8; bn2=an9; bn1=an10; }

    if(input(pin_b0)&&input(pin_b1))
       {bn1=0; bn2=0; bn3=0; bn4=0; bn5=0; bn6=0; bn7=0; bn8=0; bn9=0; bn10=0;}

    output_bit(pin_a1,bn1); output_bit(pin_a2,bn2);  output_bit(pin_a3,bn3); output_bit(pin_a4,bn4);   
    output_bit(pin_a5,bn5); output_bit(pin_c0,bn6);  output_bit(pin_c1,bn7);  output_bit(pin_c2,bn8);   
    output_bit(pin_c3,bn9);  output_bit(pin_c4,bn10);   

       }   
}
}

|

« LEDBARドライバを久々に更新 | トップページ | いよいよ3D時代か? »

オリジナル基板」カテゴリの記事

コメント

この記事へのコメントは終了しました。