变量虽然定义的不规范,但是不会影响到程序的正常运行。e最好定义为uchar型,因为P1口就8位,最大0xff,255,不会让uchar溢出。但是你这里并不影响。
个人觉得是你e=P1这里,可能你根本就没读出P1口的值,所以e始终是一个值,a也就只有一个值了。
你循环前面那些定时器的初始化之类的,自己保证能进中断,因为之后你是要用到a的。
不成功的意思是我用单片机测试时 P2口变化时a的值是不变的???
你测试P2干嘛,你用的不是P1嘛。。
最好给出完整的代码给大家看看,另外,你能通过点灯、串口打印等方式将e的值显示出来吗?这样就有助于调试了。
你定义了a为什么变量?因为a的数值超过了255,所以你一定要定义:unsigned int a;如果你定义:unsigned char a;肯定是不成功的。char是字节,int是双字节。
打酱油。