📄 hanzipin.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 + -