Hiện tượng là 0804 cứ đờ ra không đọc gì hết, INTR của nó không bao giờ xuống 0 cả
Đây là code của e, các a chỉ e chỗ sai với, e cám ơn các a:
#include <REGX52.H>
#include <STDIO.H>
unsigned char m=166, n=28, tylexung, k=1;
float dem=0;
double tinh_toan;
unsigned int temp;
void khoitao()
{
EA=0;
TR0=0;
TMOD=0x01;
TH0=m;
TL0=n;
ET0=1;
EA=1;
TR0=1;
}
void t0() interrupt 0
{
TR0=0;
TF0=0;
if(dem<tylexung) P1_7=1;
else P1_7=0;
dem+=k;
if(dem==40) dem=0;
TH0=m;
TL0=n;
TR0=1;
}
void delay(long t)
{
long i;
for(i=0;i<t;i++);
}
void ADC()
{
P0_1=0;
delay(5000);
P0_1=1;
while(P0_2);
P0_0=0;
if(!P2)
{
k=1;
m=166;
n=28;
}
else
{
tinh_toan= 65535 - 921600/(P2*78) - 29;
temp=tinh_toan;
m=temp/256;
n=temp%256;
k=20;
}
P0_0=1;
}
void main()
{
ADC();
khoitao();
while(1)
{
tylexung=20;
}
}
Đây là code của e, các a chỉ e chỗ sai với, e cám ơn các a:
#include <REGX52.H>
#include <STDIO.H>
unsigned char m=166, n=28, tylexung, k=1;
float dem=0;
double tinh_toan;
unsigned int temp;
void khoitao()
{
EA=0;
TR0=0;
TMOD=0x01;
TH0=m;
TL0=n;
ET0=1;
EA=1;
TR0=1;
}
void t0() interrupt 0
{
TR0=0;
TF0=0;
if(dem<tylexung) P1_7=1;
else P1_7=0;
dem+=k;
if(dem==40) dem=0;
TH0=m;
TL0=n;
TR0=1;
}
void delay(long t)
{
long i;
for(i=0;i<t;i++);
}
void ADC()
{
P0_1=0;
delay(5000);
P0_1=1;
while(P0_2);
P0_0=0;
if(!P2)
{
k=1;
m=166;
n=28;
}
else
{
tinh_toan= 65535 - 921600/(P2*78) - 29;
temp=tinh_toan;
m=temp/256;
n=temp%256;
k=20;
}
P0_0=1;
}
void main()
{
ADC();
khoitao();
while(1)
{
tylexung=20;
}
}
Comment