หน้าเว็บ

วันพุธที่ 23 ธันวาคม พ.ศ. 2558

LAB4 นับจำนวนการกดสวิตซ์

LAB 4
นับจำนวนการกดสวิตซ์

 เงื่อนไข
        เขียนโปรแกรมนับการกดสวิตซ์โดยให้แสดงค่าผ่านหลอด LED จำนวน 8 หลอดโดยแสดงเพิ่มทีละหลอดตามจำนวนที่กด เช่น กดสามครั้ง ก็ติดสามหลอด เป็นต้นเมื่อกดครั้งที่ 9 ให้กลับไปแสดงเหมือนครั้งที่ 1 และมีสวิตซ์สำหรับรีเซคค่าให้เป็น 0 (ดับหมด)
จงเขียนโปรแกรมควบคุม 16F887 และจำลองการทำงานของวงจรด้วย โปรแกรม Proteus

กำหนดขาอินพุตเอาต์พุต
ขา RC0 คือ สวิตซ์
ขา RC1 คือ สวิตซ์รีเซ็ต
ขา RDทั้งหมดเป็นเอาพุตท์

เริ่มต้นเขียน
#include<pic.h>
__CONFIG(FOSC_HS & WDTE_OFF & LVP_OFF);
#define _XTAL_FREQ  20000000
void main(void)
{char countIN;
TRISC1=1;
TRISC2=1;
TRISD=0;
PORTD=0;
while(1)
{if(RC1==0)
{__delay_ms(200);
countIN=countIN+1;
if(countIN==9){countIN=1;}
if(countIN==1){RD7=0;RD6=0;RD5=0;RD4=0;RD3=0;RD2=0;RD1=0;RD0=1;}
if(countIN==2){RD7=0;RD6=0;RD5=0;RD4=0;RD3=0;RD2=0;RD1=1;RD0=1;}
if(countIN==3){PORTD=0b00000111;}
if(countIN==4){RD7=0;RD6=0;RD5=0;RD4=0;RD3=1;RD2=1;RD1=1;RD0=1;}
if(countIN==5){PORTD=0b00011111;}
if(countIN==6){PORTD=0b00111111;}
if(countIN==7){PORTD=0x7F;}
if(countIN==8){PORTD=255;}
while(!RC1);
}
if(RC2==0)
{countIN=0;
PORTD=0b00000000;
}
}
}

จำลองการทำงานโดย Proteus
จะคอยอัพเดทนะครับ



1 ความคิดเห็น:

  1. ถ้าเกิดผมต้องการที่จะกดปุ่มสวิตช์ 1ปุ่ม3ครั้ง แล้วให้ไฟled 4ดวง เรียงติดกัน3ครั้ง จะต้องเขียนยังไงอะครับ ใช้โปรแกรม mplab ide v.8.92

    ตอบลบ