標題:
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