Post on 12-Jun-2020
บทท 7: การใชงานฟงกชน
ไมโครโพรเซสเซอร 1
Sanya Kuankid, Ph.D.http://pws.npru.ac.th/sanya/
บทท 7 ค ำส งควบคมกำรท ำงำนของโปรแกรม C51
7.1 บทน ำ
7.2 ฟงกชนในภำษำซ
7.3 กำรประกำศและเรยกใชงำนฟงกชน
7.4 กำรสงคำใหฟงกชน
7.5 ตวแปรชนดโลคอลและโกลบอล
7.6 สรป
7.7 แบบฝกหดทำยบท
7.1 บทน า
7.2 ฟงกชนในภาษาซ
7.2.1 ฟงกชนมาตรฐานภาษาซ
ฟงกชนมาตรฐานภาษาซอยในไลบรารภาษาซมาตรฐาน ซงประกอบดวยฟงกชนตางๆ ทรองรบการเขยนโปรแกรมทเกยวของ เชน ฟงกชนส าหรบการค านวณทางคณตศาสตร การจดการกบขอความ การจดการกบขอมลน าเขาและสงออก เปนตน โดยการใชงานฟงกชนประเภทน นกพฒนาโปรแกรมตองรวมไลบรารทตองการใชงานไวเปนไฟลสวนหวของโปรแกรมทพฒนาขน เพอใหตวแปลโปรแกรมรวามฟงกชนทตองการใชอยในไลบรารตวใด
7.2.1 ฟงกชนมาตรฐานภาษาซ
ฟงกชนการจดการกบขอมลน าเขาและสงออก ทใชในการเขยนโปรแกรมไมโครคอนโทรลเลอร ซงเปนฟงกชนทอยในไลบรารมาตรฐานชอ stdio โดยมรปแบบการเขยนโปรแกรม เปนดงน
1. ฟงกชน printf ()
ใชในการแสดงผลขอมลหรอคาตวแปรออกมาทางจอภาพ
1. ฟงกชน printf ()
1) สวนการควบคม (control) จะเปนขอความทตองการใหแสดงผลออกมาหรอเปนรหสรปแบบทใชในการแสดงผล
1. ฟงกชน printf ()
2) สวนของอารกวเมนต (Argument list) จะเปนชดตวแปร คาคงท หรอ นพจนทตองการน ามาแสดงผล ถามมากกวา 1 คาจะแยกออกจากกนโดยใชเครองหมายจลภาค (,)
1. ฟงกชน printf ()3) รหสพเศษทแทรกลงไปในคาคงทสตรงเพอใชควบคมการแสดงผลของตวอกษรในลกษณะตางๆ โดยการเขยนตองมเครองหมาย ‘\’ น าหนา
2. ฟงกชน scanf ()
ใชในการรบขอมลมาทางจอภาพ
2. ฟงกชน scanf ()
รายละเอยดของฟงกชน scanf อธบายได ดงน
1) สวนการควบคมเปนรหสรปแบบทใชในการรบขอมล ตองเขยนอยภายใตเครองหมายอญประกาศ
2) สวนของอารกวเมนตเปนตวแปรทรบคาจากแปนพมพมาเกบไว ฟงกชน scanf () เปนการรบขอมลมาเกบในหนวยความจ าดงนนในการใชงานจงตองมอกขระ ‘&’ น าหนาตวแปรเสมอ
3. ฟงกชน getchar ()
ใชรบขอมลเขามาทางแปนพมพทละ 1 ตวอกษร โดยตองกดปม enter ทกครงเมอสนสดขอมล
4. ฟงกชน putchar ()
ใชเปนฟงกชนทใหคอมพวเตอรแสดงผลบนจอภาพทละ 1 ตวอกษร
7.2.2 ฟงกชนทสรางขนโดยนกพฒนาโปรแกรม
นกพฒนาโปรแกรมสามารถเขยนฟงกชนการท างานทจะเรยกใชในสวนตางๆของโปรแกรม โดยฟงกชนการท างานดงกลาวถกเขยนไวในฟงกชนเพยงครงเดยวเทานน แตสามารถเรยกใชงานไดหลายครง
7.3 การประกาศและเรยกใชงานฟงกชน
7.3.1 ตนแบบของฟงกชน
ตนแบบของฟงกชนเปนสวนทก าหนดใหคอมไพเลอรรถงคณสมบตตางๆ ของฟงกชน
7.3.2 การก าหนดฟงกชน
ตวอยางท 7.2 โปรแกรมค านวณคาสงสดจากขอมลจ านวน 3 คา
7.3.3 การเรยกใชงานฟงกชนการเรยกใชงานฟงกชนท าไดโดยก าหนดคาใหฟงกชน โดยอารกวเมนต จะไดรบคาทก าหนดใหและ
สงไปใหฟงกชนท างาน แสดงไดดงตวอยางโปรแกรมท 7.3
7.3.3 การเรยกใชงานฟงกชน
ผลลพธของการรนโปรแกรม
7.4 การสงคาใหฟงกชน
7.4.1 ฟงกชนทสงคาขอมลผานฟงกชน
ฟงกชนทสงคาขอมลผานฟงกชนเปนการสงคาใหฟงกชนโดยการคดลอกคาจากอารกวเมนตของฟงกชนไปเกบไวในพารามเตอร ซงกระบวนการในฟงกชนจะไมสงผลกระทบตอคาอารกวเมนต การคนคากลบมาจากฟงกชนจะคนคากลบมาไดคาเดยวเทานน
7.4.2 ฟงกชนทสงคาอางองหรอแอดเดรสผานฟงกชน
การสงคาของต าแหนงหนวยความจ าทน าคาไปเกบไวในพารามเตอร กระบวนการท างานของฟงกชนในลกษณะนสามารถเปลยนแปลงคาทเกบไวในหนวยความจ าทต าแหนงทสงมาใหได เมอฟงกชนท างานเสรจ อารกวเมนตอาจมการเปลยนแปลงคาไปจากเดมกอนการเรยกใชงานฟงกชน
7.5 ตวแปรชนดโลคอลและโกลบอล
7.5 ตวแปรชนดโลคอลและโกลบอล
• ตวแปรชนดโลคอล (Local Variable) คอ ตวแปรทถกสรางขนภายในฟงกชน สามารถเรยกใชงานไดเฉพาะภายในฟงกชนทสรางขน และจะถกท าลายลงเมอเสรจสนการท างานของฟงกชนนนๆ สวน
• ตวแปรชนดโกลบอล (Global Variable) คอ ตวแปรทถกสรางขนภายนอกฟงกชน สามารถใชงานไดในทกฟงกชนหรอทงโปรแกรม ยกเวนฟงกชนทมตวแปรภายในชอเดยวกบตวแปรภายนอกและจะคงอยตลอดการท างานของโปรแกรม
7.6 สรป
สรป
ในบทนไดน าเสนอเนอหาเรองการใชงานฟงกชนของโปรแกรม C51 โดยไดอธบายฟงกชนเกยวการจดการกบขอมลน าเขาและสงออกทใชในการเขยนโปรแกรมไมโครคอนโทรลเลอรซงอยในไลบราลมาตรฐานภาษาซ และฟงกชนทสรางขนโดยนกพฒนาโปรแกรมซงมรปแบบการประกาศและเรยกใชงานในลกษณะเดยวกน
7.7 แบบฝกหดทายบท
7.7 แบบฝกหดทายบท
7.7 แบบฝกหดทายบท
เอกสารอางอง
. (2554). 1. : ( - ).
. (2555). MCS-51 C. :
. (2540). . : ( - ).
. (2550). MCS-51 C P89V51RD2. : .
. ( . . .). 1. 1 2557 http://www.it.tl.ac.th/~witsarut/subject_c.html
. (2550). MCS-51 Keil C51 . : .
. (2546). . : .
Architecture and Programming of 8051 MCUS. Retrieved March 1, 2014, from http://www.mikroe.com/products/view/267/architecture-and-programming-of-8051-mcu-s/
ARMKIEL Microcontrollers Tools. Cx51 User’s Guide. Retrieved April 1, 2014, from http://www.keil.com/support/man/docs/c51/
Michael, P. (2001). Patterns for time-triggered embedded systems: Building reliable applications with the 8051 family of microcontrollers. New York: ACM Press Books.
Michael, P. (2002). Embedded C. London: Addison-Wesley Professional.
Microcontroller with 8K Bytes Flash AT89C52. Retrieved March 1, 2014, from http://www.atmel.com/images/doc0313.pdf
Z80 CPU User Manual. Retrieved April 1, 2014, from http://www.zilog.com/appnotes_download.php?FromPage=DirectLink&dn= UM0080&ft=User%20Manual&f=YUhSMGNEb3ZMM2QzZHk1NmFXeHZaeTVqYjIwdlpHOWpjeTk2T0RBdlZVMHdNRGd3TG5Ca1pnPT0=
เอกสารอางอง
. (2554). 1. : ( - ).
. (2555). MCS-51 C. :
. (2540). . : ( - ).
. (2550). MCS-51 C P89V51RD2. : .
. ( . . .). 1. 1 2557 http://www.it.tl.ac.th/~witsarut/subject_c.html
. (2550). MCS-51 Keil C51 . : .
. (2546). . : .
Architecture and Programming of 8051 MCUS. Retrieved March 1, 2014, from http://www.mikroe.com/products/view/267/architecture-and-programming-of-8051-mcu-s/
ARMKIEL Microcontrollers Tools. Cx51 User’s Guide. Retrieved April 1, 2014, from http://www.keil.com/support/man/docs/c51/
Michael, P. (2001). Patterns for time-triggered embedded systems: Building reliable applications with the 8051 family of microcontrollers. New York: ACM Press Books.
Michael, P. (2002). Embedded C. London: Addison-Wesley Professional.
Microcontroller with 8K Bytes Flash AT89C52. Retrieved March 1, 2014, from http://www.atmel.com/images/doc0313.pdf
Z80 CPU User Manual. Retrieved April 1, 2014, from http://www.zilog.com/appnotes_download.php?FromPage=DirectLink&dn= UM0080&ft=User%20Manual&f=YUhSMGNEb3ZMM2QzZHk1NmFXeHZaeTVqYjIwdlpHOWpjeTk2T0RBdlZVMHdNRGd3TG5Ca1pnPT0=