📄 main.c
字号:
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
#include "main.h"
/*
time1ms() /* 1 ms delay with XTAL 11.0592MHz
{
int i;
for (i = 0; i<50; i++); // the value shown in this line, 50 was calibrated for 1ms
// you may change it!
}
delay(int n) /* do nothing n*1ms
{
int i;
for (i=0; i< n ; i++)
time1ms();
}
delay10us()
{
int i;
for (i=0;i<1;i++);
}
char getchar(void)
{
char c;
while(!RI);
RI =0;
c = SBUF;
return SBUF;
}
char getchr(void)
{
while(!RI);
RI =0;
return SBUF; // no echo for command write
}
// external function for sending character through serial port
void putchar(char c)
{
while(!TI);
TI=0;
SBUF = c;
}
// send ASCII string to screen, the string must be stored in code memory
putstr(char *s)
{
char i=0;
char c;
while((c=*(s+(i++)))!= 0) putchar(c); // while byte is not terminator, keep sending
}
send_hex(unsigned char n)
{
if(n<=9) putchar(n+'0'); // send 0-9
else putchar(n+55); // send A-F
}
puthex(unsigned char n)
{
unsigned char temp;
temp = n&0xf0;
temp >>=4;
send_hex(temp);
temp = n&0xf;
send_hex(temp);
}
puthex16(unsigned int n)
{
puthex(n>>8);
puthex(n);
}
putnum(unsigned int n)
{
unsigned int k;
char s[6];
s[0] = n/10000+'0';
k = n%10000;
s[1] = k/1000+'0';
k = k%1000;
s[2] = k/100+'0';
k = k%100;
s[3] = k/10+'0';
k = k%10;
s[4] = k%10+'0';
for(k = 0; s[k] == '0' && k<5; k++);
if (k==5) k--; // if all bytes are '0', get back one position
do putchar(s[k++]);
while (k<5);
}*/
/*void time1_over_int(void) interrupt 1 using 1
{
TH0=0x0;
TL0=0x0;
if (ad_over==0)
{
value[counter]=AD_Conver(2);
counter++;
if (counter>64)
{
ad_over=1;
}
}
}*/
void initTimer(void)
{
TMOD=0x1;
TH0=0x0;
TL0=0x0;
}
void initUart(void)
{
TMOD|=0x20;
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
TR1=1;
}
sbit relay_dpst=P3^2;
sbit SPEAKER=P3^5;
void main(void)
{
initTimer();
initUart();
TR0=0;
ET0=0;
EA=0;
upper_limit.c[0]=AT24C02_Read_Byte(0xA0,0x01);
upper_limit.c[1]=AT24C02_Read_Byte(0xA0, 0x02);
lower_limit.c[0]=AT24C02_Read_Byte(0xA0, 0x03 );
lower_limit.c[1]=AT24C02_Read_Byte(0xA0, 0x04);
difference.c[0]=AT24C02_Read_Byte(0xA0, 0x05);
difference.c[1]=AT24C02_Read_Byte(0xA0, 0x06);
P1=0xff;
while(1)
{ if(ADC)
{
AdValue=AD590( );
}
else
{
AdValue=process_t();
if(AdValue>6400)AdValue+=128;
}
KEY();
display_humidity();
temperature=AdValue+difference.X ;
if(temperature>upper_limit.X)
{
relay_dpst=1;
SPEAKER=1;
}
else
{
relay_dpst=0;
SPEAKER=0;
}
if(temperature<lower_limit.X)
{
relay_dpst=1;
SPEAKER=1;
}
else
{
relay_dpst=0;
SPEAKER=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -