หัวข้อ: ช่วยหน่อยครับเขียนโปรแกรมpic เริ่มหัวข้อโดย: kitsada-num ที่ กุมภาพันธ์ 24, 2009, 02:03:50 pm ผมเริ่มเขียนโปรแกรม ใช้ mikroC กับ
pic16f627a เขียนแล้วรันใด้ แต่ผมอยากใส่ สวิต กด 1 ทีแล้วโปรแกรมรันจนจบ แล้วหยุด ถ้า กด สวิต ใหม่อีกก็จะรันอีกเหมือนเดิม ใส่ สวิต ที่ RA0 ขา17 แบบกดติด ปล่อยดับ จะใช้คำสั่งอะไรครับเพิ่มตรง ใหน ผมเริ่มทำครั่งแรกครับ ยังไม่มีความรู้ภาษาCเลย ใช้เปิดหนังสือแล้วทดลองเอา main() { TRISB = 0x00; { PORTB = 0x01; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x02; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x04; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x08; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x01; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x08; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x04; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x10; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x02; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x01; Delay_ms(500); PORTB = 0x00; Delay_ms(300); } } ขอความช่วยเหลือหน่อยครับ :D หัวข้อ: Re: ช่วยหน่อยครับเขียนโปรแกรมpic เริ่มหัวข้อโดย: kiano♥ ที่ กุมภาพันธ์ 24, 2009, 09:10:07 pm ผมว่า ไฟของคุณมันวิ่งแปลกๆนะครับ ไม่เรียงกัน แต่ไม่เป็นไรครับ ผมลองทำตามที่คุณต้องการแล้วนะครับ คือ สตาร์ทแล้ว ไฟวิ่ง 1 รอบ แล้วหยุด รอจนกว่าจะมีการกดสวิทช์อีกครั้ง การต่อสวิทช์ ก็ต่อแบบ Active Hight คือ ถ้าไม่กดสวิทช์ จะมี 0 ไปจ่ายที่ไอซี ถ้ากดจะมี 1 ไปจ่าย
ขออนุญาติอธิบายนะครับ ถ้าสำหรับคนเริ่มต้นจริงๆ ถึงขั้นตอนการเขียนโปรแกรม (ตามความคิดแบบลูกทุ่งของผมนะครับ ผมก็เริ่มจากหนังสือที่คุณว่าเหมือนกัน) เริ่มจาก เราต้องออกแบบโฟว์ชาร์ทการทำงานก่อน ว่าจะให้มันทำงานเป็นลักษณะอย่างไร แล้วเขียนรูปแบบการทำงานออกมาเป็นโฟว์ชาร์ท อย่างที่เห็นในรูป เสร็จแล้ว ก็เขียนโปรแกรม ตามรูปแบบโฟว์ชาร์ท ที่ออกแบบไว้ ใจเย็นๆค่อยๆไล่ไปแต่ละขั้นตอนตามโฟว์ชาร์ท และคอมเม้นต์โปรแกรมไว้เป็นช่วงๆตามโฟว์ชาร์ท ก็จะสำเหร็จเองครับ ผมก็ไม่ค่อยเก่ง แต่พอทำได้นิดหน่อยครับ จึงอธิบายรูปแบบการทำของผมไว้ให้อ่าน main() { cmcon=0x07; trisA=0x01; trisB=0x00; while(1) { PORTB = 0x01; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x02; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x04; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x08; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x01; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x08; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x04; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x10; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x02; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x01; Delay_ms(500); PORTB = 0x00; Delay_ms(300); } while(portA.F0==0) { delay_ms(10); } } หัวข้อ: Re: ช่วยหน่อยครับเขียนโปรแกรมpic เริ่มหัวข้อโดย: kiano♥ ที่ กุมภาพันธ์ 24, 2009, 09:32:42 pm ต้องขอโทษครับ ผมรีบร้อนตอบโพสไป อ่านไม่ค่อยละเอียด ที่จริงแล้วที่คุณต้องการคือ กดสวิทช์ ไฟวิ่ง 1 รอบ รอการกดใหม่ แล้วไฟจึงวิ่งอีกรอบ แต่ผมก็ได้แก้ไขให้แล้ว และโค๊ดข้างบน ที่จริงผมไม่ได้ตั้งใจให้มันผิด แต่มันมีที่ผิดอยู่ คือผมลืมใส่ตัว { } ไปหนึ่งคู่ มันจึงจะทำงานได้ตามโฟว์ชาร์ท งั้นถือว่าเป็นโจทย์ให้ลองฝึกหาเองนะครับ :> ถ้าลองดูโค๊ดตัวใหม่ที่ผมเขียนให้ละเอียด ก็จะรู้ ว่ามันขาดไปช่วงไหน ขอให้สนุกกับการทดลองนะครับ
main() { cmcon=0x07; trisA=0x01; trisB=0x00; portB=0x00; while(1) { while(portA.F0==0) { delay_ms(10); } { PORTB = 0x01; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x02; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x04; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x08; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x01; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x08; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x04; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x10; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x02; Delay_ms(500); PORTB = 0x00; Delay_ms(300); PORTB = 0x01; Delay_ms(500); PORTB = 0x00; Delay_ms(300); } } } หัวข้อ: Re: ช่วยหน่อยครับเขียนโปรแกรมpic เริ่มหัวข้อโดย: kitsada-num ที่ กุมภาพันธ์ 25, 2009, 09:04:02 am ขอขอบพระคุณมากๆครับ คือผมจะใช้ โปรแกรมไปช่วยกดปุ่มโทรศัทพ์และช่วยกดสวิตระหัสมันเลยวิ่งแปลกๆครับ
THANK!! :D หัวข้อ: Re: ช่วยหน่อยครับเขียนโปรแกรมpic เริ่มหัวข้อโดย: kitsada-num ที่ กุมภาพันธ์ 25, 2009, 10:32:57 am ใด้แล้วครับ เขียนตามคุณ kiano แล้วใด้เลยครับ เยี่ยมมากเลย ขอบพระคุณเป็นอยางสูงครับ
thank2 ผมขอรวบกวน นิดหนึงครับ คือผมอยากจะทำ อีกแต่คราวนี้ต้องใช้ port ทาง output ประมาน 20 ไปควบคุมรีเลย์ port input 15 จากคียแม็ดทริก จะใช้ Microcontroller ตัวใหนดีครับ ใช้อะไรเขียนดี แต่ผมคงต้องใช้เวลาเรียนรู้อีกนานแนนๆเลยครับ ในการเขียนภาษาc ยากจังครับ ขอบคุณครับ หัวข้อ: Re: ช่วยหน่อยครับเขียนโปรแกรมpic เริ่มหัวข้อโดย: kiano♥ ที่ กุมภาพันธ์ 26, 2009, 08:07:57 am ผมไม่ค่อยเข้าใจที่คุณต้องการนะครับ ผมเข้าใจว่า คุณต้องการ คีย์แมทริก ขนาด 15 ปุ่ม แล้วมีเอาพุตสำหรับคุมรีเลย์อีก 20 เอาพุตใช่หรือไม่ครับ แต่ถ้าเป็นแบบนี้ผมคิดว่าใช้ตามวงจรที่ผมแนบมาคงจะได้นะครับ เป็นแนวทาง หรือไม่งั้นก็คงรอความคิดเห็นจากท่านผู้รู้ท่านอื่นเพิ่มเติมนะครับ สำหรับรายละเอียดไอซีดูได้ที่นี่นะครับ
http://www.es.co.th/search.asp?Word=pic16f877&PC=034016&Mode=1&tb=034016&stk=&pb=&view=&pic=checked |