[ บทความ : DnRx051 - Lab01 ควบคุม LED ด้วย Switch]

 

ห่างหายกันไปนานเลยครับ กับบทความ พอดีภาคเรียนนี้ผมสอนวิชาไมโครโปรเซสเซอร์ โดยเน้นที่เรื่องการประยุกต์ใช้ MCS-51 เลยนำเอกสารประกอบการทดลอง มาให้ศึกษากัน คิดว่าพอเป็นประโยชน์ แก่ผู้ที่สนใจนะครับ ส่วนหนังสือประกอบการเรียนนั้น ก็คือ หนังสือ Micro-C/51

 

ตัวอย่างการรับข้อมูลจาก P3.0/P3.1 เพื่อกำหนดความเร็วของ LED

 

อุปกรณ์ 

บอร์ด DnRx051 (AT89C2051/AT89C4051) หรือวงจรจากหน้า 54

บอร์ด LED x8

บอร์ด SW x4 (P3.0-P3.3)

Micro-C/51 Version 2.4 หรือใหม่กว่า

 

เอกสารเพิ่มเติม

            คู่มือภาษาซีสำหรับไมโครคอนโทรลเลอร์ MCS-51 (หนังสือ Micro-C51)

                www.dunfield.com (ผู้สร้าง Micro-C)

 

พอร์ต  

P1.0-P1.7 ต่อกับ LED ที่ทำงานแบบ Sink (จากหนังสือหน้า 270)

P3.0 และ P3.1 ต่อเข้ากับวงจร Switch (จากหนังสือหน้า 278)

 

โปรแกรม

 

#include <8051reg.h>

 

char patt[] = {0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20,

               0x20, 0x10, 0x08, 0x04, 0x02, 0x01};

delay(speed)

int speed;

{

    int i;

    for (i=0; i<speed; i++);

}

 

main()

{

    char cnt;

    char tmp;

    int  speed;

    cnt = 0;

    speed = 10000;

    while(1) {

        tmp = P3&0x03;

        if (tmp == 2) {

            if (speed < 20000) speed += 1000;

            else speed = 20000;

            P1 = ~(patt[cnt]|0x80);

        } else if (tmp == 1) {

            if (speed > 1000) speed -= 1000;

            else speed = 1000;

            P1 = ~(patt[cnt]|0x40);

        } else {

            P1 = ~patt[cnt];

        }

        cnt++;

        if (cnt == 13) cnt = 0;

        delay(speed);

    }

}

 

 

คำถาม

ปุ่มจากพอร์ตใดทำให้ค่าลดลง

…………………………………………………………………………………..

ปุ่มจากพอร์ตใดทำให้ค่าเพิ่มขึ้น

…………………………………………………………………………………..

ปัญหาจากโปรแกรมนี้คือ

1…………………………………………………………………………………..

2…………………………………………………………………………………..

เหตุใดต้อง AND ค่าของ P3 ด้วย 0x03

…………………………………………………………………………………..

…………………………………………………………………………………..

 


เขียนโดย : ศุภชัย บุศราทิจ
Author : Supachai Budsaratij
e-mail : raek@se-ed.net
วันที่ทำการปรับปรุง : วันอังคารที่ ๑ มกราคม พ.ศ. ๒๕๔๕