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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2010|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

[已解決]這個(gè)單片機(jī)定時(shí)器,有輸入么?代碼如下 STC8G1K08A

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:675799 發(fā)表于 2023-11-16 08:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include        "STC8.H"

typedef unsigned int          u16;
  u16   tt;   //80 點(diǎn)計(jì)算,為1個(gè)周期 20ms,,,,  0.25mS X 80  =20ms;即是每點(diǎn) 0.25MS
typedef unsigned char          u8;

  u8 dg,df;        
u8 a;b;        
                                                        void Timer0_Isr(void) interrupt 1
{  

  if(df<11) //軟啟信號(hào)對(duì),df==11退出軟啟動(dòng)。
                                   {
                                   dg=0-df;
                                   
                                          if(tt==79)
                                        df++;
                                          
                                        if(dg<=1)
                                        dg=0;
                                                 }         
        /////////////////////////////
        if(tt==1||tt==3||tt==4||tt==35||tt==36||tt==38)
        {        P33=0;
                                    //         P54=1;
                 P55=1;
     }
         a=6+dg;
         b=33-dg;
        if(tt>=a&&tt<=b)
                 {        P33=0;
                                    //         P54=1;
                         P55=1;



        }
                        if(tt==41||tt==43||tt==44||tt==75||tt==76||tt==78)
        {        P33=1;
                                    //         P54=1;
                  P55= 0;
     }
         a=46+dg;
         b=73-dg;

                 if(tt>=a&&tt<=b)
                 {        P33=1;
                                    //         P54=1;
                         P55=0;



        }
                tt++;
                           if(tt==80) //一個(gè)周期完成
                     tt=0;


}

void Timer0_Init(void)                //250微秒@24.000MHz
{
        AUXR &= 0x7F;                        //定時(shí)器時(shí)鐘12T模式
        TMOD &= 0xF0;                        //設(shè)置定時(shí)器模式
        TL0 = 0x0C;                                //設(shè)置定時(shí)初始值
        TH0 = 0xFE;                                //設(shè)置定時(shí)初始值
        TF0 = 0;                                //清除TF0標(biāo)志
        TR0 = 1;                                //定時(shí)器0開(kāi)始計(jì)時(shí)
        ET0 = 1;                                //使能定時(shí)器0中斷
}


void main(void)
{           P3M0 |= 0x09; P3M1 &= ~0x09;         //p3.3  p3.0 推挽輸出
                 //      P3M0 = 0x00; P3M1 = 0x00;  //  準(zhǔn)雙向口

           //   P5M0 &= ~0x30; P5M1 &= ~0x30;  //P54, P55,   準(zhǔn)雙向口

        //  p3.1 準(zhǔn)雙向口,用于過(guò)流  p3.3  p3.0
               
            //  P5M0 |= 0x30; P5M1 &= ~0x30;   //P54, P55,         推挽輸出
                     P5M0 = (P5M0 & ~0x10) | 0x20; P5M1 &= ~0x30;  // P55推挽輸出,P54準(zhǔn)雙向口
                        dg=0;
                        df=0;
                        P31=0;
                          P30=0;
                        P33=0;
                          P55=0;
                         tt=0;
         Timer0_Init();                //1 毫秒秒@24.000MHz
         
  EA = 1;                //允許全局中斷

  while (1)
  {                 ;
          if( P54==1)    //過(guò)流關(guān)閉中斷。
  {    EA = 0;           //        關(guān)定時(shí)。
                           ET0 = 0;
                   P33=0;
                      P55=0;         
                         tt=0;
                            dg=0;
                        df=0;
                            P54=0;
                                Timer0_Init();                //1 毫秒秒@24.000MHz
                                  EA = 1;  
  }

}
  }
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:123289 發(fā)表于 2023-11-16 10:51 | 只看該作者
看CPU手冊(cè),關(guān)注定時(shí)器部分。
定時(shí)器的輸入是clk,找找它的來(lái)源。
回復(fù)

使用道具 舉報(bào)

板凳
ID:1034262 發(fā)表于 2023-11-16 11:00 | 只看該作者
樓主說(shuō)清楚點(diǎn),是要定時(shí)器對(duì)外計(jì)數(shù)么?
回復(fù)

使用道具 舉報(bào)

地板
ID:675799 發(fā)表于 2023-11-16 11:24 | 只看該作者
16位定時(shí)器,自動(dòng)重裝,100微秒 就中斷 。計(jì)數(shù)到,就P33 變化1下。
回復(fù)

使用道具 舉報(bào)

5#
ID:161164 發(fā)表于 2023-11-16 13:16 | 只看該作者
如果這就是全部代碼
這程序沒(méi)有輸入
回復(fù)

使用道具 舉報(bào)

6#
ID:675799 發(fā)表于 2023-11-16 14:33 | 只看該作者
P33 不會(huì)變化
就是低電平,為什么。
難道沒(méi)有開(kāi)始計(jì)數(shù)???????????
回復(fù)

使用道具 舉報(bào)

7#
ID:161164 發(fā)表于 2023-11-16 16:15 | 只看該作者
hww22 發(fā)表于 2023-11-16 14:33
P33 不會(huì)變化
就是低電平,為什么。
難道沒(méi)有開(kāi)始計(jì)數(shù)???????????

你如何測(cè)量的?
按你的代碼
P33會(huì)產(chǎn)生42ns的高電平
然后大部分時(shí)間是低電平
回復(fù)

使用道具 舉報(bào)

8#
ID:675799 發(fā)表于 2023-11-16 16:52 | 只看該作者
lkc8210 發(fā)表于 2023-11-16 16:15
你如何測(cè)量的?
按你的代碼
P33會(huì)產(chǎn)生42ns的高電平

萬(wàn)用表測(cè),   所有發(fā)現(xiàn)是低電平。
回復(fù)

使用道具 舉報(bào)

9#
ID:675799 發(fā)表于 2023-11-16 16:55 | 只看該作者
#include        "STC8.H"
#define T50HZ    (24000000L / 12 / 2 / 50/100)  //24M主頻,100點(diǎn)一個(gè)周期。
                                                                             
typedef unsigned int          u16;
typedef unsigned char          u8;
     //400點(diǎn)計(jì)算,為1個(gè)周期 20ms,,,,   200usX100 =20ms;即是每點(diǎn)0.2MS
  u8 dg,df;
   u8 a,b;
unsigned int value;
unsigned int tt;
void PCA_Isr() interrupt 7
{           CCF2 = 0;
       CCAP2L = value;
       CCAP2H = value >> 8;
       value += T50HZ;

                 
                           //                  P54=!P54; //測(cè)試50x100 =5KHZ
                        

                                
         
                                     if(df<11) //軟啟信號(hào)對(duì),df==11退出軟啟動(dòng)。
                                   {
                                   dg=10-df;
                                   
                                          if(tt==99)
                                        df++;
                                          
                                        if(dg<1||dg>20)
                                        dg=0;
                                                 }         
                                                  
                ////////// ////正半波開(kāi)始
                                
if(tt==1||tt==2||tt==6||tt==7||tt==42||tt==43||tt==47||tt==48)
             {              P33=0;
                                    //         P54=1;
                                                P55=1;
                                  }
                                         a= 40-dg ;
                                        b= 9+dg        ;
                                    if(tt<=a&&tt>b)
                          {   P33=0;
                            //         P54=1;
                                         P55=1;
                      }          ////////////////          正半波完成
                                                                                   
                                ////////// ////負(fù)半波開(kāi)始
                         if(tt==51||tt==52||tt==56||tt==57||tt==92||tt==93||tt==97||tt==98)
             {            P33=1;
                                    P55=0;//        P54=1;
                                  }
                                   a=80-dg ;
                                        b=59+dg;
                              if(tt<=a&&tt>b)
                          {   P33=1;
                                    P55=0; //        P54=0;
                      }        
                        
                 //////////////////////////////////////  負(fù)半周完成
                        
                                P33=0;
                                    P55=0;// P54=0;
                        
                  //////////////////////////////////////         
               
                          tt++;
                   if(tt==100) //一個(gè)周期完成
                     tt=0;

                    

}

void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;
           
          //     P5M0 |= 0x20; P5M1 &= ~0x20;  //P55推挽輸出

        //    P5M0 &= ~0x10; P5M1 |= 0x10; //P54 高阻輸入
        //                  P3M0 |= 0x08; P3M1 &= ~0x08;          //p3.3   推挽輸出
        df=0;
        tt=0;
        dg=0;
    CCON = 0x00;
    CMOD = 0x00;                                //PCA時(shí)鐘為系統(tǒng)時(shí)鐘/12

   // CCAPM0 = 0x49;                              //PCA模塊0為16位定時(shí)器模式
   CCAPM2 = 0x49;                              //PCA模塊2為16位定時(shí)器模式
  //  CCAPM2 = 0x49;                              //PCA模塊2為16位定時(shí)器模式
                                                                         //定時(shí)器時(shí)鐘12T模式

    value = T50HZ;
    CCAP2L = value;
    CCAP2H = value >> 8;
    value += T50HZ;


    CR = 1;                                     //啟動(dòng)PCA計(jì)時(shí)器
    EA = 1;

         
    while (1)
        { /*     if(P54==1)  //過(guò)流
              { CR = 0;            //停PCA計(jì)時(shí)器
           EA = 0;
                    P33=0;
                                 P55=0;
                                P33=0;
                                 P55=0;
                         df=0;
              tt=0;
                dg=0;
                                   value = T50HZ;
    CCAP2L = value;
    CCAP2H = value >> 8;


    value += T50HZ;
    CR = 1;                                     //再次 啟動(dòng)PCA計(jì)時(shí)器
    EA = 1;
         }          */
        };
}//////////////////////////////////////
PCA,這個(gè)沒(méi)有測(cè)試。
最頂上第一個(gè) 測(cè)試過(guò)80個(gè)點(diǎn)的,方波, 帶減壓?jiǎn)?dòng)。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

10#
ID:675799 發(fā)表于 2024-1-10 08:07 | 只看該作者
本帖最后由 hww22 于 2024-1-11 08:19 編輯

#include        "STC8.H"

typedef unsigned int          u16;
  u16   tt;   //80 點(diǎn)計(jì)算,為1個(gè)周期 20ms,,,,  0.25mS X 80  =20ms;即是每點(diǎn) 0.25MS
typedef unsigned char          u8;

  u8 dg,df;        
u8 a;b;        
                                                        void Timer0_Isr(void) interrupt 1
{  

  if(df<11) //軟啟信號(hào)對(duì),df==11退出軟啟動(dòng)。
                                   {
                                   dg=0-df;
                                   
                                          if(tt==79)
                                        df++;
                                          
                                        if(dg<=1)
                                        dg=0;
                                                 }         
  if(tt==0||tt==2||tt==5||tt==34||tt==37||tt==39||tt==40||tt==42||tt==45||tt==74||tt==77||tt==79||tt==80)      {        P33=0;
                              
                 P55=0;
     }   /////////////////////////////
        if(tt==1||tt==3||tt==4||tt==35||tt==36||tt==38)
        {        P33=0;
                                    //         P54=1;
                 P55=1;
     }
         a=6+dg;
         b=33-dg;
        if(tt>=a&&tt<=b)
                 {        P33=0;
                                    //         P54=1;
                         P55=1;



        }
                        if(tt==41||tt==43||tt==44||tt==75||tt==76||tt==78)
        {        P33=1;
                                    //         P54=1;
                  P55= 0;
     }
         a=46+dg;
         b=73-dg;

                 if(tt>=a&&tt<=b)
                 {        P33=1;
                                    //         P54=1;
                         P55=0;



        }
                tt++;
                           if(tt==80) //一個(gè)周期完成
                     tt=0;


}

void Timer0_Init(void)                //250微秒@24.000MHz
{
        AUXR &= 0x7F;                        //定時(shí)器時(shí)鐘12T模式
        TMOD &= 0xF0;                        //設(shè)置定時(shí)器模式
        TL0 = 0x0C;                                //設(shè)置定時(shí)初始值
        TH0 = 0xFE;                                //設(shè)置定時(shí)初始值
        TF0 = 0;                                //清除TF0標(biāo)志
        TR0 = 1;                                //定時(shí)器0開(kāi)始計(jì)時(shí)
        ET0 = 1;                                //使能定時(shí)器0中斷
}


void main(void)
{           P3M0 |= 0x09; P3M1 &= ~0x09;         //p3.3  p3.0 推挽輸出
                 //      P3M0 = 0x00; P3M1 = 0x00;  //  準(zhǔn)雙向口

           //   P5M0 &= ~0x30; P5M1 &= ~0x30;  //P54, P55,   準(zhǔn)雙向口

        //  p3.1 準(zhǔn)雙向口,用于過(guò)流  p3.3  p3.0
               
            //  P5M0 |= 0x30; P5M1 &= ~0x30;   //P54, P55,         推挽輸出
                     P5M0 = (P5M0 & ~0x10) | 0x20; P5M1 &= ~0x30;  // P55推挽輸出,P54準(zhǔn)雙向口
                        dg=0;
                        df=0;
                        P31=0;
                          P30=0;
                        P33=0;
                          P55=0;
                         tt=0;
         Timer0_Init();                //1 毫秒秒@24.000MHz
         
  EA = 1;                //允許全局中斷

  while (1)
  {                 ;
          if( P54==1)    //過(guò)流關(guān)閉中斷。
  {    EA = 0;           //        關(guān)定時(shí)。
                           ET0 = 0;
                   P33=0;
                      P55=0;         
                         tt=0;
                            dg=0;
                        df=0;
                            P54=0;
                                Timer0_Init();                //1 毫秒秒@24.000MHz
                                  EA = 1;  
  }

}
  }

這個(gè)才對(duì)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品一区二区免费 | 日韩伦理一区二区 | 久久精选 | 国产一区二区在线免费观看 | 国产 欧美 日韩 一区 | 精品无码久久久久国产 | 欧美激情精品久久久久久变态 | 久久久久国产一区二区三区 | 亚洲欧洲小视频 | 91精品国产777在线观看 | 国产精品视频免费观看 | 中文精品久久 | 另类一区 | 亚洲一区视频在线 | 亚州精品成人 | 精品国产久| 81精品国产乱码久久久久久 | 亚洲欧美一区二区三区国产精品 | 精品国产一区二区三区久久狼黑人 | 精品日韩一区 | 宅男噜噜噜66一区二区 | 成人三级在线观看 | 亚洲精品永久免费 | 久久精品99国产精品 | 99精品视频免费在线观看 | 免费激情网站 | 99视频在线播放 | 日本免费在线 | 亚洲欧美综合 | 久久久久久一区 | 精品久久久久久久久久久久久 | 欧美精品一区二区三区四区五区 | 男女爱爱福利视频 | 国产精品影视在线观看 | 国产在线麻豆精品入口 | 精品成人| 992tv人人草| 欧美日韩一区二区三区四区 | 欧美一级电影免费观看 | 成人免费片| 久久夜视频 |