PIC单片机流水灯程序 和 移位解释
我想做一个流水灯:8个LED第一个LED流水灯效果到第8个位子不熄灭,又从第一个LED开始流水效果到第7个位子,不熄灭。。。。。直到所有LED以此被点亮。用位移(PORT...
我 想做一个流水灯:
8个LED
第一个LED流水灯效果到第8个位子 不熄灭,
又从第一个LED开始 流水效果到第7个位子,不熄灭
。。。。。
直到所有LED以此被点亮。
用位移(PORTC=PORTC<<1;) 不行啊 第2个开始 时 第8个位子亮的LED 好像被移位了,
懂了没?
求大神教!新人学习 多技术喷我! 展开
8个LED
第一个LED流水灯效果到第8个位子 不熄灭,
又从第一个LED开始 流水效果到第7个位子,不熄灭
。。。。。
直到所有LED以此被点亮。
用位移(PORTC=PORTC<<1;) 不行啊 第2个开始 时 第8个位子亮的LED 好像被移位了,
懂了没?
求大神教!新人学习 多技术喷我! 展开
2个回答
展开全部
用for循环和加减乘除
……
int i,j,t;
t=1;
while(1){
PORTC = 0x00;
for(i=8;i>=1;i--){
PORTC += 1 ;
for(j=1;j<i;j++){
PORTC += t ;
t *= 2;
delay_ms(1000);//如果你的延迟函数是别的,按自己的换掉这个
}
}
}
单片机是个好东西,好好学
……
int i,j,t;
t=1;
while(1){
PORTC = 0x00;
for(i=8;i>=1;i--){
PORTC += 1 ;
for(j=1;j<i;j++){
PORTC += t ;
t *= 2;
delay_ms(1000);//如果你的延迟函数是别的,按自己的换掉这个
}
}
}
单片机是个好东西,好好学
追问
能帮我大概解释下 I++ J--什么的+= 什么的吗 或给我说下 这是什么我好查相关资料看看
追答
i++的意思就是i=i+1,j--就是j=j-1,PORTC += t 的意思就是PORTC = PORTC + t,t *= 2就是t = t*2,都是运算符。你可以查一查关于运算符的资料。
展开全部
void main(void)
{
unsigned char i,j,k,m,n;
TRISC = 0x00; //PC口作输出
while(1)
{
for(j = 8;j>0;j--)
{
for(i = 0;i<j;i++)
{
m = 0x80;
n = m>>i;
P2 = n|k;
delay_ms(300); //300ms延时
}
k = PORTC;
}
PORTC = 0x00;
m = n = k = 0;
delay_ms(300); //300ms延时
}
}
这个main()程序替换你的main()就可以了。你在写一个delay_ms(uint ms);1ms延时程序就行了。
{
unsigned char i,j,k,m,n;
TRISC = 0x00; //PC口作输出
while(1)
{
for(j = 8;j>0;j--)
{
for(i = 0;i<j;i++)
{
m = 0x80;
n = m>>i;
P2 = n|k;
delay_ms(300); //300ms延时
}
k = PORTC;
}
PORTC = 0x00;
m = n = k = 0;
delay_ms(300); //300ms延时
}
}
这个main()程序替换你的main()就可以了。你在写一个delay_ms(uint ms);1ms延时程序就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询