Help! Ngắt ngoài trong 8051, code C

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Help! Ngắt ngoài trong 8051, code C

Bài gửi by Admin on Mon Dec 12, 2011 10:23 am

Mình có ý tưởng như thế này: 8 LED nối với 1 Port bất kỳ của 8051. Bình thường cấp nguồn thì các LED chỉ sáng, khi bấm nút 1 thì 8LED nháy theo kiểu thứ nhất hết chu kì thì dừng lại sáng hết, bấm nút 2 thì nó nháy kiểu 2 hết chu kì dừng lại và chỉ sáng.
Có ai giúp mình ko? code C nha

Admin
Admin

Tổng số bài gửi : 263
Join date : 25/05/2011
Age : 25
Đến từ : Bình Định

Xem lý lịch thành viên http://cd2a.forumvi.com

Về Đầu Trang Go down

Re: Help! Ngắt ngoài trong 8051, code C

Bài gửi by Admin on Tue Dec 13, 2011 11:55 pm

Hỏi miết mà không ai trả lời thôi tự xử luôn.
Mình tự mày mò viết được như thế này (viết cho xe máy) chưa tối ưu lắm, các bạn có gì góp ý nha:

#define demay P0_0
#define phanh P0_1
#define left P0_2
#define right P0_3
#define turn_on P0_4
unsigned char i,j;
unsigned char M[]={0x88,0x44,0x22,0x11,0x89,0x45,0x23,0x13,
0x8b,0x47,0x27,0x17,0x8f,0x4f,0x2f,0x1f,
0x9f,0x5f,0x3f,0xbf,0x7f,0xff};
unsigned char N[]={0x88,0x44,0x22,0x11,0x88,0x44,0x22,0x11,
0x88,0x44,0x22,0x11,0x88,0x44,0x22,0x11,
0x88,0x44,0x22,0x11,0x88,0x44};


//****************************************************************//

void tre(long h)
{
long n;
for(n=0;n {
;
}
}

//*******************************************************************//


void chop()
{
P1=0xff;
tre(8000);
}


//********************************************************************//


void chaylenchayxuong()
{
unsigned char A[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
unsigned char B[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
for(i=0;i<9;i++)
{
P1=A[i];
tre(1000);
}
for(j=0;j<9;j++)
{
P1=B[j];
tre(1000);
}
}

//------------------------------------------------------------------------


void dungyen_p1()
{
do
{
P1=0xff;
}
while (demay==0);
}

//=========================================================================


void dungyen_p2_3()
{
do
{
P2=P3=0xff;
}
while(phanh==0);
}


//=============================================================================

void de_may()
{
P2=P3=0x00;
for(i=0;i<22;i++)
{
P2=M[i];
tre(300);
P3=N[i];
tre(300);
}
for(i=0;i<22;i++)
{
P3=M[i];
tre(300);
P2=0xff;
}
}


//==============================================================================



unsigned char G[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //dem sang chay thuan
unsigned char H[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00}; //dem sang chay thuan
void luot_khi_bat_khoa()
{
for(i=0;i<8;i++)
{
P2=G[i];
tre(700);
}
P2=0x00; tre(0);
for(i=0;i<9;i++)
{
P3=H[i];
tre(700);
}
}

//======================================================================================

unsigned char K[]={0x11,0x22,0x44,0x88}; //luot 1 cach 2
void luot_khi_phanh()
{
for(j=0;j<4;j++)
{
P2=P3=K[j];
tre(1000);
}
}

//======================================================================================
//======================================================================================

void main()
{
P2=P3=0x00;
luot_khi_bat_khoa();
chop();
chaylenchayxuong();
dungyen_p1();
de_may();
dungyen_p2_3();
while(1)
{
do
{
luot_khi_phanh();
}
while(phanh==1);
do
{
P2=P3=0xff;
}
while(phanh==0);
}
}


Video:

[You must be registered and logged in to see this link.]

Admin
Admin

Tổng số bài gửi : 263
Join date : 25/05/2011
Age : 25
Đến từ : Bình Định

Xem lý lịch thành viên http://cd2a.forumvi.com

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết