หัวข้อ: มาเริ่มเขียนโค๊ดควบคุม PIC ด้วยภาษาซี เริ่มหัวข้อโดย: kiano♥ ที่ ธันวาคม 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 จะเห็นว่าการเขียนจะเขียนเรียงลำดับลงมาทำให้อ่านง่าย จากการเขียนโค๊ดด้านบน ถ้าต่อวงจรตามรูปด้านล่าง หลอดจะติดตามภาพครับ หัวข้อ: Re: มาเริ่มเขียนโค๊ดควบคุม PIC ด้วยภาษาซี เริ่มหัวข้อโดย: kiano♥ ที่ ธันวาคม 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 มิลลิเซค หลังจากนั้นจะทำงานที่แถวถัดไปด้านล่าง ดูรูปประกอบแล้วจะทำให้เข้าใจขึ้นครับ หัวข้อ: Re: มาเริ่มเขียนโค๊ดควบคุม PIC ด้วยภาษาซี เริ่มหัวข้อโดย: kiano♥ ที่ มกราคม 01, 2010, 12:11:08 pm - ฟังก์ชั่นภาษาซี
จากกระทู้ที่แล้วเราได้รู้โครงสร้างของภาษาซีที่ใช้กับ PIC แล้ว ต่อมาจะมาดูฟังก์ชั่นที่ใช้ในการเขียนโค๊ดกันครับ เนื้อหา.... หัวข้อ: Re: มาเริ่มเขียนโค๊ดควบคุม PIC ด้วยภาษาซี เริ่มหัวข้อโดย: sua ที่ ตุลาคม 27, 2010, 04:29:52 am THANK!!
กำลังรอตอนต่อไปครับ wav!! หัวข้อ: Re: มาเริ่มเขียนโค๊ดควบคุม PIC ด้วยภาษาซี เริ่มหัวข้อโดย: E29IOU ที่ พฤศจิกายน 17, 2010, 09:52:21 am ท่านใช้โปรแกรมอะไรเขียนอะครับ ถึงมีวงจร และโปรแกรมเรียงทีละบรรทัดครับ
หัวข้อ: Re: มาเริ่มเขียนโค๊ดควบคุม PIC ด้วยภาษาซี เริ่มหัวข้อโดย: kiano♥ ที่ พฤศจิกายน 17, 2010, 01:02:39 pm มันทำยากอ่ะครับ ถึงยังทำต่อไม่เสร็จนี่ไง
ก็เอาหลายๆโปรแกรมเปิดไว้ แล้วแคปเจอร์หน้าจอ แล้วเอาภาพมาวางซ้อนกัน เปิดที 4-5 โปรแกรม ทำแล้วมึนเอง สุดท้ายแล้วทำไม่สำเหร็จ ที่ใช้คือ 1. โปรแกรมเขียนโค๊ด เพื่อแคปเจอร์หน้าจอเอาภาพโค๊ดมา(MikroC) 2. โปรแกรม AutoCAD เพื่อแคปเจอร์หน้าจอเอาภาพวงจรมา 3. โปรแกรม Microsoft paint เพื่อตัดเอาภาพที่แคปเจอร์มาจากโปรแกรมต่างๆมาต่อกัน 4. โปรแกรม Adobe ImageReady 7.0 เพื่อทำเป็นภาพเคลื่อนไหว เห้อ เหนื่อย ... หัวข้อ: Re: มาเริ่มเขียนโค๊ดควบคุม PIC ด้วยภาษาซี เริ่มหัวข้อโดย: Nattawut-LSV Team ที่ พฤศจิกายน 17, 2010, 06:30:42 pm มันทำยากอ่ะครับ ถึงยังทำต่อไม่เสร็จนี่ไง ก็เอาหลายๆโปรแกรมเปิดไว้ แล้วแคปเจอร์หน้าจอ แล้วเอาภาพมาวางซ้อนกัน เปิดที 4-5 โปรแกรม ทำแล้วมึนเอง สุดท้ายแล้วทำไม่สำเหร็จ ที่ใช้คือ 1. โปรแกรมเขียนโค๊ด เพื่อแคปเจอร์หน้าจอเอาภาพโค๊ดมา(MikroC) 2. โปรแกรม AutoCAD เพื่อแคปเจอร์หน้าจอเอาภาพวงจรมา 3. โปรแกรม Microsoft paint เพื่อตัดเอาภาพที่แคปเจอร์มาจากโปรแกรมต่างๆมาต่อกัน 4. โปรแกรม Adobe ImageReady 7.0 เพื่อทำเป็นภาพเคลื่อนไหว เห้อ เหนื่อย ... สู้ต่อไปครับ...ผมจะเป็นกำลังให้ครับ..อิอิ :P พักตรงนี้ก่อน มีแรงแล้วค่อยก้าวเดินต่อไปใหม่... tongue3 หัวข้อ: Re: มาเริ่มเขียนโค๊ดควบคุม PIC ด้วยภาษาซี เริ่มหัวข้อโดย: Dumrong007 ที่ กันยายน 26, 2011, 11:37:39 pm รอบทต่อไป ::) ::)
|