程序进去 然后调试就这样了 求大神解救

2019-07-18 10:37发布

原理很简单 血压测量仿真  用划变电压代替传感器 电压值变化输入数模转换 然后单片机处理输出血压值是不是程序错了  大神帮我看看 能帮我改改不   可以用大神永久的迅雷会员刷来的
#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define uint  unsigned int
uchar code table[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code LED_W[3] = {0x08,0x04,0x02};
uchar ssy[3],szy[3],mb[3];
uint  getdata,getdata1,n,MBO;
uchar a,i,k;
sbit mb_led =P3^0;
sbit ssy_led =P3^1;
sbit szy_led =P3^3;
sbit wr=P3^6;
sbit rd=P3^7;

void delay(uint z)                           //延时z毫秒
{
        uint t1,y;
        for(t1=z;t1>0;t1--)
                for(y=110;y>0;y--);
}

void xinlv()                                                 //脉搏的显示函数
{
        mb_led = 0;
        for(a=150;a>0;a--)
  {       
          for(i=0;i<3;i++)
        {
                P2=         LED_W[i];
                k = mb[i];
                P1= table[k];
                delay(5);
        }  
  }   
   mb_led = 1;
}


void xueya_ssy()                         //收缩压的显示函数
{
        ssy_led = 0;
        for(a=150;a>0;a--)
        {
                  for(i=0;i<3;i++)
                {
                        P2=         LED_W[i];
                        k = ssy[i];
                        P1= table[k];
                        delay(5);
                }  
         }       
         ssy_led = 1;
}


void xueya_szy()                //舒张压的显示函数
{       
        szy_led = 0;
        for(a=150;a>0;a--)
        {
                  for(i=0;i<3;i++)
                {
                        P2=         LED_W[i];
                        k = szy[i];
                        P1= table[k];
                        delay(5);
                }  
         }
         szy_led = 1;
}



void display()               //显示子函数
{
        xinlv();
        xueya_ssy();
        xueya_szy();
}



void adswap        ()       //模数转换子程序
{
        wr = 1;                  //启动转换
        wr = 0;
        wr = 1;               
        rd = 0;
        //getdata = XBYTE[0xB000] ;                 //存放转换结果        ,看成收缩压
        getdata = P0;
        rd = 1;
        getdata1 =(int) getdata/1.6;         //设收缩压是舒张压的1.6倍,存放舒张压
        ssy[0] = getdata%10;                        //个位
        getdata = getdata/10 ;
        ssy[1] = getdata%10;         //十位
        ssy[2] = getdata/10;                        //百位


        szy[0] = getdata1%10;                        //个位
        getdata1 = getdata1/10 ;
        szy[1] = getdata1%10;         //十位
        szy[2] = getdata1/10;                        //百位
}

void main()
{
     TMOD=0x01;  //定时器T0工作于方式1   
     TH0=0xec;   
     TL0=0x78;   //T0定时时间为5ms   
     IE=0X83;    //开中断   
     IT0=1;      //外部中断0为边沿触发方式   
     TR0=1;      //开定时器T0
         P2 = 0X00;    //关所有位显示
        while(1)
        {
                display();
    }                  
}

external0() interrupt 0//外部中断服务程序   
{   
    if(n==0)   
    MBO=0;   
    else   
    MBO=12000/n;      //计算每分钟脉搏数   
    mb[0]=MBO%10;//取个位数   
    MBO=MBO/10;   
    mb[1]=MBO%10;//取十位数   
    mb[2]=MBO/10;//取百位数   
    n=0;
            }   
timer0() interrupt 1//定时中断服务程序   
{      
    TH0=0xec;   
    TL0=0x78;
    n = n+1;  
    if(n==2000)//10秒钟测不到心率,n复位   
    {n=0;}  
        adswap();
}  

FOA]MBA{253(F}3OH_%$)38.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。