5
10
75
注册会员
#include "reg51.h" #include "intrins.h" //STC15w204s void key_scan(void); //ÉùÃ÷¿ª¹ØÉ¨Ãè unsigned char t1=1; //µÚһ·¶¨Ê±¿ª unsigned char t2=1; //µÚ¶þ·¶¨Ê±¿ª unsigned int hm1,hm2; //ºÁÃë unsigned int m1,m2; //Ãë sbit b= P3^2; //7½ÅָʾµÆ¿ØÖƽŠsbit a=P3^3; //8½Å¿ØÖƽŠsfr CMPCR1 = 0xE6; // ±È½ÏÆ÷¿ØÖƼĴæÆ÷1 #define CMPEN 0x80 // CMPCR1.7 :±È½ÏÆ÷Ä£¿éʹÄÜλ #define CMPIF 0x40 // CMPCR1.6 : ±È½ÏÆ÷Öжϱê־λ #define PIE 0x20 // CMPCR1.5 :±È½ÏÆ÷ÉÏÉýÑØÖжÏʹÄÜλ #define PIS 0x08 //CMPCR1.3 :±È½ÏÆ÷Õý¼«Ñ¡Ôñλ #define NIS 0x04 //CMPCR1.2 :±È½ÏÆ÷¸º¼«Ñ¡Ôñλ #define CMPOE 0x02 //CMPCR1.1 :±È½ÏÆ÷Êä³ö½á¹û¿ØÖÆÎ» #define CMPRES 0x01 //CMPCR1.0 : ±È½ÏÆ÷±È½Ï½á¹û±ê־λ sfr CMPCR2 = 0xE7; //±È½ÏÆ÷¿ØÖƼĴæÆ÷2 #define INVCMPO 0x80 //±È½ÏÆ÷½á¹û·´ÏòÊä³ö¿ØÖÆÎ» #define DISFLT 0x40 //±È½ÏÆ÷Êä³öÂ˲¨Ê¹ÄÜ¿ØÖÆÎ» #define LCDTY 0x3F //±È½ÏÆ÷Êä³öµÄÇø¶¶Ê±¼ä¿ØÖÆ P5M1 = 0x30; //P5.4½ÅΪ¸ß×èÊäÈëÉùÃ÷ P5M0 = 0x00; //P5.5½ÅΪ¸ß×èÊäÈëÉùÃ÷ void cmp_isr() interrupt 21 using 1 //±È½ÏÆ÷ÖжÏÏòÁ¿Èë¿Ú { CMPCR1 &= ~CMPIF; //Çå³ýÍê³É±êÖ¾ // a = !!(CMPCR1 & CMPRES); //½«±È½ÏÆ÷½á¹ûCMPRESÊä³ö²âÊÔ¿ÚÏÔʾ // b = !!(CMPCR1 & CMPRES); //½«±È½ÏÆ÷½á¹ûCMPRESÊä³ö²âÊÔ¿ÚÏÔʾ } void Timer0_Init(void) //50ºÁÃë12·ÖƵ@11.0592MHz { TMOD &= 0xF0; //¶¨Ê±Æ÷ģʽ0 TL0 = 0x00; //ÉèÖö¨Ê±Æ÷³õʼ»¯ TH0 = 0x4C; //ÉèÖö¨Ê±Æ÷³õʼ»¯ TF0 = 0; //Çå³ýTF0±êÖ¾ TR0 = 1; //¶¨Ê±Æ÷0¿ªÊ¼¼ÆÊ±¿ª ET0=1; //ʹÄܶ¨Ê±Æ÷ÖжϿª EA=1; //×Ü¿ª¹Ø¿ª PT0=1;//¸ßÓÅÏȼ¶ } void main() { Timer0_Init(); CMPCR1 = 0; //³õʼ»¯±È½ÏÆ÷¿ØÖƼĴæÆ÷1 CMPCR2 = 0; //³õʼ»¯±È½ÏÆ÷¿ØÖƼĴæÆ÷2 CMPCR1 &= ~PIS; //Ñ¡ÔñÍⲿp5.5Ϊ±È½ÏÆ÷Õý¼«ÊäÈëÔ´ // CMPCR1 |= NIS; //Ñ¡ÔñÍⲿp5.4Ϊ±È½ÏÆ÷¸º¼«ÊäÈëÔ´ CMPCR1 &= ~NIS; //Ñ¡ÔñÄÚ²¿BandGapµçѹBGVΪ±È½ÏÆ÷µÄ¸º¼«ÊäÈëÔ´ CMPCR1 |= CMPEN;//ʹÄÜ±È½ÏÆ÷ CMPCR1 &= ~CMPIF; //Çå³ýÍê³É±êÖ¾ CMPCR2 &= ~DISFLT; //ʹÄÜ±È½ÏÆ÷Êä³ö¶ËµÄ0.1us ÂËÆÃµç· CMPCR1 |= PIE; //±È½ÏÆ÷ÉÏÉýÑØÖжÏʹÄÜλ a =~ !!(CMPCR1 & CMPRES); //½«±È½ÏÆ÷½á¹ûCMPRESÊä³ö²âÊÔ¿ÚÏÔʾ b =~ !!(CMPCR1 & CMPRES); //½«±È½ÏÆ÷½á¹ûCMPRESÊä³ö²âÊÔ¿ÚÏÔʾ // while (!(CMPCR1 & CMPIF)); //²éѯ±È½ÏÍê³É±êÖ¾ P5M1 = 0x30; //P5.4½ÅΪ¸ß×èÊäÈë P5M0 = 0x00; //P5.4½ÅΪ¸ß×èÊäÈë while (1) { static signed char zt=0; //״̬»ú ¾²Ì¬±äÁ¿ { if((CMPCR1 & 0x01)==1 && m2 <120) //µÚ¶þ· ´Óͨµç¿ªÊ¼20·ÖÖÓÒÔÄÚ { hm1=0; //ÇåÁãµÚһ·ºÁÃë m1=0; //ÇåÁãµÚһ·Ãë } } switch (zt) //״̬»ú50ºÁÃë½øÀ´Ò»´Î { case 0: { if((CMPCR1 & 0x01)==1) //µÚÒ»´ÎµÈÓÚ50ºÁÃë½øÀ´±È½ÏÆ÷Õý±È¸ºÈ·Êµ¸ß { zt=1; } break; } case 1: { if((CMPCR1 & 0x01)==1) //µÚ¶þ´ÎµÈÓÚ100ºÁÃë½øÀ´±È½ÏÆ÷Õý±È¸ºÈ·Êµ¸ß { zt=2; //״̬2 b=0; //7½ÅÊä³öµÍµçƽÿÂ̵ÆÃð } else { zt=0; //·ñÔò»Øµ½×´Ì¬0 } } { break; } case 2: if((CMPCR1 & 0x01)==0) //µÚÒ»´ÎµÈÓÚ50ºÁÃë½øÀ´±È½ÏÆ÷Õý±È¸ºÈ·ÊµµÍ { zt=3; //״̬3 } { break; } case 3: { if((CMPCR1 & 0x01)==0) //µÚ¶þ´ÎµÈÓÚ100ºÁÃë½øÀ´±È½ÏÆ÷Õý±È¸ºÈ·ÊµµÍ { zt=0; b=1; //7½ÅÊä³ö¸ßµçƽÿÂ̵ÆÃð } else { zt=2; //·ñÔò»Øµ½×´Ì¬2 } break; } default: { break; } } } } //¶¨Ê±Æ÷ÖÐ¶Ï ³õʼ»¯ void Timer0_Rountine(void) interrupt 1 { if(t1) //µÚһ·¶¨Ê±20·ÖÖÓ¼Ó±È½ÏÆ÷¸ß30µÈÓÚ50·ÖÖÓÖ®¶à£¬±È½ÏÆ÷µÍÔÝÍ£¼ÆÊ± { if((CMPCR1 & 0x01)==1) //±È½ÏÆ÷Õý±È¸ºÈ·Êµ¸ß hm1++; //ºÁÃë¼Ó¼Ó if(hm1==40) // µÈÓÚ´Î ÅжÏ50ºÁÃë½øÀ´Ò»´ÎµÈÓÚ2Ãë { hm1 =0; //ºÁÃëÇåÁã m1++; //¼Ó¼Ó if(m1==900)//³Ë2ÃëµÈÓÚ30·ÖÖÓ { m1=0; //ÃëÇåÁã a=0; //8½ÅÊä³öµÍµçƽ } } } if(t2) //µÚ¶þ·¶¨Ê±ÎÞÂÛ±È½ÏÆ÷¸ß»¹ÊǵÍ12Сʱ½áÊø { hm2++; //ºÁÃë¼Ó¼Ó if(hm2 == 200) //µÈÓÚ10Ãë { hm2 = 0; //ÃëÇåÁã m2++; //Ãë¼Ó¼Ó if(m2==4320) //³Ë10Ãë { m2=0; //ÃëÇåÁã a=0; //8½ÅÊä³öµÍµçƽ } } } }复制代码
使用道具 举报 送花
25
977
3599
超级版主
718
1万
管理员
本版积分规则 发表回复 回帖后跳转到最后一页
|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )
GMT+8, 2025-5-2 14:55 , Processed in 0.117252 second(s), 66 queries .
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.