數碼管不亮為什么?程序如下 求大神指導
/***************************************************/ #include<reg51.h> #include<intrins.h> #define Disdata P0 #define uchar unsigned char #define uint unsigned int sbit b20=P3^7; sbit p20=P2^0; sbit p21=P2^1; sbit p22=P2^2; sbit p23=P2^3; sbit p24=P2^4; sbit p25=P2^5; sbit p26=P2^6; sbit p27=P2^7; sbit beet=P1^5; sbit heat=P1^0; sbit p11=P1^1; sbit qxjr=P1^2; sbit add=P1^3; sbit p14=P1^4; sbit qxss=P1^6; uchar a=35; uint temp,b,wd,h; bit lock0=1;//加熱標志位 bitlock1=1; uchar codedis[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; uchar datatemp_data[3]={0x00,0x000,0x00}; uintkey_[2]={5,0}; /*****************11us延時函數*************************/ voiddelay(uint t) { for (;t>0;t--); } /******************1ms延時函數*****************************/ voiddelay1ms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /****************發音函數***************************/ voidplay(uchar t) { uchar i; for(i=0;i<1000;i++) { beet=~beet; delay1ms(t); } beet=0; } /****************顯示掃描函數***************************/ scan() { uint k=0; Disdata=~dis[temp_data[k]]; p26=0; p27=1; delay1ms(5); k++; Disdata=~dis[temp_data[k]]; p26=1; p27=0; delay1ms(5); p26=1; p27=1; } /*********************預置溫度******************************/ voidyzwd(uint b) { Disdata=~dis[b%10]; p26=0; p27=1; delay1ms(5); Disdata=~dis[b/10]; p26=1; p27=0; delay1ms(5); p26=1; p27=1; } /****************DS18B20復位函數************************/ ow_reset(void) { char presence=1; while(presence) { while(presence) { b20=1;_nop_();_nop_(); b20=0; delay(50); b20=1; delay(6); presence=b20; } delay(45); presence=~b20; } b20=1; } /****************DS18B20寫命令函數************************/ voidwrite_byte(uchar val) { uchar i; for(i=8;i>0;i--) { b20=1;_nop_();_nop_(); b20=0;_nop_();_nop_();_nop_();_nop_(); b20=val&0x01; delay(6); val=val/2; } b20=1; delay(1); } // /****************DS18B20讀1字節函數************************/ ucharread_byte(void) { uchar i; ucharvalue=0; for(i=8;i>0;i--) { b20=1;_nop_();_nop_(); value>>=1; b20=0;_nop_();_nop_();_nop_();_nop_(); b20=1;_nop_();_nop_();_nop_();_nop_(); if(b20)value|=0x80; delay(6); } b20=1; return(value); } /****************讀出溫度函數************************/ uintread_temp() { ow_reset(); delay(200); write_byte(0xcc); write_byte(0x44); ow_reset(); delay(1); write_byte(0xcc); write_byte(0xbe); temp_data[0]=read_byte(); temp_data[1]=read_byte(); temp=temp_data[1]; temp<<=8; temp=temp|temp_data[0]; returntemp; } /****************溫度數據處理函數************************/ work_temp(uinttem) { temp_data[2]=tem>>4; temp_data[0]=temp_data[2]%10; temp_data[1]=temp_data[2]/10; } /****************加熱子函數************************/ voidheating(void) { if(heat==0) {lock0=0;} if(lock0==0) {p11=0;} else {p11=1;} work_temp(read_temp()); wd=temp_data[1]*10+temp_data[0]; if(wd>=a||qxjr==0) {lock0=1;p11=1;} } /****************上水子函數************************/ voidadding(void) { if(add==0) {lock1=0;} if(lock1==0) {p14=0;} else {p14=1;} if(p20==1||qxss==0) {lock1=1;p14=1;} } /****************主函數************************/ void main() { P0=0xff; p26=1; p27=1; EX0=1; IT0=1; EX1=1; IT1=1; EA=1; ow_reset(); write_byte(0xcc); write_byte(0x44); while(1) { heating(); adding(); work_temp(read_temp()); scan(); wd=temp_data[1]*10+temp_data[0]; if(wd<80) { while(p22==0) { p14=0; delay1ms(1); work_temp(read_temp()); scan(); } } if(wd>=80) { while(p24==1) { p14=0; work_temp(read_temp()); scan(); } while(p24==0) { play(2); p14=1; work_temp(read_temp()); scan(); } } } } /********************外部中斷0(設定溫度+)**************************/ voidwdxg(void) interrupt 0 { uchari; a=a+1; delay1ms(50); if(a>99) {a=30;} for(i=0;i<100;i++) {yzwd(a);} } /********************外部中斷1(設定溫度-)**************************/ voidwdxg1(void) interrupt 2 { uchari; a=a-1; delay1ms(50); if(a<30) {a=99;} for(i=0;i<100;i++) {yzwd(a);} } /********************結束**************************/
|