找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1244|回复: 0
打印 上一主题 下一主题
收起左侧

这个程序改成c51的怎么改

[复制链接]
跳转到指定楼层
楼主
ID:321415 发表于 2018-5-5 18:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<at89s53.h>
  2. #include<absacc.h>
  3. #define uchar unsigned char
  4. #define CO XBYTE[0x9fff]
  5. #define yanw XBYTE[0xafff]
  6. sbit R=P1^0;
  7. sbit Y=P1^1;
  8. sbit G=P1^2;
  9. sbit ring=P1^3;
  10. bit flag=0;    //检测一氧化碳还是烟雾的标志位,0为一氧化碳;1为烟雾
  11. uchar result; //AD转换后的结果
  12. uchar Cmax=0x20,Ymax=0x30;/*Cmax为一氧化碳的下限值,Ymax为烟雾浓度的上限值,如果超出了这两个值,则报警器发出
  13.                        报警信号 */
  14. uchar times=0;
  15. delay()
  16. {
  17.    uchar i,j;
  18.    for(i=200;i--;i>0)
  19.      for(j=10;j--;j>0);
  20. }   
  21. main()                    
  22. {  P1=0xFF;
  23.    TCON=0X00;
  24.    PCON=0X00;
  25.    TMOD=0X21;
  26.    TH0=0X3C;
  27.    TL0=0XB0;
  28.    TH1=0xe6;
  29.    TL1=0xe6;
  30.    SCON=0X40;
  31.    IE=0X93;
  32.    TR0=1;
  33.    TR1=1;
  34.    while(1)
  35.    {if(flag==0)
  36.      {
  37.       
  38.       if(result>Cmax)   
  39.           { R=0;
  40.              Y=1;
  41.              G=0;
  42.              ring=1;
  43.            }
  44.          
  45.         else if(result<=Cmax)      
  46.           { R=1;
  47.             Y=0;
  48.             G=0;
  49.             ring=0;
  50.           }
  51.    
  52.       }
  53.       
  54.             
  55.     else if(flag==1)
  56.      {
  57.       
  58.         if(result>Ymax)   
  59.           {  R=0;
  60.              Y=0;
  61.              G=1;
  62.              ring=1;
  63.            }
  64.         else if(result<=Ymax)         
  65.           {  R=1;
  66.              Y=0;
  67.              G=0;
  68.              ring=0;
  69.            }
  70.      }
  71.    }
  72. }
  73. void tn() interrupt 4   
  74. {
  75.   if(TI==1)
  76.      TI=0;
  77. }
  78. /* 绿色灯亮即 P1。0为低电平则正常,
  79.   红色灯亮即P1。1为低电平则一氧化碳浓度超出范围,并蜂鸣器响
  80.   黄色灯亮即P1。2为低电平则烟雾浓度超出范围,并蜂鸣器响
  81. */
  82. void end0809() interrupt 0
  83. {
  84.     enable=1;
  85.      _nop_();
  86.      _nop_();
  87.      result=P0;
  88.      enable=0;
  89. ACC=flag;
  90.     SBUF=ACC;
  91.     delay();
  92.     ACC=result;
  93.     SBUF=ACC;
  94.    
  95. }   
  96. void t0() interrupt 1
  97. {
  98.   TH0=0X3C;
  99.   TL0=0XB0;
  100.   if(times==0)   times++;
  101.   else
  102.      {
  103.        times=0;
  104.        if(flag==0)
  105.         {
  106.            
  107.            ada=0;
  108.            adb=0;
  109.            
  110. }
  111.       else        
  112. {
  113.            ada=1;
  114.            adb=0;
  115.           }
  116.     start=0;                        
  117.      _nop_();
  118.      _nop_();   
  119.      _nop_();
  120.      start=1;
  121.      _nop_();
  122.      _nop_();
  123.      start=0;
  124.       
  125. flag=~flag;
  126. }
  127. 2. 上位PC机程序
  128. #include<stdio.h>
  129. #include<dos.h>
  130. #define port 0x03f8
  131. main()
  132. {
  133.   unsigned int result,n=0;
  134.   unsigned int flag,i,j,k;
  135.   char ch;
  136.   struct date d;
  137.   struct time t;
  138.   clrscr();
  139.   outportb(port+3,0x80);
  140.   outportb(port,0x60);
  141.   outportb(port+1,0x00);
  142.   outportb(port+3,0x03);
  143.   outportb(port+4,0x03);
  144.   outportb(port+2,0x0f);
  145.   outportb(port+1,0x00);
  146. printf("\n\n*****type*****chroma(PPM)*******state*********time**************address********");
  147.   for(;;)
  148. {
  149.     if(n==0)
  150.       {
  151.         while(!(inportb(port+5)&0x20));
  152.          flag=inportb(port);
  153.          n++;
  154.        }
  155.       else
  156.        {
  157.         while(!(inportb(port+5)&0x20));
  158.          result=inportb(port);
  159.          n=0;
  160.         if(flag==0)
  161.           {   
  162.            getdate(&d);
  163.            gettime(&t);
  164.            if(result>90)
  165.               {
  166. printf("\n\n     co%11d          dangerous%9d.%d.%d--%d:%d:%d      1",result,d.da_year,d.da_mon,d.da_day,t.ti_hour,t.ti_min,t.ti_sec);
  167.               }
  168.            else
  169.              {
  170. printf("\n\n     co%11d         natural%13d.%d.%d--%d:%d:%d      1",result,d.da_year,d.da_mon,d.da_day,t.ti_hour,t.ti_min,t.ti_sec);
  171.               }
  172.           }
  173.       else
  174.           {
  175.            getdate(&d);
  176.            gettime(&t);
  177.            if(result>90)
  178.                {
  179.          printf("\n\n      flog%11d           dangerous%9d.%d.%d--%d:%d:%d       1",result,d.da_year,d.da_mon,d.da_day,t.ti_hour,t.ti_min,t.ti_sec+1);
  180.                 }
  181.            else
  182.                 {
  183.         printf("\n\n      flog%9d            natural%10d.%d.%d--%d:%d:%d      1",result,d.da_year,d.da_mon,d.da_day,t.ti_hour,t.ti_min,t.ti_sec+1);
  184.                 }
  185.           }
  186.        }
  187.    }
  188. }
复制代码


新建 Microsoft Word 2007 文档.docx

14.88 KB, 下载次数: 2

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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