'
一共有三种可能:
1、led有问题。(接反)
2、mega8有问题。(坏了)
3、程序有问题。(错了)
'
1、我led两端都是可编程的,没有反正。
2、起先怀疑pb1坏了,换了好几片。无果。
3、程序只有几行
因为是随手接的线,led排列和管脚顺序就很乱,只好单个定义了。
#define led0 pb0
#define led1 pd6
#define led2 pb6
#define led3 pd4
#define led4 pd1
#define led5 pd7
#define led6 pd5
#define led7 pb7
#define led8 pd0
#define led027port portb
#define led027pin pinb
#define led027ddr ddrb
#define led134568port portd
#define led134568ddr ddrd
#define led134568pin pind
#define ledp pb1 //总开关,接在负极?正极不行吗?
#define ledpport portb
#define ledpddr ddrb
#define ledppin pinb
//上面是一系列定义
void port_init(void) //把所有用的口都做成输出
{
ledpddr|=(1<<ledp);
ledpddr|=(1<<ledpp);
led027ddr|=(1<<led0);
led027ddr|=(1<<led2);
led027ddr|=(1<<led7);
led134568ddr|=(1<<led1);
led134568ddr|=(1<<led3);
led134568ddr|=(1<<led4);
led134568ddr|=(1<<led5);
led134568ddr|=(1<<led6);
led134568ddr|=(1<<led8);
}
void all_on(void)
{
ledpport|=(1<<ledp); //公共端=1
led027port&=~(1<<led0); //其它都是=0
led027port&=~(1<<led2);
led027port&=~(1<<led7);
led134568port&=~(1<<led1);
led134568port&=~(1<<led3);
led134568port&=~(1<<led4);
led134568port&=~(1<<led5);
led134568port&=~(1<<led6);
led134568port&=~(1<<led8);
}
void all_off(void)
{
ledpport&=~(1<<ledp); //公共端=0
led027port|=(1<<led0); //其它都是=1
led027port|=(1<<led2);
led027port|=(1<<led7);
led134568port|=(1<<led1);
led134568port|=(1<<led3);
led134568port|=(1<<led4);
led134568port|=(1<<led5);
led134568port|=(1<<led6);
led134568port|=(1<<led8);
}
int main(void)
{
uchar i;
uchar u,v;
port_init();
_delay_ms(1000);
//sei();
all_on(); //都亮?对应上面那个电路图,确实都不亮。
while(1){;}
}