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

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

QQ登錄

只需一步,快速開始

搜索
查看: 2956|回復(fù): 9
收起左側(cè)

寫了一個(gè)PWM波程序,STC12單片機(jī)運(yùn)行錯(cuò)誤,51單片機(jī)運(yùn)行正確,請(qǐng)問為什么呢?

[復(fù)制鏈接]
ID:796670 發(fā)表于 2021-3-10 09:58 | 顯示全部樓層 |閱讀模式
自己寫了一個(gè)PWM波程序,頻率50HZ,用的STC12C5A單片機(jī),然后用邏輯分析儀測(cè)了一下,結(jié)果出現(xiàn)了錯(cuò)誤的連續(xù)波
捕獲1.PNG


我在一個(gè)群里問了一下,有人用51單片機(jī)運(yùn)行我的程序,結(jié)果卻是對(duì)的
但我用STC12C5a單片機(jī),波形卻不對(duì),請(qǐng)問這是為啥呢?是因?yàn)镾TC12C和51之間的差別造成的嗎?該如何修改呢?謝謝老哥們指點(diǎn)

源程序如下:

#include <stc12c5a.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define uchar unsigned char
#define uint  unsigned int
/*用定時(shí)器T0,任選一管腳P21輸出PWM波*/
/*單片機(jī)晶振11.0592MHZ,時(shí)鐘周期為1/11.0592us*/
/*11.0592M除以12=921600,就是1秒921600個(gè)機(jī)器周期*/
/*0.1ms就是92機(jī)器周期,輸出PWM波周期為20ms,分成200份,
中斷200次,定時(shí)器初值為256-92=164*/
/*周期20ms中高電平時(shí)間1.5ms,也就是0.1ms×15*/

sbit PWM=P2^1;//P21輸出PWM波   
uchar time=0;   //占空比

void time0init()//定時(shí)器初始化
{
  TMOD=0X02;//定時(shí)器0工作方式2,8位重裝
        TH0=164;//92個(gè)機(jī)器周期,即0.1ms
        TL0=164;
        ET0=1;
        EA=1;
        TR0=1;
}

void time0() interrupt 1
{
        time++;
        if(time<200)//周期為0.1ms*200=20ms
        {
          if(time<=15)//高電平時(shí)間為0.1ms*15=1.5ms
                  PWM=1;
    else
                  PWM=0;
        }
        else
                time=0;
}

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

回復(fù)

使用道具 舉報(bào)

ID:844772 發(fā)表于 2021-3-10 10:55 | 顯示全部樓層
你算錯(cuò)了,對(duì)于AT89c51,1個(gè)機(jī)器周期=12個(gè)震蕩周期,對(duì)于STC12C5A60S2,1個(gè)機(jī)器周期=1個(gè)震蕩周期。
回復(fù)

使用道具 舉報(bào)

ID:584814 發(fā)表于 2021-3-10 17:17 | 顯示全部樓層
看過STC那些山寨般的廣告了么,速度快真的不是胡吹的,樓上正解
回復(fù)

使用道具 舉報(bào)

ID:57657 發(fā)表于 2021-3-10 23:55 | 顯示全部樓層
這種波形,可能是看門狗有問題。
回復(fù)

使用道具 舉報(bào)

ID:143767 發(fā)表于 2021-3-11 10:15 | 顯示全部樓層
AT89C51是12T單片機(jī),STC12是1T單片機(jī)
回復(fù)

使用道具 舉報(bào)

ID:796670 發(fā)表于 2021-3-15 08:17 | 顯示全部樓層
dj3365191 發(fā)表于 2021-3-11 10:15
AT89C51是12T單片機(jī),STC12是1T單片機(jī)

請(qǐng)問STC12的定時(shí)器不是默認(rèn)12分頻嗎?這樣他的機(jī)器周期和51不一樣嗎?
回復(fù)

使用道具 舉報(bào)

ID:796670 發(fā)表于 2021-3-15 08:22 | 顯示全部樓層
glinfei 發(fā)表于 2021-3-10 10:55
你算錯(cuò)了,對(duì)于AT89c51,1個(gè)機(jī)器周期=12個(gè)震蕩周期,對(duì)于STC12C5A60S2,1個(gè)機(jī)器周期=1個(gè)震蕩周期。

