View Single Post
Old 12-05-2008, 01:05 AM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi hanhthien184 View Post
Cũng với chương trình ngắt phía trên:
+Khai báo biến toàn cục:
Code:
 unsigned int ADC_1;
 unsigned int ADC_2;
+Trình phục vụ ngắt:
Code:
void interrupt_int4() org 0x80 {                //When ADS is asserted
           addr_select = PORTA;
           addr_select &= 0x3F;
           if (addr_select == 0)
            {
             LATD = ADC_1;                   //ADC_1
             }
             else if (addr_select == 2)
               {
                LATD = ADC_2;                   //ADC_2
                }
                else
                   {
                    LATD = addr_select;
                   }
           IFS3bits.INT4IF = 0;           //ensure interrupt not pending
       }
Nhưng khi thay đổi giá trị của ADC_1 và ADC_2 trong hàm main()
ví dụ:
Code:
 ADC_1 = 0xAA;
 ADC_2 = 0xBB;
thì LATD không đưa ra giá trị đúng khi có ngắt ngoài INT4.
Vấn đề ở đây là gì ??? Các bác giúp em với
Nếu LATD không hề mang giá trị hợp lý nào trong số ADC_1, ADC_2, và addr_select, thì có nghĩa là trình phục vụ ngắt không được chạy.

Theo tôi thì nên dùng switch case thay cho các if lồng nhau.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn