Forum
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

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

Go down

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

Bài gửi by Admin 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
Admin

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

https://cd2a.forumvi.com

Về Đầu Trang Go down

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

Bài gửi by Admin 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:

Admin
Admin
Admin

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

https://cd2a.forumvi.com

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

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