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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3205|回復: 2
打印 上一主題 下一主題
收起左側(cè)

兩個定時器產(chǎn)生頻率固定為10hz的方波 求大神改下程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:225076 發(fā)表于 2017-9-26 09:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我利用兩個定時器產(chǎn)生頻率固定為10hz的方波,占空比隨著按鍵變化,但是觀察不到方波,請大神指出程序的錯誤
#include <reg52.h>
#define  uchar unsigned char
#define  uint unsigned int
#define  ALL  65536             //定時器工作方式1時,最大基數(shù)長度 65536;
#define  F_osc 12000000         //晶振頻率12M;

sbit PWM_out=P0^7;
sbit led=P2^0;
sbit duty_up=P3^0;    //占空比增加按鍵
sbit duty_down=P3^1;  //占空比減少按鍵
uint duty=1;                  //初始占空比為10%
float T=0.1;          //周期定為0.1s

uchar num;
/*****延時******/
void delay(uint z)
{
  uint i,j;
  for(i=z;i>0;i--)
     for(j=110;j>0;j--);
}
/*****鍵盤掃描******/
void key_scan()
{
   if(duty_up==0)
   delay(5);
   if(duty_up==0)
     {
            duty=duty+1;
                if(duty>9)
                duty=1;
         }
        if(duty_down==0)
        delay(5);
        if(duty_down==0)
          {
            duty=duty-1;
                if(duty<1)
                duty=9;
          }
}
/******主函數(shù)*******/
void main()
{
   TMOD=0x11;  //定時器0,工作方式1;定時器1,工作方式1;
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256; //定時0.1s,方波頻率10HZ
   TH1=(65536-duty*10000)/256;
   TL1=(65536-duty*10000)%256;         //計算脈寬時間,晶振頻率12
   EA=1;         //開總中斷
   ET0=1;    //開定時器0中斷
   ET1=1;
   TR0=1;    //啟動定時器0
   TR1=1;
   while(1) //程序在這里等待
   {
             key_scan();    //鍵盤掃描確定占空比
         
   }
}
/*****T0定時器中斷*****/
void T0_time() interrupt 1
{
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;   //重裝定時器初值
   TR0=1;
   PWM_out=1;
   num=num++;
   if(num==4)
     {
                 led=~led;
                num=0;
         }
}
/****T1定時器中斷*****/
void T1_time() interrupt 3
{
   TH1=(65536-duty*10000)/256;
   TL1=(65536-duty*10000)%256;
   TR0=0;
   PWM_out=0;
}

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

使用道具 舉報

沙發(fā)
ID:123289 發(fā)表于 2017-9-27 06:53 | 只看該作者
12M晶振,傳統(tǒng)51:12分頻后,1us一個定時器CLK,定時器最大容量65536,即最大定時為65536us,樓主的0.1S從何處而來?
你想像一下,或畫一個PWM波的圖象,看一下PMW的上沿與上沿的時間間隔,再看一下下沿與下沿的時間間隔,它倆的周期一定是一樣的,且相位保持一下距離。你的T0置1,是一個時間間隔,T1清0又是另一個時間間隔,周期不一樣。
樓主構(gòu)思設(shè)計錯誤,不是程序不會寫,是主導思想不正確。
回復

使用道具 舉報

板凳
ID:213173 發(fā)表于 2017-9-27 08:55 | 只看該作者
/****T1定時器中斷*****/
void T1_time() interrupt 3
{
   TH1=(65536-duty*10000)/256;//duty不能大于6,否則邏輯錯誤
   TL1=(65536-duty*10000)%256;
   TR0=0;                                                        //T0關(guān)閉,哪來T0中斷工作?
   PWM_out=0;
}
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄频视频 | 亚洲美女在线视频 | 国产精品久久久久久一级毛片 | 国产精品久久久久久久久久久久午夜片 | 国产一区二区精 | 成人99 | 欧美日韩在线精品 | 国产精品视频久久久 | 欧美日韩精品在线免费观看 | 国产在线一区二区三区 | 狠狠色香婷婷久久亚洲精品 | 国产精品a久久久久 | 国产区精品 | 国产精品国产a级 | 国产a区| 免费中文字幕 | 成人国产精品久久久 | 色视频网站在线观看 | 久久精品国产精品青草 | 久免费视频 | 综合国产| 三级视频在线观看电影 | 日韩午夜 | 亚洲精品自在在线观看 | 97精品久久 | 成人影院一区二区三区 | 99爱在线观看 | 日本免费视频 | 在线国产中文字幕 | 亚州春色 | 亚洲人在线观看视频 | 日韩国产在线 | 性色的免费视频 | cao在线| 在线观看亚 | 99国内精品| 欧美日本久久 | 91资源在线 | 国产精品久久久久久久久久久新郎 | 精品国产乱码久久久久久闺蜜 | 国产精品日韩一区 |