我要用指针数组来顺序扫描P0口,当检测到3个1的时候,使能P2^0口,应该怎么写?
int *p[8]={''a1'',''a2''…''a8''};
main()
{
for(i=0;i<8;i++)
{
if(&p[8]==1)
{
m=m+1;
}
}
if(m==3)
{
b=1;
m=0;
}
}
这样写对不对?
主函数忘记写WHILE。
谢谢你的回答,但是我有一个疑问:假如我是P0^1为1,只要这个P0^1维持一段时间,那么这个检测程序在这段时间内不断检查到的都为P0^1口的值,我是不是需要补上一个上端口状态的排除?如果需要我应该怎么写?
追答留个联系方式,不太理解你的意思
追问已留。
本回答被提问者采纳每次P0口中只有一个为1,这个数组不行。另外数组要如何与P0对应起来,这也是个问题。
追答你有没有做过流水灯,P0-=00001110这个是只有一个一吗。00000111.
追问我的意思是:要求是只有一个为1,另外题目我简化了。实际上每个状态要对应的情况要复杂得多,用数组是一个优化方向,但是确实不好使。
我确实是个菜鸟……
题目是简化的,大意也是P0中总有一个为1,这个1是顺序流动的经过不断扫描,扫到3次1就使能给P2^0。
这个方法为什么不行,如果不行应该怎么写?
C51中位变量不可被指针引用。所以不行。
正确的做法是每次取P0全端口值进行判断。