View Single Post
Old 12-05-2008, 12:04 PM   #4
hanhthien184
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Bài gửi: 4
:
Cám ơn anh Nam đã giúp đỡ !!! .Em sẽ nghiên cứu để chuyển sang C30.
Về vấn đề hàm ngắt INT4:
-Ban đầu khi em chưa sử dụng biến ADC_1 và ADC_2 mà đưa luôn giá trị ra PORTD:
Code:
void interrupt_int4() org 0x80 {                //When ADS is asserted
           addr_select = PORTA;
           addr_select &= 0x3F;
           if (addr_select == 0)
            {
             LATD = 0xAA;               
             }
             else if (addr_select == 2)
               {
                LATD = 0xBB;                  
                }
                else
                   {
                    LATD = addr_select;
                   }
           IFS3bits.INT4IF = 0;           //ensure interrupt not pending
       }
thì giá trị đưa ra ở trên PORTD là hợp lý.Nghĩa là ngắt có xảy ra và addr_select là chính xác.
Vấn đề ở đây có lẽ là do cách mình khai báo biến:
Code:
 unsigned int ADC_1;
 unsigned int ADC_2;
Các giá trị ADC_1 và ADC_2 được lấy từ chuyển đổi ADC trên hai kênh(trong hàm main).
1>Liệu có sự thay đổi nào của ADC_1 và ADC_2 khi nhảy vào trong hàm ngắt
2>cách gán giá trị trong hàm ngắt như sau có vấn đề:
Code:
LATD = ADC_1;      
LATD = ADC_2;
Nhờ bác cho ý kiến giúp em...
hanhthien184 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn