//__________________________________________________________________________________ //版权:温州电子开发实验室 夏德仙 www.rf315.net //用途:本程序仅限学习与交流之用 //创建日期:2006 //最后修改日期: //___________________________________________________________________________________ #include __CONFIG (INTIO & WDTDIS & BORDIS & UNPROTECT & MCLREN); #define nop() asm("nop") #define KEY GPIO4 //将GP4定义为按键 #define LED GPIO2 //将GP2定义为LED的输出 bit time_go; unsigned int ID,ad_result; void init(void); void init(void) { TRISIO = 0X10; //选择AN1,AN2为模拟输入端,其他为输出 ANSEL = 0X08; //选择AN1,AN2为模拟输入端,其他为数字输出 OPTION = 0X07; //分频1/256 LED = 0X01; //开启消毒器 GIE = 1; //使能所有未屏蔽的中断 T0IE = 1; //使能TMR0 溢出中断 VCFG = 0; //选用VDD参考电压 CMCON = 0x07; ID = 0; time_go = 0; } void ad_change(void) //温度 { unsigned char i; ADON=1; //打开A/D 模块 ad_result=0x0000; for(i = 0;i < 8;i++) { ADFM = 1; CHS1 = 1; CHS0 = 1;//通道AN3 nop(); nop(); nop(); nop(); nop(); nop(); nop(); GODONE = 1;//开始启动A/D转换 while(GODONE)//一次转换200微秒 {;} ad_result=ad_result+ADRESL; ADRESH=ADRESH&0b00000011; ad_result=ad_result+256*ADRESH; } ad_result=ad_result/8; nop(); } void interrupt time0_int(void)//每5毫秒产生一次中断 { if(T0IF == 1) // 时间中断标志 { T0IF = 0; TMR0 = 0XEC; ID++; } if(ID>=200) { ID=0; time_go=!time_go; } } main() { init(); while(1) { //if(time_go==1) // LED=0; //if(time_go==0) LED=1; //if(ad_result>800) } }