หน้าเว็บ

วันพุธที่ 25 พฤศจิกายน พ.ศ. 2558

LAB2 การควบคุมหลอด LED 2 ตัว ด้วยสวิตซ์ 4 ตัว : samplemicro

LAB 2 
ควบคุม
หลอด LED ด้วยสวิตซ์ 4 ตัว



เงื่อนไข 
  •  กดสวิตซ์ SW1 หลอด LED1 ติด และ LED2 ดับ
  •  กดสวิตซ์ SW2 หลอด LED1 ดับ และ LED2 ติด
  •  กดสวิตซ์ SW3 หลอด LED1 ติด และ LED2 ติด
  •  กดสวิตซ์ SW4 หลอด LED1 ดับ และ LED2 ดับ
จงเขียนโปรแกรมควบคุม 16F887 และจำลองการทำงานของวงจรด้วย โปรแกรม Proteus

การเขียนโปรแกรมด้วยภาษาซี
       กำหนดขา   INPUT , OUTPUT  
        SW1 คือ  input  กำหนดขา RC1   
        SW2  คือ  input  กำหนดขา RC2   
        SW3 คือ  input   กำหนดขา RC3  
        SW4 คือ  input   กำหนดขา RC4    
        RD1 คือ  output ที่ควบคุมหลอด LED1   
        RD2 คือ  output ที่ควบคุมหลอด LED2   
เริ่มต้นเขียน
#include<pic.h>
__CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF);
#define _XTAL_FREQ 20000000 //ฟังก์ชันของการหน่วงเวลา
void main(void)
{
  TRISC1=1;   //ประกาศว่า ขา RC1 คือ input หาก = 1 จะเป็น input
  TRISC2=1;   //ประกาศว่า ขา RC2 คือ input หาก = 1 จะเป็น input
  TRISC3=1;   //ประกาศว่า ขา RC3 คือ input หาก = 1 จะเป็น input
  TRISC4=1;   //ประกาศว่า ขา RC4 คือ input หาก = 1 จะเป็น input
  TRISD1=0;   //ประกาศว่า ขา RD1 คือ output หาก = 0 จะเป็น output
  TRISD2=0;   //ประกาศว่า ขา RD2 คือ output หาก = 0 จะเป็น output
  RD1=0;   //ประกาศค่าเริ่มต้นของ RD1 ให้เท่ากับ 0  คือ LED ยังไม่ทำงานนั้นเอง
  RD2=0;   //ประกาศค่าเริ่มต้นของ RD2 ให้เท่ากับ 0  คือ LED ยังไม่ทำงานนั้นเอง
  while(1)
  {
      if(RC1==0)   //ถ้ากด SW1 RC1=0ไหม
      { __delay_ms(5);
         RD1=1;      //แล้วให้ RD1=1 คือให้ LED1 ติด
         RD2=0;      //แล้วให้ RD2=0 คือให้ LED2 ดับ
         while(!RC1);    //เมื่อกด SW1 ค้างไว้จะทำให้ค่าในลูป while เป็นจริงเมื่อปล่อยจึงเป็นเท็จ
      }
      if(RC2==0)   //ถ้ากด SW2 RC2=0ไหม
      { __delay_ms(5);
         RD1=0;     //แล้วให้ RD1=0 คือให้ LED1 ดับ
         RD2=1;     //แล้วให้ RD2=1 คือให้ LED2 ติด
         while(!RC2);//เมื่อกด SW2 ค้างไว้จะทำให้ค่าในลูป while เป็นจริงเมื่อปล่อยจึงเป็นเท็จ
      }
     if(RC3==0)   //ถ้ากด SW3 RC3=0ไหม
      { __delay_ms(5);
         RD1=1;      //แล้วให้ RD1=1 คือให้ LED1 ติด
         RD2=1;      //แล้วให้ RD2=1 คือให้ LED2 ติด
         while(!RC3);//เมื่อกด SW3 ค้างไว้จะทำให้ค่าในลูป while เป็นจริงเมื่อปล่อยจึงเป็นเท็จ
      }
      if(RC4==0)   //ถ้ากด SW4 RC4=0ไหม
      { __delay_ms(5);
         RD1=0;     //แล้วให้ RD1=0 คือให้ LED1 ดับ
         RD2=0;     //แล้วให้ RD2=0 คือให้ LED2 ดับ
         while(!RC4);//เมื่อกด SW4 ค้างไว้จะทำให้ค่าในลูป while เป็นจริงเมื่อปล่อยจึงเป็นเท็จ
      }
  }
}    

อัพเดทการทดลอง LAB2 พรุ่งนี้ 
( นำเสนอในรูปแบบของวีดีโอจะได้เข้าใจง่าย)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น