您尚未登录。

楼主 # 2021-07-14 17:26:30

tigger
Moderator
注册时间: 2021-06-18
已发帖子: 172
积分: 111

N76E003 定时器使用

#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"


#define TIMER1_INIT        65536 

UINT8 u8TH1_Tmp,u8TL1_Tmp;

void Timer1_ISR (void) interrupt 3  //interrupt address is 0x001B
{
    TH1 = u8TH1_Tmp;
    TL1 = u8TL1_Tmp;   

    P06 = ~P06;                     //P0.3 toggle when interrupt
}

void main (void)
{
    Set_All_GPIO_Quasi_Mode;

    TIMER1_MODE1_ENABLE; //定时器1, 模式1, 16bit定时器, 定时器值满 0xFFFF -> 0x0000 产生中断。

    clr_T1M;    //T1M = 0,兼容传统 8051, TIMER1时钟 = Fsys/12 = 16M /12
    //set_T1M;  //T1M = 1,               TIMER1时钟 = Fsys    = 16M 

    u8TH1_Tmp = (65536 - TIMER1_INIT)/256;
    u8TL1_Tmp = (65536 - TIMER1_INIT)%256;

    TH1 = u8TH1_Tmp;
    TL1 = u8TL1_Tmp;
    
    set_ET1;                                    //enable Timer1 interrupt
    set_EA;                                     //enable interrupts
    set_TR1;                                    //Timer1 run
    while(1);
}

2021-07-14_172519.png

时钟周期计算:
TIMER1_INIT  *  (1 / (16M / 12))

= 65536 * (1 / (16M / 12))
= 65536*(1/(16000000/12))
= 0.049152

离线

#1 2023-10-07 21:25:22

workspace
会员
注册时间: 2023-10-07
已发帖子: 7
积分: 2

Re: N76E003 定时器使用

准备用新塘N76E003替换stm8有没有坑要注意的?

离线

#2 2023-10-09 17:33:12

TangCS
会员
注册时间: 2023-10-09
已发帖子: 3
积分: 3

Re: N76E003 定时器使用

注意一下TA寄存器, 仅只有4个时钟周期的窗口,如果优化基本太高,可能导致后面的指令大于4个周期, 从而操作无效。同理注意xdata赋值给TA保护的寄存器也要考虑时钟周期的问题

离线

#3 2023-10-11 09:24:50

演技担当黄晓明
会员
注册时间: 2017-10-17
已发帖子: 183
积分: 121.5

Re: N76E003 定时器使用

TangCS 说:

注意一下TA寄存器, 仅只有4个时钟周期的窗口,如果优化基本太高,可能导致后面的指令大于4个周期, 从而操作无效。同理注意xdata赋值给TA保护的寄存器也要考虑时钟周期的问题

     要选小模式编译,这样效率才高,手动指定变量存储地方,这样即可大内存,又有高效率

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn