51单片机如何不使用定时器实现长按切换模式功能

51,ATC89C52
不使用定时器功能,实现短按长按按键实现不同功能
我想着加上个延时函数,利用宕机原理实现长按按键切换功能,然而程序烧录后的现象是:LED1602显示屏没有任何反应(感觉可能是卡死在while循环里了)。我这个程序可以怎么优化,实现功能?

img

请各位朋友不吝赐教!万分感谢!
附上代码图片:

img

img

你的循环当KeyNum为12的时候进入,什么时候能退出去呢?while里的if仍然是判断KeyNum为12,本来就是12才能到这一句。而且下边没有能够跳出循环的条件