⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hanzipin.c

📁 AVR典型实例.rar
💻 C
字号:
#include <avr/io.h>
#include <util/delay.h>

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

void CopyBuf(void)
{
	uchar8 i;
	for(i=0;i<8;i++)
	{
		showbuf[0][i] = model[i];
		showbuf[1][i] = 0;
		showbuf[2][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);
	}
	PORTB = 0x04;
	for(i=0;i<8;i++)
	{
		PORTA = i;
		PORTC = showbuf[2][i];
		_delay_ms(1);
	}


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

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

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

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

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

	}
}
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -