c语言单片机在中断后执行do while程序,一直在执行do里面的循环体...
发布网友
发布时间:2024-10-16 06:20
我来回答
共1个回答
热心网友
时间:2024-10-16 12:20
do while语句是这样的。
do
{
程序代码
}
while(判断条件)
当while中的判断条件为真时,一直执行do里面的代码。
看看你的代码就知道原因了。
在你的do语句里面,首先是把P0的值赋给key,接着循环七次,然后每次都对应一个switch语句。
不管是switch中的哪个case执行了,改变的都是P1口的值。
执行完for循环后,把paoma[]数组里的某个值赋给了P2口,最后延时。
这些代码执行完后进行判断了,你的判断条件是(key==0xff)
也就是如果key的值是0xff的话一直执行。
关键是你的代码里面改变的都是P1口和P2口的值,跟key和P0口的值都没关系。
所以key的值和P0口的值根本都没改变,只要第一次执行时P0口的值是0xff,或者单片机上电后默认P0口的值都是高电平(0xff),你的程序中while()一直都为真,一直执行。
明白了没?你的判断条件是(key==0xff),在每次循环的代码里key的值又都不会改变,所以才会造成一直循环,给你造成没执行while的假象。
其实是执行了,只是一直都为真而已。