
#includesfr CCON =0xD8 //PCA control register
sfr CMOD =0xD9
sfr CL =0xe9
sfr CH =0xF9
sfr CCAP0L=0xea
sfr CCAP1L=0xeb
sfr CCAP0H=0xfa
sfr CCAP1H=0xfb
sfr CCAPM0=0xda
sfr CCAPM1=0xdb
sbit CR=0xde//位寻址
void main(void)
{
CMOD=0x02 //使用系统时钟,时钟输入源频率fosc/2。PWM频率=fosc/2/256
/************************************
7 6 5 4 3 21 0
CIDL- - - cps2CPS1 CPS0 ECF
CIDL: =0时,空闲模式下PCA计数器继续工作;=1时,空闲模式下PCA计数器停止工作。
CPS2,CPS1,CPS0:PCA计数脉冲选择。010,定时器0的溢出,可以实现可调频率的PWM输出。
ECF: =1时,使能寄存器CCON CF位的中断;=0时,禁止该功能。
***************************************/
CL=0x00
CH=0x00
CCAP0L=0xc0//当CL小于CCAP0L时,输出为低大于时,输出为高。
CCAP0H=0x7f//当CL由ff变为00溢出时,CCAP0H装载到CCAP0L中,实现无干扰的更新PWM。
CCAP1L=0xc0//当CL小于CCAP1L时,输出为低大于时,输出为高。
CCAP1H=0xc0//当CL由ff变为00溢出时,CCAP1H装载到CCAP1L中,实现无干扰的更新PWM。
CCAPM0=0X42//使能PWM模式,PWM0=1,ECOM0=1
CCAPM1=0X42//使能PWM模式,PWM1=1,ECOM1=1
CR=1 //启动PCA计数器
while(1)
{
CCAP0H=RF4432_TxRxBuf[4] //此处改变占空比
CCAP1H=RF4432_TxRxBuf[5]
CCAP2H=RF4432_TxRxBuf[6]/2.5
}
}
//程序两个按键接的是外部中断0、1的输入口,按下键就触发相应的中断//变量和变暗是PWM来控制的,具体在定时中断中说明
#include <reg51.h>
sbit K1 =P3^2 //亮度增加键
sbit K2 =P3^3 //亮度减少键
sbit led=P0^0
bit t=0
unsigned char zhankongbi=0
unsigned char a=0
void delay (unsigned char i)
void main ()
{
EA=1
EX0=1
IT0=1
EX1=1
IT1=1
TR0=1 //启动定时器
ET0=1 //允许定时器0中断
TMOD=0x02
TH0=(65536-1000)/256
TL0=(65536-1000)%256
while(1)
}
void delay (unsigned char i)
{
unsigned char a
while(i--)
{
for(a=120a>0a--)
}
}
void zengjia () interrupt 0 // 变亮按键
{
if(K1==0)
{
delay (1)
if(K1==0)
{
t=1
}
}
}
void jianshao () interrupt 2 // 变暗按键
{
if(K2==0)
{
delay (1)
if(K2==0)
{
t=0
}
}
}
void time () interrupt 1
{
TH0=(65536-1000)/256
TL0=(65536-1000)%256
if(t)//当按下变量按键时
{
a++
if(a<=3)
{
led=1 //LED控制高电平为7毫秒
}
else if(a<=10)
{
led=0 //LED控制低电平为3毫秒
}
else if(a==11)
{
a=0
}
}
else//当按下变暗键时
{
a++
if(a<=7)
{
led=1 //LED控制高电平为3毫秒
}
else if(a<=10)
{
led=0 //LED控制低电平为7毫秒
}
else if(a==11)
{
a=0
}
}
}
//可见变亮开关按下LED控制PWM脉宽比为7:3
//变暗开关按下LED控制PWM脉宽比为3:7
//这样就达到了控制LED亮暗的目的,这个程序没有实现亮到按的逐步变化。
CYCLE=10;在初始化中,在程序中不会改变;pwm周期PWM_ON只在主循环来改变;延时程序很长delay(1000)中断函数执行很多次,第一次count=0时,就把led灭了,当PWM_ON=2时,有了亮度,此亮度保持到,PWM_ON=2,加亮,直到PWM_ON=10,最亮,开始执行变暗程序。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)