📄 temp.c
字号:
do
{
COMMAND1=RCREG; //读取接收数据,同时清掉RCIF
}while(RCIF==1);
if(COMMAND0==0x90) //
{ delay();
COMMAND2=RCREG;
}
}
else
{CREN=0;
CREN=1;
}
Receive_Over=1; //接收完成标志。
}
} //中断结束并返回
//串行通信处理子程序
void COMMAND_PROCESS(void)
{
if(Receive_Over==1)
{
Receive_Over=0; //清除接收完成标志,准备下一次接收。
switch (COMMAND0)
{
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* case 0X80:TR_Senddata(0X80);TR_Senddata(CCPR1L);break; //发送PWM值。
case 0X81:ADGO=1;Filter(); break; //启动AD转换。
case 0X82:TR_Senddata(0X82);Initial_LCD();TR_Senddata(0Xff); break; //开背光灯。启动2561; start_tsl2561();Start=1
case 0X83:TR_Senddata(0X83); break; //关背光灯。停止2561 ;stop_tsl2561();Start=0 stop_tsl2561()
case 0X84:TR_Senddata(0X84);setdata0=setdataC>>2;TR_Senddata(setdata0); break;
case 0X85:TR_Senddata(0X85);SlaveWriteWord(0x04,COMMAND1);break;////////// Display_Character(COMMAND1)
case 0X86:TR_Senddata(0X86);slavedata0=SlaveReadByte(COMMAND1);TR_Senddata(slavedata0);break; //测试从机发送数据
case 0X87:TR_Senddata(0X87);StartConvert_DS1631();Start=1 ;break; //启动温度转换
case 0X88:TR_Senddata(0X88);StopConvert_DS1631();Start=0 ;break; //停止温度转换
case 0X89:TR_Senddata(0X89);Write_9886();TR_Senddata(1);break;//初始化通道
case 0X8A:TR_Senddata(0X8A);TV_number=Lock_Channel_UP(10);TR_Senddata(0x1);break;//扫描通道
case 0X8B:TR_Senddata(0X8B);Write_INTERNAL_EEPROM_MAIN(0x08,COMMAND1);TR_Senddata(0x11);break;//写数据到内部EEPROM Write_INTERNAL_EEPROM(0x08,COMMAND1);TR_Senddata(0x11);
case 0X8C:TR_Senddata(0X8C);slavedata0=Read_INTERNAL_EEPROM_MAIN(0x08);TR_Senddata(slavedata0);break;//读数据从内部EEPROM slavedata0=Read_INTERNAL_EEPROM(0x08);TR_Senddata(slavedata0)
case 0X90:TR_Senddata(0X90);Set_TunerUser(COMMAND1,COMMAND2);TR_Senddata(0x1);break;//手动设置频率
*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 0X80:TR_Senddata(0X80);TR_Senddata(CCPR1L);break; //
case 0X81:TR_Senddata(0X81);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x01);TR_Senddata(InEEPromData); break; //Bright
case 0X82:TR_Senddata(0X82);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x02);TR_Senddata(InEEPromData); break; //Contrast
case 0X83:TR_Senddata(0X83);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x03);TR_Senddata(InEEPromData); break; //CCFL
case 0X84:TR_Senddata(0X84);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x04);TR_Senddata(InEEPromData); break; //Auto color
case 0X85:TR_Senddata(0X85);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x05);TR_Senddata(InEEPromData); break; //R
case 0X86:TR_Senddata(0X86);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x06);TR_Senddata(InEEPromData); break; //G
case 0X87:TR_Senddata(0X87);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x07);TR_Senddata(InEEPromData); break; //B
case 0X88:TR_Senddata(0X88);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x08);TR_Senddata(InEEPromData); break; //Sharpness
case 0X89:TR_Senddata(0X89);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x09);TR_Senddata(InEEPromData); break; //Auto config
case 0X8A:TR_Senddata(0X8A);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x0A);TR_Senddata(InEEPromData); break; // 6500
case 0X8B:TR_Senddata(0X8B);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x0B);TR_Senddata(InEEPromData); break; // 9300
case 0X8C:TR_Senddata(0X8C);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x0C);TR_Senddata(InEEPromData); break; // DPMS
case 0X8D:TR_Senddata(0X8D);InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x0D);TR_Senddata(InEEPromData); break; //11000
case 0X91:TR_Senddata(0X91); // Read Back All the parameter
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x01);TR_Senddata(InEEPromData);
delay();
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x02);TR_Senddata(InEEPromData);
delay();
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x03);TR_Senddata(InEEPromData);
delay();
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x04);TR_Senddata(InEEPromData);
delay();
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x05);TR_Senddata(InEEPromData);
delay();
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x06);TR_Senddata(InEEPromData);
delay();
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x07);TR_Senddata(InEEPromData);
delay();
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x08);TR_Senddata(InEEPromData);
delay();
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x09);TR_Senddata(InEEPromData);
delay();
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x0A);TR_Senddata(InEEPromData);
delay();
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x0B);TR_Senddata(InEEPromData);
delay();
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x0C);TR_Senddata(InEEPromData);
delay();
InEEPromData=Read_INTERNAL_EEPROM_MAIN(0x0D);TR_Senddata(InEEPromData);
break; //
case 0x18:pwmnew=COMMAND1;pwmnew=pwmnew<<2;PWMadjust2(pwmnew);break; //调整PWM值。
//case 0X19:setdataC=COMMAND1;setdataC=setdataC<<2;DynamicAdjust();DynamicAdjust();DynamicAdjust();DynamicAdjust();DynamicAdjust(); break;
case 0x01:Write_INTERNAL_EEPROM_MAIN(0x01,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);break; //Bright // Write 0x11 to address 0x00 indicate Parameter has been changed.
case 0x02:Write_INTERNAL_EEPROM_MAIN(0x02,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);break; //Contrast
case 0x03:Write_INTERNAL_EEPROM_MAIN(0x03,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);break; //CCFL
case 0x04:Write_INTERNAL_EEPROM_MAIN(0x04,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);break; //Auto Color
case 0x05:Write_INTERNAL_EEPROM_MAIN(0x05,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);break; //R
case 0x06:Write_INTERNAL_EEPROM_MAIN(0x06,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);break; //G
case 0x07:Write_INTERNAL_EEPROM_MAIN(0x07,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);break; //B
case 0x08:Write_INTERNAL_EEPROM_MAIN(0x08,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);break; //Sharpness
case 0x09:Write_INTERNAL_EEPROM_MAIN(0x09,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);break; //Auto Config
case 0x0A:Write_INTERNAL_EEPROM_MAIN(0x0A,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);Write_INTERNAL_EEPROM_MAIN(0x0B,0x00);Write_INTERNAL_EEPROM_MAIN(0x0D,0x00);break; //6500 As set temp Color_Tempture,then clear another two color_Tempture
case 0x0B:Write_INTERNAL_EEPROM_MAIN(0x0B,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);Write_INTERNAL_EEPROM_MAIN(0x0A,0x00);Write_INTERNAL_EEPROM_MAIN(0x0D,0x00);break; //9300
case 0x0C:Write_INTERNAL_EEPROM_MAIN(0x0C,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);break; //DPMS ON/OFF
case 0x0D:Write_INTERNAL_EEPROM_MAIN(0x0D,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);Write_INTERNAL_EEPROM_MAIN(0x0A,0x00);Write_INTERNAL_EEPROM_MAIN(0x0B,0x00);break; //11000
case 0x0E:Write_INTERNAL_EEPROM_MAIN(0x0E,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);break; //save operation
case 0x0F:Write_INTERNAL_EEPROM_MAIN(0x0F,COMMAND1);Write_INTERNAL_EEPROM_MAIN(0x00,0x11);break; //Reserved
/*
case 0X80:TR_Senddata(0X80);TR_Senddata(CCPR1L);break; //
case 0X81:TR_Senddata(0X81);TR_Senddata(TransData[1]); break; //Bright InEEPromData=TransData[1];
case 0X82:TR_Senddata(0X82);TR_Senddata(TransData[2]); break; //Contrast InEEPromData=TransData[2];
case 0X83:TR_Senddata(0X83);TR_Senddata(TransData[3]); break; //CCFL InEEPromData=TransData[3];
case 0X84:TR_Senddata(0X84);TR_Senddata(TransData[4]); break; //Auto Color InEEPromData=TransData[4];
case 0X85:TR_Senddata(0X85);TR_Senddata(TransData[5]); break; //R InEEPromData=TransData[5];
case 0X86:TR_Senddata(0X86);TR_Senddata(TransData[6]); break; //G InEEPromData=TransData[6];
case 0X87:TR_Senddata(0X87);TR_Senddata(TransData[7]); break; //B InEEPromData=TransData[7];
case 0X88:TR_Senddata(0X88);TR_Senddata(TransData[8]); break; //Sharpness InEEPromData=TransData[8];
case 0X89:TR_Senddata(0X89);TR_Senddata(TransData[9]); break; //Auto Config InEEPromData=TransData[9];
case 0X8A:TR_Senddata(0X8A);TR_Senddata(TransData[10]); break; //6500 InEEPromData=TransData[10];
case 0X8B:TR_Senddata(0X8B);TR_Senddata(TransData[11]); break; //9300 InEEPromData=TransData[11];
case 0X8C:TR_Senddata(0X8C);TR_Senddata(TransData[12]); break; //DPMS ON/OFF InEEPromData=TransData[12];
// case 0X90:TR_Senddata(0X90); ;break; //
case 0x18:pwmnew=COMMAND1;pwmnew=pwmnew<<2;PWMadjust2(pwmnew);break; //调整PWM值。
//case 0X19:setdataC=COMMAND1;setdataC=setdataC<<2;DynamicAdjust();DynamicAdjust();DynamicAdjust();DynamicAdjust();DynamicAdjust(); break;
case 0x01:TransData[1]=COMMAND1;TransData[0]=0x11;break; //Bright // Write 0x11 to address 0x00 indicate Parameter has been changed.
case 0x02:TransData[2]=COMMAND1;TransData[0]=0x11;break; //Contrast
case 0x03:TransData[3]=COMMAND1;TransData[0]=0x11;break; //CCFL
case 0x04:TransData[4]=COMMAND1;TransData[0]=0x11;break; //Auto Color
case 0x05:TransData[5]=COMMAND1;TransData[0]=0x11;break; //R
case 0x06:TransData[6]=COMMAND1;TransData[0]=0x11;break; //G
case 0x07:TransData[7]=COMMAND1;TransData[0]=0x11;break; //B
case 0x08:TransData[8]=COMMAND1;TransData[0]=0x11;break; //Sharpness
case 0x09:TransData[9]=COMMAND1;TransData[0]=0x11;break; //Auto Config
case 0x0A:TransData[10]=COMMAND1;TransData[0]=0x11;break; //6500
case 0x0B:TransData[11]=COMMAND1;TransData[0]=0x11;break; //9300
case 0x0C:TransData[12]=COMMAND1;TransData[0]=0x11;break; //DPMS ON/OFF
*/
//case 0x09:Write_INTERNAL_EEPROM_MAIN(0x09,COMMAND1);TR_Senddata(0x11);break; //
default: break;
}//switch end
} // if end
if(ADCconvert_over==1)
{
ADCconvert_over=0; //清AD转换完成标志,准备接收下一次转换结果。
TR_Senddata(AD_Result_high);
//delay();
TR_Senddata(AD_Result_low);
}
}
//主程序//
main()
{
//TRISB=0X00; //设置相应口的输入输出方式
//OPTION=0x7F; //B口弱上拉有效
//PORTB=0XFF;
//////////////////////////////////////////////////////////////////////////////////
//i2c_init(); //iic模块初始化
slavei2c_init(); //从机通信初始化
CCP1INIT1(); //CCP1模块的PWM工作方式初始化
sciint(); //串行通信初始化。
T2CON=0X04; //打开TMR2,且使其前分频为0,
//同时开始输出PWM波形
adinitial();
INTCON=0XC0; //外围中断允许,总中断允许
///////////////////////////////////////////////////////////////////////////////
// INTEDG=0; //RB0中断为下降沿触发
// INTE=1; //RB0中断允许
//iic_initial(); //初始化B口,模拟IIC
// Config(); //配置tsl2561
//////////////////////////////////////////////////////////////////
// Config_DS1631(); //配置DS1631
// WriteThTl_Register(0xA1,0x7D,0x00); //设置高低界限
// WriteThTl_Register(0xA2,0xC9,0x00);
///////////////////////////////////////////////////////////////////////////////
RCIE=1; //接收中断允许
TXEN=1; //发送允许
CREN=1; //接收数据允许
///////////////////////////////////////////////////////////////////////////////
// power_on();
delaytimes(9255);
asm("clrwdt");
//write(0x1234,0xdb,1);
//I_byte_write(0xa0,0x20,0xdc);
// kk=0;
////////////////////////////////////////////////////////////////////////////////
do
{
/* kk++;
if(kk==0xFFFD && Start==1)
{
kk=0;
asm("clrwdt");
DS1631result=Read_Temperature();
DS1631result=DS1631result >> 4;
TR_Send_Word(DS1631result);
}
*/
COMMAND_PROCESS();
//DynamicAdjust();
asm("clrwdt");
}while(1); //系统开始输出PWM波形。系统是
//多任务的,不会影响PWM波形的产生.
//////////////////////////////////////////////////////////////////////////////
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -