มาเริ่มเขียนโค๊ดควบคุม PIC ด้วยภาษาซี
LSVคลังสมองออนไลน์ "ปีที่14"
พฤศจิกายน 25, 2024, 11:35:56 pm *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
 
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: มาเริ่มเขียนโค๊ดควบคุม PIC ด้วยภาษาซี  (อ่าน 22334 ครั้ง)
kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« เมื่อ: ธันวาคม 29, 2009, 11:47:43 am »

เนื้อหา...
โปรแกรมภาษาซีที่จะกล่าวถึงในกระทู้นี้ จะหมายถึงโปรแกรม MikroC ซึ่งดูรายละเอียดได้ในกระทู้ ของการใช้งานโปรแกรม MikroC นะครับ

- โครงสร้างโปรแกรมภาษาซี
- ฟังก์ชั่น
- ชนิดของตัวแปร
- ค่าคงที่
- การคำนวณทางคณิตศาสตร์
- เงื่อนไขการทำงานและลอจิก
- การกระทำทางบิต
- การทำงานแบบมีเงื่อนไข

-------------------------------------------------------------------------------------------------------

- โครงสร้างโปรแกรมภาษาซี
ภาษาซี จะประกอบด้วย 3 ส่วนหลักๆคือ 1. ฟังก์ชั่น 2.ตัวแปร 3.คำสั่งการทำงาน
ตัวอย่างโปรแกรมภาษาซี

main
{
    portB=0B00000011;
}

โปรแกรมนี้จะส่งค่า 0B00000011 ออกแสดงผลทางพอร์ต B ซึ่งอธิบายโปรแกรมได้ดังนี้
main เป็นฟังก์ที่ต้องมีในทุกโปแกรม เป็นฟังก์ชั่นหลัก และส่วนอื่นๆจะอยู่ภายในเครื่องหมาย { } ทุกครั้ง
portB=0B00000011; เป็นคำสั่งในการส่งค่า 0B00000011 ออกแสดงผลทางพอร์ต B นั่นหมายถึงถ้าพอร์ต B ซึ่งมี 8 บิตได้ต่อหลอด LED ไว้ มันก็จะติด 2 หลอด คือบิตที่ 0 กับบิตที่ 1 คำสั่งในโปรแกรมภาษาซี ต้องลงท้ายด้วยเครื่องหมาย  ;  ด้วยทุกครั้ง
นี้คือตัวอย่างการเขียน code ในถาษา C จะเห็นว่าการเขียนจะเขียนเรียงลำดับลงมาทำให้อ่านง่าย
จากการเขียนโค๊ดด้านบน ถ้าต่อวงจรตามรูปด้านล่าง หลอดจะติดตามภาพครับ


บันทึกการเข้า

kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #1 เมื่อ: ธันวาคม 30, 2009, 07:14:11 am »

จากตัวอย่างด้านบน จะเห็นว่า มันไม่ได้ยากเลยใช่ไหมครับ
มาถึงตรงนี้ บางคนอาจจะคิดไปแล้ว ว่าถ้าอยากให้มันกระพริบล่ะ เขียนแบบนี้ได้ไหม

main
{
    trisB=0B00000000;
    portB=0B00000011;
    portB=0B00000000;
}

คำอธิบายโค๊ดดังนี้ครับ
trisB=0B00000000; จะกำหนดให้รีจิสเตอร์ trisB เป็น 0 ทุกบิต เพื่อให้พอร์ต B ทุกบิตเป็นเอาพุต
portB=0B00000011;  แถวนี้จะส่งค่า portB=0B00000011 ออกแสดงผลทางพร์อต B หลอดจะติดสองหลอด
portB=0B00000000;  แถวนี้จะส่งค่า portB=0B00000000 ออกแสดงผลทางพร์อต B หลอด LED จะดับหมดทุกหลอด แล้วก็จบการทำงาน

อ้าว แล้วถ้าอยากให้มันกระพริบต่อเนื่องล่ะ ทำอย่างไร?? ก็จะเขียนได้ดังนี้ครับ

main
{
trisB=0B00000000;
while(1)
{
    portB=0B00000011;
    portB=0B00000000;
}
}

จะเห็นว่า เพิ่มเข้ามาอีกคือ while(1) ผลคือ จะเป็นการวนทำงานคำสั่งที่อยู่ใน {} ของ while(1) แบบไม่มีจบ จนกว่าจะหยุดจ่ายไปให้กับวงจร ถ้าเขียนโค๊ดตามนี้ หลอดก็จะกระพริบต่อเนื่อง จนกว่าจะหยุดจ่ายไฟครับ ถ้าต่อดูการแสดงผลก็จะเห็นว่า หลอดติดตลอดเวลา ไม่เห็นกระพริบเลย .....
ไม่ใช่หรอกครับ ที่จริงมันกระพริบ แต่มันจะกระพริบด้วยความเร็ว 1,000,000 ครั้งต่อวินาที(1Mhz) ซึ่งตาของเรามองไม่ทัน อ้าว แล้วทำยังไงล่ะครับ

