Ai có kính nghiệm debug keli C giúp em với, sao em chạy debug mà giá trị cổng P0_2 không thay đổi, cờ ngắt TF0 thì sau khi được bật rồi cứ giữ nguyên mà không xóa , pó tay.
đây là sơ đồ mạch : http://www.mediafire.com/?sharekey=f...4e75f6e8ebb871
/* Tao xung PWM co do rong thay doi 10 cap so
tan so 1Khz
de dieu khien toc do dong co ( 10 cap do )
100us ngat' 1 lan
*/
#include <AT89X51.h>
void delay(long time)
{
long n;
for (n=0;n<time;n++);
}
void khoitaotimer0()//ham` khoi tao
{
EA=0; //cam' ngat toan` cuc
TMOD=0x02; //Timer0 che do 2 8bit auto-load
TH0=0x9B; //gia tri nap lai 155 doi ra so hex
TL0=0x9B; //gia tri khoi tao 155 doi ra so hex
ET0=0; //cho phep ngat timer0
EA=1; //cho phep ngat toan cuc
TR0=1; //chay timer0 bat dau dem chu ki may
}
unsigned char dem=0;//Khai bao bien dem de? dem' tu` 1 den 10
unsigned char phantramxung;//Bien chua pham tran xung (0..10)
void timer() interrupt 1//ngat' timer0
{
TR0=0;//ngung` dem' chu ki` may
TF0=0;//o che do 2 co` se tu dong dc xoa, co' dieu` cu ghi vao` de? co' xai` che do # cung~ khoi we^n ^^
dem++;
if (dem<phantramxung)
P0_2 = 1;//neu' dem < phantramxung thi dua xung len cao, dua gia tri 1 ra chan, xung 5V
else P0_2 =0;//dua gia tri 0 ra chan, xung 0V
if (dem==10) dem=0;//xoay vong gia tri bien dem
TR0=1;
}
void main()//ham` main
{
khoitaotimer0();
while(1)
{
phantramxung=9;
delay(20000);
phantramxung=4;
delay(20000);
}
}
đây là sơ đồ mạch : http://www.mediafire.com/?sharekey=f...4e75f6e8ebb871
/* Tao xung PWM co do rong thay doi 10 cap so
tan so 1Khz
de dieu khien toc do dong co ( 10 cap do )
100us ngat' 1 lan
*/
#include <AT89X51.h>
void delay(long time)
{
long n;
for (n=0;n<time;n++);
}
void khoitaotimer0()//ham` khoi tao
{
EA=0; //cam' ngat toan` cuc
TMOD=0x02; //Timer0 che do 2 8bit auto-load
TH0=0x9B; //gia tri nap lai 155 doi ra so hex
TL0=0x9B; //gia tri khoi tao 155 doi ra so hex
ET0=0; //cho phep ngat timer0
EA=1; //cho phep ngat toan cuc
TR0=1; //chay timer0 bat dau dem chu ki may
}
unsigned char dem=0;//Khai bao bien dem de? dem' tu` 1 den 10
unsigned char phantramxung;//Bien chua pham tran xung (0..10)
void timer() interrupt 1//ngat' timer0
{
TR0=0;//ngung` dem' chu ki` may
TF0=0;//o che do 2 co` se tu dong dc xoa, co' dieu` cu ghi vao` de? co' xai` che do # cung~ khoi we^n ^^
dem++;
if (dem<phantramxung)
P0_2 = 1;//neu' dem < phantramxung thi dua xung len cao, dua gia tri 1 ra chan, xung 5V
else P0_2 =0;//dua gia tri 0 ra chan, xung 0V
if (dem==10) dem=0;//xoay vong gia tri bien dem
TR0=1;
}
void main()//ham` main
{
khoitaotimer0();
while(1)
{
phantramxung=9;
delay(20000);
phantramxung=4;
delay(20000);
}
}
Comment