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

📄 temp.c

📁 该程序是pic单片机程序
💻 C
📖 第 1 页 / 共 2 页
字号:
          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 + -