习惯了Freescale(Motorola)系列单片机,切换到Pic系列的另一个不习惯之处是中断向量。
在Freescale单片机中,各个中断(比如IRQ,定时器,AD等)都有各自对应的中断向量,写程序时,只要将函数地址定位到该向量即可。而Microchip的PIC16F系列单片机则只有一个中断向量,0x04H。所有的中断都跳转到这个位置。至于是什么中断源出发的中断,则需要编写程序通过终端标志位来判断,比如说TIF为1,那就GOTO至定时器中断服务程序,其他的依此类推。
这两种方式有什么好处坏处倒也不是很明显,只是浪费了我许多时间来寻找TIMER0的中断向量……
顺便说一句,之所以突然费时来寻找这个玩艺,主要是为了判断无线控制器长时间工作出错后,到底是无线模块死掉了还是PIC16F877A死了。