Tình hình là bọn em đang làm cái đồ án về cái này, em viết mãi mà mô phỏng nó không chạy và ko hiểu là nó sai ở chỗ nào, bro nào biết có thể chỉ cho em nó sai ở đâu và phải sửa như thế nào được không ạ? em sắp phải nộp rồi mà cứ thế này thì gay quá! Cảm ơn mọi sự giúp đỡ của các bác !
Code của em thế này :
Mong sớm nhận đc hồi âm!
Em xin chân thành cảm ơn các pác!
Chương trình và mô phỏng : http://azsharing.com/c51f4a015yrt/DC..._PWM_.zip.html
p/s: mà cái chức năng gửi kèm file của 4rum hình như bị lỗi thì phải !
Code của em thế này :
#include <REGX51.H>
#define stop P1_0
#define thuan P1_1
#define nghich P1_2
#define tang P1_3
#define giam P1_4
bit PWM;
int k;
void bamxung(unsigned char duty)
{
PWM=1;
TR0=0;
TH0=-100*duty/256;
TL0=-100*duty%256;
TR0=1;
while(!TF0);
TF0=0;
PWM=0;
TR0=0;
TH0=-100*(100-duty)/256;
TL0=-100*(100-duty)%256;
TR0=1;
while(!TF0);
TF0=0;
}
unsigned char tangtoc(void)
{
if(tang==1)
{
while(tang);
}
else k++;
if(k==1)
bamxung(25);
if(k==2)
bamxung(50);
if(k==3)
bamxung(75);
if(k>3) k==0;
return(bamxung);
}
unsigned char giamtoc(void)
{
if(giam==1)
{
while(giam);
}
else k++;
if(k==1)
bamxung(75);
if(k==2)
bamxung(50);
if(k==3)
bamxung(25);
if(k>3) k==0;
return(bamxung);
}
void stopdc(void)
{
P2_0=0;
P2_1=0;
P2_2=0;
P2_3=1;
P2_4=1;
}
void quaythuan(void)
{
P2_1=0;
P2_0=PWM;
P2_3=0;
P2_2=1;
P2_4=1;
}
void quaynghich(void)
{
P2_0=0;
P2_1=PWM;
P2_4=0;
P2_3=1;
P2_2=1;
}
unsigned char n;
unsigned char chonchedo(void)
{
if(stop==0) n=1;
if(thuan==0) n=2;
if(nghich==0) n=3;
switch(n)
{
case 0: {break;}
case 1: {stopdc();break;}
case 2: {quaythuan();break;}
case 3: {quaynghich();break;}
}
return (n);
}
void main()
{
while(1)
{
TMOD=0x01;
tangtoc();
giamtoc();
chonchedo();
}
}
#define stop P1_0
#define thuan P1_1
#define nghich P1_2
#define tang P1_3
#define giam P1_4
bit PWM;
int k;
void bamxung(unsigned char duty)
{
PWM=1;
TR0=0;
TH0=-100*duty/256;
TL0=-100*duty%256;
TR0=1;
while(!TF0);
TF0=0;
PWM=0;
TR0=0;
TH0=-100*(100-duty)/256;
TL0=-100*(100-duty)%256;
TR0=1;
while(!TF0);
TF0=0;
}
unsigned char tangtoc(void)
{
if(tang==1)
{
while(tang);
}
else k++;
if(k==1)
bamxung(25);
if(k==2)
bamxung(50);
if(k==3)
bamxung(75);
if(k>3) k==0;
return(bamxung);
}
unsigned char giamtoc(void)
{
if(giam==1)
{
while(giam);
}
else k++;
if(k==1)
bamxung(75);
if(k==2)
bamxung(50);
if(k==3)
bamxung(25);
if(k>3) k==0;
return(bamxung);
}
void stopdc(void)
{
P2_0=0;
P2_1=0;
P2_2=0;
P2_3=1;
P2_4=1;
}
void quaythuan(void)
{
P2_1=0;
P2_0=PWM;
P2_3=0;
P2_2=1;
P2_4=1;
}
void quaynghich(void)
{
P2_0=0;
P2_1=PWM;
P2_4=0;
P2_3=1;
P2_2=1;
}
unsigned char n;
unsigned char chonchedo(void)
{
if(stop==0) n=1;
if(thuan==0) n=2;
if(nghich==0) n=3;
switch(n)
{
case 0: {break;}
case 1: {stopdc();break;}
case 2: {quaythuan();break;}
case 3: {quaynghich();break;}
}
return (n);
}
void main()
{
while(1)
{
TMOD=0x01;
tangtoc();
giamtoc();
chonchedo();
}
}
Em xin chân thành cảm ơn các pác!
Chương trình và mô phỏng : http://azsharing.com/c51f4a015yrt/DC..._PWM_.zip.html
p/s: mà cái chức năng gửi kèm file của 4rum hình như bị lỗi thì phải !
Comment