打印
[PIC®/AVR®/dsPIC®产品]

P24FJ256GB106用定时器中断写延时函数

[复制链接]
1767|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
spark周|  楼主 | 2022-9-9 22:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void Delay_us(unsigned long delay)
{
    T5CON=0;
    T4CON=0;   
    TMR5=0;
    TMR4=0;   
    if(delay>65536)
    {
        PR5 = (unsigned int)(delay>>16);
        PR4 = (unsigned int)delay;
    }
    else
    {
        PR4 = (unsigned int)delay;
    }   
    _T5IP=0x01;
    _T5IF=0;
    _T5IE=1;
    T4CON=0x8008;
    while(!_T5IF){;}
    _T5IF=0;
}

使用特权

评论回复
沙发
renyaq| | 2022-9-9 22:56 | 只看该作者

感觉死在了循环里

使用特权

评论回复
板凳
spark周|  楼主 | 2022-9-9 22:58 | 只看该作者
已经跑通了,else里PR5没赋为0,还得禁止中断,为什么延时函数禁止中断后就能跑通了呢

使用特权

评论回复
地板
spark周|  楼主 | 2022-9-9 22:59 | 只看该作者
void Delay_us(unsigned long delay)
{
    T5CON=0;
    T4CON=0;   
    TMR5=0;
    TMR4=0;   
    PR5 = (unsigned int)(delay>>16);
    PR4 = (unsigned int)delay;
    _T5IP=0x01;
    _T5IF=0;
    _T5IE=0;
    T4CON=0x8008;
    while(!_T5IF){;}
    _T5IF=0;
}

使用特权

评论回复
5
juventus9554| | 2022-9-9 23:01 | 只看该作者
延时直接使用__delay_ms()和__delay_us()函数就行了呀。

使用特权

评论回复
6
shimx| | 2022-9-9 23:04 | 只看该作者
没必要用定时器。

使用特权

评论回复
7
zhanghqi| | 2022-9-9 23:06 | 只看该作者
XC16这两个函数在“libpic30.h”中。

使用特权

评论回复
8
spark周|  楼主 | 2022-9-9 23:09 | 只看该作者
libpic30.h里是外部调用的延时函数,那具体是从哪里调用的呢

使用特权

评论回复
9
zwll| | 2022-9-9 23:11 | 只看该作者
你可以看XC16的手册, 搜索这2个函数, 它会告诉你只要include一个头文件, 然后define一个宏,就可以直接调用那2个系统 的delay函数了.

使用特权

评论回复
10
dingy| | 2022-9-9 23:14 | 只看该作者

延时函数是一种粗略计算延时时间的函数  

使用特权

评论回复
11
xxrs| | 2022-9-9 23:16 | 只看该作者
使用库函数实现毫秒延时函数   

使用特权

评论回复
12
liuzaiy| | 2022-9-9 23:18 | 只看该作者
在定时器中断里可以用延时函数  

使用特权

评论回复
13
kangzj| | 2022-9-9 23:20 | 只看该作者
用定时器中断代替Sleep()函数  

使用特权

评论回复
14
heweibig| | 2022-9-9 23:23 | 只看该作者
单片机中用写delay函数做延时和用定时器做延时有什么区别?

使用特权

评论回复
15
juventus9554| | 2022-9-9 23:27 | 只看该作者
利用定时器实现精准延时  

使用特权

评论回复
16
zhaoxqi| | 2022-9-9 23:30 | 只看该作者
最经常使用的莫过于微秒级延时delay_us( )和毫秒级

使用特权

评论回复
17
supernan| | 2022-9-9 23:33 | 只看该作者
倒计数定时器,当计到0  

使用特权

评论回复
18
zhenykun| | 2022-9-9 23:34 | 只看该作者
直接操做寄存器,看起来比较繁琐

使用特权

评论回复
19
yszong| | 2022-9-9 23:36 | 只看该作者
定时器每1ms中断一次?  

使用特权

评论回复
20
supernan| | 2022-9-9 23:39 | 只看该作者
对标准库来说,如果定义了时钟频率,则系统会默认初始化该时钟频率。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

821

主题

10121

帖子

4

粉丝