標題: at89c51 PWM [打印本頁]

作者: 小邱    時間: 2019-5-8 20:44
標題: at89c51 PWM
#include <reg52.h>

//--定義使用的IO口--//
sbit PWM=P1^0;

//--定義一個全局變量--//
unsigned char timer1;

void Time1Config();

/*******************************************************************************
* 函 數 名       : main
* 函數功能                 : 主函數
* 輸    入       : 無
* 輸    出       : 無
*******************************************************************************/

void main(void)
{
        Time1Config();
        while(1)
        {
                if(timer1>100)  //PWM周期為100*0.5ms
                {
                        timer1=0;
                }
                if(timer1 < 30)        //改變30這個值可以改變直流電機的速度
                {
                        PWM=1;
                }
                else
                {
                        PWM=0;
                }
        }
       

}

/*******************************************************************************
* 函 數 名       : Time1Config
* 函數功能                 : 設置定時器
* 輸    入       : 無
* 輸    出       : 無
*******************************************************************************/

void Time1Config()
{
        TMOD|= 0x10;   //設置定時計數器工作方式1為定時器

        //--定時器賦初始值,12MHZ下定時0.5ms--//  
        TH1 = 0xFE;
        TL1 = 0x0C;

       
        ET1 = 1;          //開啟定時器1中斷
        EA = 1;
        TR1 = 1;         //開啟定時器       
}

/*******************************************************************************
* 函 數 名       : Time1
* 函數功能                 : 定時器1的中斷函數
* 輸    入       : 無
* 輸    出       : 無
*******************************************************************************/

void Time1(void) interrupt 3    //3 為定時器1的中斷號  1 定時器0的中斷號 0 外部中斷1 2 外部中斷2  4 串口中斷
{
        TH1 = 0xFE;  //重新賦初值
        TL1 = 0x0C;
        timer1++;   
}



作者: univers    時間: 2019-5-9 04:08
思路清析明了,受教了。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1