迪文科技论坛

 找回密码
 立即注册
搜索
查看: 357|回复: 1

【提问】定时器如何开启、关闭和计数清零?

[复制链接]

194

主题

442

回帖

2741

积分

金牌会员

Rank: 6Rank: 6

积分
2741
发表于 2022-8-2 11:05:28 | 显示全部楼层 |阅读模式
定时器如何开启、关闭和计数清零?
回复

使用道具 举报

0

主题

3

回帖

819

积分

高级会员

Rank: 4

积分
819
发表于 2022-8-2 14:05:10 | 显示全部楼层
利用定时器T0,设计一个精准的延时函数(延时精度为1ms)


                int cnt = 0; //全局变量,表示您要延时多少毫秒


                void delay_ms_v2(int n)
                {
                        cnt = n;

                        //1. 配置timer0让它每隔1ms产生一次中断



                        TMOD =  TMOD &  ~0X0F;

                        TH0 = 0xE3;
                        TL0 = 0x07;

                        ET0 = 1;
                        EA = 1;

                        TR0 = 1


                        //2. 等cnt变0
                        while (cnt >0);

                        //3. 关闭定时器0
                        TR0 = 0;

                }


                //配置timer0每隔1ms产生一次T0溢出中断
                void timer0_isr(void) interrupt 1
                {

                        TH0 = 0xE3;
                        TL0 = 0x07;       


                        if (cnt > 0)
                        {
                                cnt --;
                        }
                }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-4-5 22:12 , Processed in 0.035115 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表