找回密码
 立即注册
查看: 820|回复: 3

大家好,请帮我查看一下程序。

[复制链接]

该用户从未签到

5

主题

10

回帖

75

积分

注册会员

积分
75
发表于 2022-12-23 12:04:06 | 显示全部楼层 |阅读模式
  1. #include "reg51.h"
  2. #include "intrins.h"
  3. //STC15w204s
  4. void key_scan(void);        //ÉùÃ÷¿ª¹ØɨÃè
  5. unsigned  char  t1=1;        //µÚһ·¶¨Ê±¿ª
  6. unsigned  char  t2=1;        //µÚ¶þ·¶¨Ê±¿ª
  7. unsigned int hm1,hm2;        //ºÁÃë
  8. unsigned int m1,m2;                //Ãë
  9. sbit  b= P3^2;                                //7½ÅָʾµÆ¿ØÖƽÅ
  10. sbit        a=P3^3;                                        //8½Å¿ØÖƽÅ
  11.         sfr  CMPCR1  =  0xE6;          // ±È½ÏÆ÷¿ØÖƼĴæÆ÷1
  12.         #define  CMPEN  0x80           //        CMPCR1.7 :±È½ÏÆ÷Ä£¿éʹÄÜλ
  13.         #define  CMPIF  0x40                  //  CMPCR1.6 : ±È½ÏÆ÷Öжϱê־λ
  14.         #define  PIE                 0x20           // CMPCR1.5 :±È½ÏÆ÷ÉÏÉýÑØÖжÏʹÄÜλ
  15.         #define  PIS  0x08                   //CMPCR1.3 :±È½ÏÆ÷Õý¼«Ñ¡Ôñλ
  16.         #define  NIS  0x04                   //CMPCR1.2 :±È½ÏÆ÷¸º¼«Ñ¡Ôñλ
  17.         #define  CMPOE 0x02                        //CMPCR1.1 :±È½ÏÆ÷Êä³ö½á¹û¿ØÖÆλ
  18.         #define  CMPRES 0x01                        //CMPCR1.0 : ±È½ÏÆ÷±È½Ï½á¹û±ê־λ
  19. sfr CMPCR2 = 0xE7;                                 //±È½ÏÆ÷¿ØÖƼĴæÆ÷2
  20. #define INVCMPO 0x80                         //±È½ÏÆ÷½á¹û·´ÏòÊä³ö¿ØÖÆλ
  21. #define DISFLT 0x40                         //±È½ÏÆ÷Êä³öÂ˲¨Ê¹ÄÜ¿ØÖÆλ
  22. #define LCDTY 0x3F                                 //±È½ÏÆ÷Êä³öµÄÇø¶¶Ê±¼ä¿ØÖÆ
  23.         P5M1        = 0x30;                                                //P5.4½ÅΪ¸ß×èÊäÈëÉùÃ÷
  24.         P5M0         = 0x00;                                                //P5.5½ÅΪ¸ß×èÊäÈëÉùÃ÷
  25.        
  26. void cmp_isr() interrupt 21 using 1 //±È½ÏÆ÷ÖжÏÏòÁ¿Èë¿Ú
  27. {
  28.         CMPCR1 &= ~CMPIF;          //Çå³ýÍê³É±êÖ¾
  29. //        a = !!(CMPCR1 & CMPRES); //½«±È½ÏÆ÷½á¹ûCMPRESÊä³ö²âÊÔ¿ÚÏÔʾ
  30. //        b = !!(CMPCR1 & CMPRES); //½«±È½ÏÆ÷½á¹ûCMPRESÊä³ö²âÊÔ¿ÚÏÔʾ
  31. }
  32. void Timer0_Init(void)                //50ºÁÃë12·ÖƵ@11.0592MHz       
  33. {
  34.                 TMOD &= 0xF0;                //¶¨Ê±Æ÷ģʽ0
  35.                 TL0 = 0x00;                //ÉèÖö¨Ê±Æ÷³õʼ»¯
  36.                 TH0 = 0x4C;                //ÉèÖö¨Ê±Æ÷³õʼ»¯
  37.                 TF0 = 0;                //Çå³ýTF0±êÖ¾
  38.                 TR0 = 1;                //¶¨Ê±Æ÷0¿ªÊ¼¼Æʱ¿ª
  39.                 ET0=1;                //ʹÄܶ¨Ê±Æ÷ÖжϿª
  40.                 EA=1;                //×Ü¿ª¹Ø¿ª
  41.                 PT0=1;//¸ßÓÅÏȼ¶       
  42. }
  43. void main()
  44. {
  45.         Timer0_Init();
  46.         CMPCR1 = 0; //³õʼ»¯±È½ÏÆ÷¿ØÖƼĴæÆ÷1
  47.         CMPCR2 = 0;  //³õʼ»¯±È½ÏÆ÷¿ØÖƼĴæÆ÷2
  48.         CMPCR1 &= ~PIS; //Ñ¡ÔñÍⲿp5.5Ϊ±È½ÏÆ÷Õý¼«ÊäÈëÔ´
  49. //        CMPCR1 |= NIS; //Ñ¡ÔñÍⲿp5.4Ϊ±È½ÏÆ÷¸º¼«ÊäÈëÔ´
  50.         CMPCR1 &= ~NIS; //Ñ¡ÔñÄÚ²¿BandGapµçѹBGVΪ±È½ÏÆ÷µÄ¸º¼«ÊäÈëÔ´
  51.         CMPCR1 |= CMPEN;//ʹÄܱȽÏÆ÷
  52.         CMPCR1 &= ~CMPIF;          //Çå³ýÍê³É±êÖ¾
  53.         CMPCR2 &= ~DISFLT;        //ʹÄܱȽÏÆ÷Êä³ö¶ËµÄ0.1us ÂËÆõç·
  54.         CMPCR1 |= PIE; //±È½ÏÆ÷ÉÏÉýÑØÖжÏʹÄÜλ
  55.         a =~ !!(CMPCR1 & CMPRES); //½«±È½ÏÆ÷½á¹ûCMPRESÊä³ö²âÊÔ¿ÚÏÔʾ
  56.         b =~ !!(CMPCR1 & CMPRES); //½«±È½ÏÆ÷½á¹ûCMPRESÊä³ö²âÊÔ¿ÚÏÔʾ
  57. //        while (!(CMPCR1 & CMPIF)); //²éѯ±È½ÏÍê³É±êÖ¾
  58.                 P5M1        = 0x30;                                        //P5.4½ÅΪ¸ß×èÊäÈë
  59.                 P5M0         = 0x00;                                        //P5.4½ÅΪ¸ß×èÊäÈë
  60. while (1)
  61.         {
  62.         static signed char zt=0;                 //״̬»ú ¾²Ì¬±äÁ¿
  63.                 {
  64.                 if((CMPCR1 & 0x01)==1 && m2 <120)        //µÚ¶þ· ´Óͨµç¿ªÊ¼20·ÖÖÓÒÔÄÚ
  65.                 {
  66.                         hm1=0;                //ÇåÁãµÚһ·ºÁÃë
  67.                         m1=0;                        //ÇåÁãµÚһ·Ãë
  68.                 }
  69.                 }
  70.                 switch (zt)                //״̬»ú50ºÁÃë½øÀ´Ò»´Î
  71.         {
  72.                 case 0:
  73.                         {                                       
  74.                         if((CMPCR1 & 0x01)==1)        //µÚÒ»´ÎµÈÓÚ50ºÁÃë½øÀ´±È½ÏÆ÷Õý±È¸ºÈ·Êµ¸ß
  75.                         {               
  76.                                 zt=1;
  77.                         }
  78.                 break;
  79.                 }
  80.                         case 1:
  81.                         {
  82.                         if((CMPCR1 & 0x01)==1)        //µÚ¶þ´ÎµÈÓÚ100ºÁÃë½øÀ´±È½ÏÆ÷Õý±È¸ºÈ·Êµ¸ß
  83.                                 {               
  84.                                         zt=2;                                                 //״̬2
  85.                                         b=0;                                                //7½ÅÊä³öµÍµçƽÿÂ̵ÆÃð
  86.                                 }
  87.                                 else
  88.                                         {
  89.                                                 zt=0;                 //·ñÔò»Øµ½×´Ì¬0
  90.                                         }
  91.                         }
  92.                 {       
  93.                 break;
  94.                 }
  95.                 case 2:
  96.                         if((CMPCR1 & 0x01)==0)        //µÚÒ»´ÎµÈÓÚ50ºÁÃë½øÀ´±È½ÏÆ÷Õý±È¸ºÈ·ÊµµÍ
  97.                         {
  98.                                 zt=3;                                                          //״̬3
  99.                         }       
  100.                 {
  101.                 break;
  102.                 }
  103.                         case 3:
  104.                 {
  105.                         if((CMPCR1 & 0x01)==0)        //µÚ¶þ´ÎµÈÓÚ100ºÁÃë½øÀ´±È½ÏÆ÷Õý±È¸ºÈ·ÊµµÍ
  106.                
  107.                                 {
  108.                                         zt=0;
  109.                                         b=1;           //7½ÅÊä³ö¸ßµçƽÿÂ̵ÆÃð
  110.                                 }
  111.                                 else
  112.                                         {
  113.                                                 zt=2;                //·ñÔò»Øµ½×´Ì¬2
  114.                                         }
  115.                 break;
  116.                 }
  117.                 default:
  118.                 {
  119.                         break;
  120.                 }
  121.                 }
  122.         }
  123. }
  124. //¶¨Ê±Æ÷ÖÐ¶Ï ³õʼ»¯
  125. void Timer0_Rountine(void) interrupt 1
  126. {
  127.         if(t1)        //µÚһ·¶¨Ê±20·ÖÖӼӱȽÏÆ÷¸ß30µÈÓÚ50·ÖÖÓÖ®¶à£¬±È½ÏÆ÷µÍÔÝÍ£¼Æʱ
  128.         {
  129.                 if((CMPCR1 & 0x01)==1)        //±È½ÏÆ÷Õý±È¸ºÈ·Êµ¸ß
  130.                         hm1++;                                //ºÁÃë¼Ó¼Ó       
  131.                         if(hm1==40)                //         µÈÓڴΠ       ÅжÏ50ºÁÃë½øÀ´Ò»´ÎµÈÓÚ2Ãë
  132.                         {
  133.                                 hm1        =0;                        //ºÁÃëÇåÁã               
  134.                                         m1++;                        //¼Ó¼Ó
  135.                                         if(m1==900)//³Ë2ÃëµÈÓÚ30·ÖÖÓ
  136.                                         {
  137.                                         m1=0;                //ÃëÇåÁã
  138.                                         a=0;          //8½ÅÊä³öµÍµçƽ       
  139.                                         }
  140.                                 }
  141.                         }
  142.         if(t2)                                                        //µÚ¶þ·¶¨Ê±ÎÞÂ۱ȽÏÆ÷¸ß»¹ÊǵÍ12Сʱ½áÊø
  143.                 {
  144.                         hm2++;                      //ºÁÃë¼Ó¼Ó
  145.                         if(hm2 == 200)         //µÈÓÚ10Ãë
  146.                         {
  147.                                 hm2 = 0;                        //ÃëÇåÁã
  148.                                 m2++;                                        //Ãë¼Ó¼Ó
  149.                                 if(m2==4320)        //³Ë10Ãë
  150.                                 {
  151.                                         m2=0;                                //ÃëÇåÁã
  152.                                         a=0;                                //8½ÅÊä³öµÍµçƽ       
  153.                                 }
  154.                         }       
  155.                 }               
  156.         }
