<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      模板:自動重裝和不自動重載區(qū)別

      定時器中斷方式:

      跑一遍后溢出,TFx由硬件自動清零了,所以在中斷服務函數(shù)中就不用多此一舉中斷標志位TFx=0了。

      我們也不需要在中斷服務函數(shù)里寫TRx=1,因為中斷一開啟只要不另外暫停(TR0=0;),它本身就是像多線程一樣一直在運行

      TMOD=0X01; 對模式的設(shè)置,中斷服務函數(shù)里不用再寫這句話了,這個在主函數(shù)一開始就設(shè)置了,再設(shè)置編譯直接會報錯,認為TMOD是個錯誤變量了。

      定時器查詢方式:

      我們需要在查詢方式延時函數(shù)里寫TRx=1,因為查詢方式跑一遍后,中斷溢出標志位TFx等于1就停止了,停止就是TRx=0,所以我們要另外重新開啟。并且TFx必須軟件清零,所以在查詢方式的延時函數(shù)中后面就得寫TFx=0了

      而主函數(shù)中因為我們用的不是中斷方式,所以就不需要寫EA=1; ETx=1,TRx=1

       

       

      // ------------------------分 隔 符------------------------

       

      自動重載:

      定時器中斷方式:

      首先得在main函數(shù)中對初值THx和TLx賦值,即初始化(告訴CPU每多久中斷一次)。在中斷服務函數(shù)中不需要另外重新賦初值,因為它滿了會自動重新裝main函數(shù)配置好的初值。

      查看代碼
       //定時器0初始化
      void timer0_Init()	
      {
          TMOD &= 0x0F;			//設(shè)置定時器模式	00為16位自動重載 01為16位不自動重載
      	TH0 = 0xFC;				//設(shè)置定時初始值:1毫秒
      	TL0 = 0x78;	            
          
          ET0=1;
          EA=1;
          TR0=1;                //上電開跑 啟動定時中斷
      }
      //定時器0中斷服務函數(shù)
       void timer0_Server()interrupt 3
       {
          //進入中斷服務后執(zhí)行的動作    一般建議不要太長,因為中斷本來就是為了實時響應。如果代碼語句超過本身中斷時間,就一直困在中斷了。
          // e.g:我經(jīng)常用定時器用來實時掃描按鍵的狀態(tài)
      		keyProc();        //自己寫的按鍵處理函數(shù)
       }
      
      //main
      void main()
      {
          timer0_Init();
          while(1)
          {
              //動作代碼
          }
      }

      定時查詢方式:

      不需要在main函數(shù)中對初值THx和TLx賦值,即初始化。直接在所用到的查詢方式的延時函數(shù)中賦初值就好了,調(diào)用延時函數(shù)時候就裝一次。

      示例代碼1:

      查看代碼
       //定時器0初始化
      void timer0_Init()	
      {
          TMOD &= 0x0F;			//設(shè)置定時器模式	00為16位自動重載 01為16位不自動重載
      }
      //延時函數(shù):定時器0查詢方式
       void delayMs(unsigned int xms)
       {
           xms=xms/5;    //減少外循環(huán)次數(shù),增加程序運行效率
           
           while(xms--)
           {
               TH0 = 0xEC;				  //設(shè)置定時初始值:5ms
               TL0 = 0x78;				
               TR0=1;                       //溢出標志位為1后,TR也為0了,所以需要重新開啟
               while(!TF0);			      //到了5ms后 溢出標志位TF0就等于1
               TF0=0;						 //所以為了下次又能調(diào)用 這里就要對溢出標志位清0
           }
       }
      
      //main
      void main()
      {
          timer0_Init();
          while(1)
          {
              //動作代碼
              delayMs();        //調(diào)用延時函數(shù)
          }
      }

      示例代碼2:

      查看代碼
       //延時函數(shù):定時器0查詢方式
       void delayMs(unsigned int xms)
       {
           xms=xms/5;    //減少外循環(huán)次數(shù),增加程序運行效率
           TMOD &= 0x0F;			//設(shè)置定時器模式	00為16位自動重載 01為16位不自動重載
           
           while(xms--)
           {
               TH0 = 0xEC;				  //設(shè)置定時初始值:5ms
               TL0 = 0x78;				
               TR0=1;                       //溢出標志位為1后,TR也為0了,所以需要重新開啟
               while(!TF0);			      //到了5ms后 溢出標志位TF0就等于1
               TF0=0;						 //所以為了下次又能調(diào)用 這里就要對溢出標志位清0
           }
       }
      
      //main
      void main()
      {
          while(1)
          {
              //動作代碼
              delayMs();        //調(diào)用延時函數(shù)
          }
      }

       

      不自動重載:

      定時器中斷方式:

      首先得在main函數(shù)中對初值THx和TLx賦值,即初始化。在中斷服務函數(shù)中也需要另外重新賦初值,因為01不自動重載模式 它滿了不會自動重新裝main函數(shù)配置好的初值。

      查看代碼
      //定時器0初始化
      void timer0_Init()	
      {
          TMOD &= 0x01;			//設(shè)置定時器模式	00為16位自動重載 01為16位不自動重載
      	TH0 = 0xFC;				//設(shè)置定時初始值:1毫秒
      	TL0 = 0x78;	            
          
          ET0=1;
          EA=1;
          TR0=1;                //上電開跑 啟動定時中斷
      }
      //定時器0中斷服務函數(shù)
       void timer0_Server()interrupt 3
       {
           TH0 = 0xFC;				//設(shè)置定時初始值:1毫秒
           TL0 = 0x78;	     
           
           //進入中斷服務后執(zhí)行的動作    一般建議不要太長,因為中斷本來就是為了實時響應。如果代碼語句超過本身中斷時間,就一直困在中斷了。
          // e.g:我經(jīng)常用定時器用來實時掃描按鍵的狀態(tài)
               keyProc();        //自己寫的按鍵處理函數(shù)
       }
      
      //main
      void main()
      {
          timer0_Init();
          while(1)
          {
              //動作代碼
          }
      }

      定時查詢方式:

      首先需要在main函數(shù)中對初值THx和TLx賦值,即初始化。然后直接在所用到的查詢方式的延時函數(shù)中也是需要重新賦初值的,因為你一旦調(diào)用了一次,初值就沒了。

      示例代碼1:

      查看代碼
      //定時器0初始化
      void timer0_Init()	
      {
         TMOD &= 0x01;			//設(shè)置定時器模式	00為16位自動重載 01為16位不自動重載
      }
      //延時函數(shù):定時器0查詢方式
       void delayMs(unsigned int xms)
       {
           xms=xms/5;    //減少外循環(huán)次數(shù),增加程序運行效率
           
           while(xms--)
           {
               TH0 = 0xEC;				  //設(shè)置定時初始值:5ms
               TL0 = 0x78;				
               TR0=1;                       //溢出標志位為1后,TR也為0了,所以需要重新開啟
               while(!TF0);			      //到了5ms后 溢出標志位TF0就等于1
               TF0=0;						 //所以為了下次又能調(diào)用 這里就要對溢出標志位清0
           }
       }
      
      //main
      void main()
      {
          timer0_Init();
          while(1)
          {
              //動作代碼
              delayMs();        //調(diào)用延時函數(shù)
          }
      }

      示例代碼2:

      查看代碼
       //延時函數(shù):定時器0查詢方式
       void delayMs(unsigned int xms)
       {
           xms=xms/5;    //減少外循環(huán)次數(shù),增加程序運行效率
           TMOD &= 0x01;			//設(shè)置定時器模式	00為16位自動重載 01為16位不自動重載
           
           while(xms--)
           {
               TH0 = 0xEC;				  //設(shè)置定時初始值:5ms
               TL0 = 0x78;				
               TR0=1;                       //溢出標志位為1后,TR也為0了,所以需要重新開啟
               while(!TF0);			      //到了5ms后 溢出標志位TF0就等于1
               TF0=0;						 //所以為了下次又能調(diào)用 這里就要對溢出標志位清0
           }
       }
      
      //main
      void main()
      {
          while(1)
          {
              //動作代碼
              delayMs();        //調(diào)用延時函數(shù)
          }
      }

       

      posted @ 2024-03-02 01:51  iZJ"Qq4577105  閱讀(343)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 九九热爱视频精品| 在线观看国产成人av片| 日韩一区二区三区不卡片| 亚洲中文字幕在线精品一区| 亚洲午夜无码久久久久蜜臀av| 亚洲无人区一码二码三码| 玩弄放荡人妻少妇系列| 亚洲国产欧美一区二区好看电影| 国产粉嫩系列一区二区三| 东京热无码av男人的天堂| 国产老熟女国语免费视频| 亚洲日本VA午夜在线电影| 精品超清无码视频在线观看| 国产精品偷乱一区二区三区| 男女一边摸一边做爽爽| japanese边做边乳喷| 日本国产精品第一页久久| 午夜精品极品粉嫩国产尤物| 日韩AV无码精品一二三区| 无码专区 人妻系列 在线| 国产成人精品午夜在线观看| 亚洲欧美中文日韩在线v日本| 久久精品国产91精品亚洲| 99久9在线视频 | 传媒| 色综合久久久久综合体桃花网| 国产综合av一区二区三区| 亚洲精品国产男人的天堂| 高清中文字幕国产精品| 國產尤物AV尤物在線觀看| 国产三级国产精品国产专| 国产情侣激情在线对白| 亚洲中文精品一区二区| 国产亚洲无线码一区二区| 亚洲国产激情一区二区三区| 亚洲精品中文字幕在线观| 国产精品老熟女露脸视频| 亚洲AV无码专区亚洲AV紧身裤| 舒城县| 久久精品国产熟女亚洲av| 国产日产精品系列| 巴林右旗|