/* 2007/3/4 RAIN*/ /* ドットマトリクスLED出力テストプログラム*/ #include #define sbi(BYTE,BIT) BYTE|=_BV(BIT) #define cbi(BYTE,BIT) BYTE&=~_BV(BIT) int main(void) { DDRB = 0x01; PORTB = 0x01; //プログラム実行確認用LED出力 DDRD = 0xE0; //PORTDのBIT5,6,7を出力に設定 PORTD = 0x00; //PORTDのBIT5,6,7にLを出力 int led[32]; //ドットマトリクスLED アノード&カソード出力用配列 int in = 0; //配列代入用変数 int wait = 0; //wait用変数 for(in=0;in<16;in++) //配列に初期値を代入 { led[in]=0; } for(in=16;in<32;in++) { led[in]=1; } led[0] = 1; //1段目の1列目を光らせる led[24] = 0; for(in=0;in<32;in++) //8ビットシフトレジスタへ配列通りに出力 { if(led[in]==1) //DATA { sbi(PORTD,PD5); } else { cbi(PORTD,PD5); } for(wait=0;wait<100;wait++); sbi(PORTD,PD6); //CLOCK for(wait=0;wait<500;wait++);//wait cbi(PORTD,PD6); for(wait=0;wait<400;wait++); } cbi(PORTD,PD5); sbi(PORTD,PD7); //ドットマトリクスLEDへ8ビットシフトレジスタから出力 for(wait=0;wait<100;wait++) cbi(PORTD,PD7); return 0; }