复制代码


146b0e5fa3b5848dfcbf613e8888610.png
c6244b9856f7266893d0c7447fce3d4.png
43ec53aea4ec8ec0eac993ce90e4e64.png
02b05f703c1212335b18942043bc2f9.png
回复 送花

使用道具 举报

  • TA的每日心情
    开心
    7 天前
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    16

    主题

    724

    回帖

    2578

    积分

    超级版主

    积分
    2578
    发表于 2022-12-23 17:03:50 | 显示全部楼层
    这不是我上次帮你看过的程序吗?
    你的代码需要实现什么功能,目前运行出现什么不正常的显现,你都需要具体说明
    否则大家真没有时间来分析你程序中的逻辑

    该用户从未签到

    5

    主题

    10

    回帖

    75

    积分

    注册会员

    积分
    75
     楼主| 发表于 2022-12-23 18:08:50 | 显示全部楼层
    代码测试。没有出现问题,要经过老师您分析一下。才放心。老师辛苦了,谢谢
    需要的功能。电压比较程序
      单片机stc15w204s8个脚。接通电源单片机第2路定时开始计时,12小时时间到p3.3脚输出低电平控制三极管。
      p5.5脚电压高于内部1.27v基准电压 ,p3.2脚输出低电平绿灯亮。低于1.27v绿灯灭。
      接通电源前20分钟第一路定时不计时,20分钟后绿灯亮开始计时30分钟,绿灯灭暂停 计时 ,时间到p3.3脚输出脚低电平 控制三极管。
      p3.2和p3.3配置 弱电输出
    p5.5和p5.4配高阻输入。
       

    该用户从未签到

    552

    主题

    9492

    回帖

    1万

    积分

    管理员

    积分
    14057
    发表于 2022-12-23 19:10:37 | 显示全部楼层
    你先将你画的原理图的 PDF 发上来,广大热心网友帮你检查下,有时间学习下冲哥的视频
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-18 05:01 , Processed in 0.060999 second(s), 43 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表