dian8.c

来自「AVR典型实例.rar」· C语言 代码 · 共 98 行

C
98
字号
#include <avr/io.h>
#include <util/delay.h>

#define uchar8 unsigned char
uchar8 model[]={0x08,0x14,0x14,0x22,0x3e,0x22,0x22,0x22};
uchar8 showbuf[2][8];

void CopyBuf(void)
{
	uchar8 i;
	for(i=0;i<8;i++)
	{
		showbuf[0][i] = model[i];
		showbuf[1][i] = 0;
	}
}

void display_led(void)
{
    uchar8 tmp,i;
    PORTB = 0x01;
	tmp = 0x01;
	for(i=0;i<8;i++)
	{
		PORTA = i;
		PORTC = showbuf[0][i];
		_delay_ms(1);
	}
	PORTB = 0x02;
	for(i=0;i<8;i++)
	{
		PORTA = i;
		PORTC = showbuf[1][i];
		_delay_ms(1);
	}


}
void shiftBuf(void)
{
	uchar8 i,tmp,oldtmp,oldtmp1;
	

	for(i=0;i<8;i++)
	{
		tmp = showbuf[1][i];
		tmp = tmp<<1;
	
		if((SREG&0x01)==0x01)
			oldtmp1 = 1;
    	else
			oldtmp1 = 0;
	    tmp = showbuf[0][i];
		tmp = (tmp<<1);
	    if((SREG&0x01))
		    oldtmp = 1;
		else
		    oldtmp = 0;

        showbuf[0][i] = tmp+oldtmp1;

		tmp = showbuf[1][i];
		tmp = (tmp<<1);
		if((SREG&0x01))
		    oldtmp1 = 1;
		else
		    oldtmp1 = 0;
		showbuf[1][i]=tmp+oldtmp;

	}
}
int main(void)
{
    uchar8 i=0;
	DDRC = 0xff;
	DDRA = 0x07;
    DDRB = 0x03;

	PORTC = 0xff;
    PORTB = 0x01;

	CopyBuf();

	for(;;)
	{
	    i++;
		if(i>10)
		{
            shiftBuf();
			i = 0;
        }
		display_led();

	}

    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?