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

📄 pic12c508-pwm.txt

📁 pic12c508-PWM.rar
💻 TXT
字号:
#include <pic.h>

#define r1  GP2
#define g1  GP1
#define b1  GP0

#define intp GP4
#define MMM   10 //脉冲抖动
#define deng_ji 200   //亮度级别


unsigned char  hui_du,su_du,yan_se;

void startt(void)
{
  OPTION = 0b10000001;
  TRIS=0x38;//GP0 GP1 GP2 输出  GP3 GP4 GP5 输入
  GPIO=0x38;
}

//=========================================================================
void out(unsigned char rgb)   //七彩颜色列表
{
switch(rgb)
 {
   case 0: {r1=1; g1=0; b1=0; }break; //红
   case 1: {r1=0; g1=1; b1=0; }break; //绿
   case 2: {r1=0; g1=0; b1=1; }break; //蓝
   case 3: {r1=1; g1=1; b1=0; }break; //黄
   case 4: {r1=0; g1=1; b1=1; }break; //青
   case 5: {r1=1; g1=0; b1=1; }break; //紫
   case 6: {r1=1; g1=1; b1=1; }break; //白
   case 7: {r1=0; g1=0; b1=0; }break; //白
   
   default: break;
 }
}
//========================================================================
void  delay_intp(unsigned int ua0) //     检测脉冲形成0.02S延时
{
unsigned char jjj;
while(ua0--)
  {
       jjj=MMM;      
       while(jjj) //防抖动连续判断MMM次如果全部为正半周则继续判断负半周
        {
           if(intp){jjj--;}
           else    {jjj=MMM;}
        }

       jjj=MMM;
       while(jjj)
        {
           if(!intp){jjj--;}
           else    {jjj=MMM;}
        }     
  } 
}
/****************************************************/
void delay(unsigned int t)   //定义延时函数
{
unsigned char bt;
for(;t;t--)
 for(bt=0;bt<5;bt++);
}
/*******************************************************/

void main(void)
{
 startt();
 while(1)
 {
  for(yan_se=0;yan_se<7;yan_se++)
  {
     for(hui_du=0;hui_du<deng_ji;hui_du++)     //亮     200级亮度
       {
         for(su_du=0;su_du<2;su_du++)   //速度
          {
            out(yan_se);
            delay(hui_du);
            out(7);
            delay(deng_ji-hui_du);
          }
       }
//========================================================
        out(yan_se);
    delay_intp(250);//5秒
//========================================================
    for(hui_du=deng_ji;hui_du>0;hui_du--)     //灭
       {
         //for(su_du=0;su_du<2;su_du++)     //速度
         // {
            out(yan_se);
            delay(hui_du);
            out(7);
            delay(deng_ji-hui_du);
          //}
       }
  }
//===============================================================

 }
}

⌨️ 快捷键说明

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