สอบถามปัญหาการใข้งาน PORT I/O PIC18F46K22

ปัญหาการใช้งาน PORT I/O ของ PIC18F46K22
ผมเขียนโค๊ด การสั่งงาน สวิตซ์ ควบคุม LED ให้ติดครับ
โดยใช้ MCU  PIC18F46K22 Clock 8 MHz
ใช้โปรแกรม mikroC PRO for PIC  Version 5.61 ตัวทดลองครับ

โปรแกรมสั่งงานตามนี้ครับ
โดยใช้  PORTC เป็น Output  และ  PORTB เป็น Input  กำหนดสวิซต์ที่ PORTB.F4 และ LED ที่ PORTC.F0-F7

void main() {
TRISC=0;
PORTC=0;
TRISD=0xff;

while(1){

if(PORTD.F4==0)
      {
      PORTC=0x0f;
      }
else
      {
      PORTC=0;
      }

}
}
ได้ทำการต่อวงจรบน PROTEUS ครับดังรูป



แต่พอรันมันกลับทำคำสั่งใน if เลยโดยไม่เช็คเงื่อนไข
คือ ปกติต้องกดสวิซต์ก่อน LED ถึงจะติด แต่ไม่ได้กดอะไรเลย LED ก็ติด



มันเป็นเพราะอะไรอะครับ แล้วจึงลอง ต่อวงจรโดยเปลี่ยนจาก PIC18F46K22 เป็น PIC18F452 ก็ทำงานเป็นปกติตามที่โปรแกรมไว้
คือ กด สวิซต์ แล้ว LED ถึงติดอะครับ หรือผมเขียนโปรแกรมผิดตรงไหนหรือเปล่า

รบกวนด้วยครับ ขอบคุณครับ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่