無料ブログはココログ

広告

« 秋葉原で買い物 | トップページ | 体の調子が相変わらず・・・ »

2008年5月30日 (金)

電子ボリュームのプログラム

一応動作するプログラムは完成しました。

設定したい値をシリアルにして転送すれば簡単に動作します。

プログラムはこんな感じです。EEPROMに値を入れないと動作しませんが。

コンパイルには「CCS」が必要です。

#include    <12f675.h>

#fuses INTRC_IO,NOPROTECT,NOBROWNOUT,NOMCLR,NOCPD,NOWDT,PUT

#device ADC=8
#use delay(CLOCK = 4000000)

int i;
long data;
long addata;
long datab;
int sd7;
int sd6;
int sd5;
int sd4;
int sd3;
int sd2;
int sd1;
int sd0;

void main()
{
setup_adc(ADC_CLOCK_DIV_32);
setup_adc_ports(sAN0 | VSS_VDD);
set_adc_channel(0);

output_high(PIN_A1); //CS
output_low(PIN_A2); //MUTE
output_low(PIN_A4); //SDATA
output_low(PIN_A5); //SCLK
delay_ms(1000);
output_high(PIN_A2); //MUTE
while(1)
{
  delay_ms(10);
  addata = read_adc();
  data = read_eeprom(addata/4);
  if (data != datab)
  {
   sd0=  (0x01 & data);
   sd0 >>=0;
   sd1=  (0x02 & data);
   sd1 >>=1;
   sd2=  (0x04 & data);
   sd2 >>=2;
   sd3=  (0x08 & data);
   sd3 >>=3;
   sd4=  (0x10 & data);
   sd4 >>=4;
   sd5=  (0x20 & data);
   sd5 >>=5;
   sd6=  (0x40 & data);
   sd6 >>=6;
   sd7=  (0x80 & data);
   sd7 >>=7;
   output_low(PIN_A1); //cs
   for (i=0;i<2;i++)
   {
    //d7
    output_bit(PIN_A4,sd7); //sdata
    output_high(PIN_A5); //sclk
    output_low(PIN_A5); //sclk
    //d6
    output_bit(PIN_A4,sd6); //sdata
    output_high(PIN_A5); //sclk
    output_low(PIN_A5); //sclk
    //d5
    output_bit(PIN_A4,sd5); //sdata
    output_high(PIN_A5); //sclk
    output_low(PIN_A5); //sclk
    //d4
    output_bit(PIN_A4,sd4); //sdata
    output_high(PIN_A5); //sclk
    output_low(PIN_A5); //sclk
    //d3
    output_bit(PIN_A4,sd3); //sdata
    output_high(PIN_A5); //sclk
    output_low(PIN_A5); //sclk
    //d2
    output_bit(PIN_A4,sd2); //sdata
    output_high(PIN_A5); //sclk
    output_low(PIN_A5); //sclk
    //d1
    output_bit(PIN_A4,sd1); //sdata
    output_high(PIN_A5); //sclk
    output_low(PIN_A5); //sclk
    //d0
    output_bit(PIN_A4,sd0); //sdata
    output_high(PIN_A5); //sclk
    output_low(PIN_A5); //sclk
   }
   output_high(PIN_A1); //cs
   datab = data;
  }
}
}
// write_eeprom(0x00,sd0);
// write_eeprom(0x01,sd1);
// write_eeprom(0x02,sd2);
// write_eeprom(0x03,sd3);
// write_eeprom(0x04,sd4);
// write_eeprom(0x05,sd5);
// write_eeprom(0x06,sd6);
// write_eeprom(0x07,sd7);
// write_eeprom(0x0b,0x00);

« 秋葉原で買い物 | トップページ | 体の調子が相変わらず・・・ »

オーディオ機器の自作」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/511109/41366725

この記事へのトラックバック一覧です: 電子ボリュームのプログラム:

« 秋葉原で買い物 | トップページ | 体の調子が相変わらず・・・ »