Chẳng qua là thế này em có viết chương trình nhưng mà em không biết phải thành lập Lưu đồ thuật toán như thế nào. Mong ae nào giỏi về lập trình c cho 89c51 giúp em một tí.Ở đây thì P1 là nối với SW 8 chân, P0 nối led 7 đoạn. P2 nối led đơn(8 led). Bài toán yêu cầu là khi ma bật sw một nấc đầu tiên thì led 7doan hiện thị số 1 và led đơn chạy nhanh hơn, khi bận sw 1,2 thì led 7 hiện thị số 2 và led đơn chạy nhanh hơn. và bật sw 1,2,3 thì led 7 hiện thị số 3 và led đơn chạy nhanh hơn.Khi bật lên 4 nấc thì led 7 sẽ về 0 và led đơn chạy bình thường khi chưa bật các sw. Em cảm ơn nhiều.
code:
#include <at89x51.h>
delay(int n)
{
unsigned int i;
for(i=0;i<n;i++);
}
main()
{
unsigned leddon[6]={0x5f,0xaf,0xD7,0xeb,0xf5,0xfa};
unsigned int x,j;
while(1)
{
for(j=0;j<6;j++)
{
if(P1>=0x0f)
x=100000;
else
x=100000/(P1*P1);
P2=leddon[j];
delay(x);
}
if(P1==0x01)
P0=0xF9;
else
{
if(P1==0x03)
{
P0=0xa4;
}
else
{
if(P1==0x07)
{
P0=0xb0;
}
else
P0=0xc0;
}
}
}
}
code:
#include <at89x51.h>
delay(int n)
{
unsigned int i;
for(i=0;i<n;i++);
}
main()
{
unsigned leddon[6]={0x5f,0xaf,0xD7,0xeb,0xf5,0xfa};
unsigned int x,j;
while(1)
{
for(j=0;j<6;j++)
{
if(P1>=0x0f)
x=100000;
else
x=100000/(P1*P1);
P2=leddon[j];
delay(x);
}
if(P1==0x01)
P0=0xF9;
else
{
if(P1==0x03)
{
P0=0xa4;
}
else
{
if(P1==0x07)
{
P0=0xb0;
}
else
P0=0xc0;
}
}
}
}