C51程序按键 与取反的问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 08:49:48
#include "reg52.h"
sbit P32=P3^2;
sbit C=CY;

void del(long x)
{while(x--);}

void LIU(int y) /*流水灯,P0口为低电平点亮的8个LED灯)
{ while(y--)
{P0=~P0;
P0=P0<<1;
P0=~P0;
if(P0==0xff)P0=0xfe;
del(10000); } /*这块函数没问题! 我试了*/

}

main() /*我想按一下键,流水灯开始,再按下,停止~~如此循环*/
{ a=0xff;
SP=0x90;
while(1) { if(P32==0)C=~C; /*关键是这的问题,似乎C一直没有变*/
if(C)LIU(1);
}
}

先不考虑到抖动问题,因为即使有抖动,也至少该成功1次!
同样不好使~~!! 试过好多种方法,就是感觉那位不受我控制~!
不知道怎么回事!

cy是不能够直接被改变的,你可以用其他的变量试试,比如主函数中定义一个变量a,将你程序中的c换成a。还有你的按键是怎么做的?
//main() /*我想按一下键,流水灯开始,再按下,停止~~如此循环*/
{ a=0xff;
SP=0x90;
while(1) { if(P32==0)C=~C; /*关键是这的问题,似乎C一直没有变*/
if(C)LIU(1);
}
} //
好像你是用p32口做按键的,不过你没把p32口的数读进来,下边的if(p32==0)应该无效,因为p32的数一直没变。你要有个读按键口数值的程序段

你用C=!C 试试,不行,就换种方法