标题:吾有一事想求各位父亲 求父亲们帮忙补全一个程序
只看楼主
yu53
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-12-20
结帖率:0
已结贴  问题点数:20 回复次数:2 
吾有一事想求各位父亲 求父亲们帮忙补全一个程序
#include "reg51.h"

//--------------------主程序--------------------------------
void main()
{
 //单片机定时器及外部端口技术设置  
      TMOD=0x51;         //设置定时器0,方式1:16位定时器
      TH1=0;
      TL1=0;
      TH0=(65536-2000)/256;
      TL0=(65536-2000)%256;
      TR0=1;
      TR1=1;
      ET1=1;
      ET0=1;
      EA=1;
//----电阻档-------
      A0=1;
     LCD_initial();//液晶屏初始化
      RX=0;
    LCD_cursor(0x00);
     LCD_prints("   MEASURE Rx-1 ");
    Value_to_ASCII(RX,0x46);//显示阻值
    Up=0;
    while(1)
    {    Key_SM();
        if(flag==1){//查到标志
        flag=0;//归零
        x=Pulsenum*65536+TH1*256+TL1;//读取1s内的频率

    if(K2==1)        
{        
if(Up==0){
        RZ=(Z1/x);//测量1K到1000K
        RX=RZ-1000;
        RX=RX>>1;
        RX=RX*10;
   if(RX>=10107){
        RX=RX-10107;
    }else{RX=0;}
if(x==0){RX=0;RX2=0;RX3=0;RX4=0;RX5=0;RX6=0;RX7=0;RX8=0;RX9=0;}//无脉冲后所有的数字归零
  if(RX>9999999)
  {
      RX=9999999;
      B0=0;
    delay_1ms(25);
    B0=1;
    }//RX大于9999999,则RX=999999
              RX2=(RX+RX3+RX4+RX5+RX6+RX7+RX8+RX9)>>3;//求平均提高精度
RX9=RX8;RX8=RX7;RX7=RX6;RX6=RX5;RX5=RX4;RX4=RX3;RX3=RX;           
             //保存上一次的阻值
//单位换算及显示刷新         
if(RX2<=999)Value_to_ASCII(RX2,0x46);
if(RX2>999&&RX2<=9999)Value_to_ASCII1(RX2,0x46);  
if(RX2>9999&&RX2<=99999)Value_to_ASCII2(RX2,0x46);     
if(RX2>99999&&RX2<=999999)Value_to_ASCII3(RX2,0x46);   
if(RX2>999999&&RX2<=9999999)Value_to_ASCII4(RX2,0x46);   
}
if(Up==1){
        RZ=(Z2/x);//测量1M到10M
        RX=RZ-1000;//测量值减1K
        RX=RX>>1;//RX除以2
        RX=RX-1008;
        if(RX<0)RX=0;//限制数字小于0
           if(x==0)RX=0; //归零
         if(RX>9999999)RX=x; //显示电阻M        
        Value_to_ASCII5(RX,0x46);//显示器更新显示
}
}
          if(K2==0)
{
    LCD_cursor(0x00);
    LCD_prints("     DIANRONG   ");  
    RZ=(Z3/x);
    if(x>0){RX=RZ+1;} else{RX=0;}
    if(RX>9999){RX=999999; }
    Value_to_ASCII6(RX,0x46);      

}

         cnt2ms=0;//归0
         Pulsenum=0;//归零
         TH1=0;//脉冲技术归零
         TL1=0;
         TR1=1;//开启中断
   
   
    }
    }
}
/*******函 数 名: Exti0_interrupt函数功能: /T0引脚下降沿进入中断*********/
void T1_interrupt(void) interrupt 3 using 0
{
  Pulsenum++;    //脉冲大于65536个,溢出标志置1
    }
/*******函数功能:定时器/计数器1中断处理************/
void Timer0IntProc() interrupt 1 using 0 //2ms
{
  TH0=(65536-1000)/256; //中断定时器重置
  TL0=(65536-1000)%256;
    cnt2ms++;//计数器加1
    if(cnt2ms==999)    //1s计时到
    {
                TR1=0;//关闭定时器功能
        cnt2ms = 0;//计时数置0
                flag=1;//打1S定时标志
    }
}
搜索更多相关主题的帖子: 脉冲 void 中断 定时器 显示 
2019-12-20 16:38
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
得分:10 
这 是数电的知识?

我想要两颗西柚。
2019-12-22 13:44
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:10 
这个问题很明显,问错地方了。这属于C51单片机的范畴。
2019-12-22 16:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498518-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.234998 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved