久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3064|回復: 7
收起左側

單片機定時器中斷0為什么中斷中打開的燈一直亮

[復制鏈接]
ID:95352 發表于 2019-11-9 14:04 | 顯示全部樓層 |閱讀模式
#include<reg52.h>
sbit p10=P1^0;

int t=0;

void InitTimer0()    //初始化函數
{        
     TMOD=0x01;    //設置定時器0工作模式1
     TH0=(65536-45872)/256;    //計數器裝初值
     TL0=(65536-45872)%256;
     EA=1;              //開總中斷
     ET0=1;             //開計數器0中斷
     TR0=1;             //啟動定時器0
}

void main()
{        
        InitTimer0();
                while(1);
        {

        ;
        }
}


void time0() interrupt 1
{
        TH0=(65536-45872)/256;    //計數器裝初值
    TL0=(65536-45872)%256;
        t++;

                if(t==20)
                {
                        p10=0;
                        t=0;        
                }
        if(t!=20)
                p10=1;
                        
}
回復

使用道具 舉報

ID:56665 發表于 2019-11-9 17:17 | 顯示全部樓層
你試一下,if(t==20){t=0;p10=~p10;}
回復

使用道具 舉報

ID:235200 發表于 2019-11-9 17:52 | 顯示全部樓層
因為t==20時燈滅的時間相當短,而t!=20時燈亮的時間相當長而已
回復

使用道具 舉報

ID:638764 發表于 2019-11-9 18:26 | 顯示全部樓層
當你的t=20的時候,你又令t=0了,所以又會進入下一個if,具體怎么改可以參考樓上那位的代碼
回復

使用道具 舉報

ID:245004 發表于 2019-11-9 19:02 | 顯示全部樓層

#include <reg52.h>
sbit p10 = P1 ^ 0;
code unsigned int kTimeValue = 65536 - 45872;

//初始化函數
void InitTimer0(void) {
  TMOD = 0x01;                            //設置定時器0工作模式1
  TL0 = kTimeValue;
  TH0 = kTimeValue >> 8; //計數器裝初值
  ET0 = 1;                                //開計數器0中斷
  TR0 = 1;                                //啟動定時器0
  EA = 1;                                 //開總中斷
}

void main(void) {
  InitTimer0();
  while (1) {
  }
}

void time0(void) interrupt 1 {
  static int t;

  TL0 = kTimeValue;
  TH0 = kTimeValue >> 8; //計數器裝初值

  t++;
  if (t >= 20) {
    t = 0;
    p10 = !p10;
  }
}




沒實際測試,你可以試一下。
P1.0是bit,不能用“~”取反,可以用“!”取反。
如果亮滅時間不同,需要稍稍修改一下:

  t++;
  if (t == 20) {
    p10 = 0;
  } else if (t >= 60) {
    t = 0;
    p10 = 1;
  }


回復

使用道具 舉報

ID:638300 發表于 2019-11-9 20:09 來自手機 | 顯示全部樓層
建議還用定時器1,比較好用
回復

使用道具 舉報

ID:640309 發表于 2019-11-12 11:41 來自手機 | 顯示全部樓層
把if(t!=20)放主函數里試試
回復

使用道具 舉報

ID:415088 發表于 2019-11-21 16:33 | 顯示全部樓層
試試我這個:
#include<reg52.h>

sbit p10 = P1^0;
unsigned char t = 0;

void InitTimer0()    //初始化函數
{        
        TMOD=0x01;    //設置定時器0工作模式1
        TH0=(65536-45872)/256;    //計數器裝初值
        TL0=(65536-45872)%256;
        EA=1;              //開總中斷
        ET0=1;             //開計數器0中斷
        TR0=1;             //啟動定時器0
}

void main()
{        
        InitTimer0();
       
        while(1);
}


void time0() interrupt 1
{
        TH0=(65536-45872)/256;    //計數器裝初值
        TL0=(65536-45872)%256;

        t++;
        if(t == 20)
        {
                p10 = ~p10;
                t=0;        
        }              
} 我測試可以的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色一级免费观看 | 久久亚洲综合 | 伊人伊成久久人综合网站 | 一级毛片视频 | 国产精品久久久久久久 | 欧美久久久久久 | 精品国产亚洲一区二区三区大结局 | 久久国产亚洲 | 久草免费电影 | 国产黄色av电影 | 欧美成人精品一区 | 婷婷丁香在线视频 | 国产成人99久久亚洲综合精品 | 亚洲aⅴ | 国产免费视频在线 | 久久久久久久久久影视 | av中文字幕在线播放 | 国产一级视频在线 | 免费在线观看一区二区 | 精品国产一区一区二区三亚瑟 | a毛片 | 五月综合久久 | 成人激情视频在线观看 | 国产传媒在线播放 | 欧美一区二区免费 | 性色综合 | 久久999| 久草a√ | 国产精品免费一区二区三区四区 | 精品视频一区二区 | 中文字幕免费视频 | 日本电影免费完整观看 | 亚洲精品久久久蜜桃 | 亚洲欧美一区二区三区在线 | 中文字幕亚洲视频 | 成人二区 | 亚洲国产精品99久久久久久久久 | 日韩精品视频在线 | 精品免费国产视频 | 不卡一区二区三区四区 | 久久国色 |