单片机编程小问题总结
单片机编程小问题总结 1、时间太长,记不清在哪个项目里遇到的,指向code区数组的指针也要加 code 关键字声明。 比如 unsigned char code arr[30]; 数组,要用指针指向它
单片机编程小问题总结 1、时间太长,记不清在哪个项目里遇到的,指向code区数组的指针 也要加 code 关键字声明。 比如 unsigned char code arr[30]; 数组,要用指针指向它,要把指 针也声明成 unsigned charcode*p; 后来使用发现其它很多地方使用是不需要这样声明的,只要 unsigned char *p;就行了,但是清楚地记得那次确实是要加 code 关键字声明 才可以的。 2、在51里面,位变量貌似是有限的。 如果要用一个布尔型作为标识变量,为了节省控件可以用 bit 型变 量,但是在DRS1000项目中遇到过一次用 bit 型变量出错,改为 unsigned char 型就OK了,那时定义的变量已经很多了,可能是把可 以用bit寻址的存储区都用光了吧。 3、用机械开关触发INT中断时: 由于机械开关会震动,产生的电压会有毛刺,这些毛刺会多次触发中 断。会造成多次触发的因素有两点: (1 )开关按下时的震动。第一次低电平到来时会进入中断处理程序, 之后就算这些震动在中断处理程序执行的过程中产生,即使进入中断 处理程序后关掉了总中断,这些毛刺仍然会使中断标志位置位,会在 结束中断处理程序结束后再次马上触发中断处理程序。 (2 )开关释放时的震动。在第一次高电平到来时会退出中断处理程 序,之后的毛刺会再次进入中断处理程序。 解决办法:

