51单片机用P0和P1口控制16路彩灯做流水灯,用C语言怎么写,我只会单用P0或P1,不知道P0和P1怎么衔接
3个回答
展开全部
你可以使用
第晌察一拆悔:全局变量,如果P1工作,P0 停止宴御茄,.....
或者:定义P0口的同时,定义P1口,比方说原来是P0=255;delay();P0=128;delay();...
改成P0 =255;P1=255;delay();P0=128:P1=255;delay();....
我没有51的开发板,只是用软件仿真了,这个程序仅供参考
#include<reg52.h>
#include<intrins.h>
void main()
{
bit flag;
flag=0;
P1=255;
P0=255;
while(1)
{
for(;;)
{
//add your code
//for example
P1<<=1;
if(P1==0) { flag=1; break;}
}
if(flag==1)
for(;;)
{
P0<<=1;
if(P0==0){ flag=0;
P1=255;
P0=255;
_nop_();
break; }
}
}
}
第晌察一拆悔:全局变量,如果P1工作,P0 停止宴御茄,.....
或者:定义P0口的同时,定义P1口,比方说原来是P0=255;delay();P0=128;delay();...
改成P0 =255;P1=255;delay();P0=128:P1=255;delay();....
我没有51的开发板,只是用软件仿真了,这个程序仅供参考
#include<reg52.h>
#include<intrins.h>
void main()
{
bit flag;
flag=0;
P1=255;
P0=255;
while(1)
{
for(;;)
{
//add your code
//for example
P1<<=1;
if(P1==0) { flag=1; break;}
}
if(flag==1)
for(;;)
{
P0<<=1;
if(P0==0){ flag=0;
P1=255;
P0=255;
_nop_();
break; }
}
}
}
展开全部
很简单,程序如下:
#include<汪裤reg51.h>
#include <intrins.h> //--楼主的问题, 解决方法是在这里面。
#define uint unsigned int
void main()
{
uint x = 0x7fff; //16位数, 有一个低电平.
while(1) {
x = _iror_(x, 1); //16位数环行移歼陵宽位--这是关键.
P0 = x / 256; //输出高8位.
P1 = x % 256; //输出低8位.
delayms(1000); //适当延时, 函数氏亮请自行编写.
}
}
#include<汪裤reg51.h>
#include <intrins.h> //--楼主的问题, 解决方法是在这里面。
#define uint unsigned int
void main()
{
uint x = 0x7fff; //16位数, 有一个低电平.
while(1) {
x = _iror_(x, 1); //16位数环行移歼陵宽位--这是关键.
P0 = x / 256; //输出高8位.
P1 = x % 256; //输出低8位.
delayms(1000); //适当延时, 函数氏亮请自行编写.
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
判断P0是否到早御弊了最后一位,是的话,关闭P0,然后执行P1口的流水灯,同理判断P1是否到了陆族最拆肢后一位,是的话,关闭P1,然后执行P0口的流水灯
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询