本人初学avr,学到数码管。我学习板上数码管位选是由74ls138控制,段选是由74hc595控制。。下面是本人写的程序,,目的是让第二个数码管显示1,从中午一直看到现在不知道到底错在哪!大侠求助啊!!!
#include<iom16v.h> #include<macros.h> #define uint unsigned int #define uchar unsigned char
void port_init(void) { DDRA = 0XFF; PORTA = 0X00; PORTA|=BIT(7); }
void duxuan(uchar shu) { uchar i,a;
for(i=0;i++;i<8) { PORTA&=~BIT(3); //数据输入时钟线SCLK置低 if((shu&0x80)==0x80) { PORTA|=BIT(1); } else { PORTA&=~BIT(1); //将数0送到数据线SDI上 } PORTA|=BIT(3); shu=shu<<1; } PORTA|=BIT(2); a=100; while(a--); PORTA&=(~BIT(2)); }
void main(void) { port_init(); PORTA|=BIT(7); //打开位选使能端 PORTA|=BIT(4); //打开第1位位选端
duxuan(0x3f); while(1); }
|