智能车制作

标题: 求助:怎么用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://111.231.132.190/) Powered by Discuz! X3.2