智能车制作
标题:
求助:怎么用51单片机的定时器产生1kHZ的PWM波?
[打印本页]
作者:
duxingshiweione
时间:
2011-10-18 02:20
标题:
求助:怎么用51单片机的定时器产生1kHZ的PWM波?
怎么用51单片机的定时器产生1kHZ的PWM波?
作者:
记忆将军
时间:
2011-10-18 08:52
定时0.5MS 一旦时间到 反转高低电平 就有占空比50%的1KHZ了
作者:
jack_channel
时间:
2011-10-18 11:11
楼上正解...
a++;
switch(a)
{
case 1: P0^0=1;
break;
case2: P0^0=0;
a=0;
break;
}
放进定时中断就行了...P0口就能输出这个波形了
作者:
duxingshiweione
时间:
2011-10-18 12:36
谢谢!不过关键问题是如何赋初值定时0.5ms
作者:
renqinglei
时间:
2011-10-23 10:32
51来说定时0.5ms,12M的晶振初始值是(65536-500)
作者:
翔宇
时间:
2011-10-23 11:09
本帖最后由 翔宇 于 2011-10-23 13:51 编辑
回复
1#
duxingshiweione
试一下这个程序吧,没错的话就是你所需要的
#include<reg52.h>
sbit out_pwm=P0^1;
char temp;
void main()
{
TMOD=0X01; // 设置定时器0为工作方式(M1M0为01)
TH0=(65536-500)/256; //自动赋初值 最高位 定时0.5ms
TL0=(65536-500)%256; // 最低位
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0 out_pwm=0;
out_pwm=0; //先给低电平,(高低电平的初值会影响中断中的PWM值的设置)
while(1);
}
void int_0(void) interrupt 1
{
TH0=(65535-500)/256;//重新装入初值
TL0=(65355-500)%256;
out_pwm=!out_pwm;
}
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2