(C10) Lỗi vòng lặp for

21104241

Trứng gà
Mình đang thử nghiệm interrupt trên kit msp430 nhưng lại bị báo lỗi ở vòng lặp for, không biết xử lý thế nào, bạn nào chỉ với.

Code:
Code:
#include <msp430.h>
 
/*
* main.c
*/
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= 0X41; // SET BIT0, BIT6 OUTPUT
P1DIR &=~ 0X08; //SET BIT3 INPUT
P1IE |= 0X08; //CHO PHEP NGAT TAI CHAN P1.3
P1IES |= 0X08; // CHON XUNG TAC DONG CANH LEN
_BIS_SR ( GIE ); // CHO PHEP NGAT
while(1)
{
P1OUT ^= 0X01;
_delay_cycles(1000000);
}
}
// chuong trinh ngat
interrupt void test(void)
{
if (P1IFG & 0X08) // NEU CO NGAT TAI CHAN P1.3
{
for (int i=1;i<=10;i++)
{
P1OUT ^= 0x40;
_delay_cycles(1000000);
}
P1IFG &=~ 0x08; // xoa ngat tai chan P1.3
}
}
 

doanhung93vt

Trứng gà
kì vậy ta, mình thấy đúng mà sao bên mình cũng bị báo lỗi, thôi thì cách khắc phục tạm thời là thế này

Code:
    if (P1IFG & 0X08) // NEU CO NGAT TAI CHAN P1.3
        {
        int i;
        for(i=1;i<10;i++)
        {
            P1OUT ^= 0x40;
            _delay_cycles(1000000);
        }
        P1IFG &=~ 0x08; // xoa ngat tai chan P1.3
        }
khai báo i trước đi f for sau :botay:

còn lại hóng người nào biết vào chỉ thêm với :2cool_burn_joss_stick:
 

lee_trieu

Gà con
Mình đang thử nghiệm interrupt trên kit msp430 nhưng lại bị báo lỗi ở vòng lặp for, không biết xử lý thế nào, bạn nào chỉ với.

Code:
Code:
#include <msp430.h>
 
/*
* main.c
*/
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= 0X41; // SET BIT0, BIT6 OUTPUT
P1DIR &=~ 0X08; //SET BIT3 INPUT
P1IE |= 0X08; //CHO PHEP NGAT TAI CHAN P1.3
P1IES |= 0X08; // CHON XUNG TAC DONG CANH LEN
_BIS_SR ( GIE ); // CHO PHEP NGAT
while(1)
{
P1OUT ^= 0X01;
_delay_cycles(1000000);
}
}
// chuong trinh ngat
interrupt void test(void)
{
if (P1IFG & 0X08) // NEU CO NGAT TAI CHAN P1.3
{
for (int i=1;i<=10;i++)
{
P1OUT ^= 0x40;
_delay_cycles(1000000);
}
P1IFG &=~ 0x08; // xoa ngat tai chan P1.3
}
}
Bạn không sai chỗ vòng lặp for nhé !:-(
bạn sai ở chương trình phục vụ ngắt :
bạn lấy code này build xem có đúng như bạn muốn chưa:)Chúc bạn thành công !
PHP:
#include <msp430g2553.h>
 
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= BIT6+BIT0; // SET BIT0, BIT6 OUTPUT
P1DIR &=~ BIT3; //SET BIT3 INPUT
P1REN |= BIT3;                            // P1.3 pullup
P1IE |= BIT3; //CHO PHEP NGAT TAI CHAN P1.3
P1IES &=~ BIT3; // CHON XUNG TAC DONG CANH LEN
_BIS_SR ( GIE ); // CHO PHEP NGAT
while(1)
{
P1OUT ^= BIT0;
__delay_cycles(100000);
}
}
#pragma vector=PORT1_VECTOR
__interrupt void test(void)
{
if (P1IFG & BIT3) // NEU CO NGAT TAI CHAN P1.3
{
for (int i=1;i<=10;i++)
{
P1OUT ^= BIT6;
_delay_cycles(500000);
}
P1IFG &=~ BIT3; // xoa ngat tai chan P1.3
}
}
P/S: Bạn nhớ chon P1REN cho SW nha !!:D
 
Top