請(qǐng)問可以通過設(shè)置AUXR為12分頻,解決這個(gè)問題嗎?
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2021-3-15 12:00 | 顯示全部樓層
可以通過設(shè)置AUXR為12分頻,解決這個(gè)問題

  1. #include <stc12c5a.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5. #define uchar unsigned char
  6. #define uint  unsigned int
  7. /*用定時(shí)器T0,任選一管腳P21輸出PWM波*/
  8. /*單片機(jī)晶振11.0592MHZ,時(shí)鐘周期為1/11.0592us*/
  9. /*11.0592M除以12=921600,就是1秒921600個(gè)機(jī)器周期*/
  10. /*0.1ms就是92機(jī)器周期,輸出PWM波周期為20ms,分成200份,
  11. 中斷200次,定時(shí)器初值為256-92=164*/
  12. /*周期20ms中高電平時(shí)間1.5ms,也就是0.1ms×15*/

  13. sbit PWM=P2^1;//P21輸出PWM波   
  14. uchar time=0;   //占空比

  15. void time0init()//定時(shí)器初始化
  16. {
  17.         AUXR &= 0x7F;                //定時(shí)器時(shí)鐘12T模式
  18.         TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
  19.         TMOD|=0x02;   //定時(shí)器0工作方式2,8位重裝
  20.         TH0=164;     //92個(gè)機(jī)器周期,即0.1ms
  21.         TL0=164;
  22.         ET0=1;
  23.         EA=1;
  24.         TR0=1;
  25. }

  26. void time0() interrupt 1
  27. {
  28.         time++;
  29.         if(time<200)     //周期為0.1ms*200=20ms
  30.         {
  31.                 if(time<=15) //高電平時(shí)間為0.1ms*15=1.5ms
  32.                 PWM=1;
  33.                 else
  34.                 PWM=0;
  35.         }
  36.         else
  37.         time=0;
  38. }

  39. void main()
  40. {
  41.         time0init();
  42.         while(1)
  43.         {
  44.                
  45.         }
  46. }

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:430857 發(fā)表于 2021-4-18 18:12 | 顯示全部樓層
angmall 發(fā)表于 2021-3-15 12:00
可以通過設(shè)置AUXR為12分頻,解決這個(gè)問題

void time0() interrupt 1
{
        time++;
        if(time<200)     //周期為0.1ms*200=20ms
        {
                if(time<=15) //高電平時(shí)間為0.1ms*15=1.5ms
                PWM=1;
                else
                PWM=0;
        }
        else
        time=0;
}

你的中斷程序里面居然沒有裝初值,也能正常運(yùn)行嗎?
回復(fù)

使用道具 舉報(bào)

ID:57657 發(fā)表于 2021-4-18 18:45 | 顯示全部樓層
study2018 發(fā)表于 2021-4-18 18:12
void time0() interrupt 1
{
        time++;

定時(shí)器模式2,裝什么初值。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频一区二区三区四区 | 成人九色| 久久国产激情视频 | 欧美中文在线 | 不卡一二三区 | 国内精品视频在线 | 伊人精品久久久久77777 | 中文字幕加勒比 | 一区二区三区视频在线观看 | 久久久久免费精品国产 | 日韩精品一区二区三区四区视频 | 免费黄色a级毛片 | xxx.在线观看| 毛片大全 | 国精产品一品二品国精在线观看 | 欧美专区日韩专区 | 国产精品久久久精品 | 亚洲精品久久久一区二区三区 | 久久91精品 | 一区二区三区欧美 | 亚洲日本成人 | 国产精品久久久久久久久久妞妞 | 91精品国产乱码麻豆白嫩 | 国产在线一区二 | 亚洲成人精品久久久 | 97国产精品| 欧美综合久久 | 欧美v在线 | 久久国产高清 | 夜夜爽99久久国产综合精品女不卡 | 久久国内 | 91超碰caoporn97人人 | 久久99精品视频 | 欧美久久久久久久久中文字幕 | 久久国产综合 | 亚洲国产一区在线 | 欧美一区在线看 | 日韩人体在线 | 亚洲精品国产区 | 久久久久久免费看 | 精品欧美一区二区精品久久久 |