51单片机定时/计数器T0,采用工作方式2怎么写程序?

2019-07-15 07:32发布

利用定时/计数器T0,采用工作方式2,使P1.0引脚输出0.4ms的方波。设系统时钟频率为12Mhz?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
ltpsweet
2019-07-15 14:23
#include <reg52.h >
#include <pwm.h >

#define uint unsigned int
#define uchar unsigned char
       
sbit PWM_OUT=P2^0;

/******************Óû§¾²Ì¬±äÁ¿Çø************************/
static uint timer0_cnt=0;
static uchar pwm_val=200;
/*******************************************************/

/*******************************************
¶¨Ê±Æ÷0³õʼ»¯
*******************************************/
void timer0_init(void)
{
TMOD=0x01;//T0¶¨Ê±Ä£Ê½£¬·½Ê½1£¨16λ¼ÆÊýģʽ£©
TH0=(65536-1000)/255;//1msÖжÏÒ»´Î
TL0=(65536-1000)%255;
EA=1;
ET0=1;
TR0=1;
}

/*******************************************
pwm·þÎñ³ÌÐò
*******************************************/
void timer0_pwm_service(void) interrupt 1 using 0
{
TH0=(65536-1000)/255;//´ÓÐÂ×°ÔؼÆÊý³õÖµ
TL0=(65536-1000)%255;
timer0_cnt++;
if(timer0_cnt<pwm_val)
        PWM_OUT=1;
else
        PWM_OUT=0;

if(timer0_cnt==400)
timer0_cnt=0;

}       

一周热门 更多>