找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2118|回复: 4
打印 上一主题 下一主题
收起左侧

单片机定时器延时哪里不对?

[复制链接]
跳转到指定楼层
楼主
ID:72649 发表于 2021-9-26 19:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
unsigned long SysTick;


void Timer0Init(void)                //20毫秒@12.000MHz
{
        AUXR &= 0x7F;                //定时器时钟12T模式
        TMOD &= 0xF0;                //设置定时器模式
        TL0 = 0xE0;                //设置定时初始值
        TH0 = 0xB1;                //设置定时初始值
//        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
        ET0=1;
        EA=1;
}

timer0() interrupt 1
{
          TL0 = 0xE0;                //设置定时初始值
        TH0 = 0xB1;                //设置定时初始值      
        SysTick++;      
}

void Delay_20ms(unsigned int var)
{
    unsigned long i;

        i = SysTick;

        while(SysTick-i < var)
        {
                                SysTick=0;        
       ;
        }   
}

void main()
{
shui=0;re=1;

        Timer0Init();

while(1)
{
if(key1==0)
{
        
                Delay_20ms(5);
  shui=0;
        //        delay(2000);
  Delay_20ms(5);
re=1;

               
}
else
  {

                Delay_20ms(500);
         shui=1;
                //delay(2000);
  Delay_20ms(50);
    re=0;

}
}
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2021-9-26 22:57 | 只看该作者
        while(SysTick-i < var)
        {
                                SysTick=0;        //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
       ;
        }   
回复

使用道具 举报

板凳
ID:123289 发表于 2021-9-27 10:45 | 只看该作者
while(SysTick-i < var)
         {
                                 SysTick=0;        
        ;
         }   
这个函数何,进去后SysTick被清0,还能出来吗?
回复

使用道具 举报

地板
ID:57657 发表于 2021-9-27 11:18 | 只看该作者
8位单片机下,中断和main被调用的函数,同时读写int/long/float等全局变量会出错(bit/char除外)。
16位int全局变量,高8位已经赋值进去,此时触发中断,中断内操作该变量的值,中断返回后再去赋值低8位,导致问题出现,并且编译器也发现不了。
回复

使用道具 举报

5#
ID:968415 发表于 2021-9-27 11:48 | 只看该作者
         while(SysTick-i < var)         {                                 SysTick=0;        //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<        ;         }   
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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