📄 181818.c
字号:
#include<reg52.h>
#include <intrins.h>
sbit DQ=P3^3;
unsigned char c[2];
unsigned char x,y;
displaycode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1};//0,1,2,3,4,5,6,7,8,9
unsigned char t[2]={0};
sbit P2_1=P2^1;
sbit P2_0=P2^0;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
void delayms(unsigned int t) //1ms的延时子程序
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++) ;
}
void delay(unsigned char time)
{while(--time);
}
bit ow_reset(void)
{
bit presence;
DQ=0;
delay(255);//515us
DQ=1;
delay(30);//65us
presence=DQ;
delay(100);//205us
return(presence);
}
void write_byte(unsigned char val)
{
unsigned char i;
for(i=8;i>0;i--)
{DQ=0;
delay(2);//9us
DQ=val&0x01;
delay(20);//45us
DQ=1;
val=val/2;
}
}
unsigned char Read_byte(void)
{
unsigned char i;
unsigned char value=0;
for(i=8;i>0;i--)
{
value>>=1;
DQ=0;
delay(2);//9us
DQ=1;
if(DQ) value|=0x80;
delay(20);//45us
}
return(value);
}
void tem()
{ if(DQ==0);
while(ow_reset());
write_byte(0xcc);
write_byte(0xbe);
c[0]=Read_byte();
c[1]=Read_byte();
x=c[0];
y=c[1];
x=x>>4;
x=x&0x0f;
y=y<<4;
y=y&0xf0;
x=x|y;
t[1]=x/10;
t[0]=x%10;
SBUF=x;
while(TI==0);
TI=0;
while(ow_reset());
write_byte(0xcc);
write_byte(0x44);
}
void display()
{
P2=0xff;
P2_1=0;
P0=displaycode[t[1]];
delayms(1);
P2_1=1;
P2_3=0;
P0=displaycode[t[0]];
delayms(1);
P2_3=1;
}
void main(void)
{
TMOD=0x21;
TH0=0xA1;
TL0=0x12;
ET0=1;
EA=1;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
TR1=1;
while(ow_reset());
write_byte(0xcc);
write_byte(0x44);
TR0=1;
while(1);
}
void t0(void) interrupt 1 using 0
{ TR0=0;
TH0=0xA1;
TL0=0x12;
tem();
display();
TR0=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -