📄 pic12c508-pwm.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 + -