ก็ต้องเพิ่มการหน่วงเวลาให้มันครับ คือหลังจากหลอดติดแล้ว มันก็จะติดค้างไว้แบบนั้นก่อน จนกว่าลูปการหน่วงเวลาจบ แล้วหลอดถึงจะดับ แล้วก็ดับค้างไว้แบบนั้นก่อน รอลูปการหน่วงเวลา แล้วก็วนการทำงานแบบนี้ไปเรื่อยๆ จนกว่าจะหยุดจ่ายไฟ จะได้โค๊ดตามด้านล่างครับ

main()
{
    trisB=0B00000000;
    while(1)
    {
        portB=0b00000011;
        delay_ms(500);
        portB=0b00000000;
        delay_ms(500);
    }
}

อธิบายแถว delay_ms(500); ได้ดังนี้ครับ ... เป็นรูปแบบการเขียนในโปรแกรม MikroC ที่ต้องเขียนในรูปแบบนี้ ผลจากการเขียนคือ ตัวซีพียูจะทำงานนับวนลูปไปเรื่อยๆ จนกว่าจะได้รอบการทำงานเป็น 500 มิลลิเซค หลังจากนั้นจะทำงานที่แถวถัดไปด้านล่าง ดูรูปประกอบแล้วจะทำให้เข้าใจขึ้นครับ
บันทึกการเข้า
kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #2 เมื่อ: มกราคม 01, 2010, 12:11:08 pm »

- ฟังก์ชั่นภาษาซี

จากกระทู้ที่แล้วเราได้รู้โครงสร้างของภาษาซีที่ใช้กับ PIC แล้ว ต่อมาจะมาดูฟังก์ชั่นที่ใช้ในการเขียนโค๊ดกันครับ
เนื้อหา....
บันทึกการเข้า
sua
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 10


อีเมล์
« ตอบ #3 เมื่อ: ตุลาคม 27, 2010, 04:29:52 am »

 THANK!!
กำลังรอตอนต่อไปครับ
 wav!!
บันทึกการเข้า
E29IOU
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 15



« ตอบ #4 เมื่อ: พฤศจิกายน 17, 2010, 09:52:21 am »

ท่านใช้โปรแกรมอะไรเขียนอะครับ ถึงมีวงจร และโปรแกรมเรียงทีละบรรทัดครับ
บันทึกการเข้า
kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #5 เมื่อ: พฤศจิกายน 17, 2010, 01:02:39 pm »

มันทำยากอ่ะครับ ถึงยังทำต่อไม่เสร็จนี่ไง

ก็เอาหลายๆโปรแกรมเปิดไว้ แล้วแคปเจอร์หน้าจอ แล้วเอาภาพมาวางซ้อนกัน
เปิดที 4-5 โปรแกรม ทำแล้วมึนเอง สุดท้ายแล้วทำไม่สำเหร็จ

ที่ใช้คือ
1. โปรแกรมเขียนโค๊ด เพื่อแคปเจอร์หน้าจอเอาภาพโค๊ดมา(MikroC)
2. โปรแกรม AutoCAD เพื่อแคปเจอร์หน้าจอเอาภาพวงจรมา
3. โปรแกรม Microsoft paint เพื่อตัดเอาภาพที่แคปเจอร์มาจากโปรแกรมต่างๆมาต่อกัน
4. โปรแกรม Adobe ImageReady 7.0 เพื่อทำเป็นภาพเคลื่อนไหว

เห้อ เหนื่อย ...
บันทึกการเข้า
Nattawut-LSV Team
E23IUY
.กลุ่มผู้มีน้ำใจงาม.
member
*

คะแนน808
ออฟไลน์ ออฟไลน์

กระทู้: 3581


อีเมล์
« ตอบ #6 เมื่อ: พฤศจิกายน 17, 2010, 06:30:42 pm »

มันทำยากอ่ะครับ ถึงยังทำต่อไม่เสร็จนี่ไง

ก็เอาหลายๆโปรแกรมเปิดไว้ แล้วแคปเจอร์หน้าจอ แล้วเอาภาพมาวางซ้อนกัน
เปิดที 4-5 โปรแกรม ทำแล้วมึนเอง สุดท้ายแล้วทำไม่สำเหร็จ

ที่ใช้คือ
1. โปรแกรมเขียนโค๊ด เพื่อแคปเจอร์หน้าจอเอาภาพโค๊ดมา(MikroC)
2. โปรแกรม AutoCAD เพื่อแคปเจอร์หน้าจอเอาภาพวงจรมา
3. โปรแกรม Microsoft paint เพื่อตัดเอาภาพที่แคปเจอร์มาจากโปรแกรมต่างๆมาต่อกัน
4. โปรแกรม Adobe ImageReady 7.0 เพื่อทำเป็นภาพเคลื่อนไหว

เห้อ เหนื่อย ...

สู้ต่อไปครับ...ผมจะเป็นกำลังให้ครับ..อิอิ  Tongue
พักตรงนี้ก่อน…มีแรงแล้วค่อยก้าวเดินต่อไปใหม่...
บันทึกการเข้า
Dumrong007
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 87


อีเมล์
« ตอบ #7 เมื่อ: กันยายน 26, 2011, 11:37:39 pm »

รอบทต่อไป Roll Eyes Roll Eyes
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  

Powered by MySQL Powered by PHP Powered by SMF 1.1 RC2 | SMF © 2001-2006, Lewis Media

lsv2555Please follow the new website at https://www.pohchae.com

Valid CSS!