ปัญหาการใช้งาน 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 ถึงติดอะครับ หรือผมเขียนโปรแกรมผิดตรงไหนหรือเปล่า
รบกวนด้วยครับ ขอบคุณครับ
สอบถามปัญหาการใข้งาน 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 ถึงติดอะครับ หรือผมเขียนโปรแกรมผิดตรงไหนหรือเปล่า
รบกวนด้วยครับ ขอบคุณครับ