01/10/2018, 08:13

Lỗi không xác định khi lập trình vi điều khiển

Dòng code phía dưới của em chạy không ổn định lúc đc lúc không xin các anh chị và các bạn giúp dùm với P1^ 0 nối với nút bấm. P2 gắn với các đèn led.

sbit BTN = P1^0;

void main()
{  
    unsigned char i;

    while(1)
    {
        P2 = ~P2;
        i = 0;	
        while(i < 100)
        { 	
            delay_ms(10);
            if(BTN == 0)
            {
                delay_ms(20);
                if(BTN == 0)
                {
                    P2 = 0x00;
                    break;
                }
            }
            i++;
        }

        if(i != 100)
            break;
    }
}
Killua viết 10:28 ngày 01/10/2018

Nó chạy ko đc thì nó báo thế nào , bạn phải đưa thông báo lỗi ra chứ

nghia viết 10:23 ngày 01/10/2018

lúc thì bấm vào thì nó dừng liền lúc thì bấm không dừng bạn!

Văn Dương viết 10:29 ngày 01/10/2018

Ở đây tôi đoán nút nhấn cậu đang tích cực mức 0, tức là nhấn thì BTN sẽ là 0.
Tại vòng while(i<100) nếu nhấn nút quá 20ms sẽ dính if(BTN==0) thứ 2 và sẽ thoát vòng while này mặc cho i có =100 hay không. Cái này hên xui như lô đề. Nhưng ngay bên dưới vòng while(i<100) lại có kiểm tra i!=100 để thoát while chính. Nếu lúc này i khác 100 sẽ thoát hoàn toàn chương trình-> chip chạy lăng quăng.

nghia viết 10:20 ngày 01/10/2018

vậy bạn có cách giải quyết không ah xin đc chỉ giáo! mình chỉ học từ trên mạng nên bó tay bạn có thể giúp mình đc không cảm ơn rất nhiều!

Bài liên quan
0