关于代码结构的一些注释。首先包括xc.h。不要包括pic16f1788.h,xc.h为您做这些。不要包括stdio.h。嵌入式程序很少需要它。您不需要中断函数的原型。将写入PORT寄存器的所有引用更改为写toLAT为了避免读-修改-写问题,例如“PORTAbits.RA0=1;”->;“LATAbits.LATA0=1;”避免在中断服务例程内执行时间密集的操作。在这里中断很少,但通常应该避免。这些“#pragma config”行不是可执行语句。不要将它们放入in it函数中,它们应该出现在源代码的开头,包括xc.h之后,但是在任何execu之前。表代码。在所有其他初始化代码完成之前,不要在INTCON中设置GIE位。不要使用看门狗(甚至在配置中也不要启用它),直到所有其他代码都正常工作。最后,这根本不是一个很好的中断使用。在按下按钮时,主循环仍在运行,继续调用._timers()并重置LED,直到释放按钮。一旦打开LED,就可以轮询TMR1IF标志,直到定时器翻转,完全避免中断。
关于代码结构的一些注释。首先包括xc.h。不要包括pic16f1788.h,xc.h为您做这些。不要包括stdio.h。嵌入式程序很少需要它。您不需要中断函数的原型。将写入PORT寄存器的所有引用更改为写toLAT为了避免读-修改-写问题,例如“PORTAbits.RA0=1;”->;“LATAbits.LATA0=1;”避免在中断服务例程内执行时间密集的操作。在这里中断很少,但通常应该避免。这些“#pragma config”行不是可执行语句。不要将它们放入in it函数中,它们应该出现在源代码的开头,包括xc.h之后,但是在任何execu之前。表代码。在所有其他初始化代码完成之前,不要在INTCON中设置GIE位。不要使用看门狗(甚至在配置中也不要启用它),直到所有其他代码都正常工作。最后,这根本不是一个很好的中断使用。在按下按钮时,主循环仍在运行,继续调用._timers()并重置LED,直到释放按钮。一旦打开LED,就可以轮询TMR1IF标志,直到定时器翻转,完全避免中断。
举报