本帖最后由 jhcj2014 于 2020-11-22 22:45 编辑
这里简要的地说下PIC18F57Q43 CuriosityNano的定时器0的使用,当然我们得知道定时器的作用,它是用来定时的,即让MCU在我们规定的时间里进行我们需要的功能操作。
比如最简单的就是通过定时器来让LED以1s为周期的亮或灭。定时器把时间精确地计算好了后就要进行相应的功能操作,这操作的方法一般有中断函数或查询方法来实现。这里
以中断函数来实现。
程序的主流程:
初始化函数、主函数让LED先灭、启动定时器、定时完成、中断操作。
首先要先了解下TIMER0的结构,如下图,可见操作很明确这里就不再说了。
然后是对TIMER0的四个寄存器进行配置,如下所示四个寄存器:
下面是MCC配置的具体操作:
然后进入工程MAIN.C进行编辑代码,如下所示内容,是定时器0以1S的周期进行定时让LED闪烁:
#include "mcc_generated_files/mcc.h"
#define uchar unsigned char
#define uint unsigned int
uint num;
void TMR0_initialize();
void main(void)
{
// Initialize the device
SYSTEM_Initialize();
TMR0_initialize();
ei();
while (1)
{
if(num==10)
{
num=0;
PORTFbits.RF3=1-PORTFbits.RF3;
}
}
}
void TMR0_initialize()
{
T0CON0 = 0x80;
T0CON1 = 0x49;
TMR0H = 0xC2;
TMR0L = 0x00;
PIR3bits.TMR0IF = 0;
PIE3bits.TMR0IE = 1;
}
void __interrupt()_TMRO()
{
PIR3bits.TMR0IF = 0;
TMR0H = 0xC2;
TMR0L = 0x00;
num++;
}
下载到DEMO里后如下所示:
|