求求大家帮我看看问题在哪里
题目附图片
#include "STC15F2K60S2.h"
#include "intrins.h"
#include "ds18b20.h"
code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; //0 1 2 3 4 5 6 7 8 9 ¿Õλ -
unsigned char a[8];
unsigned char b[4]={3,0,2,0};
unsigned char max,min,Temp,qujian,key_value,jiebian,key,count,led_time,flag,flag1;
sbit r1=P3^0;
sbit r2=P3^1;
sbit r3=P3^2;
sbit r4=P3^3;
sbit c1=P4^4;
sbit c2=P4^2;
sbit c3=P3^5;
void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}
void Timer0Init(void) //1ms@11.0592MHz
{
AUXR |= 0x80;
TMOD &= 0xF0;
TL0 = 0xCD;
TH0 = 0xD4;
TF0 = 0;
TR0 = 1;
}
unsigned char key_scan()
{
r1=0;
r2=r3=r4=1;
c1=c2=c3=1;
if(!c1) key_value=0;
else if(!c2) key_value=1;
else if(!c3) key_value=2;
r2=0;
r1=r3=r4=1;
c1=c2=c3=1;
if(!c1) key_value=4;
else if(!c2) key_value=5;
else if(!c3) key_value=6;
r3=0;
r1=r2=r4=1;
c1=c2=c3=1;
if(!c1) key_value=8;
else if(!c2) key_value=9;
else if(!c3) key_value=10;
r4=0;
r1=r2=r3=1;
c1=c2=c3=1;
if(!c1) key_value=12;
else if(!c2) key_value=13;
else if(!c3) key_value=14;
return key_value;
}
unsigned char ReadTemp()
{
unsigned char TL,TH,temp;
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0x44);
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0xbe);
TL=Read_DS18B20();
TH=Read_DS18B20();
temp=(TH<<4)|(TL>>4);
return temp;
}
void display()
{
unsigned char number;
P2=((P2&0x1f)|0xE0);
P0=0xff;
P2=((P2&0x1f)|0xC0);
P0=1<<number;
P2=((P2&0x1f)|0xE0);
P0=tab[a[number]];
if(++number==8)
number=0;
}
void jiemian()
{
Temp=ReadTemp();
if(jiebian==0)
{
a[0]=11;
a[1]=qujian;
a[2]=11;
a[3]=a[4]=a[5]=10;
a[6]=Temp/10;
a[7]=Temp%10;
}
if(jiebian==1)
{
a[0]=11;
a[1]=b[0];
a[2]=b[1];
a[3]=a[4]=10;
a[5]=11;
a[6]=b[2];
a[7]=b[3];
}
}
void shezhi()
{
if(key>4)key=4;
if(key<0)key=0;
switch(key_value)
{
case 0:if(jiebian==1){b[key]=0;key+=1;}break;
case 1:if(jiebian==1){b[key]=1;key+=1;}break;
case 2:if(jiebian==1){b[key]=2;key+=1;}break;
case 4:if(jiebian==1){b[key]=3;key+=1;}break;
case 5:if(jiebian==1){b[key]=4;key+=1;}break;
case 6:if(jiebian==1){b[key]=5;key+=1;}break;
case 8:if(jiebian==1){b[key]=6;key+=1;}break;
case 9:if(jiebian==1){b[key]=7;key+=1;}break;
case 10:if(jiebian==1){b[key]=8;key+=1;}break;
case 12:if(jiebian==1){b[key]=9;key+=1;}break;
case 13:flag1++;
if(flag1==2)
{
flag1=0;
jiebian=0;
}
if(flag1==1)
{
jiebian=1;
}
break;
case 14:if(jiebian==1){key-=1;b[key]=10;}break;
}
}
void panding1()
{
if(Temp
{
Delay10ms();
if(Temp
{
qujian=0;
led_time=800;
P2=((P2&0x1f)|0xA0);
P0=0x00;
}
}
if(min
{
Delay10ms();
if(min
{
qujian=1;
led_time=400;
P2=((P2&0x1f)|0xA0);
P0=0x00;
}
}
if(Temp>max)
{
Delay10ms();
if(Temp>max)
{
qujian=2;
led_time=200;
P2=((P2&0x1f)|0xA0);
P0=0x10;
}
}
}
void panding2()
{
if(max<min)
{
P2=((P2&0x1f)|0x80);
P0=0xfd;
}
else
{
P2=((P2&0x1f)|0x80);
P0=0xff;
}
}
void Timer0() interrupt 1
{
display();
count++;
if(count==led_time)
{
count=0;
flag++;
}
if(flag==2)flag=2;
if(flag==1)
{
P2=((P2&0x1f)|0x80);
P0=0xfe;
}
if(flag==0)
{
P2=((P2&0x1f)|0x80);
P0=0xff;
}
}
void mian()
{
P2=((P2&0x1f)|0xA0);
P0=0x00;
P2=((P2&0x1f)|0x80);
P0=0xff;
Timer0Init();
EA=1;
ET0=1;
while(1)
{
key_scan();
max=b[0]*10+b[1];
min=b[2]*10+b[3];
panding1();
jiemian();
shezhi();
panding2();
}
}