⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm.c

📁 改程序是提供给初学51单片机的人们的
💻 C
字号:
#include <reg52.h>      
#define uchar unsigned char
#define uint  unsigned int
 
sbit LED10 = P2^0;          //要控制的LED 灯 
sbit K1= P3^2;              //按键K1 
 
uchar scale;     //用于保存占空比的输出0 的时间份额,总共10 份 
 
void initial();
/*************************************************/
/*      主程序                                      */
/*************************************************/
void main(void)        
{ 
        uint n;
  initial();                
        while(1)   
        {       ;//主程序在这里就不断自循环,实际应用中,这里是做主要工作
  
   if(!K1)      //如果读到K1 为0 
                { 
                  for(n=0;n<1000;n++); //等待按键稳定 
                  while(!K1);     //等待按键松开 
                  for(n=0;n<1000;n++);    //等待按键稳定松开 
 
          //for(n=0;n<50000;n++); //每过一会儿就自动加一个档次的亮度 
                 scale++; 
                 if(scale==10)scale=0;
     }      
        } 
} 
/***********************************************/
/*        初始化子程序               */
/***********************************************/
void initial()
{
    RCAP2H =0xF3; //赋T2 的预置值,溢出1 次是1/1200 秒钟 
    RCAP2L =0x98;      
    TR2=1;          //启动定时器 
    ET2=1;          //打开定时器2 中断 
    EA=1;  
}
/*************************************************/
/*             1/1200 秒定时器2 中断                    */
/*************************************************/
void  timer2() interrupt 1    
{ 
        static uchar tt; //tt 用来保存当前时间在一秒中的比例位置 
        TF2=0; 
 
        tt++; 
        if(tt==10) //每1/120 秒整开始输出低电平 
        { 
                tt="0"; 
                if(scale!=0) //这里加这一句是为了消除灭灯状态产生的鬼影 
                LED10=0;     
        } 
                 
        if(scale==tt)    //按照当前占空比切换输出高电平 
        LED10=1; 
                         
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -