Không vào được chương trình ngắt

dangkhoa913

Trứng gà
chương trình ngắt tràng timer của e nhưng sao không thể vào được chương trình ngắt::-s
#include <msp430g2553.h>
#include "STE2007.h"
int k=7;
char i[10]={'1','2','3','4','5','6','7','8','9'};
int main(void) {
WDTCTL = WDTPW | WDTHOLD;// Stop watchdog timer
BCSCTL1 = CALBC1_16MHZ; // Set range
DCOCTL = CALDCO_16MHZ; // Set DCO step + modulation

lcd_init();
lcd_clear();

TACTL=TASSEL_2+MC_2+TAIE;
TACCTL1=CCIE;
CCR1=10000;
lcd_gotoxy(20,20);

lcd_putc(i[k]);
_BIS_SR(LPM0_bits+GIE);
return 0;
}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A(void)
{


k=5;





}
 

messier

Ban Chủ Nhiệm
Bạn đặt breakpoint trong hàm ngắt xem chương trình có nhảy vô không?
 

dangkhoa913

Trứng gà
A messier e vừa đạt breakpoint thì chương trình có nhảy vào ngắt nhưng trong chuong trình ngắt e đã làm thay đổi giá trị k ma tai sao ham hiển thị lcd_putc(i[k]); không thay đổi :gach
 
dangkhoa913: phải đặt lệnh lcd_putc trong ngắt để nó chạy nữa em nhé.
biến k nên khai báo thêm prefix volatile ở đằng trước nữa. Tức là:
Code:
volatile int k = 7;
Ngoài ra nếu giá trị của nó không vượt quá 255 thì nên khai báo kiểu biến unsigned char thay vì int để tiết kiệm bộ nhớ.
 

dangkhoa913

Trứng gà
a Keon2991 e đặt trong ngắt thì nó chạy được rồi . nhưng e thử duy chuyển vào trong hàm while(1) để kiểm tra liên tục thì nó lại không cập nhật giá trị mới của biến k khi nó nhảy vào hàm ngắt ? tại sao vậy a ?
 

dangkhoa913

Trứng gà
với e chưa hiểu ý nghĩa của lệnh này :if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
CALDCO_1MHZ có giá trị như thế nào vậy a Keon2991
 
Top