Слияние кода завершено, страница обновится автоматически
//
// Created by YH31 on 2021/3/1.
//
#include <ASM8F001X1XI.H>
#include "Tmr0.h"
//
//
/**
* 设置TMR0定时时长L=(4/OSC)*t0Ps*(255-tmr0)
* tmr0定时器初始化
* @param tmr0 定时器的初值
* @param hsPSA 是否使用预分频器
* @arg 0 使用
* @arg 1 不使用
* @param t0Ps 分频比
* @arg tPS_2
* @arg tPS_4
* @arg tPS_6
* @arg tPS_8
* @arg tPS_16
* @arg tPS_32
* ...
* @arg tPS_256
*
*/
void timerInit(unsigned char tmr0, unsigned char hsPSA, enum t0_PS t0Ps) {
T0ON = 0;
TMR0 = tmr0; //计数初值 每个指令周期++ 最大255,后溢出
//当 T0 时钟不是选择指令时钟时,睡眠状态 T0CK 的运行控制位
//1 = T0CK 睡眠时保持工作
//0 = T0CK 睡眠时停止工作
T0CON0bits.T0CKRUN = 0;
//00 = 指令时钟
//01 = HIRC
T0CON0bits.T0CKSRC = 0x00;
//0 = 时钟由 T0CKSRC 寄存器位决定
//1 = PA2/T0CKI引脚跳变
OPTIONbits.T0CS = 0;
//TMR0选择时钟沿
//1: PA2/T0CKI 下降沿计数
//2:PA2/T0CKI 上升沿计数
OPTIONbits.T0SE = 0;
//与分频器分配给TMR0,注意这个预分频器是与看门狗共用的
//如果看门狗使用了预分频器,则定时器不能使用、或者需要切换预分频器
if (hsPSA == 0) {
//如果打开了看门狗加入CLRWDT();
//CLRWDT();
OPTIONbits.PSA = hsPSA;
OPTIONbits.PS = t0Ps;
}
//使能TMR0
T0CON0bits.T0ON = 1;
GIE = 1; //开中断
T0IE = 1; //开定时器/计数器0中断
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )