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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3193|回復: 2
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:225076 發表于 2017-9-26 09:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我利用兩個定時器產生頻率固定為10hz的方波,占空比隨著按鍵變化,但是觀察不到方波,請大神指出程序的錯誤
#include <reg52.h>
#define  uchar unsigned char
#define  uint unsigned int
#define  ALL  65536             //定時器工作方式1時,最大基數長度 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;
          }
}
/******主函數*******/
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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

使用道具 舉報

板凳
ID:213173 發表于 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關閉,哪來T0中斷工作?
   PWM_out=0;
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字字幕一区二区三区四区五区 | 久久久综合网 | 一区二区精品 | 国产精品www| 国产精品久久久久久久久久东京 | 在线观看国产视频 | 免费在线视频a | 一起操网站 | caoporn视频| 欧美日韩视频在线第一区 | 日韩综合在线视频 | 国产精品乱码一区二三区小蝌蚪 | 日本黄视频在线观看 | 久久久久久久久久久高潮一区二区 | 国产精品99久久久久久久久久久久 | 久久伊 | 成人免费视频 | 精品久久久久久 | 成人综合伊人 | 365夜爽爽欧美性午夜免费视频 | 色综合一区二区三区 | 精品久久一区二区 | 日韩电影一区 | 99re在线观看| 久久亚 | 中文成人无字幕乱码精品 | 日韩国产欧美一区 | 欧美成人二区 | 逼逼网| 中文字幕第一页在线 | 东京av男人的天堂 | 精品人伦一区二区三区蜜桃网站 | av激情在线 | 亚洲视频一区二区三区 | 国产欧美一区二区三区在线播放 | 欧美精品一区二区三区在线播放 | 成人在线精品视频 | 国内成人免费视频 | 国产操操操 | 超碰地址 | 91精品久久久久久久久久 |