专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
关于stc12c5a60s2 想实现用按键控制输出pwm占空比可调的问题
2019-07-15 14:00
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
10200
2
1776
一个按键增加亮度 一个按键减少亮度 还有一个按键用来切换不同光的值 请问谁会写这个程序
最好是c的
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
糖糖sp
1楼-- · 2019-07-15 19:51
#include "STC12C5620AD.h"
#include <intrins.h>
/***************************大量宏定义区,便于代码移植**************************************/
#define UINT8 unsigned char
#define UINT16 unsigned int
#define FOSC 18432000L
#define BAUD 9600
#define MODE 1T
#ifdef MODE 1T
#define T1MS (65536-FOSC/1000) /*1T模式下的1ms定时*/
#else
#define T1MS (65536-FOSC/12/1000) /*12T模式下的1ms定时*/
#endif
/*Define ADC operation const for ADC_CONTR*/
#define ADC_POWER 0x80 //ADC power control bit
#define ADC_FLAG 0x10 //ADC complete flag
#define ADC_START 0x08 //ADC start control bit
#define ADC_SPEEDLL 0x00 //420 clocks
#define ADC_SPEEDL 0x20 //280 clocks
#define ADC_SPEEDH 0x40 //140 clocks
#define ADC_SPEEDHH 0x60 //70 clocks
UINT16 count, comm;
UINT8 temp,value;
UINT8 ch; /*AD通道*/
UINT8 data IRcode[4]; //定义一个4字节的数组用来存储代码
UINT8 CodeTemp,charsend,i,j,k; //编码字节缓存变量
UINT8 Adust=0;
bit flag;
bit GotoIRcontrol;
sbit SM0038 = P3^2;
/**************************子函数声明区********************************************/
void USART_Init(void);
void ADC_Init(void);
void PWM_Init(void);
void SendData(UINT8 dat);
UINT8 ReceivData(void);
UINT8 GetADCResult(UINT8 ch);
void PWMSet(UINT8 a);
void Delay(UINT16 n);
void PWM_AdustLight(void);
void TIMER0_Init(void);
void IR_AdustLight(void);
void EXT0_Init(void);
void delay2ms(void);
void delay140us(void);
void delay8ms(void);
/**********************************主函数*****************************************/
void main(void)
{
EXT0_Init();
USART_Init();
ADC_Init();
PWM_Init();
// TIMER0_Init();
EA = 1; //开总中断
while(1)
{
if(Adust==1)
{
ES=1; //允许串口中断
if(comm==0x7a)
{
value=GetADCResult(3); /*P1.3作为AD模拟模拟输入,即第3频道*/
PWMSet(value);
SendData(value); /*将value发送到上位机软件显示*/
Delay(3); /*此延时为S*/
}
// //PWM_AdustLight(); /*根据value的值调整PWM的输出*/
}
if(GotoIRcontrol==1)
{
GotoIRcontrol=0;
IR_AdustLight(); /*红外遥控调光*/
}
}
}
/**************************************************************************************
*函数名称:void USART_Init()(void)
*输 入:无
*输 出:无
*功 能:串口初始化,波特率为9600bsp
**************************************************************************************/
void USART_Init(void)
{
#ifdef MODE 1T
AUXR=0xC0; /*AUXR寄存器中T0x12与T1x12决定,本程序中T0,T1都为1T模式*/
#endif
SCON=0x5a; /*工作模式1、REN接收使能位为1*/
TMOD=0x21;
TL1=TH1=-(FOSC/32/BAUD);
TR1=1;
}
/**************************************************************************************
*函数名称:void SendData()
*输 入:串口要发送的数值
*输 出:无
*功 能:串口发送一个字节
**************************************************************************************/
void SendData(UINT8 dat)
{
while(!TI);
TI=0;
SBUF=dat;
}
///**************************************************************************************
//*函数名称:void ReceivData()
//*输 入:无
//*输 出:返回接收值
//*功 能:串口接收一个字节
//**************************************************************************************/
//UINT8 ReceivData(void)
// {
// while(!RI);
// RI=0;
// dat=SBUF;
// return dat;
//
// }
/**************************************************************************************
*函数名称:void UartIRQ(void)
*输 入:无
*输 出:无
*功 能:串口中断函数
**************************************************************************************/
void UartIRQ(void) interrupt 4
{
if(RI) //检测RI接收置 1
RI=0; //软件给RI 清零
comm=SBUF; //读取接收到的数据
if(comm == 0x63) //上位机自动查找采集器是否在线
{
comm = 0;
SendData(0x63); //发送CP的ASCII码
SendData(0x70);
}
}
/**************************************************************************************
*函数名称:void ADC_Init()
*输 入:无
*输 出:无
*功 能:ADC初始化
**************************************************************************************/
/*void ADC_Init(void)
{
P1=P1M0=P1M1=0xFF;
ADC_DATA=0;
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
Delay(2);
}
/**************************************************************************************
*函数名称:UINT8 GetADCResult()
*输 入:频道ch
*输 出:频道ch的AD值
*功 能:获得频道ch的的AD值
**************************************************************************************/
/*UINT8 GetADCResult(UINT8 ch)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_(); //Must wait before inquiry
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag
ADC_CONTR &= ~ADC_FLAG; //Close ADC
return ADC_DATA; /*转化的为8位数值的结果,如果要12位的则返回ADC_LOW2*/
// }
/**************************************************************************************
*函数名称:void Delay(UINT16 n)
*输 入:n
*输 出:无
*功 能:延时函数
**************************************************************************************/
void Delay(UINT16 n)
{
UINT16 i;
while(n--)
{
i=5000;
while(i--);
}
}
/**************************************************************************************
*函数名称:void PWM_Init()
*输 入:无
*输 出:无
*功 能:PWM0初始化(P3.7)
**************************************************************************************/
void PWM_Init(void)
{
CCON=0;
CL=0; /*PCA计数器低八位置0*/
CH=0; /*PCA计数器高八位置0*/
CMOD=0x02; /*PCA工作模式*/
CCAPM0=0x42; /*设置PWM0输出*/
CCAP0L=0x00; /*初始化设置占空比为0%*/
CCAP0H=0x00;
CR=1; /*打开PCA定时器*/
}
/**************************************************************************************
*函数名称:void PWMSet(UINT8 a)
*输 入:所设PWM占空比的数值(0~FFH)
*输 出:无
*功 能:设置PWM的占空比
**************************************************************************************/
void PWMSet(UINT8 a)
{
CCAP0L=a;
CCAP0H=a;
}
/**************************************************************************************
*函数名称:void PWM_AdustLight(void)
*输 入:无
*输 出:无
*功 能:PWM调光函数
*备 注:
**************************************************************************************/
void PWM_AdustLight(void)
{
if(value>=0xC0)
PWMSet(0xE6); /*占空比95%*/
else if(value>=0x80&&value<=0xC0)
PWMSet(0x80); /*占空比50%*/
else if(value>=0x40&&value<=0x80)
PWMSet(0x40); /*占空比25%*/
else
PWMSet(0x00); /*占空比0%*/
}
/**************************************************************************************
*函数名称:void TIMER0_Init()
*输 入:无
*输 出:无
*功 能:定时器0初始化
**************************************************************************************/
void TIMER0_Init(void)
{
//TMOD=0x01; /*在USART_Init()中已打开*/
TL0=T1MS; /*不用求余*/
TH0=T1MS>>8;
TR0=1;
ET0=1;
//EA=1; /*在USART_Init()中已打开*/
count=0;
}
/**************************************************************************************
*函数名称:void Timer0_isr()
*输 入:无
*输 出:无
*功 能:定时器0中断函数
**************************************************************************************/
void Timer0_isr() interrupt 1
{
TL0=T1MS;
TH0=T1MS>>8;
if(count-- ==0)
{
count=1000; /*5ms的定时*/
flag=1;
}
}
/**************************************************************************************
*函数名称:void EXT0_Init()
*输 入:无
*输 出:无
*功 能:定时器0初始化
**************************************************************************************/
void EXT0_Init(void)
{
EX0= 1;//开外部中断1
IT0 = 1;//外部中断1负边沿触发
}
/**************************************************************************************
*函数名称:void EXT0_isr(void)
*输 入:无
*输 出:无
*功 能:外部中断0函数
**************************************************************************************/
void EXT0_isr(void) interrupt 0 using 0
{
UINT8 N = 0;
ES=0; //关闭串口中断,减少对红外解码的影响
EX0 = 0;
delay2ms();
if(SM0038 == 1)
{
EX0 =1;
return;
}
//确认IR信号出现
while(!SM0038); //跳过9ms低电平
while(SM0038);//跳过4.5ms高电平
for(i = 0;i < 4;i ++) // 分别读取4个字节
{
for(j = 0;j < 8;j ++) //每个字节8个bit的判断
{
while(SM0038 == 0);//等待上升沿
while(SM0038)
{
delay140us();
N ++; //此处N用来计数
if(N>=30)
{
EX0 = 1; //0.14ms计数过长自动离开。
return;
}
}
CodeTemp = CodeTemp >> 1;
if(N >= 8)
{
CodeTemp = CodeTemp | 0x80;
}
N = 0;
}
IRcode[i] = CodeTemp;
CodeTemp = 0;
}
if (IRcode[2]!=~IRcode[3])
{
EX0=1;
return;
}
EX0 = 1;
GotoIRcontrol=1; /*红外调光显示标志*/
}
/**************************************************************************************
*函数名称:void delay2ms(void)
*输 入:无
*输 出:无
*功 能:延时函数
**************************************************************************************/
void delay2ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=5;c>0;c--)
for(b=68;b>0;b--)
for(a=31;a>0;a--);
}
/**************************************************************************************
*函数名称:void delay140us(void)
*输 入:无
*输 出:无
*功 能:延时函数
**************************************************************************************/
void delay140us(void) //误差 -0.026041666667us
{
unsigned char a,b;
for(b=103;b>0;b--)
for(a=6;a>0;a--);
}
/**************************************************************************************
*函数名称:void delay8ms(void)
*输 入:无
*输 出:无
*功 能:延时函数
**************************************************************************************/
void delay8ms(void) //误差 -0.054253472222us
{
unsigned char a,b,c;
for(c=90;c>0;c--)
for(b=196;b>0;b--)
for(a=1;a>0;a--);
}
/**************************************************************************************
*函数名称:void IR_AdustLight(void)
*输 入:无
*输 出:无
*功 能:PWM调光函数
*备 注:先进行分档式调光
**************************************************************************************/
void IR_AdustLight(void)
{
temp = IRcode[2];
if(temp==0x0C)
{
delay8ms();
if(temp==0x0C) /*1*/
{
PWMSet(0xE6);
}
}
if(temp==0x18)
{
delay8ms();
if(temp==0x18) /*2*/
{
PWMSet(0xBC);
}
}
if(temp==0x5E)
{
delay8ms();
if(temp==0x5E) /*3*/
{
PWMSet(0x80);
}
}
if(temp==0x08)
{
delay8ms();
if(temp==0x08) /*4*/
{
PWMSet(0x4E);
}
}
if(temp==0x1C)
{
delay8ms();
if(temp==0x1C) /*5*/
{
PWMSet(0x3E);
}
}
if(temp==0x19)
{
delay8ms();
if(temp==0x19) /*6用100+代替*/
{
PWMSet(0x1E);
}
}
if(temp==0x42)
{
delay8ms();
if(temp==0x42) /*7*/
{
PWMSet(0x14);
}
}
if(temp==0x52)
{
delay8ms();
if(temp==0x52) /*8*/
{
PWMSet(0x0A);
}
}
if(temp==0x0D)
{
delay8ms();
if(temp==0x0D) /*9用200+代替*/
{
PWMSet(0x03);
}
}
if(temp==0x45)
{
delay8ms();
if(temp==0x45) /*开灯*/
{
PWMSet(0x10);
}
}
if(temp==0x46)
{
delay8ms();
if(temp==0x46) /*关灯*/
{
PWMSet(0xff);
}
}
if(temp==0x09)
{
delay8ms();
if(temp==0x09) /*控制是红外还是自适应调光*/
{
Adust=!Adust;
}
}
}
加载中...
糖糖sp
2楼-- · 2019-07-16 01:50
精彩回答 2 元偷偷看……
加载中...
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
东软载波ESF0654 PDS开发板串口USART0代码分享
1 个回答
普通32位单片机使用linux的应用代码
5 个回答
东软载波ESF0654 PDS开发板AT24C04的调试
9 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#include <intrins.h>
/***************************大量宏定义区,便于代码移植**************************************/
#define UINT8 unsigned char
#define UINT16 unsigned int
#define FOSC 18432000L
#define BAUD 9600
#define MODE 1T
#ifdef MODE 1T
#define T1MS (65536-FOSC/1000) /*1T模式下的1ms定时*/
#else
#define T1MS (65536-FOSC/12/1000) /*12T模式下的1ms定时*/
#endif
/*Define ADC operation const for ADC_CONTR*/
#define ADC_POWER 0x80 //ADC power control bit
#define ADC_FLAG 0x10 //ADC complete flag
#define ADC_START 0x08 //ADC start control bit
#define ADC_SPEEDLL 0x00 //420 clocks
#define ADC_SPEEDL 0x20 //280 clocks
#define ADC_SPEEDH 0x40 //140 clocks
#define ADC_SPEEDHH 0x60 //70 clocks
UINT16 count, comm;
UINT8 temp,value;
UINT8 ch; /*AD通道*/
UINT8 data IRcode[4]; //定义一个4字节的数组用来存储代码
UINT8 CodeTemp,charsend,i,j,k; //编码字节缓存变量
UINT8 Adust=0;
bit flag;
bit GotoIRcontrol;
sbit SM0038 = P3^2;
/**************************子函数声明区********************************************/
void USART_Init(void);
void ADC_Init(void);
void PWM_Init(void);
void SendData(UINT8 dat);
UINT8 ReceivData(void);
UINT8 GetADCResult(UINT8 ch);
void PWMSet(UINT8 a);
void Delay(UINT16 n);
void PWM_AdustLight(void);
void TIMER0_Init(void);
void IR_AdustLight(void);
void EXT0_Init(void);
void delay2ms(void);
void delay140us(void);
void delay8ms(void);
/**********************************主函数*****************************************/
void main(void)
{
EXT0_Init();
USART_Init();
ADC_Init();
PWM_Init();
// TIMER0_Init();
EA = 1; //开总中断
while(1)
{
if(Adust==1)
{
ES=1; //允许串口中断
if(comm==0x7a)
{
value=GetADCResult(3); /*P1.3作为AD模拟模拟输入,即第3频道*/
PWMSet(value);
SendData(value); /*将value发送到上位机软件显示*/
Delay(3); /*此延时为S*/
}
// //PWM_AdustLight(); /*根据value的值调整PWM的输出*/
}
if(GotoIRcontrol==1)
{
GotoIRcontrol=0;
IR_AdustLight(); /*红外遥控调光*/
}
}
}
/**************************************************************************************
*函数名称:void USART_Init()(void)
*输 入:无
*输 出:无
*功 能:串口初始化,波特率为9600bsp
**************************************************************************************/
void USART_Init(void)
{
#ifdef MODE 1T
AUXR=0xC0; /*AUXR寄存器中T0x12与T1x12决定,本程序中T0,T1都为1T模式*/
#endif
SCON=0x5a; /*工作模式1、REN接收使能位为1*/
TMOD=0x21;
TL1=TH1=-(FOSC/32/BAUD);
TR1=1;
}
/**************************************************************************************
*函数名称:void SendData()
*输 入:串口要发送的数值
*输 出:无
*功 能:串口发送一个字节
**************************************************************************************/
void SendData(UINT8 dat)
{
while(!TI);
TI=0;
SBUF=dat;
}
///**************************************************************************************
//*函数名称:void ReceivData()
//*输 入:无
//*输 出:返回接收值
//*功 能:串口接收一个字节
//**************************************************************************************/
//UINT8 ReceivData(void)
// {
// while(!RI);
// RI=0;
// dat=SBUF;
// return dat;
//
// }
/**************************************************************************************
*函数名称:void UartIRQ(void)
*输 入:无
*输 出:无
*功 能:串口中断函数
**************************************************************************************/
void UartIRQ(void) interrupt 4
{
if(RI) //检测RI接收置 1
RI=0; //软件给RI 清零
comm=SBUF; //读取接收到的数据
if(comm == 0x63) //上位机自动查找采集器是否在线
{
comm = 0;
SendData(0x63); //发送CP的ASCII码
SendData(0x70);
}
}
/**************************************************************************************
*函数名称:void ADC_Init()
*输 入:无
*输 出:无
*功 能:ADC初始化
**************************************************************************************/
/*void ADC_Init(void)
{
P1=P1M0=P1M1=0xFF;
ADC_DATA=0;
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
Delay(2);
}
/**************************************************************************************
*函数名称:UINT8 GetADCResult()
*输 入:频道ch
*输 出:频道ch的AD值
*功 能:获得频道ch的的AD值
**************************************************************************************/
/*UINT8 GetADCResult(UINT8 ch)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_(); //Must wait before inquiry
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag
ADC_CONTR &= ~ADC_FLAG; //Close ADC
return ADC_DATA; /*转化的为8位数值的结果,如果要12位的则返回ADC_LOW2*/
// }
/**************************************************************************************
*函数名称:void Delay(UINT16 n)
*输 入:n
*输 出:无
*功 能:延时函数
**************************************************************************************/
void Delay(UINT16 n)
{
UINT16 i;
while(n--)
{
i=5000;
while(i--);
}
}
/**************************************************************************************
*函数名称:void PWM_Init()
*输 入:无
*输 出:无
*功 能:PWM0初始化(P3.7)
**************************************************************************************/
void PWM_Init(void)
{
CCON=0;
CL=0; /*PCA计数器低八位置0*/
CH=0; /*PCA计数器高八位置0*/
CMOD=0x02; /*PCA工作模式*/
CCAPM0=0x42; /*设置PWM0输出*/
CCAP0L=0x00; /*初始化设置占空比为0%*/
CCAP0H=0x00;
CR=1; /*打开PCA定时器*/
}
/**************************************************************************************
*函数名称:void PWMSet(UINT8 a)
*输 入:所设PWM占空比的数值(0~FFH)
*输 出:无
*功 能:设置PWM的占空比
**************************************************************************************/
void PWMSet(UINT8 a)
{
CCAP0L=a;
CCAP0H=a;
}
/**************************************************************************************
*函数名称:void PWM_AdustLight(void)
*输 入:无
*输 出:无
*功 能:PWM调光函数
*备 注:
**************************************************************************************/
void PWM_AdustLight(void)
{
if(value>=0xC0)
PWMSet(0xE6); /*占空比95%*/
else if(value>=0x80&&value<=0xC0)
PWMSet(0x80); /*占空比50%*/
else if(value>=0x40&&value<=0x80)
PWMSet(0x40); /*占空比25%*/
else
PWMSet(0x00); /*占空比0%*/
}
/**************************************************************************************
*函数名称:void TIMER0_Init()
*输 入:无
*输 出:无
*功 能:定时器0初始化
**************************************************************************************/
void TIMER0_Init(void)
{
//TMOD=0x01; /*在USART_Init()中已打开*/
TL0=T1MS; /*不用求余*/
TH0=T1MS>>8;
TR0=1;
ET0=1;
//EA=1; /*在USART_Init()中已打开*/
count=0;
}
/**************************************************************************************
*函数名称:void Timer0_isr()
*输 入:无
*输 出:无
*功 能:定时器0中断函数
**************************************************************************************/
void Timer0_isr() interrupt 1
{
TL0=T1MS;
TH0=T1MS>>8;
if(count-- ==0)
{
count=1000; /*5ms的定时*/
flag=1;
}
}
/**************************************************************************************
*函数名称:void EXT0_Init()
*输 入:无
*输 出:无
*功 能:定时器0初始化
**************************************************************************************/
void EXT0_Init(void)
{
EX0= 1;//开外部中断1
IT0 = 1;//外部中断1负边沿触发
}
/**************************************************************************************
*函数名称:void EXT0_isr(void)
*输 入:无
*输 出:无
*功 能:外部中断0函数
**************************************************************************************/
void EXT0_isr(void) interrupt 0 using 0
{
UINT8 N = 0;
ES=0; //关闭串口中断,减少对红外解码的影响
EX0 = 0;
delay2ms();
if(SM0038 == 1)
{
EX0 =1;
return;
}
//确认IR信号出现
while(!SM0038); //跳过9ms低电平
while(SM0038);//跳过4.5ms高电平
for(i = 0;i < 4;i ++) // 分别读取4个字节
{
for(j = 0;j < 8;j ++) //每个字节8个bit的判断
{
while(SM0038 == 0);//等待上升沿
while(SM0038)
{
delay140us();
N ++; //此处N用来计数
if(N>=30)
{
EX0 = 1; //0.14ms计数过长自动离开。
return;
}
}
CodeTemp = CodeTemp >> 1;
if(N >= 8)
{
CodeTemp = CodeTemp | 0x80;
}
N = 0;
}
IRcode[i] = CodeTemp;
CodeTemp = 0;
}
if (IRcode[2]!=~IRcode[3])
{
EX0=1;
return;
}
EX0 = 1;
GotoIRcontrol=1; /*红外调光显示标志*/
}
/**************************************************************************************
*函数名称:void delay2ms(void)
*输 入:无
*输 出:无
*功 能:延时函数
**************************************************************************************/
void delay2ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=5;c>0;c--)
for(b=68;b>0;b--)
for(a=31;a>0;a--);
}
/**************************************************************************************
*函数名称:void delay140us(void)
*输 入:无
*输 出:无
*功 能:延时函数
**************************************************************************************/
void delay140us(void) //误差 -0.026041666667us
{
unsigned char a,b;
for(b=103;b>0;b--)
for(a=6;a>0;a--);
}
/**************************************************************************************
*函数名称:void delay8ms(void)
*输 入:无
*输 出:无
*功 能:延时函数
**************************************************************************************/
void delay8ms(void) //误差 -0.054253472222us
{
unsigned char a,b,c;
for(c=90;c>0;c--)
for(b=196;b>0;b--)
for(a=1;a>0;a--);
}
/**************************************************************************************
*函数名称:void IR_AdustLight(void)
*输 入:无
*输 出:无
*功 能:PWM调光函数
*备 注:先进行分档式调光
**************************************************************************************/
void IR_AdustLight(void)
{
temp = IRcode[2];
if(temp==0x0C)
{
delay8ms();
if(temp==0x0C) /*1*/
{
PWMSet(0xE6);
}
}
if(temp==0x18)
{
delay8ms();
if(temp==0x18) /*2*/
{
PWMSet(0xBC);
}
}
if(temp==0x5E)
{
delay8ms();
if(temp==0x5E) /*3*/
{
PWMSet(0x80);
}
}
if(temp==0x08)
{
delay8ms();
if(temp==0x08) /*4*/
{
PWMSet(0x4E);
}
}
if(temp==0x1C)
{
delay8ms();
if(temp==0x1C) /*5*/
{
PWMSet(0x3E);
}
}
if(temp==0x19)
{
delay8ms();
if(temp==0x19) /*6用100+代替*/
{
PWMSet(0x1E);
}
}
if(temp==0x42)
{
delay8ms();
if(temp==0x42) /*7*/
{
PWMSet(0x14);
}
}
if(temp==0x52)
{
delay8ms();
if(temp==0x52) /*8*/
{
PWMSet(0x0A);
}
}
if(temp==0x0D)
{
delay8ms();
if(temp==0x0D) /*9用200+代替*/
{
PWMSet(0x03);
}
}
if(temp==0x45)
{
delay8ms();
if(temp==0x45) /*开灯*/
{
PWMSet(0x10);
}
}
if(temp==0x46)
{
delay8ms();
if(temp==0x46) /*关灯*/
{
PWMSet(0xff);
}
}
if(temp==0x09)
{
delay8ms();
if(temp==0x09) /*控制是红外还是自适应调光*/
{
Adust=!Adust;
}
}
}
一周热门 更多>