ipst-Cmanual

Page 1

¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 1

¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX IPST-MicroBOX C programming Reference manual


2 l

¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

IPST-MicoBOX C programming Reference Manual

¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

ʧǹÅÔ¢ÊÔ·¸Ôµì ÒÁ ¾.Ã.º. ÅÔ¢ÊÔ·¸Ôì ¾.È. 2521 Ë ÒÁ¡ÒÃÅÍ¡àÅÕ¹äÁ ÇÒ Ê Ç¹Ë¹Ö§è Ê Ç¹ã´¢Í§Ë¹Ñ§Ê×ÍàÅ Á¹Õé ¹Í¡¨Ò¡¨Ðä´ ÃºÑ Í¹Ø­Òµ ã¤Ã¤ÇÃ㪠˹ѧÊ×ÍàÅ Á¹Õé 1. ¹Ñ¡àÃÕ¹ ¹ÔÊµÔ ¹Ñ¡ÈÖ¡ÉÒ áÅкؤ¤Å·ÑÇè ä»·ÕÁè ¤Õ ÇÒÁʹã¨ã¹¡ÒùíÒäÁâ¤Ã¤Í¹â·ÃÅàÅÍà 任ÃÐÂØ¡µ 㪠㹡Ò÷´Åͧ ·Ò§ÇÔ·ÂÒÈÒʵà ËÃ×Íʹã¨ã¹¡ÒÃàÃÕ¹ÃÙá Åз´ÅͧÇÔÂÒÈÒʵà ã¹á¹Ç·Ò§ãËÁ ·ãÕè ª ¡¨Ô ¡ÃÃÁà» ¹Ê×Íè â´ÂÁÕäÁâ¤Ã ¤Í¹â·ÃÅàÅÍà ໠¹Ê ǹ»ÃСͺ 2. ʶҺѹ¡ÒÃÈÖ¡ÉÒ âçàÃÕ¹ ÇÔ·ÂÒÅÑ ÁËÒÇÔ·ÂÒÅÑ ·ÕÁè ¡Õ ÒÃà» ´¡ÒÃàÃÕ¹¡ÒÃÊ͹ÇÔªÒÍÔàÅç¡·ÃÍ¹Ô¡Ê ËÃ×ÍÀÒ¤ÇÔªÒ ÇÔÈÇ¡ÃÃÁÍÔàÅç¡·ÃÍ¹Ô¡Ê áÅФÍÁ¾ÔÇàµÍà 3. ¤³Ò¨Òà·ÁÕè ¤Õ ÇÒÁµ ͧ¡ÒÃÈÖ¡ÉÒ áÅÐàµÃÕÂÁ¡ÒÃàÃÕ¹¡ÒÃÊ͹ÇÔªÒäÁâ¤Ã¤Í¹â·ÃÅàÅÍà ÃÇÁ¶Ö§ÇÔ·ÂÒÈÒʵà »ÃÐÂØ¡µ ·Õèµ Í§¡ÒúÙóҡÒäÇÒÁÃÙ ·Ò§ÍÔàÅç¡·ÃÍ¹Ô¡Ê -äÁâ¤Ã¤Í¹â·ÃÅàÅÍà -¡ÒÃà¢Õ¹â»Ãá¡ÃÁ¤ÍÁ¾ÔÇàµÍà ¡Ò÷´Åͧ·Ò§ÇÔ·ÂÒÈÒʵà ã¹ÃдѺÁѸÂÁÈÖ¡ÉÒ ÍÒªÕÇÈÖ¡ÉÒ áÅлÃÔ­­ÒµÃÕ ´íÒà¹Ô¹¡ÒèѴ¾ÔÁ¾ áÅШíÒ˹ ÒÂâ´Â ºÃÔÉ·Ñ ÍÔ¹â¹àǵտ àÍç¡à¾ÍÃÔàÁ¹µ ¨íÒ¡Ñ´ 3133/53 «.ÊØ¢ÁØ ÇÔ· 101/2 ¶.ÊØ¢ÁØ ÇÔ· á¢Ç§ºÒ§¹Ò ࢵºÒ§¹Ò ¡ÃØ§à·¾Ï 10260 â·ÃÈѾ· 0-2747-7001-4 â·ÃÊÒà 0-2747-7005 ÃÒÂÅÐàÍÕ´·Õ»è ÃÒ¡¯ã¹¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX ¼ Ò¹ ¡ÒõÃǨ·Ò¹Í ҧÅÐàÍÕ´áÅж ǹ¶Õè à¾×èÍãË ÁÕ¤ÇÒÁÊÁºÙó áÅж١µ ͧÁÒ¡·ÕèÊØ´ÀÒÂãµ à§×è͹ä¢áÅÐàÇÅÒ·Õè ¾Ö§ÁÕ¡Í ¹¡ÒèѴ¾ÔÁ¾ à¼Âá¾Ã ¤ÇÒÁàÊÕÂËÒÂÍѹÍÒ¨à¡Ô´¨Ò¡¡ÒùíÒ¢ ÍÁÙÅã¹Ë¹Ñ§Ê×ÍàÅ Á¹Õäé »ãª ºÃÔÉ·Ñ ÍÔ¹â¹àǵտ àÍç¡à¾ÍÃÔàÁ¹µ ¨íÒ¡Ñ´ ÁÔä´ ÁÀÕ ÒÃÐ㹡ÒÃÃѺ¼Ô´ªÍºáµ »ÃСÒÃã´ ¤ÇÒÁ¼Ô´¾ÅÒ´¤ÅÒ´à¤Å×Íè ¹·ÕÍè Ò¨ÁÕáÅÐä´ ÃºÑ ¡ÒèѴ¾ÔÁ¾ à¼Âá¾Ã ÍÍ¡ä»¹Ñ¹é ·Ò§ºÃÔÉ·Ñ Ï ¨Ð¾ÂÒÂÒÁªÕáé ¨§áÅÐá¡ ä¢ã¹¡ÒèѴ¾ÔÁ¾ ¤ÃÑ§é µ Íä»


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 3

·ÕÁè ҢͧªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX ªØ´¡Å ͧÊÁͧ¡Å¨Ðª ÇÂÊ §àÊÃÔÁ¨Ô¹µ¡Òâͧ¹Ñ¡àÃÕ¹ãË ÁÕ¤ÇÒÁ¤Ô´Êà ҧÊÃä ¡Ç Ò§ä¡ÅÁÒ¡¢Öé¹ ÊÒ¢Ò ¤ÍÁ¾ÔÇàµÍÃ ä´ ¾² Ñ ¹ÒªØ´¡Å ͧÊÁͧ¡Å ·ÕÊè ÒÁÒö¹íÒ仺ÙóҡÒáѺÇÔªÒÍ×¹è æ ä´ áÅШѴ·íÒ¢Ö¹é ãª ä´ àͧ â´Â㪠ÍØ»¡Ã³ ÃÒ¤Ò¶Ù¡ Çѵ¶Ø»ÃÐʧ¤ 㹡ÒôíÒà¹Ô¹¡ÒÃâ¤Ã§¡Òùդé Í× 1.à¾×Íè ¾Ñ²¹ÒªØ´¡Å ͧÊÁͧ¡Å ·Õàè ¹ ¹¡ÒúÙóҡÒà 2.à¾×Íè à» ¹µÑÇÍ ҧËÃ×Í·Ò§àÅ×Í¡ÊíÒËÃѺ¤ÃÙ-ÍÒ¨Òà㹡ÒèѴ¡Ô¨¡ÃÃÁ¡ÒÃàÃÕ¹¡ÒÃÊ͹ãË à» ¹ä»µÒÁ ËÅÑ¡ÊٵáÒÃÈÖ¡ÉÒ¢Ñ¹é ¾×¹é °Ò¹ Ê¶ÒºÑ¹Ê §àÊÃÔÁ¡ÒÃÊ͹ÇÔ·ÂÒÈÒʵà áÅÐà·¤â¹âÅÂÕ (ÊÊÇ·.) ä´ ¾² Ñ ¹ÒáÅлÃѺ»Ãا ˹ѧÊ×ÍàÃÕ¹ ¤ÙÁ Í× áÅÐÊ×Íè ¡ÒÃàÃÕ¹¡ÒÃÊ͹µ Ò§æ Í ҧµ Íà¹×Íè § à¾×Íè ãË ¤ÃÙ㪠㹡ÒèѴ¡Ô¨¡ÃÃÁ¡ÒÃàÃÕ¹¡ÒÃÊ͹ãË ÊÍ´¤Å ͧ¡ÑºËÅÑ¡ ÊٵáÒÃÈÖ¡ÉÒ¢Ñ¹é ¾×¹é °Ò¹ áÅоÃÐÃÒªºÑ­­Ñµ¡Ô ÒÃÈÖ¡ÉÒáË §ªÒµÔ ¾. È. 2542 ÊÒ¢Ò¤ÍÁ¾ÔÇàµÍà ¨Ö§àËç¹ÊÁ¤ÇèѴ·íÒâ¤Ã§¡ÒþѲ¹ÒªØ´¡Å ͧÊÁͧ¡Å¢Öé¹ à¾×èÍà» ¹Ê×èÍ·Ò§àÅ×͡˹Öè§ ÊíÒËÃѺ¤ÃÙ¼Ê٠͹㹡ÒèѴ¡ÒÃàÃÕ¹¡ÒÃÊ͹ÇÔªÒ¡ÒÃâ»Ãá¡ÃÁ ÇÔªÒâ¤Ã§§Ò¹ ã¹ÃдѺÁѸÂÁÈÖ¡ÉÒ ªØ´¡ÒÃàÃÕ¹¡ÒÃÊ͹ ¹Õ¨é Ð๠¹¡ÒèѴ¡Ô¨¡ÃÃÁ¡ÒÃàÃÕ¹ÃÙá ºººÙóҡÒà ¹Ñ¡àÃÕÂ¹ä´ ÃàÙ ¡ÕÂè ǡѺÍÔàÅç¡·ÃÍ¹Ô¡Ê àº×Íé §µ ¹ ¡ÒÃà¢Õ¹â»Ãá¡ÃÁà¾×Íè ¤Çº¤ØÁ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ¡Ò÷íÒâ¤Ã§§Ò¹«Ö§è µ ͧºÙóҡÒáѺÇÔªÒ ¿ Ê¡Ô Ê à¤ÁÕ ªÕÇÇÔ·ÂÒ ¤³ÔµÈÒʵà áÅÐ ¤ÍÁ¾ÔÇàµÍà ࢠҴ Ç¡ѹ «Ö§è ¨Ð·íÒãË ¡ÒÃàÃÕ¹¡ÒÃÊ͹ÁÕ¤ÇÒÁ¹ Òʹ㨠áÅÐà» ¹ÍÕ¡á¹Ç·Ò§Ë¹Ö§è 㹡ÒÃÊ͹à¾×Íè ãË ¹Ñ¡àÃÕ¹ÃÑ¡¡ÒÃà¢Õ¹â»Ãá¡ÃÁ ÃÙ¨ ¡Ñ ¤Ô´ÇÔà¤ÃÒÐË áÅÐá¡ »­ Ëҷѧé ã¹ÇÔªÒ·Õàè ÃÕ¹áÅÐ㹪ÕÇµÔ »ÃШíÒÇѹ ÊÒ¢Ò¤ÍÁ¾ÔÇàµÍÃ ä´ àË繤ÇÒÁÊíҤѭ¢Í§â¤Ã§¡ÒùÕé áÅÐä´ Á¡Õ ÒþѲ¹ÒªØ´¡Å ͧÊÁͧ¡ÅÁҵѧé áµ » ¾.È 2546 áÅÐÁÕȹ٠ ·´Åͧ㹡ÒùíҪش¤Ôµ¡Å ͧÊÁͧ¡Åä»ãª ·§Ñé ËÁ´ 11 Èٹ ¤×Í ã¹» 2546 ÁÕȹ٠ ·´Åͧ¨íҹǹ 5 Èٹ ¤×Í âçàÃÕ¹ອ¨ÁÃÒªÙ·ÈÔ ¨. ¹¤ÃÈÃÕ¸ÃÃÁÃÒª, âçàÃÕ¹º Ò¹áËÅÁÇÔ·ÂÒ ¨. ྪúØÃ,Õ âçàÃÕ¹ÈÃÕº³ Ø ­Ò ¹¹· ¨. ¹¹·ºØÃ,Õ âçàÃÕ¹ÃÐÂͧÇÔ·ÂÒ¤Á ¨. ÃÐÂͧ áÅÐ âçàÃÕ¹ÍصôԵ¶ ´ÃØ³Õ ¨. ÍصôԵ¶ áÅÐ » ¾. È. 2547 ÁÕȹ٠ ·´Åͧ¨íҹǹ 6 Èٹ ¤×Í âçàÃÕ¹ºÒ§»ÅÒÁ Ò ÊÙ§ÊØÁÒü´Ø§ÇÔ·Â ¨. ÊؾÃóºØÃ,Õ âçàÃÕ¹»Ò¡· ;ԷÂÒ¤Á ¨. ÃÒªºØÃ,Õ âçàÃÕ¹¡Ò­¨¹ÒÀÔàÉ¡ÇÔ·ÂÒÅÑ ¨. ©ÐàªÔ§à·ÃÒ, âçàÃÕ¹¨ØÌÒÀóÃÒªÇÔ·ÂÒÅÑ ¨. ¹¤ÃÈÃÕ¸ÃÃÁÃÒª, âçàÃÕ¹à ÍÂàÍç´ÇÔ·ÂÒÅÑ ¨. à ÍÂàÍç´ áÅÐâçàÃÕ¹áÊǧËÒÇÔ·ÂÒ¤Á ¨. Í Ò§·Í§ ¢ ÍÁÙÅà¾ÔÁè àµÔÁ¢Í§â¤Ã§¡ÒùÕÊé ÒÁÒöµÔ´µÒÁä´ ·Õè http://oho.ipst.ac.th â´ÂàÅ×͡ࢠÒä»·ÕËè ¹ Ңͧ â¤Ã§¡Òà ªØ´¡Å ͧÊÁͧ¡Å â´Âã¹àǺ䫵 处 ÁÕ¡Ãдҹ¶ÒÁµÍºà¾×Íè ¡ÒÃáÅ¡à»ÅÕÂè ¹»ÃÐʺ¡Òó 㹡ÒþѲ¹ÒªØ´¡Å ͧ ÊÁͧ¡Å´ Ç ¢ ÍÁÙŷѧé ËÁ´¹Õäé ´ ÁÒ¨Ò¡ http://oho.ipst.ac.th àǺ䫵 ¢Í§ÊÒ¢Ò¤ÍÁ¾ÔÇàµÍÃ Ê¶ÒºÑ¹Ê §àÊÃÔÁ¡ÒÃÊ͹ÇÔ·ÂÒÈÒʵà áÅÐà·¤â¹âÅÂÕ (ÊÊÇ·.)


4 l

¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

ÊÒúѭ º··Õè 1 ¿ §¡ ª¹Ñè áÅÐäźÃÒÃÕã¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX......................5 1.1 ¡ÒûÃСÒÈ¿ §¡ ª¹Ñè 1.2 ¡ÒÃàÃÕ¡㪠¿§ ¡ ª¹Ñè 1.3 äźÃÒÃÕ 1.4 ª¹Ô´¢Í§¢ ÍÁÙÅáÅСÒûÃСÒȵÑÇá»Ãã¹ÀÒÉÒ C 1.5 ÃкºµÑÇàÅ¢°Ò¹ã¹ÀÒÉÒ C 1.6 ¡ÒûÃСÒȵÑÇá»Ã 1.7 ¡ÒÃá»Å§ª¹Ô´¢Í§¢ ÍÁÙÅ 1.8 ÃÒÂÅÐàÍÕ´¢Í§µÑÇá»ÃẺºÔµ

º··Õè 2 µÑÇ´íÒà¹Ô¹¡ÒÃã¹ÀÒÉÒ C ÊíÒËÃѺ WinAVR ¤ÍÁä¾àÅÍà â»Ãá¡ÃÁÀÒÉÒ C ·Õãè ª 㹪ش¡Å ͧÊÁͧ¡Å IPST-MicroBOX..................................................................25 2.1 µÑÇ´íÒà¹Ô¹¡Ò÷ҧ¤³ÔµÈÒʵà 2.2 µÑÇ´íÒà¹Ô¹¡Òô Ò¹¤ÇÒÁÊÑÁ¾Ñ¹¸ áÅÐÅͨԡ 2.3 µÑÇ´íÒà¹Ô¹¡Ò÷ҧºÔµ

º··Õè 3 ¤íÒÊÑ§è ¤Çº¤ØÁµ Ò§æ ã¹ÀÒÉÒ C ·Õãè ª 㹪ش¡Å ͧÊÁͧ¡Å IPST-MicroBOX..............35 3.1 ¤íÒÊѧè if 3.2 ¤íÒÊѧè if-else 3.3 ¤íÒÊѧè switch...case 3.4 ¤íÒÊѧè for 3.5 ¤íÒÊѧè while 3.6 ¤íÒÊѧè do-while


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 5

ÊÒúѭ º··Õè 4 ªØ´¤íÒÊѧè ÀÒÂã¹äźÃÒÃÕ ipst ·Õãè ª 㹪ش¡Å ͧÊÁͧ¡Å IPST-MicroBOX..................49 4.1 ªØ´¤íÒÊѧè à¡ÕÂè ǡѺ¡ÒÃ㪠§Ò¹¾Íà µÍÔ¹¾Øµ/àÍÒµ ¾µØ 4.2 ªØ´¤íÒÊѧè ˹ ǧàÇÅÒ 4.3 ªØ´¤íÒÊѧè ÊíÒËÃÑºÍ Ò¹¤ ÒÍйÒÅÍ¡ 4.4 ªØ´¤íÒÊѧè ÊíÒËÃѺ¨ÑºàÇÅÒËÃ×͹Ѻ¤ ÒàÇÅÒ 4.5 ªØ´¤íÒÊѧè ÊíÒËÃѺáÊ´§¼Å·Õè LED 4.6 ªØ´¤íÒÊÑ§è ¢ÑºÁÍàµÍà 俵ç 4.7 ªØ´¤íÒÊѧè ÊÇÔµª ¤Çº¤ØÁÊíÒËÃѺἧǧ¨Ã Display-io 4.8 ªØ´¤íÒÊѧè ÊíÒËÃѺáÊ´§¼Å¢ ͤÇÒÁ·Õâè Á´ÙÅ LCD 4.9 ªØ´¤íÒÊѧè ÊíÒËÃѺÃѺ-Ê §¢ ÍÁÙż Ò¹¾Íà µÍ¹Ø¡ÃÁ 4.10 ªØ´¤íÒÊÑ§è ¡íÒà¹Ô´àÊÕ§

º··Õè 5 äźÃÒÃÕÁҵðҹ¢Í§ WinAVR ¤ÍÁä¾àÅÍà .............................................................75 5.1 äźÃÒÃÕ math.h 5.2 äźÃÒÃÕ string.h 5.3 äźÃÒÃÕ stdlib.h 5.4 äźÃÒÃÕ ctype.h 5.5 äźÃÒÃÕ stdio.h


6 l

¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 7

º··Õè 1

¿ §¡ ª¹Ñè áÅÐäźÃÒÃÕã¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX ã¹â»Ãá¡ÃÁÀÒÉÒ C ¹Ñ¹é ÁÕ¿§ ¡ ª¹Ñè ËÅÑ¡·Õàè ÃÕÂ¡Ç Ò main â»Ãá¡ÃÁËÃ×ͺҧ¤Ãѧé àÃÕÂ¡Ç Ò Ê Ç¹ â»Ãá¡ÃÁËÅÑ¡ à» ¹Ê ǹ¡ÃзíÒ¤íÒÊѧè ÀÒÂã¹äÅ àÃÕ§价ÕÅФíÒÊѧè áÅШСÃÐⴴ仡ÃзíÒ¤íÒÊѧè ÀÒ 㹿 §¡ ª¹Ñè Í×¹è æ ·ÕÁè ¡Õ ÒûÃСÒÈäÇ ãË Ã¨Ù ¡Ñ ÀÒÂã¹â»Ãá¡ÃÁàÁ×Íè ÁÕ¡ÒÃàÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè ¹Ñ¹é æ ÀÒÂã¹ Ê Ç¹¢Í§â»Ãá¡ÃÁËÅÑ¡ ËÅѧ¨Ò¡¡ÃзíÒ¤íÒÊÑè§ÀÒÂ㹿 §¡ ªÑè¹·Õè¶Ù¡àÃÕ¡àÃÕºà ÍÂáÅ Ç ¡ç¨Ð¡ÅѺࢠÒÁÒ ã¹Ê ǹ¢Í§â»Ãá¡ÃÁËÅÑ¡·Õè·íÒ§Ò¹¤ Ò§ÍÂÙ ËÃ×ͤíÒÊÑ觷ÕèÍÂÙ ¶Ñ´ä» ¹Í¡¨Ò¡¹ÕéÀÒÂ㹿 §¡ ªÑè¹àͧ¡çÂѧ ÊÒÁÒöàÃÕ¡㪠§Ò¹¿ §¡ ªÑè¹Í×è¹æ ä´ ´ Ç ´Ñ§¹Ñ鹡Ò÷íÒ§Ò¹¡Ñº¿ §¡ ªÑ蹨֧¶×ÍÇ Òà» ¹Ê ǹ·ÕèÁÕº·ºÒ· ÊíҤѭ㹡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C àÅ·Õà´ÕÂÇ

1.1 ¡ÒûÃСÒÈ¿ §¡ ª¹Ñè ÁÕÃٻẺ´Ñ§¹Õé return_type function_name(parameter1, parameter2, ...) { command_list 1; .................... .................... command_list n; }

â´Â·Õè

¤×Í ª×Íè ¢Í§¿ §¡ ª¹Ñè return_type ¤×Í ª¹Ô´¢Í§¢ ÍÁÙÅ·ÕÁ è ¡Õ Òä׹¤ Ò¼ÅÅѾ¸ ÍÍ¡ÁÒ áÅÐÀÒÂ㹿 §¡ ª¹Ñè ª¹Ô´¹Õ¨é Р㪠¤Òí Êѧè return(value) à¾×Íè Ê §¤ Ò¼ÅÅѾ¸ ÍÍ¡ÁÒ «Ö§è ª¹Ô´¢Í§¢ ÍÁÙÅ value ·ÕÊè § ÍÍ¡ÁÒ¤ÇèÐà» ¹ª¹Ô´ à´ÕÂǡѺ return_type à¾×Íè » ͧ¡Ñ¹¤ÇÒÁ¼Ô´¾ÅÒ´·ÕÍè Ò¨à¡Ô´¨Ò¡¡ÒÃÃѺ¢ ÍÁÙÅ ÊíÒËÃѺ¿ §¡ ª¹Ñè ·Õäè Á Á¡Õ Òä׹ ¤ Ò (return value) ·Õµè Òí á˹ § return_type ¨Ðµ ͧ»ÃСÒÈà» ¹ void function_name

¤×Í Ê Ç¹·ÕÁè ¡Õ ÒûÃСÒȪ¹Ô´¢ ÍÁÙÅáÅЪ×Íè ¢Í§µÑÇá»Ã·Õ¹è Òí ÁÒÃѺ¤ Ò·ÕÊè § ¼ Ò¹ãË ¡Ñº¿ §¡ ªÑè¹ ÍÒ¨¨ÐÁÕ 1 µÑÇ ËÃ×ÍËÅÒÂæ µÑÇ¡çä´ ËÃ×ÍÍÒ¨äÁ ÁÕàÅ¡çä´ ¢Öé¹ÍÂÙ ¡Ñº¡ÒÃ㪠§Ò¹¢Í§¿ §¡ ªÑè¹¹Ñé¹æ ¶ ÒËÒ¡¿ §¡ ª¹Ñè äÁ ÁÕ parameter ÃѺ¤ Ò ÍÒ¨¨Ð»ÃСÒÈà» ¹ void ËÃ×ÍàÇ ¹Ç Ò§äÁ »ÃСÒÈ¡çä´ parameter


8 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

command_list 1... command_list n

1 ¤íÒÊÑ§è ¨Ðµ ͧ» ´· Ò´ ÇÂà¤Ã×Íè §ËÁÒ ; àÊÁÍ

¤×Í ¤íÒÊÑ§è µ Ò§æ ·ÕÁè ÍÕ ÂÙã ¹¿ §¡ ª¹Ñè «Ö§è àÁ×Íè ¨º

ËÁÒÂà赯 ·Õµè Òí á˹ §¢Í§ value ¹Ñ¹é ÍҨ໠¹¤ Ò¤§·Õ,è µÑÇá»Ã, ËÃ×ͼÅÅѾ¸ ¨Ò¡¡Ò÷íÒ¤íÒÊѧè ã´æ ¡çä´

ÊíÒËÃѺ¿ §¡ ª¹Ñè ·ÕÁè ¡Õ Òä׹¤ Ò¼ÅÅѾ¸ ¹¹Ñé ¨ÐÁÕ¤Òí Êѧè return ÊíÒËÃÑºÊ §¤ Ò¼ÅÅѾ¸ ËÅѧ¨Ò¡ÁÕ¡Òà àÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè ´Ñ§¡Å ÒÇ ÁÕû٠Ẻ´Ñ§¹Õé return(data);

â´Â·Õè data ¤×Í ¢ ÍÁÙÅ·Õ¤è ¹× ¤ Ò¼ÅÅѾ¸ ¤ÇÃÁÕª¹Ô´¢ ÍÁÙÅẺà´ÕÂǡѺ return_type ¢Í§¿ §¡ ª¹Ñè ÁÔ àª ¹¹Ñ¹é ÍÒ¨·íÒãË à¡Ô´¢ ͼԴ¾ÅÒ´·Õàè ¡Ô´¨Ò¡ª¹Ô´¢ ÍÁÙÅä´

1.2 ¡ÒÃàÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè 㹡ÒÃàÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè ·Õäè ´ ¶¡Ù Êà ҧ¢Ö¹é ËÃ×ÍÁÕ¡ÒûÃСÒÈäÇ àÃÕºà ÍÂáÅ Ç ÊÒÁÒöàÃÕÂ¡ãª ä´ ÀÒÂ㹿 §¡ ª¹Ñè main ËÃ×ÍÀÒ¿ §¡ ª¹Ñè Í×¹è æ µÒÁ¤ÇÒÁàËÁÒÐÊÁ â´Â㹡ÒÃàÃÕ¡㪠¡àç ¾Õ§àÃÕ¡ª×Íè ¢Í§¿ §¡ ª¹Ñè ¹Ñ¹é æ áÅСíÒ˹´¤ Ò¢ ÍÁÙÅà¾×Íè Ê §ãË ¡ºÑ ¾ÒÃÒÁÔàµÍà â´Âµ ͧ¡íÒ˹´ãË àËÁÒÐÊÁ¡Ñºª¹Ô´ ¢ ÍÁÙÅáÅж١µ ͧµÒÁÅíҴѺ¢Í§¾ÒÃÒÁÔàµÍà ·ÕèÁÕ¡ÒûÃСÒÈäÇ ´ Ç ¨ÐàÃÕ¡¢ ÍÁÙÅ·ÕèÊ §¼ Ò¹ä»ãË ¾ÒÃÒÁÔàµÍà ¹ÇÕé Ò ÍСÔÇàÁ¹µ ÃٻẺ¡ÒÃàÃÕ¡¿ §¡ ªÑè¹ function_name(agument1, agument2,...)

â´Â·Õè

function_name

¤×Í ª×Íè ¢Í§¿ §¡ ª¹Ñè ·Õµè Í §ÁÕ¡ÒûÃСÒÈäÇ ¡Í ¹Ë¹ Ò¹Õáé Å Ç

¤×Í ¤×ͤ Ò¢ ÍÁÙÅ·ÕÊè § ¼ Ò¹ä»ãË ¡ºÑ µÑÇá»Ã parameter ã¹¢³ÐàÃÕ¡㪠¿§ ¡ ª¹Ñè ¹Ñ¹é æ â´ÂÁռŵ ÍÅíҴѺ㹡ÒÃãÊ ¤Ò ´ Ç ᵠ¶Ò ËÒ¡¿ §¡ ª¹Ñè ·Õàè ÃÕ¡㪠§Ò¹à» ¹áººäÁ Á¾Õ ÒÃÒÁÔàµÍà ¡çäÁ µÍ §ãÊ ¤Ò ÍСÔÇ àÁ¹µ agument

ÊíÒËÃѺ¿ §¡ ª¹Ñè ·ÕÁè ¡Õ Òä׹¤ Ò¼ÅÅѾ¸ àÁ×Íè ÁÕ¡ÒÃàÃÕ¡㪠§Ò¹¨Ð¤×¹¤ Ò¼ÅÅѾ¸ ¨Ò¡¡ÒûÃÐÁÇżŠºÒ§Í ҧÀÒÂ㹿 §¡ ªÑè¹ «Ö觪¹Ô´¢Í§¢ ÍÁÙÅ·Õè¤×¹¤ ÒÍÍ¡ÁÒ¹Ñé¹ÊÒÁÒö´Ùä´ ¨Ò¡Ê ǹ return_type ¢Í§¡ÒûÃСÒÈ¿ §¡ ªÑè¹ â´Â㹺ҧ¤ÃÑé§ÍÒ¨ÁÕ¤ÇÒÁ¨íÒà» ¹µ ͧ㪠µÑÇá»Ã¹íÒÁÒÃѺ¤ Ò¼ÅÅѾ¸ ¹Ñé¹ «Öè§ µÑÇá»Ã´Ñ§¡Å ÒǤÇÃÁÕª¹Ô´¢ ÍÁÙÅẺà´ÕÂǡѺ return_type ¢Í§¿ §¡ ª¹Ñè ÁÔઠ¹¹Ñ¹é ÍÒ¨·íÒãË à¡Ô´¢ Í ¼Ô´¾ÅÒ´·Õèà¡Ô´¨Ò¡ª¹Ô´¢ ÍÁÙÅä´


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 9

µÑÇÍ ҧ·Õè 1-1

»ÃСÒÈ¿ §¡ ªÑè¹

void tone(void) { beep_b(2);

//

sleep(1.0);

//

beep_b(2);

//

¿ §¡ ª¹Ñè ¡íÒà¹Ô´ÊÑ­­Ò³àÊÕ§ 1 ¨Ñ§ËÇР˹ ǧàÇÅÒ 1 ÇÔ¹Ò·Õ ¿ §¡ ª¹Ñè ¡íÒà¹Ô´ÊÑ­­Ò³àÊÕ§ 1 ¨Ñ§ËÇÐ

}

¨Ò¡µÑÇÍ ҧ໠¹¡ÒûÃСÒÈ¿ §¡ ª¹Ñè ª×Íè tone ·Õäè Á Á¡Õ Òä׹¤ Ò¼ÅÅѾ¸ áÅÐäÁ Á¾Õ ÒÃÒÁÔàµÍà ÀÒÂ㹿 §¡ ª¹Ñè à» ¹¡ÒáíÒ˹´ãË ¡Òí à¹Ô´ÊÑ­­Ò³àÊÕ§ 1 ¨Ñ§ËÇÐ áÅ Ç˹ ǧàÇÅÒ 1 ÇÔ¹Ò·Õ ¨Ò¡¹Ñ¹é àÃÕ¡¿ §¡ ª¹Ñè ¡íÒà¹Ô´àÊÕ§¹ÕÍé ¡Õ ¤Ãѧé ÊÒÁÒö¹íÒÁÒàÃÕ¡㪠§Ò¹ÀÒÂ㹿 §¡ ª¹Ñè main ä´ ´§Ñ ¹Õé void main() { ................

//

tone();

//

...............

//

¤íÒÊѧè ã´æ àÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè ¤íÒÊѧè ã´æ

tone

}

¢ ͤÇ÷ÃÒº : ËÒ¡µ ͧ¡Ò÷´ÊͺµÑÇÍ ҧ¹Õµé Í §µ Íἧǧ¨ÃÅíÒ⾧ࢠҡѺἧǧ¨ÃËÅÑ¡ MicroBOX ·Õ¨è ´Ø PB2

µÑÇÍ ҧ·Õè 1-2 »ÃСÒÈ¿ §¡ ªÑè¹ void tone(unsigned int delay) { beep_b(2);

//

sleep(delay);

//

beep_b(2);

//

¿ §¡ ª¹Ñè ¡íÒà¹Ô´ÊÑ­­Ò³àÊÕ§ 1 ¨Ñ§ËÇÐ ¿ §¡ ª¹Ñè ˹ ǧàÇÅÒµÒÁ¤ Ò¢ ÍÁÙÅ delay ·ÕÃè ºÑ à¢ ÒÁÒ ¿ §¡ ª¹Ñè ¡íÒà¹Ô´ÊÑ­­Ò³àÊÕ§ 1 ¨Ñ§ËÇÐ

}

¨Ò¡µÑÇÍ ҧ໠¹¡ÒûÃСÒÈ¿ §¡ ª¹Ñè ª×Íè tone ·Õäè Á Á¡Õ Òä׹¤ Ò¼ÅÅѾ¸ ÍÍ¡ÁÒ áÅÐÁÕ¡ÒÃÃѺ¤ ÒÊ §¼ Ò¹ ¾ÒÃÒÁÔàµÍà ·ªÕè Í×è delay «Ö§è ÀÒÂ㹿 §¡ ª¹Ñè à» ¹¡ÒÃàÃÕ¡¿ §¡ ª¹Ñè ¡íÒà¹Ô´ÊÑ­­Ò³àÊÕ§ 1 ¨Ñ§ËÇÐ áÅ Ç˹ ǧàÇÅÒ µÒÁ¤ Ò¢ ÍÁÙŢͧ¾ÒÃÒÁÔàµÍà delay ã¹Ë¹ ÇÂÁÔÅÅÔÇ¹Ô Ò·Õ áÅ ÇàÃÕ¡¿ §¡ ª¹Ñè ¡íÒà¹Ô´ÊÑ­­Ò³àÊÕ§ 1 ¨Ñ§ËÇÐÍÕ¡ ¤Ãѧé Ë¹Ö§è µÑÇÍ ҧàÃÕ¡㪠§Ò¹ÀÒÂ㹿 §¡ ª¹Ñè main ä´ ´§Ñ ¹Õé void main(void) { ................

//

tone(200);

//

...............

//

¤íÒÊѧè ã´æ àÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè tone áÅÐ˹ ǧàÇÅÒÃÐËÇ Ò§àÊÕ§ 200 ÁÔÅÅÔÇ¹Ô Ò·Õ ¤íÒÊѧè ã´æ

}

¢ ͤÇ÷ÃÒº : ËÒ¡µ ͧ¡Ò÷´ÊͺµÑÇÍ ҧ¹Õµé Í §µ Íἧǧ¨ÃÅíÒ⾧ࢠҡѺἧǧ¨ÃËÅÑ¡ MicroBOX ·Õ¨è ´Ø PB2


10 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

µÑÇÍ ҧ·Õè 1-3 »ÃСÒÈ¿ §¡ ªÑè¹ float sum(float x,float y) { float z;

//

z = x+y;

//

return(z);

//

»ÃСÒȵÑÇá»Ãà¡çº¤ Ò¼ÅÅѾ¸ ¨Ò¡¡Òúǡ¡Ñ¹ à¡çº¤ Ò¼ÅÅѾ¸ ¨Ò¡¡Òúǡ¡Ñ¹¢Í§ x áÅÐ y ·ÕÃè ºÑ ÁÒ·Ò§¾ÒÃÒÁÔàµÍà ¤×¹¤ Ò¼ÅÅѾ¸ à» ¹¤ Ò¢ ÍÁÙŢͧ z ¨Ò¡¡ÒÃàÃÕ¡¿ §¡ ª¹Ñè ´ ǤíÒÊѧè return

}

¨Ò¡µÑÇÍ ҧ໠¹¡ÒûÃСÒÈ¿ §¡ ª¹Ñè ª×Íè sum ·ÕÁè ¡Õ Òä׹¤ Ò¼ÅÅѾ¸ ÍÍ¡ÁÒ â´ÂÁÕª¹Ô´¢Í§¢ ÍÁÙÅà» ¹ float áÅÐÁÕ¡ÒÃÃѺ¤ Ò¼ Ò¹¾ÒÃÒÁÔàµÍà x áÅÐ y â´Â¿ §¡ ª¹Ñè sum ¨Ð¤×¹¤ Ò¼ÅÅѾ¸ ¨Ò¡¡Òúǡ¡Ñ¹ÃÐËÇ Ò§ x áÅÐ y ÍÍ¡ÁÒ´ ǤíÒÊѧè return(z); ¹Ñ¹è àͧ ÊÒÁÒöàÃÕ¡㪠§Ò¹ÀÒÂ㹿 §¡ ª¹Ñè main ä´ ´§Ñ ¹Õé void main(void) { float result;

//

à¾×è͹íÒä»ÃѺ¤ Ò¨Ò¡¡Òä׹¤ Ò¼ÅÅѾ¸ ¢Í§

»ÃСÒÈµÑ Ç á»Ã

result

¿ §¡ ª¹Ñè sum ................ // ¤íÒÊѧè ã´æ result = sum(14.0,3.0); // àÃÕ¡㪠§Ò¹¿ §¡ ª¹ Ñè sum â´Â¡íÒ˹´¤ ÒÍСÔÇàÁ¹µ x = 14 // áÅÐ y = 3 Ñè sum // ·íÒãË result ÁÕ¤Ò à· Ò¡Ñº 17 ËÅѧ¨Ò¡àÃÕ¡㪠§Ò¹¿ §¡ ª¹ lcd(“result = %f “,result); // ¹íÒ¤ ÒµÑÇá»Ã result ÁÒáÊ´§·Õâè Á´ÙÅ LCD ................ // ¤íÒÊѧè ã´æ //

}

¢ ͤÇ÷ÃÒº : ËÒ¡µ ͧ¡Ò÷´ÊͺµÑÇÍ ҧ¹Õ¨é е ͧµÔ´µÑ§é ἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) ࢠҡѺἧǧ¨ÃËÅÑ¡ MicroBOX áÅÐἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) ¹Õ¨é Ð µ ͧ¨Ñ´ËÒà¾ÔÁè àµÔÁ à¹×Íè §¨Ò¡äÁ ä´ ÃÇÁÍÂÙã ¹ªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX ã¹Ãع àÃÔÁè µ ¹áÅÐÃع Áҵðҹ


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 11

µÑÇÍ ҧ·Õè 1-4 Êà ҧ¿ §¡ ª¹Ñè àŢ¡¡íÒÅѧã´æ à¾×Íè ËÒ¤ Ò¼ÅÅѾ¸ ¢Í§àŢ¡¡íÒÅѧ â´ÂµÑ§é ª×Íè ¿ §¡ ª¹Ñè à» ¹ power áÅÐãË ÁÕ¡ÒÃÃѺ¤ Ò¾ÒÃÒÁÔàµÍà 2 µÑÇ â´ÂµÑÇáá¤×ͤ Ò°Ò¹ x áÅоÒÃÒÁÔàµÍà µÇÑ ·ÕÊè ͧ¤×ͤ Ò¡íÒÅѧ y float power(float x,float y)

//

¿ §¡ ª¹Ñè power ·ÕÁè ¡Õ ÒÃÃѺáÅФ׹¤ Ò¢ ÍÁÙŪ¹Ô´ float

//

ÃѺ¤ Ò°Ò¹ x áÅФ Ò¡íÒÅѧ y ÁÒ¤íҹdz áŠǤ׹¤ Ò¼ÅÅѾ¸

{ return(exp(y*log(x))); }

ÊÒÁÒöàÃÕ¡㪠§Ò¹ÀÒÂ㹿 §¡ ª¹Ñè main ä´ ´§Ñ ¹Õé void main()

//

¿ §¡ ª¹Ñè ËÅÑ¡¢Í§â»Ãá¡ÃÁ

{ lcd(“result = %f “,power(2.0,4.0)); //

áÊ´§¤ Ò¼ÅÅѾ¸ 24 ·Õâè Á´ÙÅ LCD

while(1); }

¨Ò¡µÑÇÍ ҧ໠¹¡ÒÃÊà ҧ¿ §¡ ª¹Ñè ª×Íè power à¾×Íè 㪠¤Òí ¹Ç³ËÒ¤ ҢͧàŢ¡¡íÒÅѧã´æ â´Âã¹â»Ãá¡ÃÁ WinAVR ÂѧäÁ ÁÁÕ ¿Õ § ¡ ª¹Ñè Ê Ç¹¹ÕÁé ÒãË áµ ã¹µÑÇÍ ҧ¹Õäé ´ ¹Òí àʹÍÇÔ¸¡Õ ÒûÃÐÂØ¡µ Êà ҧ¨Ò¡¿ §¡ ª¹Ñè ·Õãè ª ¤Òí ¹Ç³·Ò§ ¤³ÔµÈÒʵà ·Õè WinAVR ÁÕÁÒãË «Ö§è ä´ á¡ ¿ §¡ ª¹Ñè exp (¨Ò¡äźÃÒÃÕ math.h ¢Í§Ãкº) 㪠ÊÒí ËÃѺËÒ¤ ÒàÅ¢°Ò¹ e ¡¡íÒÅѧã´æ (e=2.71) ¿ §¡ ª¹Ñè log (¨Ò¡äźÃÒÃÕ math.h ¢Í§Ãкº) 㪠ÊÒí ËÃѺËÒÅÍ¡ÒÃÔ·ÁÖ °Ò¹ e ¢Í§µÑÇàÅ¢ã´æ ¨Ò¡¤ÇÒÁÃÙ· Ò§¤³ÔµÈÒʵà ·ÇÕè Ò (1) ln x y = y .ln x (2) e ln x = x (3) ln x y = y ln x y

´Ñ§¹Ñ¹é x y = e ln x = e y .ln x áÅйíÒÁÒà¢Õ¹໠¹¿ §¡ ª¹Ñè 㹡Òäíҹdz¤ Ò¼ÅÅѾ¸ ä´ à» ¹

exp(ylog(x )) «Ö§è ¤×¹¤ Ò¼ÅÅѾ¸ ¨Ò¡ x

y

´Ñ§¹Ñ¹é ¼ÅÅѾ¸ ¨Ò¡â»Ãá¡ÃÁ¹Õàé Á×Íè Êѧè Ãѹ ·Õâè Á´ÙÅ LCD ¨ÐáÊ´§¢ ͤÇÒÁ result = 16.000 «Ö§è ¡ç¤Í× ¼ÅÅѾ¸ ¢Í§ 24 áµ ¢Í ¤ÇÃÃÐÇѧ㹡ÒÃàÃÕ¡㪠¿§ ¡ ª¹Ñè ¹Õ¡é ¤ç Í× ¡Òû ͹¤ Ò¾ÒÃÒÁÔàµÍà ¢Í§¤ Ò°Ò¹áÅФ Ò¡íÒÅѧ ¨Ðµ ͧ» ͹໠¹¤ Ò¨íҹǹ¨ÃԧẺ float ·Ñ§é ¤Ù ´Ñ§¹Ñ¹é ã¹â»Ãá¡ÃÁ¨Ö§» ͹¤ Òà» ¹ 2.0 áÅÐ 4.0 µÒÁÅíҴѺ ¢ ͤÇ÷ÃÒº : ËÒ¡µ ͧ¡Ò÷´ÊͺµÑÇÍ ҧ¹Õ¨é е ͧµÔ´µÑ§é ἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) ࢠҡѺἧǧ¨ÃËÅÑ¡ MicroBOX áÅÐἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) ¹Õ¨é Ð µ ͧ¨Ñ´ËÒà¾ÔÁè àµÔÁ à¹×Íè §¨Ò¡äÁ ä´ ÃÇÁÍÂÙã ¹ªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX ã¹Ãع àÃÔÁè µ ¹áÅÐÃع Áҵðҹ


12 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

µÑÇÍ ҧ·Õè 1-5 int result1 = 0;

//

int result2 = 0;

//

µÑÇá»Ã µÑÇá»Ã

float result3 = 0.0;

//

float result4 = 0.0;

//

à¡çº¤ Ò¢ ÍÁÙÅẺ int result2 à¡çº¤ Ò¢ ÍÁÙÅẺ int µÑÇá»Ã result3 à¡çº¤ Ò¢ ÍÁÙÅẺ float µÑÇá»Ã result4 à¡çº¤ Ò¢ ÍÁÙÅẺ float result2

int sum(int a , int b) { return(a+b);

//

¤×¹¤ Ò¼ÅÅѾ¸ ¨Ò¡¡Òúǡ¡Ñ¹ÃÐËÇ Ò§ a áÅÐ b

//

¤×¹¤ Ò¼ÅÅѾ¸ ¨Ò¡¡Òäٳ¡Ñ¹ÃÐËÇ Ò§

//

¿ §¡ ª¹Ñè ËÅÑ¡¢Í§â»Ãá¡ÃÁ

} float mul(float x , float y) { return(x*y);

x

áÅÐ

y

} void main(void) { result1 = sum(18,7);

//

result2 = sum(12,4) + sum(4,9);

//

ãË ¤Ò ¼ÅÅѾ¸ àËÁ×͹ ãË ¤Ò ¼ÅÅѾ¸ àËÁ×͹

18+7=25 (12+4)+(4+9)=29

result3 = mul(10.0,50.0) + mul(4.0,5.0); //

ãË ¤Ò ¼ÅÅѾ¸ àËÁ×͹(10*50)+(4*5)=520

result4 = mul(12.4,2.6) + (float)sum(8,7); //

ãË ¤Ò ¼ÅÅѾ¸ àËÁ×͹

(12.4*2.6)+(8*7)=47.24

}

1.3 äźÃÒÃÕ (Library) äźÃÒÃÕ ¤×Í ä¿Å ·ÃÕè ǺÃÇÁËÃ×ͺÃèؿ§ ¡ ª¹Ñè äÇ ã¹µÑÇà¾×Íè ¨Ñ´ËÁÇ´ËÁÙ¿ § ¡ ª¹Ñè ·ÕÁè ÅÕ ¡Ñ ɳСÒà 㪠§Ò¹¡ÅØÁ ËÃ×Í»ÃÐàÀ·à´ÕÂǡѹ¶Ù¡¨Ñ´à¡çºäÇ ã¹·Õàè ´ÕÂǡѹ Ê Ç¹ãË­ áÅ ÇÁÑ¡¨ÐµÑ§é ª×Íè ä¿Å äźÃÒÃÕ¹ãÕé Ë ÊÍ´¤Å ͧ¡Ñº¡ÅØÁ ¢Í§¿ §¡ ª¹Ñè ËÃ×Í¡ÒÃ㪠§Ò¹ áÅЧ Òµ Í¡ÒÃàÃÕ¡㪠㹤ÃÑ§é µ Íä» ¿ §¡ ª¹Ñè ¡ÅØÁ à´ÕÂǡѹ·ÕÁè ¡Ñ ãª §Ò¹º ÍÂæ 㹡ÒþѲ¹Òâ»Ãá¡ÃÁ¤ÇùíÒÁÒÊà ҧ໠¹ä¿Å äźÃÒÃÕ áÅШѴà¡çºäÇ àÁ×Íè µ ͧ¡ÒÃ㪠§Ò¹¡çà¾Õ§»ÃСÒÈâ»Ãâµä·» (prototype) ¢Í§ª×Íè äźÃÒÃÕä¿Å ·ÊÕè à ҧäÇ ¡ ͹˹ Ò¹Õé à¾×Íè ¼¹Ç¡äźÃÒÃÕàËŠҹѹé äÇ ÃÇ Á·íÒ§Ò¹¡Ñºâ»Ãá¡ÃÁ·Õ¡è Òí Åѧ¾Ñ²¹ÒÍÂÙ ËÅѧ¨Ò¡¹Ñ¹é ¨Ð·íÒãË ¼Ù¾ ² Ñ ¹ÒÊÒÁÒöàÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè ·Õºè ÃèØÍÂÙÀ ÒÂã¹ä¿Å äźÃÒÃÕ´§Ñ ¡Å ÒÇä´ (¢Ñ¹é µÍ¹àËÅ Ò¹Õ¨é ж١àª×Íè Á ⧡ѹÃÐËÇ Ò§ AVR Studio áÅÐ WinAVR â´Â¼Ù¾ ² Ñ ¹Ò¨Ðµ ͧÃкؾҸ¢Í§¢Í§äźÃÒÃÕ·àÕè ÃÕ¡㪠ãË ¡ºÑ ¡Ñº AVR Studio ÍÕ¡·Í´Ë¹Ö§è )


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 13

1.3.1 ¡ÒÃÊà ҧäźÃÒÃÕ ¡ÒÃÊà ҧäźÃÒÃÕã¹·Õ¹è ¨Õé ФŠÒÂæ ¡Ñº¡ÒÃÊà ҧä¿Å â»Ãá¡ÃÁÀÒÉÒ C ·Õàè » ¹ä¿Å ¹ÒÁÊ¡ØÅ .c µÒÁ»¡µÔ µ Ò§¡Ñ¹µÃ§·Õè ä¿Å äźÃÒÃÕ¨ÐäÁ ÁâÕ »Ãá¡ÃÁËÅÑ¡ (¿ §¡ ª¹Ñè main) ÁÕ੾ÒеÑÇ¿ §¡ ª¹Ñè µ Ò§æ ·Õµè Í §¡ÒúÃèØŧã¹ä¿Å äźÃÒÃÕ áÅкѹ·Ö¡ãË à» ¹ä¿Å ¹ÒÁÊ¡ØÅ .h á·¹ ÊÁÁµÔÇÒ µ ͧ¡ÒÃÊà ҧä¿Å äźÃÒÃÕªÍ×è func_math â´Â·ÕÀè ÒÂ㹺Ãèؿ§ ¡ ª¹Ñè sum áÅÐ ·Õàè ¤Âà» ¹µÑÇÍ ҧ¡ ͹˹ Ò¹Õé ¨Ð·íÒä´ ´§Ñ ¹Õé

mul

(1) à» ´ä¿Å ãËÁ ¨Ò¡àÁ¹Ù¤Òí Êѧè File à New File à¾×Íè à» ´Ë¹ Òµ Ò§ãËÁ (2) ¾ÔÁ¾ ¿§ ¡ ª¹Ñè sum áÅÐ

mul

ŧã¹Ë¹ Òµ Ò§¢Í§ä¿Å ãËÁ ´§Ñ ¹Õé

int sum(int a , int b) { return(a+b); } float mul(float x , float y) { return(x*y); }

(3) ¨Ò¡àÁ¹Ù¤Òí Êѧè File Save As... ËÅѧ¨Ò¡¹Ñ¹é ¨Ñ´à¡çºä¿Å äÇ ã¹¾Ò¸·Õµè Í §¡ÒÃâ´ÂµÑ§é ª×Íè à» ¹ func_math.h ´Ñ§¹Ñ¹é 㹤ÃÑ§é µ Í仼پ ² Ñ ¹ÒÊÒÁÒöàÃÕ¡㪠§Ò¹ func_math.h ã¹ÃٻẺä¿Å äźÃÒÃÕ ä´ áÅ Ç

1.3.2 ¡ÒÃàÃÕ¡㪠äźÃÒÃÕ ËÅѧ¨Ò¡·Õ¼è ¾Ù ² Ñ ¹Òä´ Êà ҧä¿Å äźÃÒÃÕáÅШѴà¡çºàÃÕºà ÍÂáÅ Ç ¼Ù¾ ² Ñ ¹ÒÊÒÁÒöàÃÕ¡㪠§Ò¹ ¿ §¡ ª¹Ñè ·Õºè ÃèØÍÂÙÀ ÒÂã¹ä¿Å äźÃÒÃÕã´æ ä´ â´Â¼¹Ç¡ä¿Å äźÃÒÃÕ¹¹Ñé ´ Ç¡ÒûÃСÒÈä´àÃ硵տäÇ ã¹Ê ǹáá¢Í§â»Ãá¡ÃÁ´Ñ§¹Õé #include

<library_filename>

#include

“library_filename”

ËÃ×Í â´Â·Õè

library_filename

¤×Í ª×Íè ä¿Å äźÃÒÃÕ··Õè Òí ¡ÒûÃСÒÈ

ઠ¹ #include <tone.h>

»ÃСÒÈãË Ã¨Ù ¡Ñ ¿ §¡ ª¹Ñè ÀÒÂã¹ä¿Å äźÃÒÃÕ·ªÕè Í×è tone


14 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

¡ÒûÃСÒÈâ´Â㪠ä´àáµÕ¿ #include ·íÒãË â»Ãá¡ÃÁÃÙ¨ ¡Ñ ¡Ñº¿ §¡ ª¹Ñè ÀÒÂã¹äźÃÒÃÕ··Õè Òí ¡Òà »ÃСÒÈ àÁ×Íè àÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè ·ÕÍè ÂÙÀ ÒÂã¹äźÃÒÃÕ¹¹Ñé æ áÅ Ç ¨Ð·íÒãË Á¡Õ ÒÃá»Å¤ÇÒÁËÁÒÂáÅзíÒ ¡ÒÃàª×Íè ÁâÂ§ä´ ¶¡Ù µ ͧ µ Íä»à» ¹µÑÇÍ ҧ¡Ò÷´ÊͺàÃÕ¡㪠§Ò¹¨Ò¡äźÃÒÃÕ func_math ·Õäè ´ á¹Ð¹íÒ¡ÒÃÊà ҧáÅÐ ¨Ñ´à¡çºäÇ ¡ ͹˹ Ò¹ÕéáÅ Ç µÑÇÍ ҧ·Õè 1-6 (1) Êà ҧâ»Ãà¨ç¡µ ãËÁ ªÍ×è test_lib (2) ¾ÔÁ¾ â»Ãá¡ÃÁŧã¹Ë¹ Òµ Ò§¢Í§ä¿Å test_lib.c #include <func_math.h> void main(void) { while(1) { lcd(“Return %f “,mul(7.3,12.0)); } }

(3) ¡íÒ˹´¾Ò¸ãË ¡ºÑ äźÃÒÃÕ func_math.h ¨Ò¡àÁ¹Ù Project à Configuration Options áÅ ÇàÅ×Í¡ äͤ͹ Include Directories ËÅѧ¨Ò¡¹Ñ¹é ¡íÒ˹´¾Ò¸à¾×Íè Áͧä»Âѧä¿Å func_math.h (4) ·íÒ¡ÒäÍÁä¾Å â´ÂÊѧè Build â»Ãà¨ç¡µ à¾×Íè ãË ä´ ä¿Å ¼ÅÅѾ¸ test_lib.hex (5) ´Òǹ âËÅ´ test_lib.hex (6) ´Ù¼ÅÅѾ¸ ·âÕè Á´ÙÅ LCD ¨ÐáÊ´§¢ ͤÇÒÁ

Return

87.6000

¤íÒ͸ԺÒÂâ»Ãá¡ÃÁ ã¹Ê ǹáá¢Í§â»Ãá¡ÃÁä´ Á¡Õ ÒûÃСÒÈà¾×Íè àÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè ã¹ä¿Å äźÃÒÃÕ func_math.ic ä´ (ã¹ â»Ãá¡ÃÁ¨ÐàÃÕ¡㪠¿§ ¡ ª¹Ñè mul) ËÅѧ¨Ò¡¹Ñ¹é ã¹ main â»Ãá¡ÃÁ¨ÐÁÕ¡ÒÃàÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè mul ãË ¤¹× ¤ Ò ¡ÅѺÁÒáÊ´§¼Å·Õâè Á´ÙÅ LCD à¾×Íè áÊ´§¤ Ò¼ÅÅѾ¸ ¨Ò¡¡Òäٳ¡Ñ¹ÃÐËÇ Ò§ 7.3 ¡Ñº 12.0 ¢ ͤÇ÷ÃÒº : ËÒ¡µ ͧ¡Ò÷´ÊͺµÑÇÍ ҧ¹Õ¨é е ͧµÔ´µÑ§é ἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) ࢠҡѺἧǧ¨ÃËÅÑ¡ MicroBOX áÅÐἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) ¹Õ¨é Ð µ ͧ¨Ñ´ËÒà¾ÔÁè àµÔÁ à¹×Íè §¨Ò¡äÁ ä´ ÃÇÁÍÂÙã ¹ªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX ã¹Ãع àÃÔÁè µ ¹áÅÐÃع Áҵðҹ


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 15

1.4 ª¹Ô´¢Í§¢ ÍÁÙÅáÅСÒûÃСÒȵÑÇá»Ãã¹ÀÒÉÒ C WinAVR ·Õàè » ¹â»Ãá¡ÃÁ C ¤ÍÁä¾àÅÍÃ ä´ ¾² Ñ ¹ÒÁÒ¨Ò¡ AVR-GCC ´Ñ§¹Ñ¹é ª¹Ô´¢Í§¢ ÍÁÙÅ ¨Ðà» ¹ä»µÒÁ¡ÒáíÒ˹´¨Ò¡ AVR-GCC «Ö§è ÊÒÁÒöÊÃØ»ä´ ´§Ñ ¹Õé

¤ Òã¹ ã¹

ª¹Ô´¢ ÍÁÙŢͧµÑÇá»Ã

¢¹Ò´¢ ÍÁÙÅ

char

à» ¹ª¹Ô´¢ ÍÁÙŨíҹǹàµçÁ¢¹Ò´ 8 ºÔµáºº¤Ô´à¤Ã×Íè §ËÁÒ ÁÕ ª ǧ -128 ¶Ö§ +127

unsigned char

à» ¹ª¹Ô´¢ ÍÁÙŨíҹǹàµçÁ¢¹Ò´ 8 ºÔµ ẺäÁ ¤´Ô à¤Ã×Íè §ËÁÒ ÁÕ¤Ò ª ǧ 0 ¶Ö§ +255

int

à» ¹ª¹Ô´¢ ÍÁÙŨíҹǹàµçÁ¢¹Ò´ 16 ºÔµ Ẻ¤Ô´à¤Ã×Íè §ËÁÒ ÁÕ¤Ò ã¹ ª ǧ -32,768 ¶Ö§ +32,767

unsigned int

à» ¹¢ ÍÁÙŨíҹǹàµçÁ¢¹Ò´ 16 ºÔµ ẺäÁ ¤´Ô à¤Ã×Íè §ËÁÒ ÁÕ¤Ò ã¹ª ǧ 0 ¶Ö§ +65535

long

à» ¹ª¹Ô´¢ ÍÁÙŨíҹǹàµçÁ¢¹Ò´ 32 ºÔµ Ẻ¤Ô´à¤Ã×Íè §ËÁÒ ÁÕ¤Ò ã¹ ª ǧ -2,147,483,648 ¶Ö§ +2,147,483,647

unsigned long

à» ¹ª¹Ô´¢ ÍÁÙŨíҹǹàµçÁ¢¹Ò´ 32 ºÔµ ẺäÁ ¤´Ô à¤Ã×Íè §ËÁÒ ÁÕ¤Ò ã¹ª ǧ 0 ¶Ö§ +4294967295

long long

à» ¹ª¹Ô´¢ ÍÁÙŨíҹǹàµçÁ¢¹Ò´ 64 ºÔµ Ẻ¤Ô´à¤Ã×Íè §ËÁÒ ÁÕ¤Ò ã¹ ª ǧ -9223372036854775808 ¶Ö§ + 9223372036854775807

unsigned long long

à» ¹ª¹Ô´¢ ÍÁÙŨíҹǹàµçÁ¢¹Ò´ 64 ºÔµ ẺäÁ ¤´Ô à¤Ã×Íè §ËÁÒ ÁÕ¤Ò ã¹ª ǧ 0 ¶Ö§ +18446744073709551616

float áÅÐ double

à» ¹ª¹Ô´¢ ÍÁÙÅ¢¹Ò´ 32 ºÔµ 㪠᷹¢ ÍÁÙŪ¹Ô´¨íҹǹ¨ÃÔ§·Õàè » ¹àÅ¢ ·È¹ÔÂÁ

arrays

¡ÅØÁ ¢ ÍÁÙÅËÃ×Í¡ÅØÁ ¢Í§µÑÇá»Ã·Õ¶è ¡Ù »ÃСÒÈ¢Ö¹é â´ÂÁÕª¹Ô´¢ ÍÁÙÅàËÁ×͹¡Ñ¹áÅÐÁÕáÍ´à´Ãʢͧ˹ ǤÇÒÁ¨íÒµ ͡ѹ

pointers

à» ¹ª¹Ô´¢ ÍÁÙÅ·Õãè ª ÍÒ §ÍÔ§¶Ö§áÍ´à´Ãʢͧ˹ ǤÇÒÁ¨íÒ

structures

à» ¹¡ÒèѴ¡ÅØÁ ¢ ÍÁÙÅ·ÕÁè ¤Õ ÇÒÁᵡµ Ò§ª¹Ô´¡Ñ¹ä´


16 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

1.5 ÃкºµÑÇàÅ¢°Ò¹ã¹ÀÒÉÒ C ÃкºµÑÇàÅ¢·Õãè ª ã¹â»Ãá¡ÃÁÀÒÉÒ C ÁÕ´Ç Â¡Ñ¹ 3 Ẻ¤×Í 1. µÑÇàÅ¢°Ò¹ÊÔº 㪠¡Òí ˹´¤ ÒãË ¡ºÑ µÑÇá»ÃËÃ×Í¡Òäíҹǹã¹â»Ãá¡ÃÁä´ ·ÇÑè æä» 2. µÑÇàÅ¢°Ò¹Êͧ ÁÕû٠Ẻ¡ÒÃà¢Õ¹¤×Í 0bBBBBBBBB â´Â·Õè B ¤×͵ÑÇàÅ¢ 0 ËÃ×Í 1 3. µÑÇàÅ¢°Ò¹ÊԺˡ ÁÕû٠Ẻ¡ÒÃà¢Õ¹¤×Í 0xHHHHHHHH â´Â·Õè H ¤×͵ÑÇàÅ¢ 0-9 áÅÐ A-F µÑÇÍ ҧ·Õè 1-7 àÅ¢°Ò¹Êͧ 8 ºÔµàª ¹ 0b10010010 à·Õº෠ҡѺ 146 °Ò¹ÊÔº ¤íҹdz¨Ò¡ (1x27) + (0x26) + (0x25) + (1x24) + (0x23) + (0x22) + (1x21) + (0x20) = 14610

µÑÇÍ ҧ·Õè 1-8

àÅ¢°Ò¹Êͧ 16 ºÔµ ઠ¹ 0b1111010011101101 à·Õº෠ҡѺ 62701 °Ò¹ÊÔº ¤íҹdz¨Ò¡ (1x215) + (1x214) + (1x213) + (1x212) + (0x211) + (1x210) + (0x29) + (0x28) + (1x27) + (1x26) + (1x25) + (0x24) + (1x23) + (1x22) + (0x21) + (1x20) = 6270110

ÊÒÁÒöà·Õºà¤Õ§µÑÇàÅ¢·Ñ§é 3 °Ò¹ä´ ´§Ñ ¹Õé °Ò¹ÊÔº 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

°Ò¹ÊԺˡ 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F

°Ò¹Êͧ 0b0000 0b0001 0b0010 0b0011 0b0100 0b0101 0b0110 0b0111 0b1000 0b1001 0b1010 0b1011 0b1100 0b1101 0b1110 0b1111


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 17

µÑÇÍ ҧ·Õè 1-9 àÅ¢°Ò¹ÊԺˡ ઠ¹ 0xFF à·Õº෠ҡѺ 255 °Ò¹ÊÔº ¤íҹdz¨Ò¡ (15x161) + (15*160) = 25510 ËÃ×Íà·ÕÂºä´ ¡ºÑ àÅ¢°Ò¹Êͧ 0xFF à 0b11111111

µÑÇÍ ҧ·Õè 1-10 àÅ¢°Ò¹ÊԺˡ ઠ¹ 0x31 à·Õº෠ҡѺ 49 °Ò¹ÊÔº ¤íҹdz¨Ò¡ (3x161) + (1x160) = 4910 ËÃ×Íà·ÕÂºä´ ¡ºÑ àÅ¢°Ò¹Êͧ 0x31 à 0b00111111

1.6 ¡ÒûÃСÒȵÑÇá»Ã ¡ÒûÃСÒȵÑÇá»Ãã¹â»Ãá¡ÃÁÀÒÉÒ C ¢Í§ WinAVR ¨ÐàËÁ×͹¡Ñº¡ÒûÃСÒȵÑÇá»Ãã¹ ÀÒÉÒ C ·ÑÇè ä» â´ÂÁÕû٠Ẻ¡ÒûÃСÒȴѧ¹Õé type variable_name;

â´Â·Õè

¤×Í ª¹Ô´¢ ÍÁÙżÅÅѾ¸ ·µÕè Í §¡ÒáíÒ˹´ variable_name ¤×Í ª×Í è µÑÇá»Ã·Õ»è ÃСÒÈ type

ઠ¹ int a;

//

»ÃСÒȵÑÇá»Ãª×Íè a ¡íÒ˹´ª¹Ô´¢ ÍÁÙÅà» ¹áºº int

long result;

//

»ÃСÒȵÑÇá»Ãª×Íè

result

float start;

//

»ÃСÒȵÑÇá»Ãª×Íè

start

int x,y;

//

»ÃСÒȵÑÇá»Ã 2 µÑǤ×Í

float p,q,r;

//

»ÃСÒȵÑÇá»Ã 3 µÑǤ×Í p,q áÅÐ

x

¡íÒ˹´ª¹Ô´¢ ÍÁÙÅà» ¹áºº long ¡íÒ˹´ª¹Ô´¢ ÍÁÙÅà» ¹áºº float áÅÐ

y

ª¹Ô´¢ ÍÁÙÅà» ¹ int r

ª¹Ô´¢ ÍÁÙÅẺ float

¹Í¡¨Ò¡¹Õ¶é Ò µ ͧ¡ÒûÃСÒȵÑÇá»Ã¾Ã ÍÁ¡Ñº¡ÒáíÒ˹´¤ ÒàÃÔÁè µ ¹ (initial value) ¡çÊÒÁÒö ·íÒä´ àª ¹ int x=100;

// //

»ÃСÒȵÑÇá»Ãª×Íè x áÅÐ y ¡íÒ˹´ª¹Ô´¢ ÍÁÙÅẺ int // ¡íÒ˹´¤ ÒàÃÔÁ è µ ¹ãË x=15 áÅÐ y=78 p=47L,q=31L; // »ÃСÒȵÑÇá»Ãª×Í è p áÅÐ q ¡íÒ˹´ª¹Ô´¢ ÍÁÙÅẺ long // ¡íÒ˹´¤ ÒàÃÔÁ è µ ¹ãË p à» ¹ 47 áÅÐ q à» ¹ 31

int x=15,y=78;

long

»ÃСÒȵÑÇá»Ãª×Íè x ¡íÒ˹´ª¹Ô´¢ ÍÁÙÅà» ¹áºº int áÅСíÒ˹´¤ ÒàÃÔÁè µ ¹à» ¹ 100

//


18 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

1.7 ¡ÒÃá»Å§ª¹Ô´¢Í§¢ ÍÁÙÅ ä´ ´§Ñ ¹Õé

㹺ҧ¡Ã³ÕÁ¤Õ ÇÒÁ¨íÒà» ¹µ ͧà»ÅÕÂè ¹á»Å§ª¹Ô´¢ ÍÁÙŢͧµÑÇá»Ã·Õäè ´ »ÃСÒÈäÇ áÅ Ç ÊÒÁÒö·íÒ ÃٻẺ (type)variable

â´Â·Õè

¤×Í ª¹Ô´¢ ÍÁÙżÅÅѾ¸ ·µÕè Í §¡Òà variable ¤×Í µÑÇá»Ã·Õµ è Í §¡ÒèÐà»ÅÕÂè ¹á»Å§ª¹Ô´¢Í§¢ ÍÁÙÅ type

µÑÇÍ ҧ·Õè 1-11 »ÃСÒȵÑÇá»Ã x Ẻ int áÅСíÒ˹´¤ ÒãË à· Ò¡Ñº 100 float y=43.67,z; // »ÃСÒȵÑÇá»Ã y áÅÐ z Ẻ float áÅСíÒ˹´¤ ÒãËé y ෠ҡѺ 43.67 z = y+(float)x ; // ãË z à¡çº¤ ҼźǡÃÐËÇ Ò§ y ¡Ñº x áµ ª¹Ô´¢ ÍÁÙŢͧ x à» ¹áºº int // «Ö§è ᵡµ Ò§¡Ñº y áÅÐ z // ¨Ö§µ ͧá»Å§ª¹Ô´¢ ÍÁÙŢͧ x ãË à» ¹ float ã¹Ê ǹ¢Í§ (float)x // ´Ñ§¹Ñ¹ é ¼ÅÅѾ¸ ·äÕè ´ ¤Í× z ¨ÐÁÕ¤Ò à· Ò¡Ñº 143.67 int x=100;

//

µÑÇÍ ҧ·Õè 1-12 int a=50; long b=23L,c; c = b*(long)a;

»ÃСÒȵÑÇá»Ã a Ẻ int áÅСíÒ˹´¤ ÒãË à· Ò¡Ñº 50 // »ÃСÒȵÑÇá»Ã b áÅÐ c Ẻ long áÅСíÒ˹´¤ ÒãË b ෠ҡѺ 23 // ãË c à¡çº¤ ҼŤٳÃÐËÇ Ò§ b ¡Ñº c // áµ à¹×Í è §¨Ò¡ª¹Ô´¢ ÍÁÙŢͧ a à» ¹ int «Ö§è ᵡµ Ò§¡Ñº b áÅÐ c // ¨Ö§µ ͧá»Å§ª¹Ô´¢ ÍÁÙŢͧ a ãË à» ¹ long ã¹Ê ǹ¢Í§ (long)a // ´Ñ§¹Ñ¹ é ¼ÅÅѾ¸ ·äÕè ´ ¤Í× c ෠ҡѺ 1150 //

µÑÇÍ ҧ·Õè 1-13 float p=50.736; int q=60,result; // result = q+(int)p;

//

»ÃСÒȵÑÇá»Ã p Ẻ float áÅСíÒ˹´¤ ÒãË à· Ò¡Ñº 50.763

»ÃСÒȵÑÇá»Ã q áÅÐ result Ẻ int áÅСíÒ˹´ãË q ෠ҡѺ 60 ãË result à¡çº¤ ҼźǡÃÐËÇ Ò§ q ¡Ñº p // áµ ª¹Ô´¢ ÍÁÙŢͧ p à» ¹áºº float «Ö§è ᵡµ Ò§¡Ñº q áÅÐ result // ¨Ö§¨íÒà» ¹µ ͧÁÕ¡ÒÃá»Å§ª¹Ô´¢ ÍÁÙŢͧ p ãË ä»à» ¹ int ã¹Ê ǹ¢Í§ // (int)p ·íÒãË ¤Ò ãËÁ ¢Í§ p à» ¹ 50 ¡ÒÃá»Å§¨Ð㪠੾ÒШíҹǹàµçÁ // ´Ñ§¹Ñ¹ é ¼ÅÅѾ¸ ·äÕè ´ ¤Í× result ¨ÐÁÕ¤Ò à· Ò¡Ñº 110 //


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 19

1.8 ÃÒÂÅÐàÍÕ´¢Í§µÑÇá»ÃẺµ Ò§æ 1.8.1 µÑÇá»Ãª¹Ô´ÍÐàà(array) µÑÇá»Ãª¹Ô´ÍÐàà¤×Í ¡ÅØ Á¢Í§µÑÇá»Ã·ÕèÁÕª¹Ô´¢Í§¢ ÍÁÙÅàËÁ×͹¡Ñ¹ áÅÐÁÕáÍ´à´Ãʢͧ ˹ ǤÇÒÁ¨íÒàÃÕ§µÔ´µ ͡ѹä»

1.8.1.1 ÍÐàà1 ÁÔµÔ ÃÙ»áẺ¡ÒûÃСÒÈ㪠µÇÑ á»ÃÍÐàà1 ÁÔµ·Ô Òí ä´ ´§Ñ ¹Õé type name[size];

â´Â·Õè

type

¤×Í ª¹Ô´¢Í§¢ ÍÁÙŵÑÇá»ÃÍÐàÃÂ

name

¤×Í ª×Íè ¢Í§µÑÇá»ÃÍÐàÃÂ

size

¤×Í ¤ ҢͧµÑÇàÅ¢¡íÒ˹´¢¹Ò´¢Í§ÍÐààÍÒ¨¨ÐäÁ ¡Òí ˹´¡çä´

¡ÒÃࢠҶ֧¢ ÍÁÙŢͧÊÁÒªÔ¡µÑÇ㴢ͧÍÐààÊÒÁÒö·íÒä´ â´Â¡ÒáíÒ˹´·Õè´Ñª¹ÕªÕéµíÒá˹ § ÁÕÃٻẺ໠¹ name[index]

â´Â·Õè index ¤×Í ¤ ҴѪ¹Õ·ªÕè ËÕé Ã×ÍÃкØä»ÂѧÊÁÒªÔ¡µÑÇã´æ ¢Í§ÍÐàà«Ö§è ÍҨ໠¹µÑÇàÅ¢ ËÃ×Í ¤ ÒµÑÇá»Ãã´æ ËÃ×Í¡ÒáÃзíҢͧ¹Ô¾¨¹ «Ö§è ·Ñ§é ËÁ´·Õ¡è Å ÒÇÁҨе ͧÁÕ¤Ò à» ¹¨íҹǹàµçÁ෠ҹѹé

µÑÇÍ ҧ·Õè 1-14 ¶ Ò»ÃСÒÈà» ¹ char arr[4];

ËÁÒ¶֧ µÑÇá»ÃÍÐààªÍ×è arr »ÃСͺ´ ÇÂÊÁÒªÔ¡Â Í 4 µÑÇ (Á꤂ Òà» ¹µÑÇá»Ã 4 µÑÇ¡çä´ ) áµ àÇÅÒ·Õè ¨ÐÍ Ò§ÍÔ§¶Ö§ÊÁÒªÔ¡¨Ð㪠´ªÑ ¹Õà» ¹µÑǺ §ºÍ¡Ç Ò¡íÒÅѧµÔ´µ Í㪠§Ò¹ÊÁÒªÔ¡µÑÇã´ ´Ñ§¹Ñ¹é arr ÊÒÁÒöᨡᨧÊÁÒªÔ¡ ä´ ´§Ñ ¹Õé arr[0]

à» ¹ÊÁÒªÔ¡µÑÇ·Õè 1 áµ Á´Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 0

arr[1]

à» ¹ÊÁÒªÔ¡µÑÇ·Õè 2 áµ Á´Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 1

arr[2]

à» ¹ÊÁÒªÔ¡µÑÇ·Õè 3 áµ Á´Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 2

arr[3]

à» ¹ÊÁÒªÔ¡µÑÇ·Õè 4 áµ Á´Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 3

â´Â arr[0] , arr[1] , arr[2] áÅÐ arr[3] µ Ò§¡çà» ¹µÑÇá»Ãª¹Ô´ char ÁÕ¢¹Ò´ 1 亵 ´Ñ§¹Ñ¹é ¡ÒûÃСÒȵÑÇá»Ã arr ¨Ö§ãª à¹×Íé ·Õ·è §Ñé ÊÔ¹é 4 亵


20 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

µÑÇÍ ҧ·Õè 1-15 ¶ Ò»ÃСÒÈà» ¹ int time[10];

ËÁÒ¶֧ µÑÇá»ÃÍÐààªÍ×è time ÁÕÊÁÒªÔ¡Â Í 10 µÑÇ ÊÒÁÒÃ¶á¨¡á¨§ä´ ´§Ñ ¹Õé time[0] à» ¹ÊÁÒªÔ¡µÑÇ·Õè 1 áµ Á´ Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 0 time[1] à» ¹ÊÁÒªÔ¡µÑÇ·Õè 2 áµ Á´ Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 1 time[2] à» ¹ÊÁÒªÔ¡µÑÇ·Õè 3 áµ Á´ Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 2 time[3] à» ¹ÊÁÒªÔ¡µÑÇ·Õè 4 áµ Á´ Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 3 time[4] à» ¹ÊÁÒªÔ¡µÑÇ·Õè 5 áµ Á´ Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 4 time[5] à» ¹ÊÁÒªÔ¡µÑÇ·Õè 6 áµ Á´ Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 5 time[6] à» ¹ÊÁÒªÔ¡µÑÇ·Õè 7 áµ Á´ Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 6 time[7] à» ¹ÊÁÒªÔ¡µÑÇ·Õè 8 áµ Á´ Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 7 time[8] à» ¹ÊÁÒªÔ¡µÑÇ·Õè 9 áµ Á´ Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 8 time[9] à» ¹ÊÁÒªÔ¡µÑÇ·Õè 10 áµ Á´ Õ ªÑ ¹Õ·ªÕè àÕé » ¹ 9 â´Â·Õè time[0]...time[9] à» ¹µÑÇá»Ãª¹Ô´ int ¢¹Ò´ 2 亵 ´Ñ§¹Ñ¹é ¡ÒûÃСÒȵÑÇá»Ã time ¨Ö§ãª à¹×Íé ·Õè 20 亵

µÑÇÍ ҧ·Õè 1-16 ¡ÒûÃСÒȵÑÇá»Ãª¹Ô´ÍÐàà¾Ã ÍÁ¡Ñº¡íÒ˹´¤ Ò¢ ÍÁÙÅãË ¡ºÑ ÊÁÒªÔ¡ ãË »ÃСÒÈà» ¹ char dat[8] = {1,3,5,7,9,11,13,15} ;

¨Ò¡µÑÇÍ ҧ໠¹¡ÒûÃСÒȵÑÇá»ÃÍÐààªÍ×è dat ¾Ã ÍÁ¡Ñº¡íÒ˹´¤ Ò¢ ÍÁÙÅãË ¡ºÑ ÊÁÒªÔ¡áµ ÅеÑÇ (ÍÒ¨ ¨ÐàÃÕÂ¡Ç Ò áµ ÅÐ˹ Ç ¡çä´ ) ¼ÅÅѾ¸ ·äÕè ´ ¤Í× dat[0] = 1; dat[1] = 3; dat[2] = 5; dat[3] = 7; dat[4] = 9; dat[5] = 11; dat[6] = 13; dat[7] = 15;

¡ÒÃàÃÕ¡㪠ÊÁÒªÔ¡ÍÐààËÅѧ¨Ò¡ÁÕ»ÃСÒÈÍÐàࢠҧº¹ char i , j ; i = 3; j = dat[i];

// j = dat[i] ==> j = dat[3] ==> j = 7

× /* ¼ÅÅѾ¸ ¤Í

j = 7 */


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 21

µÑÇÍ ҧ·Õè 1-17 ¡ÒûÃСÒȵÑÇá»Ãª¹Ô´ÍÐàà¾Ã ÍÁ¡Ñº¡íÒ˹´¤ Ò¢ ÍÁÙÅãË ¡ºÑ ÊÁÒªÔ¡ »ÃСÒÈà» ¹ char dat[4] = “ abcd” ;

¨Ò¡µÑÇÍ ҧ໠¹¡ÒûÃСÒȵÑÇá»ÃÍÐààªÍ×è dat ¾Ã ÍÁ¡Ñº¡íÒ˹´¤ Ò¢ ÍÁÙÅãË ¡ºÑ ÊÁÒªÔ¡áµ ÅеÑÇ (ÍÒ¨ àÃÕÂ¡Ç Ò áµ ÅÐà«Å¡çä´ ) ¼ÅÅѾ¸ ·äÕè ´ ¤Í× dat[0] dat[1] dat[2] dat[3]

= = = =

‘a’; ‘b’; ‘c’; ‘d’;

¡ÒÃàÃÕ¡㪠ËÅѧ¨Ò¡»ÃСÒÈÍÐàà¢Ò §º¹ char i , j ; i = 3; j = dat[i];

// j = dat[i] ==> j = dat[3] ==> j = ‘d’

× j = ‘d’ */ /*¼ÅÅѾ¸ ¤Í 㹡ÒûÃСÒȵÑÇá»Ãª¹Ô´ÍÐààÊÒÁÒö»ÃСÒÈ㪠§Ò¹à» ¹áººâ¡ÅºÍÅ ËÃ×ÍâŤÑÅ ËÃ×͹íÒä»à» ¹µÑÇ á»Ã parameter à¾×Íè ÃѺ¡ÒÃÊ §¼ Ò¹¤ Ңͧ¿ §¡ ª¹Ñè ¡çä´

µÑÇÍ ҧ·Õè 1-18 ¡ÒûÃСÒȵÑÇá»Ãª¹Ô´ÍÐàહԴ¢ ÍÁÙÅẺ float ¾Ã ÍÁ¡Ñº¡íÒ˹´¤ Ò¢ ÍÁÙÅãË ¡ºÑ ÊÁÒªÔ¡ »ÃСÒÈà» ¹ float cal[5] = {0.85, 6.23, 4.7, 10.8, 2.14} ;

´Ñ§¹Ñ¹é cal[0] cal[1] cal[2] cal[3] cal[4]

= = = = =

0.85; 6.23; 4.7; 10.8; 2.14;

µÑÇÍ ҧ·Õè 1-19 ¡ÒûÃСÒȵÑÇá»ÃÍÐàહԴ¢ ÍÁÙÅẺ long ¾Ã ÍÁ¡Ñº¡íÒ˹´¤ Ò¢ ÍÁÙÅãË ¡ºÑ ÊÁÒªÔ¡ »ÃСÒÈà» ¹ long store[3] = {20L, 500L, 49L, 1055L} ;

´Ñ§¹Ñ¹é store[0] store[1] store[2] store[3]

= = = =

20L; 500L; 49L; 1055L;

ËÁÒÂà赯 ¢ ÍÁÙŪ¹Ô´ long ÊÒÁÒöÃкØãË ª´Ñ à¨¹ä´ â´Âãª Í¡Ñ Éà l ËÃ×Í L µ Í· ÒµÑÇàÅ¢¢ ÍÁÙÅ´ Ç ¹Í¡¨Ò¡¹ÕÂé §Ñ ÊÒÁÒö㪠µÇÑ á»ÃÍÐàà·ÁÕè Ò¡¡Ç Ò 1 ÁÔµÔ ä´ ´Ç Â


22 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

1.8.1.2 ÍÐàà2 ÁÔµÔ ÃÙ»áẺ¡ÒûÃСÒÈ㪠µÇÑ á»ÃÍÐàà2 ÁÔµ·Ô Òí ä´ ´§Ñ ¹Õé type name[x][y];

â´Â·Õè

¤×Í ª¹Ô´¢Í§¢ ÍÁÙŵÑÇá»ÃÍÐààname ¤×Í ª×Í è ¢Í§µÑÇá»ÃÍÐààx ¤×Í ¤ ҢͧµÑÇàÅ¢¡íÒ˹´¢¹Ò´á¶Ç¢Í§ÍÐàày ¤×Í ¤ ҢͧµÑÇàÅ¢¡íÒ˹´¢¹Ò´ËÅÑ¡¢Í§ÍÐààtype

ઠ¹ int a[2][5];

à» ¹¡ÒûÃСÒÈãË a à» ¹µÑÇá»ÃÍÐàà2 ÁÔµÔ ª¹Ô´¢ ÍÁÙÅẺ int ÁÕ¨Òí ¹Ç¹ÊÁÒªÔ¡ 10 µÑÇ ä´ á¡ a[0][0], a[0][1], a[0][2], a[0][3], a[0][4] , a[1][0], a[1][1], a[1][2], a[1][3], a[1][4]

¡ÒáíÒ˹´¤ Ò¢ ÍÁÙÅàÃÔÁè µ ¹¡çÊÒÁÒö·íÒä´ àª ¹ int menu[3][4] ={{1,3,4,9} , {2,8,0,5}};

à» ¹¡ÒûÃСÒÈãË menu à» ¹µÑÇá»ÃÍÐàà2 ÁÔµÔ ª¹Ô´¢ ÍÁÙÅẺ int ÁÕ¨Òí ¹Ç¹ÊÁÒªÔ¡·Ñ§é ËÁ´ 12 µÑÇ áÅСíÒ˹´¤ Ò¢ ÍÁÙÅàÃÔÁè µ ¹ ´Ñ§¹Ñ¹é menu[0][0] = 1

menu[0][1] = 3

menu[0][2] = 4

menu[0][3] = 9

menu[1][0] = 2

menu[1][1] = 8

menu[1][2] = 0

menu[1][3] = 5

menu[2][0] = 0

menu[2][1] = 0

menu[2][2] = 0

menu[2][3] = 0

1.8.2 µÑÇá»Ã¾ÍÂàµÍà (Pointer) µÑÇá»Ã¾ÍÂàµÍà ¤×Í µÑÇá»Ã·Õ·è Òí ˹ Ò·Õàè ¡çº¤ ÒáÍ´à´ÃʢͧµÑÇá»Ã·Õ·è Òí ¡ÒêÕé ËÃ×ÍáÍ´à´ÃÊ µíÒá˹ §ã´æ ÁÕû٠Ẻ¡ÒûÃСÒÈ㪠§Ò¹´Ñ§¹Õé type * name;

â´Â·Õè

ઠ¹

¤×Í ª¹Ô´¢ ÍÁÙŢͧµÑÇá»Ã¾Í¹ àµÍà name ¤×Í ª×Í è µÑÇá»Ã¾Í¹ àµÍà ·ãÕè ª »ÃСÒÈ type

à» ¹¡ÒûÃСÒÈãË ptr à» ¹µÑÇá»Ã Pointers ·Õãè ª ª¢Õé Í ÁÙÅẺ char int *a; à» ¹¡ÒûÃСÒÈãË a à» ¹µÑÇá»Ã Pointers ·Õãè ª ª¢Õé Í ÁÙÅẺ int float *storage_num; »ÃСÒÈãË storage_num à» ¹µÑÇá»Ã Pointers ·Õãè ª ª¢ Õé Í ÁÙÅ char *ptr;

Ẻ float

long *number; à» ¹¡ÒûÃСÒÈãË number

à» ¹µÑÇá»Ã Pointers ·Õãè ª ª¢Õé Í ÁÙÅẺ long


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 23

1.8.2.1 ¡ÒÃࢠҶ֧µíÒá˹ §áÍ´à´ÃʢͧµÑÇá»Ã ¡ÒÃࢠҶ֧µíÒá˹ §áÍ´à´ÃʢͧµÑÇá»Ãã´æ´ Ǿ͹ àµÍà ÊÒÁÒÃ¶Í Ò§ÍÔ§µíÒá˹ §´ Ç à¤Ã×Íè §ËÁÒ & ¹íÒ˹ ÒµÑÇá»Ã áÅÐàÁ×Íè µ ͧ¡ÒÃãË µÇÑ á»Ã¾Í¹ àµÍà ¡ÃзíҡѺ¢ ÍÁÙÅ·Õ¡è Òí ÅѧªÕÍé ÂÙ ³ ¢³Ð¹Ñ¹é ·íÒä´ â´Â¡ÒÃãÊ à¤Ã×Íè §ËÁÒ * ¹íÒ˹ ÒµÑÇá»Ã¾Í¹ àµÍà ¹¹Ñé ઠ¹ int *ptr;

// à» ¹¡ÒûÃСÒȵÑÇá»Ã¾Í¹ àµÍà ptr à¡çº¤ ÒáÍ´à´ÃÊẺ int

int x;

//

ptr = &x; *ptr = 100; lcd(“%d”,x);

à» ¹¡ÒûÃСÒȵÑÇá»Ãª×Íè x ª¹Ô´¢ ÍÁÙÅẺ int // ¡íÒ˹´ãË ptr à¡çº¤ ÒáÍ´à´ÃÊ x // ¡íÒ˹´¤ Ò 100 ãË ¡º Ñ áÍ´à´ÃÊ·Õè ptr ªÕÍé ÂÙ // ·´ÊͺàÃÕ¡¤ Ңͧ x ÁÒáÊ´§¼Å·Õâè Á´ÙÅ LCD ¨ÐÁÕ¤Ò à» ¹ 100

µÑÇÍ ҧ·Õè 1-20 ·´Êͺâ»Ãá¡ÃÁµÑÇÍ ҧµ Í仹Õé #include <ipst.h> // ¼¹Ç¡äźÃÒÃÕËÅÑ¡·ÕÊ è ¹ÑºÊ¹Ø¹á¼§Ç§¨Ã MicroBOX void main() // â»Ãá¡ÃÁËÅÑ¡¢Í§ÀÒÉÒ C { long X; long *Xptr; X=50L;

à» ¹¡ÒûÃСÒȵÑÇá»Ãª×Íè X ª¹Ô´¢ ÍÁÙÅẺ long // à» ¹¡ÒûÃСÒȵÑÇá»Ã¾ÍÂàµÍà ªÍ ×è Xptr ÊíÒËÃѺà¡çº¤ ÒáÍ´à´ÃÊẺ long // ¡íÒ˹´¤ Ò X ෠ҡѺ 50 (à» ¹ª¹Ô´¢ ÍÁÙÅ long µ ͧãÊ L µÒÁËÅѧ´ ÇÂ) // ¡íÒ˹´ãË Xptr à¡çº¤ ÒáÍ´à´ÃÊ X

//

Xptr=&X; lcd(“*Xptr = %L #c “,*Xptr);

¤ Òáá·Õáè Ê´§º¹âÁ´ÙÅ LCD ¤×Í ¤ Ò¢ ÍÁÙŢͧ X (X=50L) // áÅÐÊѧè à¤ÅÕÂà ¢Í ¤ÇÒÁ¡ ͹áÊ´§¢ ͤÇÒÁ¤ÃÑ§é ¶Ñ´ä» // ˹ ǧàÇÅÒáÊ´§¤ Ò¼ÅÅѾ¸ // âËÅ´ãË ¤Ò X = 100L //

sleep(2000);

X=100L; lcd(“*Xptr = %L #c “,*Xptr);

¤ Ò·ÕÊè ͧáÊ´§º¹âÁ´ÙÅ LCD ¤×Í ¤ Ò¢ ÍÁÙŢͧ X ¹Ñ¹è àͧ (X=100L) // áÅÐÊѧè à¤ÅÕÂà ¢Í ¤ÇÒÁ¡ ͹áÊ´§¢ ͤÇÒÁ¤ÃÑ§é ¶Ñ´ä» // ˹ ǧàÇÅÒáÊ´§¤ Ò¼ÅÅѾ¸ // âËÅ´ãË ¤Ò X = 200L â´ÂâËÅ´¼ Ò¹µÑÇá»Ã¾Í¹ àµÍà “,X); // áÊ´§¤ ÒÊØ´· Ò¢ͧ¤ Ò X áÅÐà¤ÅÕÂà âÁ´ÙÅ LCD ¡ ͹áÊ´§ // àºÃ¡â»Ãá¡ÃÁ //

sleep(2000); *Xptr=200L; lcd(“X =%L #c while(1); }

¢ ͤÇ÷ÃÒº : ËÒ¡µ ͧ¡Ò÷´ÊͺµÑÇÍ ҧ¹Õ¨é е ͧµÔ´µÑ§é ἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Displayio) ࢠҡѺἧǧ¨ÃËÅÑ¡ MicroBOX áÅÐἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) ¹Õ¨é е ͧ¨Ñ´ËÒ à¾ÔÁè àµÔÁ à¹×Íè §¨Ò¡äÁ ä´ ÃÇÁÍÂÙã ¹ªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX ã¹Ãع àÃÔÁè µ ¹áÅÐÃع Áҵðҹ


24 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

1.8.3 µÑÇá»ÃẺâ¤Ã§Êà ҧ (Structure) µÑÇá»ÃáẺâ¤Ã§Êà ҧ໠¹ÅѡɳТͧ¡ÒÃÃÇÁ¡ÅØ Á¢Í§µÑÇá»Ã·ÕèÁÕ¤ÇÒÁÊÍ´¤Å ͧËÃ×Í ÊÑÁ¾Ñ¹¸ ¡Ñ¹ÁÒÃÇÁãË ÍÂÙ ËÁÇ´ËÁÙ à´ÕÂǡѹ â´Â·Õ誹Դ¢ ÍÁÙŢͧµÑÇá»ÃàËÅ Ò¹Ñé¹äÁ ¨íÒà» ¹µ ͧ໠¹ ª¹Ô´à´ÕÂǡѹ «Ö§è ᵡµ Ò§¨Ò¡µÑÇá»ÃẺÍÐààÁÕÅ¡Ñ É³Ð㹡ÒûÃСÒȵÑÇá»Ã´Ñ§¹Õé struct name { type_1 variab_name_1; type_2 variab_name_2; .......................... type_n variab_name_n; };

â´Â·Õè

¤×Í ª×Íè ¢Í§µÑÇá»Ãâ¤Ã§Êà ҧ·Õ·è Òí ¡ÒûÃСÒÈ type_1....... type_n ¤×Í ª¹Ô´¢ ÍÁÙŢͧµÑÇá»Ã variab_name_1........ variab_name_n ¤×Í ª×Í è ¢Í§µÑÇá»Ã Í name

Ê Ç¹¡ÒÃÍ Ò§¶Ö§ÊÁҪԡ ͧ͢µÑÇá»Ãâ¤Ã§Êà ҧ¹Ñ¹é ¨Ð¶Ù¡¤Ñ¹è ´ ÇÂà¤Ã×Íè §ËÁÒ . áŠǵÒÁ´ Ç ª×èÍÊÁÒªÔ¡Â Í µÑÇÍ ҧ¡ÒûÃСÒȵÑÇá»Ãâ¤Ã§Êà ҧã¹â»Ãá¡ÃÁ struct a

//

à» ¹¡ÒûÃСÒȪ×Íè µÑÇá»ÃẺâ¤Ã§Êà ҧ ª×Íè a (à» ¹µ ¹áºº)

{ int i; int j;

µÑÇá»ÃÊÁÒªÔ¡µÑÇáá¢Í§ a ª×Íè i ÁÕª¹Ô´¢ ÍÁÙÅà» ¹ int // µÑÇá»ÃÊÁÒªÔ¡µÑÇ·ÕÊ è ͧ¢Í§ a ª×Íè j ÁÕª¹Ô´¢ ÍÁÙÅà» ¹ int //

}; struct a dat

//

à» ¹¡Òö ÒÂÅѡɳÐãË dat à» ¹µÑÇá»Ãâ¤Ã§Êà ҧàËÁ×͹¡Ñº a

ËÃ×ÍÍÒ¨¨Ð»ÃСÒÈä´ Í¡Õ ÃÙ»áººË¹Ö§è ´Ñ§¹Õé struct a { int i; int j;

}dat;

//

à» ¹¡Òö ÒÂÅѡɳÐãË dat à» ¹µÑÇá»Ãâ¤Ã§Êà ҧàËÁ×͹¡Ñº a

´Ñ§¹Ñ¹é ¶ Òµ ͧ¡ÒÃÍ Ò§¶Ö§ÊÁÒªÔ¡ i áÅÐ j ¢Í§ dat.i = 36; dat.j = 5;

dat

·íÒä´ ´§Ñ ¹Õé

à» ¹¡ÒáíÒ˹´ãË ÊÁÒªÔ¡ i ã¹ dat ÁÕ¤Ò à» ¹ 36 // à» ¹¡ÒáíÒ˹´ãË ÊÁÒªÔ¡ j ã¹ dat ÁÕ¤Ò à» ¹ 5 //


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 25

ËÃ×Ͷ Òµ ͧ¡ÒûÃСÒȵÑÇá»Ãâ¤Ã§Êà ҧ¾Ã ÍÁ·Ñ§é ¡íÒ˹´¤ ÒàÃÔÁè µ ¹¡çÊÒÁÒö·íÒä´ ´Ñ§¹Õé struct a

//

à» ¹¡ÒûÃСÒȪ×Íè µÑÇá»ÃẺâ¤Ã§Êà ҧ ª×Íè a (à» ¹µ ¹áºº)

{ int i; int j; }dat = {36,5};

à» ¹¡Òö ÒÂÅѡɳÐãË dat à» ¹µÑÇá»Ãâ¤Ã§Êà ҧàËÁ×͹¡Ñº a Ñ ÊÁÒªÔ¡¢Í§ dat ´ Ç // ¾Ã ÍÁ¡Ñº¡íÒ˹´¤ ÒãË ¡º // ÊÁÒªÔ¡µÑÇáá¢Í§ dat (¤×Í i) à» ¹ 36 áÅÐÊÁÒªÔ¡µÑÇ·ÕÊ è ͧ dat (¤×Í j) à» ¹ 5 // àËÁ×͹¡Ñº dat.i = 36; áÅÐ dat.j= 5;

//

µÑÇÍ ҧ·Õè 1-21

Åͧ·´ÊͺÊà ҧµÑÇá»ÃẺâ¤Ã§Êà ҧ´Ñ§¹Õé #include <ipst.h> // ¼¹Ç¡äźÃÒÃÕËÅÑ¡·ÕÊ è ¹ÑºÊ¹Ø¹ºÍà ´ IPST struct time // à» ¹¡ÒûÃСÒȪ×Í è µÑÇá»ÃẺâ¤Ã§Êà ҧª×Íè

time

(à» ¹µ ¹áºº)

{ int hour;

//

int min;

//

int sec;

//

µÑÇá»ÃÊÁÒªÔ¡ª×Íè µÑÇá»ÃÊÁÒªÔ¡ª×Íè µÑÇá»ÃÊÁÒªÔ¡ª×Íè

hour min sec

ª¹Ô´¢Í§¢ ÍÁÙÅà» ¹ int ª¹Ô´¢Í§¢ ÍÁÙÅà» ¹ int ª¹Ô´¢Í§¢ ÍÁÙÅà» ¹ int

}; struct time mcu_time;

¶ Ò·ʹÅѡɳеÑÇá»Ãâ¤Ã§Êà ҧ time ãË ¡ºÑ µÑÇá»Ã·Õªè Í×è mcu_time // ´Ñ§¹Ñ¹ é mcu_time à» ¹µÑÇá»Ã·ÕÁè ÊÕ ÁÒªÔ¡ 3 µÑǤ×Í hour,min,sec //

void main(void) { mcu_time.hour=16; mcu_time.min=36;

¡íÒ˹´¢ ÍÁÙÅãË ÊÁÒªÔ¡Â Í hour ¢Í§µÑÇá»Ãâ¤Ã§Êà ҧª×Íè mcu_time // ¡íÒ˹´¤ Ò¢ ÍÁÙÅãË ÊÁÒªÔ¡Â Í min ¢Í§µÑÇá»Ãâ¤Ã§Êà ҧª×Í è mcu_time // ¡íÒ˹´¤ Ò¢ ÍÁÙÅãË ÊÁÒªÔ¡Â Í sec ¢Í§µÑÇá»Ãâ¤Ã§Êà ҧª×Í è mcu_time //

mcu_time.sec=12; lcd(“Time: %d:%d:%d “, mcu_time.hour, mcu_time.min, mcu_time.sec);

while(1);

//

·´ÊͺàÃÕ¡¤ ÒÁÒáÊ´§¼Å·ÕËè ¹ Ò¨Í

//

àºÃ¡â»Ãá¡ÃÁ

LCD

}

¼ÅÅѾ¸ ·âÕè Á´ÙÅ LCD ¤×Í

Time:

16:36:12

¢ ͤÇ÷ÃÒº : ËÒ¡µ ͧ¡Ò÷´ÊͺµÑÇÍ ҧ¹Õ¨é е ͧµÔ´µÑ§é ἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Displayio) ࢠҡѺἧǧ¨ÃËÅÑ¡ MicroBOX áÅÐἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) ¹Õ¨é е ͧ¨Ñ´ËÒ à¾ÔÁè àµÔÁ à¹×Íè §¨Ò¡äÁ ä´ ÃÇÁÍÂÙã ¹ªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX ã¹Ãع àÃÔÁè µ ¹áÅÐÃع Áҵðҹ


26 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

¹Í¡¨Ò¡¹Õµé ÇÑ á»Ãâ¤Ã§Êà ҧÂѧ¶ Ò·ʹÅѡɳÐãË ¡ºÑ ¾ÍÂàµÍÃ ä´ ´Ç  «Ö§è ¾ÍÂàµÍà ẺµÑÇ á»Ãâ¤Ã§Êà ҧËÅѧ¨Ò¡·ÕÁè ¡Õ Òö Ò·ʹÅѡɳÐáÅ Ç ÊÒÁÒö¹íÒ仪Õáé Í´à´ÃʢͧµÑÇá»Ãâ¤Ã§Êà ҧ ·Õè¶Ù¡¶ Ò·ʹã¹ÅѡɳÐà´ÕÂǡѹ ËÃ×ÍÁÍ§Ç Ò ÁÕÅѡɳТ ÍÁÙÅà´ÕÂǡѹ â´Â¡ÒÃࢠҶ֧áÍ´à´Ãʢͧ ÊÁÒªÔ¡¢Í§µÑÇá»Ãâ¤Ã§Êà ҧã´æ ¡ç¨ÐÁÕâÍà»ÍàÃàµÍà -> à» ¹µÑÇàª×Íè Á⧠ઠ¹ struct a

//

à» ¹¡ÒûÃСÒȪ×Íè µÑÇá»ÃẺâ¤Ã§Êà ҧ ª×Íè a (à» ¹µ ¹áºº)

{ int i; int j; }; struct a *ptr;

µÑÇÍ ҧ·Õè 1-22

¶ Ò·ʹÅѡɳеÑÇá»Ãâ¤Ã§Êà ҧ a ãË ¡ºÑ µÑÇá»Ã¾ÍÂàµÍà ptr // ´Ñ§¹Ñ¹ é ¹Ñº¨Ò¡¹ÕÊé ÒÁÒö¹íÒ¾ÍÂàµÍà ptr 仪յé ÇÑ á»Ãâ¤Ã§Êà ҧ·Õè // ä´ Ãº Ñ ¡Òö Ò·ʹÅѡɳÐÁÒ¨Ò¡ a ä´

//

·´ÊͺÊà ҧµÑÇá»ÃẺâ¤Ã§Êà ҧ´Ñ§¹Õé #include <ipst.h>

//

struct team {

//

long l1;

//

long l2;

//

int i;

//

¼¹Ç¡äźÃÒÃÕËÅÑ¡·ÕÊè ¹ÑºÊ¹Ø¹ºÍà ´ IPST à» ¹¡ÒûÃСÒȪ×Íè µÑÇá»ÃẺâ¤Ã§Êà ҧ ª×Íè µÑÇá»Ãª×Íè µÑÇá»Ãª×Íè µÑÇá»Ãª×Íè

team

ÁÕª¹Ô´¢ ÍÁÙÅà» ¹ long l2 ÁÕª¹Ô´¢ ÍÁÙÅà» ¹ long i ÁÕª¹Ô´¢ ÍÁÙÅà» ¹ int l1

}; struct team team_a , *pteam;

// //

¶ Ò·ʹÅѡɳеÑÇá»Ãâ¤Ã§Êà ҧ team ãË ¡ºÑ µÑÇá»ÃãËÁ ·ªÕè Í×è team_a áÅоÍÂàµÍÃ

pteam

void main(void) { pteam = &team_a;

//

pteam->l1 = 20L;

//

pteam->l2 = 142L;

//

pteam->i = 78;

//

¡íÒ˹´ãË ¾ÍÂàµÍà pteam ªÕáé Í´à´ÃʵÑÇá»Ã team_a ¡íÒ˹´¤ Ò l1 ¢Í§µÑÇá»Ã team_a 㪠pteam à» ¹µÑǪÕáé Í´à´ÃÊ ¡íÒ˹´¤ Ò l2 ¢Í§µÑÇá»Ã team_a 㪠pteam à» ¹µÑǪÕáé Í´à´ÃÊ ¡íÒ˹´¤ Ò i ¢Í§µÑÇá»Ã team_a 㪠pteam à» ¹µÑǪÕáé Í´à´ÃÊ

lcd(“Team: %L:%L:%d “, team_a.l1,team_a.l2,team_a.i); // while(1);

//

·´ÊͺàÃÕ¡¤ ÒÁÒáÊ´§¼Å·ÕËè ¹ Ò¨Í LCD àºÃ¡â»Ãá¡ÃÁ

}

¼ÅÅѾ¸ ·âÕè Á´ÙÅ LCD ¤×Í Team: 20:142:78


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 27

º··Õè 2

µÑÇ´íÒà¹Ô¹¡ÒÃã¹ÀÒÉÒ C ÊíÒËÃѺ WinAVR ¤ÍÁä¾àÅÍà â»Ãá¡ÃÁÀÒÉÒ C ·Õè㪠㹪ش¡Å ͧÊÁͧ¡Å IPST-MicroBOX ã¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ WinAVR ¹Ñ¹é ÁÕµÇÑ ´íÒà¹Ô¹¡ÒÃàËÁ×͹¡ÑºÀÒÉÒ C µÒÁÁҵðҹ ANSI-C(¤íÒÊѧè Áҵðҹ¢Í§ÀÒÉÒ C ·Õãè ª ¾² Ñ ¹Òº¹¤ÍÁ¾ÔÇàµÍà ·¼Õè ¼Ù ÅÔµ¤ÍÁä¾àÅÍà ᵠÅÐÃÒ¨е ͧ ÁÕàËÁ×͹¡Ñ¹) µÑÇ´íÒà¹Ô¹¡ÒÃËÃ×ÍâÍà»ÍàÃàµÍà (operator) ¢Í§ÀÒÉÒ C ¹Ñ¹é Ạ§ä´ 3 ¡ÅØÁ ãË­ æ ¤×Í µÑÇ´íÒà¹Ô¹¡Ò÷ҧ¤³ÔµÈÒʵà (Arithmetic operator), µÑÇ´íÒà¹Ô¹¡Òô Ò¹¤ÇÒÁÊÑÁ¾Ñ¹¸ áÅеÃá (Relation & logic operation)áÅеÑÇ´íÒà¹Ô¹¡Ò÷ҧºÔµ (Bitwise operation)

2.1 µÑÇ´íÒà¹Ô¹¡Ò÷ҧ¤³ÔµÈÒʵà ÊÒÁÒöÊÃØ»ä´ ´Ñ§¹Õé Operator + * / % ++ -+= -= *= /= %=

¤ÇÒÁËÁÒ ¡Òúǡ ¡ÒÃź ¡Òäٳ ¡ÒÃËÒà ¡ÒÃËÒÃẺ modulo(ËÒÃàÍÒàÈÉ) ¡ÒÃà¾ÔÁè ¤ Ò¢Ö¹é ÍÕ¡Ë¹Ö§è ¤ Ò ¡ÒÃÅ´¤ ÒŧÍÕ¡Ë¹Ö§è ¤ Ò ¡Òúǡ¢Ö¹é Íա෠ҡѺ¤ Ò·Ò§¢ÇÒÁ×Í ¡ÒÃŴŧÍա෠ҡѺ¤ Ò·Ò§¢ÇÒÁ×Í ¡Òäٳ´ ÇÂ෠ҡѺ¤ Ò·Ò§¢ÇÒÁ×Í ¡ÒÃËÒô ÇÂ෠ҡѺ¤ Ò·Ò§¢ÇÒÁ×Í ¡ÒÃËÒô ÇÂ෠ҡѺ¤ Ò·Ò§¢ÇÒÁ×Í(modulo)


28 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

2.1.1 ¡Òà + áÅÐ - ·Õ¤è Ç÷ÃÒº µÑÇÍ ҧ·Õè 2-1 int a = 12; a = a + 3;

¼ÅÅѾ¸ ¤Í× a = 15 ¡Ò÷íÒ§Ò¹¤×Í àÃÔÁè µ ¹ a ÁÕ¤Ò à» ¹ 12 áÅ ÇÊѧè ãË a ºÇ¡¡Ñº 3 áŠǹíÒ¼ÅÅѾ¸ ·äÕè ´ ¤Í× 15 à¡çºäÇ ·Õè a

µÑÇÍ ҧ·Õè 2-2 int a = 12; a = a - 3;

¼ÅÅѾ¸ ¤Í× a = 9 ¡Ò÷íÒ§Ò¹¤×Í àÃÔÁè µ ¹ a ÁÕ¤Ò à» ¹ 12 áÅ ÇÊѧè ãË a ź´ Ç 3 áŠǹíÒ¼ÅÅѾ¸ ·äÕè ´ ¤Í× 9 à¡çºäÇ ·Õè a

2.1.2 ¡ÒÃËÒÃẺ / áÅÐ % ¡ÒÃËÒ÷Ñé§ÊͧẺÁÕ¤ÇÒÁᵡµ Ò§¡Ñ¹µÃ§·Õè 1. ¡ÒÃËÒÃẺ / à» ¹¡ÒÃËÒÃà¡çº¤ Ò¨íҹǹàµçÁ·ÕèËÒÃŧµÑÇ 2. ¡ÒÃËÒÃẺ % à» ¹¡ÒÃËÒÃà¡çº¤ ÒàÈÉ·Õàè ËÅ×ͨҡ¡ÒÃËÒà µÑÇÍ ҧ·Õè 2-3 int x , y , z; x = 10; y = x/3; z = x%3;

¼ÅÅѾ¸ ¤Í× y = 9 áÅÐ z = 1 ¡Ò÷íÒ§Ò¹¤×Í

y = x/3; à y = 10/3 à y = 3 (¨íҹǹ¤ÃÑ§é ·ÕË è ÒÃŧµÑÇ) z = x%3; à z = 10%3 à z = 1 (àÈÉ·Õàè ËÅ×ͨҡ¡ÒÃËÒÃ)

2.1.3 ¡ÒÃà¾ÔÁè ¤ ÒẺ ++ áÅСÒÃÅ´¤ ÒẺ - ÁÕµÑÇÍ ҧ·Õè㪠㹡ÒÃ͸ԺÒ¡Ò÷íÒ§Ò¹´Ñ§¹Õé µÑÇÍ ҧ·Õè 2-4 int y = 5; y++;

¼ÅÅѾ¸ ¤Í× y = 6 ¡Ò÷íÒ§Ò¹¤×Í àÃÔÁè µ ¹ y ÁÕ¤Ò à» ¹ 5 µ ÍÁÒÊѧè ãË y ºÇ¡¡Ñº 1 áŠǹíÒ¼ÅÅѾ¸ ·äÕè ´ ¤Í× 6 à¡çºäÇ ·Õè y ´Ñ§¹Ñ¹é ¤íÒÊѧè y++; ãË ¼ÅÅѾ¸ àËÁ×͹¡Ñº y = y + 1;


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

µÑÇÍ ҧ·Õè 2-5 int

y = 5;

y - -;

¼ÅÅѾ¸ ¤Í× y = 4 ¡Ò÷íÒ§Ò¹¤×Í àÃÔÁè µ ¹ y ÁÕ¤Ò à» ¹ 5 µ ÍÁÒÊѧè ãË y ź´ Ç 1 áŠǹíÒ¼ÅÅѾ¸ ·äÕè ´ ¤Í× 4 à¡çºäÇ ·Õè y ´Ñ§¹Ñ¹é ¤íÒÊѧè y--; ãË ¼ÅÅѾ¸ àËÁ×͹¡Ñº y = y - 1;

2.1.4 ¡ÒÃà¾ÔÁè ¤ ÒẺ += áÅСÒÃÅ´¤ ÒẺ - = ͸ԺÒÂà·Õºà¤ÕÂ§ä´ Ç Ò y +=a; y -=a;

ãË ¼ÅÅѾ¸ àËÁ×͹¡Ñº ãË ¼ÅÅѾ¸ àËÁ×͹¡Ñº

y = y + a; y = y - a;

µÑÇÍ ҧ·Õè 2-6 int

x = 100;

x += 10;

¼ÅÅѾ¸ ¤Í× x = 110

2.1.5 ¡Òäٳ¤ ÒẺ *= , ¡ÒÃËÒä ÒẺ /= áÅСÒÃËÒä ÒẺ %= ͸ԺÒÂà·Õºà¤ÕÂ§ä´ Ç Ò y *=a; y /=a; y %=a;

ãË ¼ÅÅѾ¸ àËÁ×͹¡Ñº ãË ¼ÅÅѾ¸ àËÁ×͹¡Ñº ãË ¼ÅÅѾ¸ àËÁ×͹¡Ñº

µÑÇÍ ҧ·Õè 2-7 int

x, y, z;

x = y = z = 120; x *= 4; y /= 4; z %= 4;

¼ÅÅѾ¸ ¤Í× x = 480 , y = 30 áÅÐ z = 0

y = y * a; y = y/a; y = y%a;

l 29


30 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

2.2 µÑÇ´íÒà¹Ô¹¡Ò÷ҧ´ Ò¹¤ÇÒÁÊÑÁ¾Ñ¹¸ áÅеÃá

¡ÒáÃзíÒ㹡ÅØÁ ¹Õé ¼ÅÅѾ¸ ¨Ò¡¡ÒõÃǨÊͺà§×Íè ¹ä¢¨ÐÁÕ¤Ò à» ¹ 1 ¶ Òà§×Íè ¹ä¢¹Ñ¹é à» ¹¨ÃÔ§ (true) áÅÐà» ¹ 0 àÁ×Íè à§×Íè ¹ä¢à·ç¨(false) ÊÒÁÒöÊÃØ»ä´ ´§Ñ ¹Õé µÑÇ´íÒà¹Ô¹¡Òà == != > < >= <= ! && ||

¤ÇÒÁËÁÒ ෠ҡѺ äÁ ෠ҡѺ ÁÒ¡¡Ç Ò ¹ ÍÂ¡Ç Ò ÁÒ¡¡Ç ÒËÃ×Í෠ҡѺ ¹ ÍÂ¡Ç ÒËÃ×Í෠ҡѺ äÁ 㪠(NOT) áÅÐ (AND) ËÃ×Í (OR)

µÑÇÍ ҧ·Õè 2-8 ¶ Ò¡íÒ˹´ãË a = 10 b=4 c = 0xA0 à§×Íè ¹ä¢ a>b à§×Íè ¹ä¢à» ¹¨ÃÔ§(true) ¤ Ò¼ÅÅѾ¸ à» ¹ 1 à§×Íè ¹ä¢ a>c à§×Íè ¹ä¢à» ¹à·ç¨(false) ¤ Ò¼ÅÅѾ¸ à» ¹ 0 à§×Íè ¹ä¢ a>=c à§×Íè ¹ä¢à» ¹¨ÃÔ§(true) ¤ Ò¼ÅÅѾ¸ à» ¹ 1(à¾ÃÒÐ 0xA0 = 10) à§×Íè ¹ä¢ a != b à§×Íè ¹ä¢à» ¹¨ÃÔ§(true) ¤ Ò¼ÅÅѾ¸ à» ¹ 1 à§×Íè ¹ä¢ a != c à§×Íè ¹ä¢à» ¹¨ÃÔ§(false) ¤ Ò¼ÅÅѾ¸ à» ¹ 0


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 31

2.2.1 ¡ÒÃ㪠! , && , || à»ÃÕºà·Õº»ÃÐâ¤à§×Íè ¹ä¢ ¼ÅÅѾ¸ ¢Í§¡Òà ! (NOT) ÊÒÁÒöÊÃØ»ä´ ´§Ñ ¹Õé ¼ÅÅѾ¸ ¡ÃзíҡѺ¼ÅÅѾ¸ ! false ! true

¼ÅÅѾ¸ ·äÕè ´ true(1) false(0)

ÊÃØ»Ç Ò ¼ÅÅѾ¸ ¢Í§¡ÒáÃзíÒ´ Ç NOT ¨Ðä´ ¤Ò ¼ÅÅѾ¸ ·µÕè ç¢ ÒÁ¹Ñ¹è àͧ

¼ÅÅѾ¸ ¢Í§¡ÒÃà»ÃÕºà·Õº¢Í§»ÃÐ⤠2 »ÃÐ⤠´ Ç &&(AND) ÊÃØ»ä´ ´§Ñ ¹Õé ¼ÅÅѾ¸ ¡ÃзíҡѺ¼ÅÅѾ¸ false && false False && true true && false true && true

¼ÅÅѾ¸ ·äÕè ´ false(0) false(0) false(0) true(1)

ÊÃØ»Ç Ò ¼ÅÅѾ¸ ¢Í§¡Òà AND ¨Ðä´ ¤Ò ¼ÅÅѾ¸ à» ¹ false ËÒ¡µÑÇã´µÑÇ˹֧è ËÃ×Í·Ñ§é ¤Ùà » ¹ false

¼ÅÅѾ¸ ¢Í§¡ÒÃà»ÃÕºà·Õº¢Í§»ÃÐ⤠2 »ÃÐ⤠´ Ç ||(OR) ÊÃØ»ä´ ´§Ñ ¹Õé ¼ÅÅѾ¸ ¡ÃзíҡѺ¼ÅÅѾ¸ False || false False || true True || false True || true

¼ÅÅѾ¸ ·äÕè ´ false(0) true(1) true(1) true(1)

ÊÃØ»Ç Ò ¼ÅÅѾ¸ ¢Í§¡Òà OR ¨Ðä´ ¤Ò ¼ÅÅѾ¸ à» ¹ true ËÒ¡µÑÇã´µÑÇ˹֧è ËÃ×Í·Ñ§é ¤Ùà » ¹ true

µÑÇÍ ҧ·Õè 2-9 ¶ Ò¡íÒ˹´ãË a = 10 b=4 c = 0xA0 à§×Íè ¹ä¢ a>b à§×Íè ¹ä¢ a>c à§×Íè ¹ä¢ a>=c à§×Íè ¹ä¢ a != b à§×Íè ¹ä¢ a != c

à§×Íè ¹ä¢à» ¹¨ÃÔ§(true) ¤ Ò¼ÅÅѾ¸ à» ¹ 1 à§×Íè ¹ä¢à» ¹à·ç¨(false) ¤ Ò¼ÅÅѾ¸ à» ¹ 0 à§×Íè ¹ä¢à» ¹¨ÃÔ§(true) ¤ Ò¼ÅÅѾ¸ à» ¹ 1(à¾ÃÒÐ 0xA0 = 10) à§×Íè ¹ä¢à» ¹¨ÃÔ§(true) ¤ Ò¼ÅÅѾ¸ à» ¹ 1 à§×Íè ¹ä¢à» ¹à·ç¨(false) ¤ Ò¼ÅÅѾ¸ à» ¹ 0


32 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

áÅж Òà» ¹ à§×Íè ¹ä¢ à§×Íè ¹ä¢ à§×Íè ¹ä¢ à§×Íè ¹ä¢ à§×Íè ¹ä¢ áÅж Òà» ¹ à§×Íè ¹ä¢ à§×Íè ¹ä¢ à§×Íè ¹ä¢ áÅж Òà» ¹ à§×Íè ¹ä¢ à§×Íè ¹ä¢ à§×Íè ¹ä¢ à§×Íè ¹ä¢

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

!(a>b) à§×Íè ¹ä¢à» ¹à·ç¨(false) ¤ Ò¼ÅÅѾ¸ à» ¹ 0 !(a>c) à§×Íè ¹ä¢à» ¹¨ÃÔ§(true) ¤ Ò¼ÅÅѾ¸ à» ¹ 1 !(a>=c) à§×Íè ¹ä¢à» ¹à·ç¨(false) ¤ Ò¼ÅÅѾ¸ à» ¹ 0 !(a != b) à§×Íè ¹ä¢à» ¹à·ç¨(false) ¤ Ò¼ÅÅѾ¸ à» ¹ 0 !(a != c) à§×Íè ¹ä¢à» ¹¨ÃÔ§(true) ¤ Ò¼ÅÅѾ¸ à» ¹ 1 !(a>b) && (a>=c) ¤ Ò¼ÅÅѾ¸ à» ¹ false(0) (a != b) && (a>=c) ¤ Ò¼ÅÅѾ¸ à» ¹ true(1) (a != b) && !(a != b) ¤ Ò¼ÅÅѾ¸ à» ¹ false(0) !(a>b) || (a>=c) ¤ Ò¼ÅÅѾ¸ à» ¹ true(1) (a != b) || (a>=c) ¤ Ò¼ÅÅѾ¸ à» ¹ true(1) (a != b) || !(a != b) ¤ Ò¼ÅÅѾ¸ à» ¹ true(1) !(a>=c) || !(a != b) ¤ Ò¼ÅÅѾ¸ à» ¹ false(0)

2.3 µÑÇ´íÒà¹Ô¹¡Ò÷ҧºÔµ (Bitwise Operation) ¡ÒáÃзíÒ㹡ÅØÁ ¹Õàé » ¹¡ÒáÃзíÒ·Õàè ¢ Ò¶Ö§ã¹ÃдѺºÔµ¢Í§¢ ÍÁÙÅ â´Â·Õ¤è Ò ¢Í§áµ ÅкԵ໠¹ ä´ á¤ 1 ËÃ×Í 0 à· Ò¹Ñ¹é «Ö§è ¡ÒáÃзíÒ㹡ÅØÁ ¹ÕÊé ÒÁÒöÊÃØ»ä´ ´§Ñ ¹Õé Operator ~ & | ^ << >> <<= >>= &= |= ^=

¤ÇÒÁËÁÒ ¡ÅѺ¤ ҢͧºÔµ¢ ÍÁÙÅ ¡ÒÃá͹´ ẺºÔµ ¡ÒÃÍÍà ẺºÔµ ¡ÒÃàÍ硤ÅÙ«¿Õ -ÍÍà ẺºÔµ àÅ×Íè ¹ºÔµä»·Ò§« Ò àÅ×Íè ¹ºÔµä»·Ò§¢ÇÒ àÅ×Íè ¹ºÔµä»·Ò§« ÒÂáÅ ÇãË à· Ò¡Ñº àÅ×Íè ¹ºÔµä»·Ò§¢ÇÒáÅ ÇãË à· Ò¡Ñº á͹´ áÅ ÇãË à· Ò¡Ñº ÍÍà áÅ ÇãË à· Ò¡Ñº àÍ硤ÅÙ«¿Õ -ÍÍà áÅ ÇãË à· Ò¡Ñº


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 33

¼ÅÅѾ¸ ¢Í§¡Òà ~ ÊÃØ»ä´ ´§Ñ ¹Õé ¡ÒáÃзíÒ

¼ÅÅѾ¸ ·äÕè ´

~0

1

~1

0

ÊÃØ»Ç Ò ¼ÅÅѾ¸ ¢Í§¡ÒáÃзíÒ´ Ç ~ ¨Ðä´ ¤Ò ¼ÅÅѾ¸ ¢Í§Åͨԡ·Õµè ç¢ ÒÁ¹Ñ¹è àͧ

¼ÅÅѾ¸ ¢Í§¡Òà & ẺºÔµµ ͺԵ ÊÃØ»ä´ ´§Ñ ¹Õé ¡ÒáÃзíÒ ¼ÅÅѾ¸ ·äÕè ´ 0&0 0 0 &1 0 1&0 0 1&1 1 ÊÃØ»Ç Ò ¼ÅÅѾ¸ ¢Í§¡Òà & ẺºÔµµ ͺԵ ¨Ðä´ ¼ÅÅѾ¸ à» ¹ 0 ËÒ¡µÑÇã´µÑÇ˹֧è ËÃ×Í·Ñ§é ¤Ùà » ¹ 0

¼ÅÅѾ¸ ¢Í§¡Òà | ẺºÔµµ ͺԵ ¾ÍÊÃØ»ä´ ´§Ñ ¹Õé ¡ÒáÃзíÒ ¼ÅÅѾ¸ ·äÕè ´ 0|0 0 0|1 1 1|0 1 1|1 1 ÊÃØ»Ç Ò ¼ÅÅѾ¸ ¢Í§¡Òà | ẺºÔµµ ͺԵ ¨Ðä´ ¼ÅÅѾ¸ à» ¹ 1 ËÒ¡µÑÇã´µÑÇ˹֧è ËÃ×Í·Ñ§é ¤Ùà » ¹ 1

¼ÅÅѾ¸ ¢Í§¡Òà ^ ẺºÔµµ ͺԵ ÊÃØ»ä´ ´§Ñ ¹Õé

¡ÒáÃзíÒ ¼ÅÅѾ¸ ·äÕè ´ 0^0 0 0 ^1 1 1^0 1 1^1 0 ÊÃØ»Ç Ò ¼ÅÅѾ¸ ¢Í§¡Òà ^ ẺºÔµµ ͺԵ ¨Ðä´ ¤Ò ¼ÅÅѾ¸ à» ¹ 0 ËÒ¡·Ñ§é ¤ÙÁ ¤Õ Ò àËÁ×͹¡Ñ¹


34 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

µÑÇÍ ҧ·Õè 2-10 int x,y,result1,result2,result3,result4; x = 0x9C; y = 0x46;

¨§ËÒ¼ÅÅѾ¸ ¢Í§ (1) result1 (2) result2 (3) result3 (4) result4

= x&y; = x|y; = x^y; = ~x;

ÇÔ¸¤Õ ´Ô à¹×Íè §¨Ò¡à» ¹¡ÒáÃзíÒẺºÔµµ ͺԵ ¨Ö§¤ÇÃá»Å§¤ Ò¨Ò¡àÅ¢°Ò¹ÊԺˡ໠¹àÅ¢°Ò¹Êͧ «Ö§è ¡ç¤Í× x = 0x9C à 0000000010011100 (µÑÇá»Ã int ÁÕ¢¹Ò´à» ¹ 16 ºÔµ) y = 0x46 à 0000000001000110 (µÑÇá»Ã int ÁÕ¢¹Ò´à» ¹ 16 ºÔµ) (1) result1 = (0000000010011100) & (0000000001000110) 0000000010011100 AND 0000000001000110 0000000000000100 à 0x0004 ËÃ×Í 0x04 (2) result2 = (0000000010011100) | (0000000001000110) 0000000010011100 OR 0000000001000110 0000000011011110 à 0x00DE ËÃ×Í 0xDE (3) result3 = (0000000010011100) ^ (0000000001000110) 0000000010011100 XOR 0000000001000110 0000000011011010 à 0x00DA ËÃ×Í 0xDA (4) result4 = ~(0000000010011100) ¡ÅѺºÔµ¢ ÍÁÙÅ·Ø¡ºÔµ 1111111101100011 à 0xFF63


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 35

2.3.1 ¡ÒÃàÅ×Íè ¹ºÔµ¢ ÍÁÙŠ㹡ÒÃàÅ×è͹ºÔµ¨Ðµ ͧºÍ¡¨íҹǹ¤ÃÑ駡ÒÃàÅ×è͹´ ÇÂÇ ÒãË ÁÕ¡ÒÃàÅ×è͹¡Õè¤ÃÑé§ àª ¹ dat = dat<<4;

ËÃ×Í

ËÁÒ¶֧ ãË àÅ×Íè ¹ºÔµ¢ ÍÁÙŢͧ dat ä»·Ò§« Ò 4 ¤ÃÑ§é ¼ÅÅѾ¸ ·äÕè ´ à¡çºäÇ ·Õè dat àËÁ×͹à´ÔÁ ¨ÐãË ¼ÅÅѾ¸ àËÁ×͹ dat<<4; dat = dat>>1;

ËÁÒ¶֧ãË àÅ×Íè ¹ºÔµ¢ ÍÁÙŢͧ dat ä»·Ò§¢ÇÒ 1 ¤ÃÑ§é ¼ÅÅѾ¸ ·äÕè ´ à¡çºäÇ ·Õè dat àËÁ×͹à´ÔÁ ¨ÐãË ¼ÅÅѾ¸ àËÁ×͹ dat>>1;

µÑÇÍ ҧ·Õè 2-11 int dat, x1, x2; dat = 0x93;

¨§ËÒ¼ÅÅѾ¸ ¢Í§ (1) x1 = (2) x2

dat<<1;

= dat<<2;

ÇÔ¸¤Õ ´Ô

dat = 0x93 à 0000000010010011 (µÑÇá»Ã int ÁÕ¢¹Ò´à» ¹ 16 ºÔµ) dat

0000000010010011

X1

0000000100100110

X2

0000001001001100

(1) x1 ¤×Í ¤ Ò¼ÅÅѾ¸ ¨Ò¡¡ÒÃàÅ×Íè ¹ºÔµ¢ ÍÁÙÅ dat ä»·Ò§« Ò 1 ¤ÃÑ§é ¨Ðä´ x1 = 0x0126 µÃ§¡ÑºàÅ¢°Ò¹ÊÔº¤×Í 294 (2) x2 ¤×Í ¤ Ò¼ÅÅѾ¸ ¨Ò¡¡ÒÃàÅ×Íè ¹ºÔµ¢ ÍÁÙÅ x1 ä»·Ò§« Ò 1 ¤Ãѧé ËÃ×Íà» ¹¡ÒÃàÅ×Íè ¹ ºÔµ¢ ÍÁÙÅ dat ä»·Ò§« Ò 2 ¤ÃÑ§é ¨Ðä´ x2 = 0x024C µÃ§¡ÑºàÅ¢°Ò¹ÊÔº¤×Í 588


36 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

µÑÇÍ ҧ·Õè 2-12 int a , b , c; a = 0x7A; b = 0x16; c = 0xFD;

¨§ËÒ¼ÅÅѾ¸ ¢Í§ (1) a &= 0x3C; (2) b |= 0x51; (3) c ^= 0xD0; ÇÔ¸¤Õ ´Ô (1) ¨Ò¡ a &= 0x3C ¡ç¤Í× a = a & 0x3C ËÁÒ¤ÇÒÁÇ Ò ¹íÒ¤ Ңͧ a (¤×Í 0x7A) ä»á͹´ ¡ºÑ 0x3C áŠǼÅÅѾ¸ ·äÕè ´ ¹Òí ä»à¡çº·Õè a ÍÕ¡¤Ãѧé ˹֧è à·ÕÂºä´ à» ¹ a = (0000000001111010) & (0000000000111100) 0000000001111010 AND 0000000000111100 0000000000111000 à 0x0038 ËÃ×Í 0x38 (2) ¨Ò¡ b |= 0x51 ¡ç¤Í× b = b |= 0x51 ËÁÒ¤ÇÒÁÇ Ò ¹íÒ¤ Ңͧ b (¤×Í 0x16) ä»ÍÍà ¡ºÑ 0x51 áŠǼÅÅѾ¸ ·äÕè ´ ¹Òí ä»à¡çº·Õè b ÍÕ¡¤Ãѧé ˹֧è à·ÕÂºä´ à» ¹ b = (0000000000010110) |= (0000000001010001) 0000000000010110 OR 0000000001010001 0000000001010111 à 0x0057 ËÃ×Í 0x57 (3) ¨Ò¡ c ^= 0xD0; ¡ç¤Í× c = c ^= 0xD0 ËÁÒ¤ÇÒÁÇ Ò ¹íÒ¤ Ңͧ c (¤×Í 0xFD) ä»àÍ硤ÅÙ«¿Õ ÍÍà ¡ºÑ 0xD0 áŠǼÅÅѾ¸ ·äÕè ´ ¹Òí ä»à¡çº·Õè c ÍÕ¡¤Ãѧé ˹֧è à·ÕÂºä´ à» ¹ c = (0000000011111101) ^= (0000000011010000) 0000000011111101 XOR 0000000011010000 0000000000101101 à 0x002D ËÃ×Í 0x2D


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 37

º··Õè 3

¤íÒÊÑ§è ¤Çº¤ØÁµ Ò§æ ã¹ÀÒÉÒ C ·Õãè ª ã¹ ªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX ¤íÒÊѧè ã¹ÀÒÉÒ C ·Õãè ª ÊÇ ¹ãË­ áŠǨÐÁÕÅ¡Ñ É³ÐªØ´¤íÒÊÑ§è ·Õµè ç¡ÑºÁҵðҹÀÒÉÒ C (ANSIC) à» ¹ËÅÑ¡ áµ ¡çÁÕºÒ§Ê Ç¹·Õèà¾ÔèÁàµÔÁáÅж١µÑ´ÍÍ¡ä» à¾×èÍãË àËÁÒÐÊÁ¡Ñº·ÃѾÂҡ÷ÕèÁÕÀÒÂã¹ äÁâ¤Ã¤Í¹â·ÃàÅÍà â´Â¤íÒÊÑè§ã¹ÀÒÉÒ C ËÅÑ¡æ ¨Ð»ÃСͺ´ Ç ¤íÒÊÑè§áººµÃǨÊͺà§×èÍ¹ä¢ áÅФíÒÊÑè§Ç¹ÅÙ» «Öè§ÁÕÅѡɳФíÒÊÑ觴ѧ¹Õé 1. ¤íÒÊѧè if 2. ¤íÒÊѧè

if-else

3. ¤íÒÊѧè switch 4. ¤íÒÊѧè

for

5. ¤íÒÊѧè while 6. ¤íÒÊѧè

do-while

3.1 ¤íÒÊѧè if à» ¹¤íÒÊÑ§è ·Õãè ª ºÍ  ໠¹¤íÒÊÑ§è ·Õãè ª 㹡ÒõÃǨÊͺà§×Íè ¹ä¢ (Condition) Ç Ò à» ¹¨ÃÔ§ËÃ×Íà·ç¨ ÃٻẺ ¤×Í if(Condition) { block } block ËÁÒ¶֧ªØ´¤íÒÊÑ§è ·ÕÍ è ÂÙÀ ÒÂ㹪 ǧǧàÅ纻 ¡¡Ò { } «Ö§è ÍÒ¨ÁÕ 1 ¤íÒÊѧè ËÃ×ÍËÅÒ¤íÒÊÑ§è ¡çä´


38 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

¶ Òâ»Ãá¡ÃÁÁÕ¡ÒõÃǨÊͺ¾ºÇ Ò Condition ËÃ×Íà§×Íè ¹ä¢¹Ñ¹é à» ¹¨ÃÔ§ ¡ç¨ÐࢠÒä»·íÒ¤íÒÊѧè ÀÒ 㹠block áµ ¶Ò à» ¹à·ç¨ ¡ç¨ÐàÅÂä»·íÒ¤íÒÊÑ§è ·ÕÍè ÂÙµ Í ä»ÀÒ¹͡ block áµ ¶Ò ¤íÒÊѧè ã¹ block ÁÕà¾Õ§¤íÒ Êѧè à´ÕÂÇ àÃÒÍÒ¨¨ÐäÁ µÍ §ãÊ à¤Ã×Íè §ËÁÒ» ¡¡Ò´ Ç¡çä´ àª ¹ if(i==4) {

if(i==4) à

y = 46;

y = 46;

}

µÑÇÍ ҧ·Õè 3-1 unsigned

char

i , j ; //

i = 5;

//

j = 3;

//

if(i>=5)

//

»ÃСÒȵÑÇá»ÃãË à» ¹áºº character ÁÕ¤Ò ã¹ª ǧ(0-255) ¡íÒ˹´¤ ÒàÃÔÁè µ ¹¢Í§µÑÇá»Ã i ¡íÒ˹´¤ ÒàÃÔÁè µ ¹¢Í§µÑÇá»Ã j µÃǨÊͺà§×Íè ¹ä¢ ¶ Ò i ÁÒ¡¡Ç Ò ËÃ×Í෠ҡѺ 5 ãË ·Òí ¤íÒÊѧè 㹺ÅçÍ¡

{ j = i +10;

//

i = 7;

//

¤íÒÊÑ§è ·Õè 1 ¤íÒÊÑ§è ·Õè 2

} /*—————————result——————————————*/ j = 15 i = 7 /*——————————————————————————*/

¨Ò¡µÑÇÍ ҧ·Õè 3-1 ¼ÅÅѾ¸ ËÅѧ¨Ò¡¡ÒõÃǨÊͺà§×Íè ¹ä¢ if ¾ºÇ Ò à§×Íè ¹ä¢à» ¹¨ÃÔ§ à¾ÃÒÐ (ä´ ¶¡Ù ¡íÒ˹´à» ¹¤ ÒàÃÔÁè µ ¹) ¨Ö§ÁÕ¡ÒáÃзíÒ¤íÒÊÑ§è ·Õè 1 áÅÐ ¤íÒÊÑ§è ·Õè 2 ÀÒÂ㹺ÅçÍ¡µÒÁÅíҴѺ l ¤íÒÊÑ§è ·Õè 1 :

j = i +10 à j = 5+10 à j = 15

l ¤íÒÊÑ§è ·Õè 2 :

i = 7 (¡íÒ˹´¤ Òâ´ÂµÃ§)

i = 5


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 39

µÑÇÍ ҧ·Õè 3-2 unsigned

char

i , j ;

i = j = 2; if(i==5)

{ j = i +1; i = 14;

»ÃСÒȵÑÇá»Ã ãË à» ¹áºº character ÁÕ¤Ò ã¹ª ǧ(0-255) // ¡íÒ˹´¤ ÒàÃÔÁ è µ ¹¢Í§µÑÇá»Ã I áÅÐ j ãË Á¤Õ Ò à· Ò 2 ·Ñ§é ¤Ù // µÃǨÊͺà§×Í è ¹ä¢ ¶ Ò i ෠ҡѺ 5 ãË ·Òí ¤íÒÊѧè 㹺ÅçÍ¡ //

¤íÒÊÑ§è ·Õè 1 // ¤íÒÊÑ§è ·Õè 2

//

} if(j==2)

// µÃǨÊͺà§×Í è ¹ä¢

j = j+1;

//

¤íÒÊÑ§è ·Õè 3

¶ Ò i ෠ҡѺ 2 ãË ·Òí ¤íÒÊѧè 㹺ÅçÍ¡

/*—————————result——————————————*/ j = 3 i = 2 /*——————————————————————————*/

¨Ò¡µÑÇÍ ҧ·Õè 3-2 ¨ÐàËç¹Ç Ò¼ÅÅѾ¸ ËÅѧ¨Ò¡¡ÒõÃǨÊͺà§×Íè ¹ä¢ if(i==5) ¾ºÇ Ò à§×Íè ¹ä¢äÁ à» ¹ ¨ÃÔ§ ´Ñ§¹Ñ¹é ¨Ö§äÁ Á¡Õ ÒÃáÇзíÒ¤íÒÊÑ§è ·Õè 1 áÅÐ 2 ÀÒÂ㹺ÅçÍ¡áá µ ÍÁÒàÁ×Íè ¼ Ò¹ÁÒ¾º¤íÒÊѧè if(j==2) ¨Ö§ÁÕ¡Òà µÃǨÊͺà§×Íè ¹ä¢´Ñ§¡Å ÒÇÍÕ¡¤Ãѧé áÅоºÇ Ò à§×Íè ¹ä¢´Ñ§¡Å ÒÇà» ¹¨ÃÔ§ ·íÒãË µÍ §ÁÕ¡ÒÃáÇзíÒ¤íÒÊÑ§è ·Õè 3 (à¹×Íè §¨Ò¡Ç Ò ¤íÒÊѧè if(j==2) ÁÕ¤Òí ÊÑ§è µ ͨҡ¡ÒõÃǨÊͺà§×Íè ¹ä¢à¾Õ§¤íÒÊѧè à´ÕÂÇ äÁ ¨Òí à» ¹µ ͧËØÁ ´ ÇÂà¤Ã×Íè §ËÁÒ { } ¡çä´ ) l ¤íÒÊÑ§è ·Õè 3:

j = j +1 à j = 2+ 1 à j = 3 i = 2 (à¾ÃÒÐäÁ ¾º¤íÒÊѧè ã´ ãË à»ÅÕÂè ¹á»Å§¤ Ò i)

¹Í¡¨Ò¡¹Õ·é µÕè Òí á˹ § Condition ¹Í¡¨Ò¡¨Ð㪠໠¹»ÃÐâ¤à»ÃÕºà·Õº´ ÇÂà¤Ã×Íè §ËÁÒ·ҧ¤³ÔµÈÒʵà áÅеÃááÅ Ç ÂѧÊÒÁÒö㪠㹡ÒõÃǨÊͺ¤ Ò¤§·Õè ËÃ×Í ¤ ҢͧµÑÇá»Ãã´æ ·Õ¹è Òí ÁÒà» ¹à§×Íè ¹ä¢ä´ ´Ç  ´Ñ§¹Õé 1. ¶ ÒËÒ¡¤ ÒµÑÇàÅ¢ ËÃ×͵ÑÇá»Ãà§×Íè ¹ä¢´Ñ§¡Å ÒÇÁÕ¤Ò äÁ ෠ҡѺ 0 à§×Íè ¹ä¢´Ñ§¡Å ÒǨÐà» ¹¨ÃÔ§ ÁÕ¡Òà ¡ÃзíÒ¤íÒÊѧè ÀÒÂ㹺ÅçÍ¡¢Í§¤íÒÊѧè if ¹Ñ¹é æ 2. ¶ ÒËÒ¡¤ ÒµÑÇàÅ¢ ËÃ×͵ÑÇá»Ãà§×Íè ¹ä¢´Ñ§¡Å ÒÇÁÕ¤Ò à· Ò¡Ñº 0 à§×Íè ¹ä¢´Ñ§¡Å ÒǨÐà» ¹à·ç¨ äÁ Á¡Õ Òà ¡ÃзíÒ¤íÒÊѧè ÀÒÂ㹺ÅçÍ¡¢Í§¤íÒÊѧè if ¹Ñ¹é æ


40 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

µÑÇÍ ҧ·Õè 3-3 unsigned char a , b; // a = 10;

//

b = 20;

//

if(a>5 && b<=60)

//

»ÃСÒȵÑÇá»Ã a áÅÐ b ãË à» ¹áºº character ÁÕ¤Ò ã¹ª ǧ 0 ¶Ö§ 255 ¡íÒ˹´¤ ÒàÃÔÁè µ ¹ãË a = 10 ¡íÒ˹´¤ ÒàÃÔÁè µ ¹ãË a = 20 ¶ Ò a > 5 áÅÐ b <= 60 ¨Ð¡ÃзíÒ¤íÒÊÑ§è ·Õè 1 áÅÐ 2㹺ÅçÍ¡

{ a = 100;

//

b = 200;

//

¤íÒÊÑ§è ·Õè 1 ¤íÒÊÑ§è ·Õè 2

} if(b>100 ||

b==80)

{

// //

a = a -10;

//

b = b -20;

//

¶ Ò b > 100 áÅÐ b ¨Ð·íÒ¤íÒÊÑ§è ·Õè 3 áÅÐ 4 ¤íÒÊÑ§è ·Õè 3 ¤íÒÊÑ§è ·Õè 4

= 80

¨Ð·íÒ¤íÒÊѧè 㹺ÅçÍ¡

} /*—————————result———————————*/ a = 90 b = 180 /*——————————————————————————*/

¨Ò¡µÑÇÍ ҧ·Õè 3-3 ¡ÒõÃǨÊͺà§×Íè ¹ä¢ if(a>5 && b<=60) ¾ºÇ Ò à§×Íè ¹ä¢à» ¹¨ÃÔ§ à¾ÃÒÐ a = 10 ÁÒ¡¡Ç Ò 5 ¨ÃÔ§ áÅÐ b = 20 ¹ ÍÂ¡Ç Ò 60 ¨ÃÔ§ ´Ñ§¹Ñ¹é ¨Ö§ÁÕ¡ÒÃáÇзíÒ ¤íÒÊÑ§è ·Õè 1 áÅÐ ¤íÒÊÑ§è ·Õè 2 ÀÒÂ㹺ÅçÍ¡áá l ¤íÒÊÑ§è ·Õè 1

a = 100;

l ¤íÒÊÑ§è ·Õè 2

b = 200;

à§×Íè ¹ä¢µ ÍÁÒ if(b>100 || b==80) ÁÕ¡ÒõÃǨÊͺà§×Íè ¹ä¢´Ñ§¡Å ÒÇÍÕ¡¤ÃÑ§é ¾ºÇ Ò à§×Íè ¹ä¢´Ñ§ ¡Å ÒÇà» ¹¨ÃÔ§ à¾ÃÒÐ b = 200 ÁÒ¡¡Ç Ò 100 ¨ÃÔ§ (à» ¹¨ÃÔ§à¾Õ§»ÃÐâ¤à´ÕÂÇ¡çãË ¼ÅÅѾ¸ à» ¹¨ÃÔ§áÅ Ç) ´Ñ§¹Ñ¹é ¨Ö§ÁÕ ¡ÒÃࢠÒÁÒ¡ÃзíÒ¤íÒÊÑ§è ·Õè 3 áÅÐ 4 ÀÒÂ㹺ÅçÍ¡ l ¤íÒÊÑ§è ·Õè 3

a = a -10; à a = 100 -10 à a = 90

l ¤íÒÊÑ§è ·Õè 4

b = b -20; à b = 200 -20 à b = 180


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 41

3.2 ¤íÒÊѧè if-else à» ¹¤íÒÊÑ觷ÕèµÃǨÊͺà§×èÍ¹ä¢ (condition) Ç Ò à» ¹¨ÃÔ§ËÃ×Íà·ç¨ «Ö觨ÐÁÕ¡ÒÃàÅ×Í¡¡ÃзíÒÍ ҧ ã´Í ҧ˹Öè§ ÃٻẺ ¤×Í if(Condition) { block1

//

·íÒã¹Ê ǹ¹Õ¶é Ò à§×Íè ¹ä¢à» ¹ ¨ÃÔ§

//

·íÒã¹Ê ǹ¹Õ¶é Ò à§×Íè ¹ä¢à» ¹ à·ç¨

} else { block2 }

¨Ò¡ÃٻẺ¶ Òâ»Ãá¡ÃÁÁÕ¡ÒõÃǨáŠǾºÇ Ò Condition ¹Ñ¹é à» ¹¨ÃÔ§ ¡ç¨ÐࢠÒä»·íÒ¤íÒÊѧè ÀÒ 㹠block1 áµ ¶Ò à» ¹à·ç¨ ¡ç¨Ðä»·íÒ¤íÒÊѧè ÀÒÂã¹ block2 µÑÇÍ ҧ·Õè 3-4 char m = 2; int x = 0; if(m==1) x = 50;

//

µÃǨÊ꼂 Ò

//

¶ Ò ¨ÃÔ§

//

¶ Ò à·ç¨

m = 1

¨ÃÔ§ËÃ×ÍäÁ

else x = 80;

/*—————————result———————————*/ x = 80 /*——————————————————————————*/

¨Ò¡µÑÇÍ ҧ·Õè 3-4 ¡ÒõÃǨÊͺà§×Íè ¹ä¢ if(m==1) ¾ºÇ Ò à§×Íè ¹ä¢à» ¹à·ç¨ à¾ÃÒÐ m = 2 ´Ñ§¹Ñ¹é ¨Ö§¡ÃзíÒ ¤íÒÊÑ§è µ Í· Ò else «Ö§è ¡ç¤Í× ¤íÒÊѧè x = 80; à x = 80


42 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

µÑÇÍ ҧ·Õè 3-5 char z = 10; if(z>=5)

//

{

// z += 15;

//

z = z%10;

//

µÃǨÊÍºÇ Ò z >= 5 ¨ÃÔ§ËÃ×ÍäÁ µÃǨÊͺáÅ Çà§×Íè ¹ä¢à» ¹ ¨ÃÔ§ ¨Ð·íÒ¤íÒÊÑ§è ·Õè 1 áÅÐ 2 ¤íÒÊÑ§è ·Õè 1 ¤íÒÊÑ§è ·Õè 2

} else { z+= 17;

//

¤íÒÊÑ§è ·Õè 3 ¤íÒÊÑ§è ·Õè 4

z = z%4 ; // } /*—————————result———————————*/ z = 5 /*——————————————————————————*/

¨Ò¡µÑÇÍ ҧ·Õè 3-5 ¡ÒõÃǨÊͺà§×Íè ¹ä¢ if(z>=5) ¾ºÇ Ò à§×Íè ¹ä¢à» ¹¨ÃÔ§ à¾ÃÒÐ z = 10 ÁÒ¡¡Ç Ò 5 ¨ÃÔ§ ´Ñ§¹Ñ¹é ¨Ö§ÁÕ¡ÒÃࢠÒ仡ÃзíÒ¤íÒÊÑ§è ·Õè 1 áÅÐ 2 ÀÒÂ㹺ÅçÍ¡áá l ¤íÒÊÑ§è ·Õè 1 z += 15; à Z = Z + 15 à Z = 10 + 15 à Z = 25 l ¤íÒÊÑ§è ·Õè 2 z = Z%10;à z = 25%10 à z = 5 à» ¹¼ÅÅѾ¸ Ê´ Ø · ÒÂ

µÑÇÍ ҧ·Õè 3-6 char z = 10; if(z<5)

// µÃǨÊÍºÇ Ò z < 5

{

// z += 15;

//

z = z%10;

//

¨ÃÔ§ËÃ×ÍäÁ µÃǨÊͺáÅ Çà§×Íè ¹ä¢à» ¹ ¨ÃÔ§ ¨Ð·íÒ¤íÒÊÑ§è ·Õè 1 áÅÐ 2 ¤íÒÊÑ§è ·Õè 1 ¤íÒÊÑ§è ·Õè 2

} else { z+= 17;

//

z = z%4 ;

//

¤íÒÊÑ§è ·Õè 3 ¤íÒÊÑ§è ·Õè 4

} /*—————————result———————————*/ z = 3 /*——————————————————————————*/

¨Ò¡µÑÇÍ ҧ·Õè 3-6 ¡ÒõÃǨÊͺà§×Íè ¹ä¢ if(z<5) ¾ºÇ Ò à§×Íè ¹ä¢à» ¹à·ç¨ à¾ÃÒÐ z = 10 ¹ ÍÂ¡Ç Ò 5 ¨Ö§à» ¹à·ç¨ ´Ñ§¹Ñ¹é ¨Ö§ÁÕ¡ÒÃࢠÒ仡ÃзíÒ¤íÒÊÑ§è ·Õè 3 áÅÐ 4 ÀÒÂ㹺ÅçÍ¡¢Í§Ê ǹ else l ¤íÒÊÑ§è ·Õè 3 z += 17; à Z = Z + 17 à Z = 10 + 17 à> Z = 27 l ¤íÒÊÑ§è ·Õè 4 z = Z%4; à z = 27%4 à z = 3 à» ¹¼ÅÅѾ¸ Ê´ Ø · ÒÂ


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 43

3.3 ¤íÒÊѧè switch...case à» ¹¤íÒÊÑ觷Õè㪠㹡ÒõÃǨÊͺµÑÇá»ÃËÃ×ͤ Ò¤§·Õè à¾×èͪ ÇÂ㹡ÒõѴÊÔ¹ã¨Ç Ò µÃ§¡Ñº case ã´ áµ ¶ ÒËÒ¡Ç ÒµÑÇá»ÃËÃ×ͤ Ò¤§·Õè·Õè¹íÒÁÒµÃǨÊͺäÁ µÃ§¡Ñº case ã´àÅ â»Ãá¡ÃÁ¨ÐÁÕ¡ÒÃÁͧ ËÒ¤íÒÊѧè default áÅ Ç·íÒ¤íÒÊѧè ã¹Ê ǹ¢Í§ default áµ ¶Ò ËÒ¡äÁ Á¡Õ ÒÃÃкØ㹤íÒÊѧè default ¡ç¨Ð·íÒãË â»Ãá¡ÃÁÍÍ¡¨Ò¡¡Ò÷íÒ§Ò¹ã¹Ê ǹ switch ·Ñ¹·Õ ÁÕû٠Ẻ·Õãè ª ºÍ Âæ ´Ñ§¹Õé switch(variable) { case const1 : block1 break; case const2 : block2 break; case const3 : block3 break; | | | default : blockn break; } variable ¤×Í const

µÑÇá»Ã·Õ¹è Òí ÁÒµÃǨÊͺà§×Íè ¹ä¢

¤×Í ¤ Ò·Õãè ª à·Õº¡ÑºµÑÇá»Ã·Õ¹è Òí ÁÒµÃǨÊͺ ¶ ҵç¡Ñº¤ Òã´ ¨Ðä»·íҧҹ㹺ÅçÍ¡¹Ñ¹é

¤×Í ¡Ã³Õ¢Í§¡ÒÃà»ÃÕºáÅ ÇäÁ µÃ§¡Ñº case ã´àÅ ¨ÐࢠÒÁÒ㹺ÅçÍ¡¤íÒÊÑ§è ¹Õé «Ö§è äÁ ¨Òí à» ¹µ ͧÁÕàÊÁÍä» default

µÑÇÍ ҧ·Õè 3-7 unsigned char unsigned char switch(key) { case 1 : break; case 3 : break; case 5 :

key = 5; j = 10;

j = j +key; j = j +key; j = j +key;

ß

·íÒ¤íÒÊÑ§è ºÅçÍ¡¹Õé

break; } /*—————————result———————————*/ j = 15 /*——————————————————————————*/


44 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

µÑÇÍ ҧ·Õè 3-8 unsigned char key = ‘b’ ; unsigned char j = 0; switch(key) { case ‘a’ : j = key; break; case ‘b’ : j = key;

ß

·íÒ¤íÒÊÑ§è ºÅçÍ¡¹Õé

break; case ‘c’ : j = key; break; default : j = 0x00; break; } /*—————————result———————————*/ j = ‘b’ /*——————————————————————————*/

3.4 ¤íÒÊѧè for à» ¹¤íÒÊÑ§è ·ÕÁè ¡Õ Ò÷íҧҹẺǹÃͺâ´Â¡ÒõÃǨÊͺ¨Ò¡à§×Íè ¹ä¢ «Ö§è ÁÑ¡¨ÐÁÕ¡ÒÃǹÃͺ㹠¡Ò÷íҧҹ㹨íҹǹ·Õèá¹ ¹Í¹ â´ÂÁÕÃٻẺ໠¹ for(initialize ; condition ; incremental) { block }

â´Â·Õè

initialize ¤×Í ¤ ÒàÃÔÁ è µ ¹·Õ¡è Òí ˹´¨Ò¡µÑÇá»Ã·Õ¹è Òí ÁÒà» ¹à§×Íè ¹ä¢ã¹¡ÒÃǹÃͺ condition ¤×Í à§×Í è ¹ä¢·Õãè ª 㹡ÒõÃǨÊÍºÇ Ò¨ÐãË â»Ãá¡ÃÁ·íÒ¤íÒÊѧè ÀÒÂ㹺ÅçÍ¡ËÃ×ÍäÁ

¶ Òà» ¹¨ÃÔ§¨ÐÁÕ¡Ò÷íÒ¤íÒÊѧè 㹺ÅçÍ¡ ¶ Òà» ¹à·ç¨¨ÐÁÕ¤Ò à» ¹ 0" ¨ÐäÁ Á¡Õ Ò÷íÒ¤íÒÊѧè 㹺ÅçÍ¡ incremental ¤×Í ¤íÒÊѧè 㹡ÒáÃзíҡѺµÑÇá»Ã·Õ¹ è Òí ÁÒà» ¹à§×Íè ¹ä¢


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 45

µÑÇÍ ҧ·Õè 3-9 unsigned char i = 0 , dat = 3; for(i=0;i<8;i++) { dat++; } /*————————————result———————————*/ dat = 11 /*—————————————————————————————*/

¨Ò¡µÑÇÍ ҧ·Õè 3-9 ÊÒÁÒö͸ԺÒ¤ÇÒÁËÁÒ¢ͧ¤íÒÊѧè for(i=0;i<8;i++) ´Ñ§¹Õé ¤ ÒàÃÔÁè µ ¹ ¤×Í i = 0 㪠i à» ¹µÑÇá»Ã㹡ÒõÃǨÊͺà§×Íè ¹ä¢ à§×Íè ¹ä¢ ¤×Í i<8 ¶ ÒËÒ¡ i ¹ ÍÂ¡Ç Ò 8 ¨Ð·íÒ¤íÒÊѧè 㹺ÅçÍ¡ ¶ ÒÁÒ¡¡Ç Ò¨ÐÍÍ¡¨Ò¡ºÅçÍ¡¹Õé ¤íÒÊÑ§è ¤×Í i++ ¶ Ò·íÒ¤íÒÊѧè 㹺ÅçÍ¡àÊÃç¨áŠǨÐà¾ÔÁè ¤ Ò i ¢Ö¹é Ë¹Ö§è ¤ Ò ¹Ñ¹è ¤×Í ¨ÐÁÕ¡Ò÷íÒ¤íÒÊѧè 㹺ÅçÍ¡·Ñ§é ËÁ´ 8 ¤ÃÑ§é ¤×Í µÑ§é áµ i = 0 ¶Ö§ i = 7 áÊ´§Ç ÒÁÕ¡Ò÷íÒ¤íÒÊѧè dat++; ·Ñ§é ËÁ´ 8 ¤ÃÑ§é ·íÒãË ËÅѧ¨Ò¡Ç¹Ãͺ·íÒ¤íÒÊѧè for àÊÃç¨áÅ Ç ¤ Ңͧ dat ¨ÐÁÕ¤Ò à» ¹ 11 (à¾ÃÒÐÁÕ¤Ò àÃÔÁè µ ¹·Õè 3)

µÑÇÍ ҧ·Õè 3-10 unsigned char i = 0 , dat = 3; for(i=0;i<8;i+=2) dat++; /*————————————result———————————*/ dat = 7 /*—————————————————————————————*/

¨Ò¡µÑÇÍ ҧ·Õè 3-10 ÊÒÁÒö͸ԺÒ¤ÇÒÁËÁÒ¢ͧ¤íÒÊѧè for(i=0;i<8;i+=2) ´Ñ§¹Õé ¤ ÒàÃÔÁè µ ¹ ¤×Í i = 0 㪠i à» ¹µÑÇá»Ã㹡ÒõÃǨÊͺà§×Íè ¹ä¢ à§×Íè ¹ä¢ ¤×Í i<8 ¶ ÒËÒ¡ i ¹ ÍÂ¡Ç Ò 8 ¨Ð·íÒ¤íÒÊѧè 㹺ÅçÍ¡ ¶ ÒÁÒ¡¡Ç Ò¨ÐÍÍ¡¨Ò¡ºÅçÍ¡¹Õé ¤íÒÊÑ§è ¤×Í i+=2 ¶ Ò¡ÃзíÒ¤íÒÊѧè 㹺ÅçÍ¡àÊÃç¨áÅ Ç ¨Ðà¾ÔÁè ¤ Ò i ¢Ö¹é ¤Ãѧé ÅÐ 2 ¤ Ò ¹Ñ¹è ¤×Í ÁÕ¡ÒáÃзíÒ¤íÒÊѧè 㹺ÅçÍ¡·Ñ§é ËÁ´ 4 ¤ÃÑ§é ¤×Í i = 0 , 2 , 4 , 6 ¨Ö§ÁÕ¡ÒáÃзíÒ¤íÒÊѧè dat++; ·Ñ§é ËÁ´ 4 ¤ÃÑ§é ·íÒãË ËÅѧ¨Ò¡Ç¹Ãͺ·íÒ¤íÒÊѧè for àÊÃç¨áÅ Ç ¤ Ңͧ dat ¨ÐÁÕ¤Ò à» ¹ 7 (à¾ÃÒÐÁÕ¤Ò àÃÔÁè µ ¹·Õè 3)


46 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

µÑÇÍ ҧ·Õè 3-11 unsigned char i = 0 , dat = 3; for(i=10; i>=5; i--) dat++; /*————————————result———————————*/ dat = 9 /*—————————————————————————————*/

ºÅçÍ¡¹Õé

¨Ò¡µÑÇÍ ҧ·Õè 3-11 ÊÒÁÒö͸ԺÒ¤ÇÒÁËÁÒ¢ͧ¤íÒÊѧè for(i=10; i>=5; i--) ´Ñ§¹Õé ¤ ÒàÃÔÁè µ ¹ ¤×Í i = 10 㪠i à» ¹µÑÇá»Ã㹡ÒõÃǨÊͺà§×Íè ¹ä¢ à§×Íè ¹ä¢ ¤×Í i>=5 ¶ ÒËÒ¡ i ÁÒ¡¡Ç ÒËÃ×Í෠ҡѺ 5 ¨Ð·íÒ¤íÒÊѧè 㹺ÅçÍ¡ ¶ Ò¹ ÍÂ¡Ç Ò¨ÐÍÍ¡¨Ò¡

¤íÒÊÑ§è ¤×Í i - - ¶ Ò¡ÃзíÒ¤íÒÊѧè 㹺ÅçÍ¡àÊÃç¨áÅ Ç ¨ÐÅ´¤ Ò i Å§Ë¹Ö§è ¤ Ò ¹Ñ¹è ¤×Í ÁÕ¡ÒáÃзíÒ¤íÒÊѧè 㹺ÅçÍ¡·Ñ§é ËÁ´ 6 ¤ÃÑ§é ¤×Í àÁ×Íè i = 10, 9, 8, 7, 6 áÅÐ 5 áÊ´§Ç Ò ÁÕ¡ÒáÃзíÒ ¤íÒÊѧè dat++; ·Ñ§é ËÁ´ 6 ¤ÃÑ§é ·íÒãË ËÅѧ¨Ò¡Ç¹Ãͺ·íÒ¤íÒÊѧè for àÊÃç¨áÅ Ç ¤ Ңͧ dat ¨ÐÁÕ¤Ò à» ¹ 9 (à¾ÃÒÐÁÕ ¤ ÒàÃÔÁè µ ¹·Õè 3)

3.5 ¤íÒÊѧè while à» ¹¤íÒÊÑ觷ÕèÁÕ¡Ò÷íҧҹẺǹÃͺâ´Â¡ÒõÃǨÊͺ¨Ò¡à§×èÍ¹ä¢ â´Â¨ÐÁÕÃٻẺ໠¹ while(Condition) { block }

â´Â·Õè Condition ¤×Í à§×Íè ¹ä¢·Õãè ª 㹡ÒõÃǨÊÍºÇ Ò¨ÐãË â»Ãá¡ÃÁ·íÒ¤íÒÊѧè ÀÒÂ㹺ÅçÍ¡ËÃ×ÍäÁ ¶ Òà» ¹¨ÃÔ§ ¨ÐÁÕ¡Ò÷íÒ¤íÒÊѧè 㹺ÅçÍ¡ áµ ã¹·Ò§¡ÅѺ¡Ñ¹ ¶ Òà» ¹à·ç¨¨ÐäÁ Á¡Õ ÒáÃзíÒ¤íÒÊѧè 㹺ÅçÍ¡ ઠ¹ while(1) { block }

à» ¹ÅÙ»·ÕÁè ¡Õ ÒáÃзíÒ¤íÒÊѧè 㹺Åç͡ẺäÁ è٠º à¾ÃÒÐà§×Íè ¹ä¢à» ¹¨ÃÔ§µÅÍ´àÇÅÒ à¹×Íè §¨Ò¡·Õµè Òí á˹ §à§×Íè ¹ä¢ (condition) ÁÕ¤Ò à» ¹ 1 «Ö§è ËÁÒ¶֧ à§×Íè ¹ä¢à» ¹¨ÃÔ§ ¹Ñ¹è àͧ áµ ¶Ò à» ¹ while(0) { block }

¨Ðà» ¹ while loop ·Õ¨è ÐäÁ Á¡Õ ÒáÃзíÒ¤íÒÊѧè 㹺ÅçÍ¡¹Õàé ´ç´¢Ò´ à¾ÃÒÐà§×Íè ¹ä¢à» ¹à·ç¨µÅÍ´àÇÅÒ à¹×Íè §¨Ò¡·Õµè Òí á˹ §à§×Íè ¹ä¢ (condition) ÁÕ¤Ò à» ¹ 0 «Ö§è ËÁÒ¶֧ à§×Íè ¹ä¢à» ¹à·ç¨ ¹Ñ¹è àͧ


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 47

ËÃ×Ͷ Òà» ¹ while(1);

¨Ðà·ÕÂºä´ ¡ºÑ while(1) { }

....... .......

«Ö§è ·Ñ§é ÊͧÃٻẺ¨ÐàËÁ×͹¡Ñ¹¤×Í à§×Íè ¹ä¢à» ¹¨ÃÔ§µÅÍ´àÇÅÒ áµ ¨ÐǹÍÂÙ¡ ºÑ ·Õäè Á ÂÍÁ仡ÃзíÒ ¤íÒÊÑ§è ¶Ñ´ä» à¾ÃÒÐäÁ Á¤Õ Òí Êѧè ÍÂÙÀ ÒÂ㹺ÅçÍ¡àÅ ·íÒãË Ç¹µÃǨÊͺà§×Íè ¹ä¢µÑÇàͧáÅÐà» ¹¨ÃÔ§µÅÍ´àÇÅÒ µÑÇÍ ҧ·Õè 3-12 unsigned char count = 10 , j = 0; while(count>0)

//

¶ Ò count ÁÒ¡¡Ç Ò 0 ¨ÃÔ§ ¡ÃзíÒ¤íÒÊѧè 㹺ÅçÍ¡

{ count--;

//

j++;

//

Å´¤ Ò count ŧ 1 à¾ÔÁè ¤ Ò j ¢Ö¹é 1

} /*————————————result———————————*/ j = 10 /*—————————————————————————————*/

¨Ò¡µÑÇÍ ҧ·Õè 3-12 ã¹µÑÇÍ ҧ¹Õãé ª ¤Ò ¢Í§ count à» ¹µÑǵÃǨÊͺà§×Íè ¹ä¢Ç Ò ÁÒ¡¡Ç Ò 0 ÍÂÙË Ã×ÍäÁ ¶ Ò㪠¨Ð ࢠÒä»·íÒ¤íÒÊѧè 㹺ÅçÍ¡ áÅзء¤ÃÑ§é ·Õàè ¢ Òä»·íÒ¤íÒÊѧè 㹺ÅçÍ¡¢Í§¤íÒÊѧè while ¨ÐÅ´¤ Ò count ŧ 1 ¤ Ò áÅÐà¾ÔÁè ¤ Ò j 1 ¤ Ò ´Ñ§¹Ñ¹é ÁÕ¡ÒáÃзíÒ¤íÒÊѧè 㹺ÅçÍ¡·Ñ§é ËÁ´ 10 ¤ÃÑ§é ¤×Í àÁ×Íè count = 10, 9, 8, 7, 6, 5, 4, 3, 2 áÅÐ 1

µÑÇÍ ҧ·Õè 3-13 unsigned char test = ‘a’, m = 0; while(test==’a’) { test = ‘b’;

//

m = 25;

//

¤íÒÊÑ§è ·Õè 1 ¤íÒÊÑ§è ·Õè 2

} while(test==’b’) { test = ‘a’;

//

m = 80;

//

¤íÒÊÑ§è ·Õè 3 ¤íÒÊÑ§è ·Õè 4

} /*————————————result———————————*/ test = ‘a’ m = 80 /*—————————————————————————————*/


48 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

¨Ò¡µÑÇÍ ҧ·Õè 3-13 ¤ ÒàÃÔÁè µ ¹¢Í§ test = ‘a’ àÁ×Íè â»Ãá¡ÃÁ·íÒ§Ò¹¨Ð¾º¤íÒÊÑ§è µÃǨÊͺà§×Íè ¹ä¢ while(test==’a’) áÅоºÇ Òà§×Í è ¹ä¢à» ¹¨ÃÔ§ ¨Ö§¡ÃзíÒ¤íÒÊѧè 㹺ÅçÍ¡¤×Í ¤íÒÊÑ§è ·Õè 1 áÅÐ 2 l ¤íÒÊÑ§è ·Õè 1 test = ‘b’; l ¤íÒÊÑ§è ·Õè 2 m = 25; µ ͨҡ¹Ñ¹é àÁ×Íè ÁÕ¡ÒùíÒ test 仵ÃǨÊͺà§×Íè ¹ä¢ while(test==’a’) ÍÕ¡¤ÃÑ§é ¾ºÇ Ò äÁ à» ¹¨ÃÔ§ÍÕ¡ µ Íä» à¾ÃÒШҡ¡ÒáÃзíÒ¤íÒÊÑ§è ·Õè 1 ¨Ö§ÍÍ¡¨Ò¡ loop 仾º¡Ñº¤íÒÊÑ§è µÃǨÊͺà§×Íè ¹ä¢ while(test==’b’) áÅоºÇ Ò à§×Íè ¹ä¢à» ¹¨ÃÔ§ ¨Ö§à¢ Ò仡ÃзíÒ¤íÒÊѧè 㹺ÅçÍ¡¤×Í ¤íÒÊÑ§è ·Õè 3 áÅÐ 4 l ¤íÒÊÑ§è ·Õè 3 test = ‘a’; l ¤íÒÊÑ§è ·Õè 4 m = 80;

3.6 ¤íÒÊѧè do-while à» ¹¤íÒÊÑ§è ·ÕÁè ¡Õ Ò÷íҧҹẺǹÃͺ´ Ç¡ÒõÃǨÊͺ¨Ò¡à§×Íè ¹ä¢¤Å Ò¤íÒÊѧè while ᵠᵡµ Ò§ ¡Ñ¹·ÕÁè ¡Õ ÒáÃзíÒ¤íÒÊѧè 㹺ÅçÍ¡¡ ͹ 1 ¤Ãѧé áŠǨ֧µÃǨÊͺà§×Íè ¹ä¢ã¹Ê ǹ¢Í§ while ÁÕû٠Ẻ໠¹ do { block }while(Condition);

µÑÇÍ ҧ·Õè 3-14 unsigned char dat = 0 , j = 0; do { dat++; // à¾ÔÁ è ¤ Ò dat

¢Ö¹é 1 ¤ Ò ¶ ÒËÒ¡ j äÁ ෠ҡѺ 0 ¨ÐࢠÒä»·íÒ¤íÒÊѧè 㹺ÅçÍ¡ (¤íÒÊѧè

}while(j != 0) // /*————————————result———————————*/ dat = 1 /*—————————————————————————————*/

dat++;)

¨Ò¡µÑÇÍ ҧ·Õè 3-14 ¨ÐàËç¹Ç Ò¤Ãѧé áá·Õ¾è º¤íÒÊѧè do-while â»Ãá¡ÃÁ¨ÐࢠÒä»·íÒ¤íÒÊѧè 㹺ÅçÍ¡¡ ͹·Ñ¹·Õ ¡ÒáÃзíÒ¤íÒÊѧè dat++ ·íÒãË dat ÁÕ¤Ò à» ¹ 1 ¡ ͹ áÅШ֧µÃǨÊͺ´ÙÇÒ j äÁ ෠ҡѺ 0 ¨ÃÔ§ËÃ×ÍäÁ »ÃÒ¡¯Ç Ò äÁ ¨ÃÔ§ ¨Ö§·íÒãË ÍÍ¡¨Ò¡¡ÒáÃзíÒ¤íÒÊѧè do-while loop áµ ¶Ò à» ¹ unsigned char dat = 0 , j = 0;

è µÃǨÊͺ¾ºÇ Ò j = 0 ¡çäÁ ¡ÃзíÒ¤íÒÊѧè 㹺ÅçÍ¡áÅ Ç while(j != 0) // àÁ×Í { dat++; } /*————————————result———————————*/ dat = 0 /*—————————————————————————————*/


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 49

º··Õè 4

ªØ´¤íÒÊѧè ÀÒÂã¹äźÃÒÃÕ ipst ·Õãè ª ã¹ ªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX äźÃÒÃÕ ipst.h à» ¹ä¿Å ʹѺʹعªØ´¤íÒÊѧè ËÃ×Í¿ §¡ ª¹Ñè µ Ò§æ ÊíÒËÃѺÊà ҧâ»Ãá¡ÃÁ¤Çº¤ØÁ¡Òà ·íÒ§Ò¹¢Í§á¼§Ç§¨Ã MicroBOX Íѹ໠¹á¼§Ç§¨Ã¤Çº¤ØÁËÅÑ¡¢Í§ªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX ÍÒ·Ô ¤íÒÊÑ§è ¤Çº¤ØÁ¾Íà µÍÔ¹¾Øµ/àÍÒµ ¾µØ ·Ñ§é Ẻ´Ô¨µÔ ÍÅáÅÐÍйÒÅÍ¡, ¤íÒÊÑ§è µÔ´µ ÍÍØ»¡Ã³ µÃǨ¨Ñºáºº µ Ò§æ, ¤íÒÊѧè Ê §¢ ÍÁÙÅä»Âѧ˹ ÇÂáÊ´§¼ÅẺµ Ò§æ ·Ñ§é LED µÑÇàÅ¢ 7 Ê Ç¹áÅÐâÁ´ÙÅ LCD à» ¹µ ¹ äźÃÒÃÕ ipst.h »ÃСͺ´ ÇÂäźÃÒÃÕÂÍ ÂËÅÒÂæ µÑÇ·ÕÊè ÒÁÒö·íÒ§Ò¹ËÃ×ÍàÃÕ¡㪠§Ò¹ä´ Í ҧÁÕ»ÃÐ ÊÔ·¸ÔÀÒ¾ â´Âµ ͧ㪠¡ºÑ ἧǧ¨Ãµ ; ǧà ÇÁ¡Ñºá¼§Ç§¨Ã¤Çº¤ØÁ MicroBOX ÁÕ¢Í ÁÙÅâ´ÂÊÃØ»´Ñ§¹Õé l in_out.h

äźÃÒÃÕ·Õè»ÃСͺ´ ǤíÒÊÑè§Í Ò¹áÅÐà¢Õ¹¢ ÍÁÙŴԨԵ͚Ѻ¢Ò¾Íà µ ÍÔ¹¾ØµàÍÒµ ±µØ ´Ô¨µÔ ÍŢͧäÁâ¤Ã¤Í¹â·ÃÅàÅÍà ATmega16 segment.h äźÃÒÃÕ·»Õè ÃСͺ´ ǤíÒÊѧè áÊ´§¼ÅµÑÇàÅ¢ LED 7 Ê Ç¹ 㪠§Ò¹¡Ñº ἧǧ¨ÃáÊ´§¼ÅµÑÇàÅ¢ 4 ËÅÑ¡ (Display-4) l

l lcd.h

äźÃÒÃÕ·»Õè ÃСͺ´ ǤíÒÊѧè áÊ´§¼Å¢ ͤÇÒÁ·Õâè Á´ÙÅ LCD â´Âµ ͧ 㪠¡ºÑ ἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) l motor.h

µÃ§ 2 ª ͧ (ZX-DCM2)

äźÃÒÃÕ·»Õè ÃСͺ´ ǤíÒÊÑ§è ¢ÑºÁÍàµÍà 㪠¡ºÑ ἧǧ¨Ã¢ÑºÁÍàµÍà ä¿

analog.h äźÃÒÃÕ·Õè»ÃСͺ´ ǤíÒÊÑè§Í Ò¹ÊÑ­­Ò³ÍйÒÅÍ¡ 㪠¡Ñºá¼§Ç§¨Ã µÃǨ¨ÑºÊÑ­­Ò³ÍйÒÅÍ¡·Ñé§ËÁ´ l

l timer.h

äźÃÒÃÕ·»Õè ÃСͺ´ ǤíÒÊÑ§è ¨Ñ´¡ÒÃà¡ÕÂè ǡѺ¤ ÒàÇÅÒ

l sound.h

äźÃÒÃÕ·»Õè ÃСͺ´ ǤíÒÊÑ§è ¨Ñ´¡ÒÃà¡ÕÂè ǡѺ¡ÒáíÒà¹Ô´ÊÑ­­Ò³àÊÕ§

l serial.h

äźÃÒÃÕ·»Õè ÃСͺ´ ǤíÒÊÑ§è ¨Ñ´¡ÒÃà¡ÕÂè ǡѺ¡ÒÃÊ×Íè ÊÒâ ÍÁÙÅ͹ءÃÁ

¡ÅØÁ äźÃÒÃÕ·¡Õè Å ÒÇÁÒ¹Õ¨é ж١ºÃèØÍÂÙÀ ÒÂã¹â¿Åà´Íà à´ÕÂǡѹ ËÃ×ÍÍÕ¡¹ÑÂ˹֧è ÍÂÙ¾ Ò¸à´ÕÂǡѹ «Ö§è ä´ ¨´Ñ àµÃÕÂÁÁҾà ÍÁ㹫մÃÕ ÍÁ·ÕÁè ҡѺªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX áÅ Ç â´ÂºÃèØÍÂÙÀ Ò ã¹â¿Åà´Íà ipst_include


50 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

¹Í¡¨Ò¡¹ÕÂé §Ñ ÁÕäźÃÒÃÕà¾ÔÁè àµÔÁÊíÒËÃѺ¡ÒÃàª×Íè Áµ ͡ѺµÑǵÃǨ¨Ñº¾ÔàÈÉÍ×¹è æ ÍÒ·Ô l gp2d120_lib.h äźÃÒÃÕµ´Ô µ ͡ѺâÁ´ÙÅÇÑ´ÃÐÂзҧẺÍÔ¹¿ÃÒàô GP2D120 l srf05_lib.h äźÃÒÃÕµ´Ô µ ͡ѺâÁ´ÙÅÇÑ´ÃÐÂзҧẺÍÑŵà Ò⫹ԡ SRF-05 l memsic_lib.h äźÃÒÃÕµ´Ô µ ͡Ѻ MEMSIC2125 âÁ´ÙÅÇÑ´¤ÇÒÁàà § 2 ᡹ à¾×Íè Í Ò¹¤ ÒÍ Ò¹¤ ÒÁØÁàÍÕ§ã¹áµ ÅÐ᡹·ÕèÇÑ´ä´ l sht11_lib.h äźÃÒÃÕµ´Ô µ ͡Ѻ SHT11 âÁ´ÙÅÇÑ´¤ÇÒÁª×¹é ÊÑÁ¾Ñ·¸ ã¹ÍÒ¡ÒÈ ã¹º·¹Õ¹é Òí àʹÍÃÒÂÅÐàÍÕ´·Ñ§é ËÁ´¢Í§äźÃÒÃÕËÅÑ¡ ipst.h à¾×Íè à» ¹¢ ÍÁÙÅÍ Ò§Íԧ㹡ÒÃà¢Õ¹ â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ¤Çº¤ØÁ¡Ò÷íÒ§Ò¹¢Í§á¼§Ç§¨Ã MicroBOX

4.1 ªØ´¤íÒÊѧè à¡ÕÂè ǡѺ¡ÒÃ㪠§Ò¹¾Íà µÍÔ¹¾Øµ/àÍÒµ ¾µØ 4.1.1 ¿ §ªÑ¹è ÊíÒËÃÑºÍ Ò¹¤ Ò¨Ò¡¾Íà µÍÔ¹¾Øµ in_a

ÊíÒËÃÑºÍ Ò¹¤ ÒÊÑ­­Ò³´Ô¨µÔ ÍŨҡ¾Íà µ A

in_b

ÊíÒËÃÑºÍ Ò¹¤ ÒÊÑ­­Ò³´Ô¨µÔ ÍŨҡ¾Íà µ B

in_c

ÊíÒËÃÑºÍ Ò¹¤ ÒÊÑ­­Ò³´Ô¨µÔ ÍŨҡ¾Íà µ C

in_d

ÊíÒËÃÑºÍ Ò¹¤ ÒÊÑ­­Ò³´Ô¨µÔ ÍŨҡ¾Íà µ D

ÃٻẺ¿ §¡ ªÑè¹ char char char char

in_a(x) in_b(x) in_c(x) in_d(x)

¾ÒÃÒÁÔàµÍà x ·íÒ˹ Ò·Õ¡è Òí ˹´¢ÒÊÑ­­Ò³·Õµè Í §¡ÒÃÍ Ò¹¤ Ò «Ö§è ÁÕ¤Ò µÑ§é áµ 0 ¶Ö§ 7 ¡Òä׹¤ Ò ÍÒ¨ÁÕ¤Ò à» ¹ 0 ËÃ×Í 1

µÑÇÍ ҧ·Õè 4-1 char x=0;

//

»ÃСÒȵÑÇá»Ã x à¾×Íè à¡çº¤ Ò¼ÅÅѾ¸ ¨Ò¡¡ÒÃÍ Ò¹¤ ÒÊÑ­­Ò³

x = in_b(2);

//

Í Ò¹¤ ÒÊÑ­­Ò³´Ô¨µÔ ÍŨҡ¾Íà µ PB2 áÅ Çà¡çº¤ ÒäÇ ·µÕè ÇÑ á»Ã x


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

4.1.2 ¿ §ªÑ¹è ÊíÒËÃѺà¢Õ¹¢ ÍÁÙÅä»Âѧ¾Íà µàÍÒµ ¾µØ ¡íÒ˹´ÃдѺÊÑ­­Ò³´Ô¨µÔ ÍÅä»Âѧ¾Íà µ A ¡íÒ˹´ÃдѺÊÑ­­Ò³´Ô¨µÔ ÍÅä»Âѧ¾Íà µ B ¡íÒ˹´ÃдѺÊÑ­­Ò³´Ô¨µÔ ÍÅä»Âѧ¾Íà µ C ¡íÒ˹´ÃдѺÊÑ­­Ò³´Ô¨µÔ ÍÅä»Âѧ¾Íà µ D

out_a out_b out_c out_d

ÃٻẺ¿ §¡ ªÑè¹ out_a(char out_b(char out_c(char out_d(char

_bit,char _bit,char _bit,char _bit,char

_dat) _dat) _dat) _dat)

¾ÒÃÒÁÔàµÍà _bit

·íÒ˹ Ò·Õ¡è Òí ˹´¢ÒÊÑ­­Ò³·Õµè Í §¡ÒáíÒ˹´¤ Ò«Ö§è ÁÕ¤Ò µÑ§é áµ 0 ¶Ö§ 7

¡Òä׹¤ Ò äÁ Á¡Õ Òä׹¤ Ò

µÑÇÍ ҧ·Õè 4-2 out_a(3,1);

//

out_b(6,0);

//

out_d(7,0);

//

¡íÒ˹´ÃдѺÊÑ­­Ò³¾Íà µ PA3 à» ¹ 1 ¡íÒ˹´ÃдѺÊÑ­­Ò³¾Íà µ PB6 à» ¹ 0 ¡íÒ˹´ÃдѺÊÑ­­Ò³¾Íà µ PD7 à» ¹ 0

l 51


52 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

4.1.3 ¿ §ªÑ¹è ÊíÒËÃѺ¡íÒ˹´¢ ÍÁÙÅÅͨԡãË ¡ºÑ ¾Íà µàÍÒµ ¾µØ 㪠¡Òí ˹´Åͨԡ 1 ·Õ¢è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ A set_b 㪠¡Òí ˹´Åͨԡ 1 ·Õ¢ è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ B set_c 㪠¡Òí ˹´Åͨԡ 1 ·Õ¢ è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ C set_d 㪠¡Òí ˹´Åͨԡ 1 ·Õ¢ è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ D clear_a 㪠¡Òí ˹´Åͨԡ 0 ·Õ¢ è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ A clear_b 㪠¡Òí ˹´Åͨԡ 0 ·Õ¢ è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ B clear_c 㪠¡Òí ˹´Åͨԡ 0 ·Õ¢ è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ C clear_d 㪠¡Òí ˹´Åͨԡ 0 ·Õ¢ è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ D set_a

ÃٻẺ¿ §¡ ªÑè¹ set_a(x) set_b(x) set_b(x) set_d(x) clear_a(x) clear_b(x) clear_c(x) clear_d(x)

¾ÒÃÒÁÔàµÍà x

·íÒ˹ Ò·Õ¡è Òí ˹´¢ÒÊÑ­­Ò³·Õµè Í §¡ÒáíÒ˹´Åͨԡ«Ö§è ÁÕ¤Ò µÑ§é áµ 0 ¶Ö§ 7

µÑÇÍ ҧ·Õè 4-3 set_c(6);

//

clear_b(3);

//

set_d(0);

//

¡íÒ˹´ÃдѺÊÑ­­Ò³¾Íà µ PC6 à» ¹ 1 ¡íÒ˹´ÃдѺÊÑ­­Ò³¾Íà µ PB3 à» ¹ 0 ¡íÒ˹´ÃдѺÊÑ­­Ò³¾Íà µ PD0 à» ¹ 1


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

4.1.4 ¿ §ªÑ¹è ÊíÒËÃѺ¡ÅѺ¢ ÍÁÙÅÅͨԡãË ¡ºÑ ¾Íà µàÍÒµ ¾µØ toggle_a toggle_b toggle_c toggle_d

㪠¡Òí ˹´¡ÒáÅѺÅͨԡ·Õ¢è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ A 㪠¡Òí ˹´¡ÒáÅѺÅͨԡ·Õ¢è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ B 㪠¡Òí ˹´¡ÒáÅѺÅͨԡ·Õ¢è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ C 㪠¡Òí ˹´¡ÒáÅѺÅͨԡ·Õ¢è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ D

ÃٻẺ¿ §¡ ªÑè¹ toggle_a(x) toggle_b(x) toggle_c(x) toggle_d(x)

¾ÒÃÒÁÔàµÍà x

·íÒ˹ Ò·Õ¡è Òí ˹´¢ÒÊÑ­­Ò³·Õµè Í §¡ÒáÅѺÅͨԡ«Ö§è ÁÕ¤Ò µÑ§é áµ 0 ¶Ö§ 7

µÑÇÍ ҧ·Õè 4-4 toggle_a(2);

//

¡ÅѺÅͨԡ·Õ¾è Íà µ PA2

toggle_d(4);

//

¡ÅѺÅͨԡ·Õ¾è Íà µ PD4

4.2 ªØ´¤íÒÊѧè ˹ ǧàÇÅÒ 4.2.1 ¿ §¡ ª¹Ñè sleep ÊíÒËÃѺ¡ÒÃ˹ ǧàÇÅÒâ´Â»ÃÐÁÒ³ã¹Ë¹ ÇÂÁÔÅÅÔÇÔ¹Ò·Õ ÃٻẺ¿ §¡ ªÑè¹ void sleep(unsigned int ms)

¾ÒÃÒÁÔàµÍà ms

㪠¡Òí ˹´¤ ÒàÇÅÒ·Õµè Í §¡ÒÃ˹ ǧã¹Ë¹ ÇÂÁÔÅÅÔÇ¹Ô Ò·Õ ¡íÒ˹´ä´ µ§Ñé áµ 0 ¶Ö§ 65,535

¡Òä׹¤ Ò µÑÇÍ ҧ·Õè 4-5

äÁ Á¡Õ Òä׹¤ Ò

sleep(20);

//

sleep(1000);

//

˹ ǧàÇÅÒ»ÃÐÁÒ³ 20 ÁÔÅÅÔÇ¹Ô Ò·Õ Ë¹ ǧàÇÅÒ»ÃÐÁÒ³ 1 ÇÔ¹Ò·Õ

l 53


54 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

4.3 ªØ´¤íÒÊѧè ÊíÒËÃÑºÍ Ò¹¤ ÒÍйÒÅÍ¡ 4.3.1 ¿ §¡ ª¹Ñè analog 㪠ÍÒ ¹¤ ÒÍйÒÅÍ¡·Õ¢è ÒÊÑ­­Ò³ã´æ ¢Í§¾Íà µ A ÁÕ¤ÇÒÁÅÐàÍÕ´㹡ÒÃá»Å§ÊÑ­­Ò³ÍÐ¹Ò ÅÍ¡à» ¹´Ô¨µÔ ÍÅ 10 ºÔµ ·íÒãË ä´ ¤Ò ¢ ÍÁÙÅàÅ¢°Ò¹ÊÔº 0 ¶Ö§ 1,023 à·Õº¡Ñºáç´Ñ¹ÍйÒÅÍ¡ 0 ¶Ö§ 5V ÃٻẺ¿ §¡ ªÑè¹ unsigned int analog(unsigned char channel)

¾ÒÃÒÁÔàµÍà channel

¡Òä׹¤ Ò

㪠¡Òí ˹´ª ͧÍйÒÅÍ¡·Õµè Í §¡Òà ÁÕ¤Ò 0 ¶Ö§ 7 «Ö§è µÃ§¡Ñº¾Íà µ PA0 ¶Ö§ PA7

¤×¹¤ Òà» ¹¢ ÍÁÙÅ´Ô¨µÔ ÍÅ·Õäè ´ ¨Ò¡¡ÒÃá»Å§ÊÑ­­Ò³¢Í§âÁ´ÙÅá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹ ´Ô¨µÔ ÍŨҡÍÔ¹¾Øµ·Õ¡è Òí ˹´ â´Â¢ ÍÁÙŨÐÁÕ¤ÇÒÁÅÐàÍÕ´ 10 ºÔµ ´Ñ§¹Ñ¹é ¤ Ò·Õàè » ¹ä»ä´ ¤Í× µÑ§é áµ 0 ¨¹¶Ö§ 1023 ã¹ÃÙ»¢Í§àÅ¢°Ò¹ÊÔº ËÃ×Í 0 ¶Ö§ 0x3FF ã¹ÃÙ»¢Í§àÅ¢°Ò¹ÊԺˡ

µÑÇÍ ҧ·Õè 4-6 int adc_val=0; adc_val = analog(2);

¡íÒ˹´µÑÇá»ÃÊíÒËÃѺà¡çº¤ ÒÍйÒÅÍ¡·ÕÍè Ò ¹ä´ // Í Ò¹¤ ÒÍйÒÅÍ¡ª ͧ 2 «Ö§è µÃ§¡Ñº¾Íà µ PA2 áÅ Çà¡çº¤ Ò·Õµ è ÇÑ á»Ã adc_val

//


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 55

4.3.2 ¿ §¡ ª¹Ñè knob

㪠ÊÒí ËÃѺ¡ÒÃÍ Ò¹¤ ÒÍйÒÅÍ¡·Õ¢è ÒÊÑ­­Ò³¢Í§¾Íà µ PA7 «Ö§è àª×Íè Áǧ¨ÃࢠҡѺµÑǵ Ò¹·Ò¹ »ÃѺ¤ Òä´ º¹á¼§Ç§¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) «Ö§è µ ͧ¨Ñ´ËÒà¾ÔÁè àµÔÁ à¹×Íè §¨Ò¡ ἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ ¹äÕé Á ä´ ¨´Ñ äÇ ã¹ªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX Ãع àÃÔÁè µ ¹áÅÐÃع Áҵðҹ µÑǵ Ò¹·Ò¹»ÃѺ¤ Òä´ µÒí á˹ § KNOB º¹á¼§Ç§¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤

ÃٻẺ¿ §¡ ªÑè¹ #define knob() analog(7)

¾ÒÃÒÁÔàµÍà äÁ ÁÕ

¡Òä׹¤ Ò µÑÇÍ ҧ·Õè 4-7

¤×¹¤ Òà» ¹¢ ÍÁÙÅ´Ô¨µÔ ÍÅ·Õäè ´ ¨Ò¡¡ÒÃá»Å§ÊÑ­­Ò³¢Í§âÁ´ÙÅá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹ ´Ô¨µÔ ÍŨҡª ͧ PA7 â´Â¢ ÍÁÙÅÁÕ¤ÇÒÁÅÐàÍÕ´ 10 ºÔµ ¤ Ò·Õàè » ¹ä»ä´ ¤Í× µÑ§é áµ 0 ¨¹¶Ö§ 1,023

int adc_val=0;

//

adc_val

//

= knob();

//

¡íÒ˹´µÑÇá»ÃÊíÒËÃѺà¡çº¤ ÒÍйÒÅÍ¡·ÕÍè Ò ¹ä´ Í Ò¹¤ ÒÍйÒÅÍ¡¨Ò¡µÑǵ Ò¹·Ò¹»ÃѺ¤ Òä´ º¹á¼§Ç§¨ÃáÊ´§¼Å áÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) áÅ Çà¡çº¤ Ò·Õµè ÇÑ á»Ã adc_val


56 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

4.4 ªØ´¤íÒÊѧè ÊíÒËÃѺ¨ÑºàÇÅÒËÃ×͹Ѻ¤ ÒàÇÅÒ 4.4.1 ¿ §¡ ª¹Ñè timer_start

㪠¡Òí ˹´¨Ø´àÃÔÁè µ ¹¡ÒùѺàÇÅҢͧä·àÁÍà (¤ ÒàÇÅÒ㹡ÒùѺ¨Ð¶Ù¡à¤ÅÕÂà ) ÃٻẺ¿ §¡ ªÑè¹ void timer_start(void)

4.4.2 ¿ §¡ ª¹Ñè timer_stop

㪠ÊÒí ËÃѺ» ´¡ÒùѺàÇÅҢͧä·àÁÍà (¤ ÒàÇÅÒ㹡ÒùѺ¨Ð¶Ù¡à¤ÅÕÂà ) ÃٻẺ¿ §¡ ªÑè¹ void timer_stop(void)

4.4.3 ¿ §¡ ª¹Ñè timer_pause

㪠ÊÒí ËÃѺËÂØ´¡ÒùѺàÇÅҢͧä·àÁÍà ªÇÑè ¢³Ð (¤ ÒàÇÅÒ㹡ÒùѺ¨ÐäÁ ¶¡Ù à¤ÅÕÂà ) ÃٻẺ¿ §¡ ªÑè¹ void timer_pause(void)

4.4.4 ¿ §¡ ª¹Ñè timer_resume 㪠ÊÒí ËÃѺ¹ÑºàÇÅÒµ ͧ͢ä·àÁÍà ËÅѧ¨Ò¡¡ÒÃËÂØ´¹ÑºàÇÅÒªÑÇè ¢³Ð¨Ò¡¿ §¡ ª¹Ñè timer_pause (¤ ÒàÇÅÒ㹡ÒùѺ¨Ð¶Ù¡¹Ñºµ Í â´Âà¾ÔÁè ¤ Ò¨Ò¡à´ÔÁ) ÃٻẺ¿ §¡ ªÑè¹ void timer_resume(void)

4.4.5 ¿ §¡ ª¹Ñè msec ãª Í Ò¹¤ ÒàÇÅÒ·Õèä·àÁÍà ¹Ñºä´ ã¹Ë¹ ÇÂÁÔÅÅÔÇÔ¹Ò·Õ ÃٻẺ¿ §¡ ªÑè¹ unsigned long msec()

¡Òä׹¤ Ò àÇÅÒ·Õ¹è ºÑ ä´ ã¹Ë¹ ÇÂÁÔÅÅÔÇ¹Ô Ò·Õ â´Âª¹Ô´¢ ÍÁÙÅà» ¹áºº long


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 57

4.4.6 ¿ §¡ ª¹Ñè sec ãª Í Ò¹¤ ÒàÇÅÒ·Õèä·àÁÍà ¹Ñºä´ ã¹Ë¹ ÇÂÇÔ¹Ò·Õ ÃٻẺ¿ §¡ ªÑè¹ unsigned long sec()

¡Òä׹¤ Ò àÇÅÒ·Õ¹è ºÑ ä´ ã¹Ë¹ ÇÂÇÔ¹Ò·Õ â´Âª¹Ô´¢ ÍÁÙÅà» ¹áºº long

µÑÇÍ ҧ·Õè 4-8 void main()

//

â»Ãá¡ÃÁËÅÑ¡

{ timer_start();

//

while(1)

//

¡íÒ˹´¨Ø´àÃÔÁè µ ¹¡ÒùѺàÇÅҢͧä·àÁÍà ǹÃͺäÁ è٠º

{ lcd(“Time: %l sec “,sec()); //

Í Ò¹¤ ÒàÇÅÒã¹Ë¹ ÇÂÇÔ¹Ò·ÕÁÒáÊ´§·Õâè Á´ÙÅ LCD

} }

¢ ͤÇ÷ÃÒº : ËÒ¡µ ͧ¡Ò÷´ÊͺµÑÇÍ ҧ¹Õ¨é е ͧµÔ´µÑ§é ἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Displayio) ࢠҡѺἧǧ¨ÃËÅÑ¡ MicroBOX áÅÐἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) ¹Õ¨é е ͧ¨Ñ´ËÒ à¾ÔÁè àµÔÁ à¹×Íè §¨Ò¡äÁ ä´ ÃÇÁÍÂÙã ¹ªØ´¡Å ͧÊÁͧ¡Å IPST-MicroBOX ã¹Ãع àÃÔÁè µ ¹áÅÐÃع Áҵðҹ ἧǧ¨ÃáÊ´§¼ÅáÅÐ ¾Íà µà͹¡»ÃÐʧ¤

áÊ´§¡ÒõԴµÑ§é ἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) ࢠҡѺἧǧ¨ÃäÁâ¤Ã¤Í¹â·ÃÅ àÅÍà ËÅÑ¡ MicroBOX


58 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

4.5 ªØ´¤íÒÊѧè ÊíÒËÃѺáÊ´§¼Å·Õè LED µÑÇàÅ¢ 7 Ê Ç¹ áÅÐ LED áÊ´§¼Å 8 ËÅÑ¡ 4.5.1 ¡ÒÃàª×Íè Áµ Í·Ò§ÎÒà ´áÇà 㹡Ò÷´Êͺ¤íÒÊÑ§è ¹Õ¨é е ͧ¹íÒἧǧ¨Ã¤Çº¤ØÁ MicroBOX ÁÒµ ÍࢠҡѺἧǧ¨ÃáÊ´§¼Å µÑÇàÅ¢ 4 ËÅÑ¡ (ἧǧ¨Ã DSP-4) (1) àª×Íè Áµ ÍÊÒ¢ ÍÁÙÅ 8 ºÔµ¨Ò¡¾Íà µ C ¢Í§á¼§Ç§¨Ã¤Çº¤ØÁ MicroBOX ࢠҡѺ¨Ø´µ Í PORT ¢Í§á¼§Ç§¨ÃáÊ´§¼ÅµÑÇàÅ¢ 4 ËÅÑ¡ DSP-4 (2) µ ÍÊÒ¨ҡ¨Ø´ PB4 ¢Í§á¼§Ç§¨Ã MicroBOX ࢠҡѺ¨Ø´µ Í DIGIT4 ¢Í§á¼§Ç§¨Ã DSP-4 (3) µ ÍÊÒ¨ҡ¨Ø´ PB3 ¢Í§á¼§Ç§¨Ã MicroBOX ࢠҡѺ¨Ø´µ Í DIGIT3 ¢Í§á¼§Ç§¨Ã DSP-4 (4) µ ÍÊÒ¨ҡ¨Ø´ PB2 ¢Í§á¼§Ç§¨Ã MicroBOX ࢠҡѺ¨Ø´µ Í DIGIT2 ¢Í§á¼§Ç§¨Ã DSP-4 (5) µ ÍÊÒ¨ҡ¨Ø´ PB1 ¢Í§á¼§Ç§¨Ã MicroBOX ࢠҡѺ¨Ø´µ Í DIGIT1 ¢Í§á¼§Ç§¨Ã DSP-4 µ ÍÊÒ·ѧé ËÁ´à¢ Ò·Õ¨è ´Ø µ Í´ Ò¹ËÅѧ

PA6

DG1

PB4 PA3 PA5

5

4

3

4-Digit LED board

IPST MicroBOX

2

1

0

0

LED

PA1

PA2 PA4

6

DSP-4

´ ҹ˹ Ò

COM. ON CTRL.

PB2 ON

OFF

GND PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 +5V

+ Vin -

PA0

7

PA7

DG2

DIGIT-4

PORT PORT

1

2

LEDE MODE

DC input

DIGIT-1

LED COMMON ALWAYS CONTROL ON

ATMEGA16 PORTC

DG3

PB3

TxD

PB0

PB1

RxD ISP

PD3

RESET

PD2

PD5

PD1

PD4

PD7

PD0

PD6

DG4

DIGIT-1 DIGIT-2 DIGIT-3 DIGIT-4

3

4

5

6

7

´ Ò¹ËÅѧ

PORT

µ ÍࢠҴ Ò¹ËÅѧ·Õè ¨Ø´µ ͵ÑÇã´¡çä´

4.5.2 ¿ §¡ ª¹Ñè segment ËÃ×Í SEGMENT

㪠áÊ´§¼Å¢ ÍÁÙÅ·Õè LED µÑÇàÅ¢ 7 Ê Ç¹º¹á¼§Ç§¨ÃáÊ´§¼ÅµÑÇàÅ¢ 4 ËÅÑ¡ (ἧǧ¨Ã DSP-4) ÃٻẺ¿ §¡ ªÑè¹ void segment(unsigned int val)

¾ÒÃÒÁÔàµÍÃ

val ·íÒ˹ Ò·Õ¡ è Òí ˹´¤ Ò¢ ÍÁÙÅ·Õµè Í §¡ÒÃáÊ´§¼Å¢ ÍÁÙÅ·Õè LED µÑÇàÅ¢ 7 Ê Ç¹ 4 ËÅÑ¡ ª ǧ¢ ÍÁÙÅ

·Õàè » ¹ä»ä´ ¤Í× µÑ§é áµ 0 ¶Ö§ 9999 ¶ Ò¤ Ò¢ ÍÁÙÅÁÕ¤Ò ÁÒ¡¡Ç Ò¹Õ¨é ÐáÊ´§¢ ͤÇÒÁà» ¹ - - - -


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 59

µÑÇÍ ҧ·Õè 4-9 segment(2549);

//

áÊ´§¤ Ò¢ ÍÁÙÅ 2549 ·Õè LED µÑÇàÅ¢ 7 Ê Ç¹

µÑÇÍ ҧ·Õè 4-10 int i=0; while(1) { sleep(1000);

//

segment(i++); //

˹ ǧàÇÅÒ 1 ÇÔ¹Ò·Õ áÊ´§¤ Ò¢ ÍÁÙŢͧ i ·Õè LED µÑÇàÅ¢ 7 Ê Ç¹ ¾Ã ÍÁà¾ÔÁè ¤ Ò i

}

4.5.3 ¿ §¡ ª¹Ñè segment_dot 㪠áÊ´§¼Å¨Ø´ (dot point : dp) ¢Í§ LED µÑÇàÅ¢ 7 Ê Ç¹ ÃٻẺ¿ §¡ ªÑè¹ void segment_dot(unsigned char _dot_val)

¾ÒÃÒÁÔàµÍà ·íÒ˹ Ò·Õ¡è Òí ˹´µíÒá˹ §¢Í§¨Ø´ dp ·Õµè Í §¡ÒÃãË áÊ´§¼Å â´Â¤ Ò·Õàè » ¹ä»ä´ ¤Í× 1 ,2, 3 ËÃ×Í 4 â´ÂËÅÑ¡·Õè 1 ¨Ð¹Ñº¨Ò¡·Ò§¢ÇÒÁ×Í _dot_val

4.5.4 ¿ §¡ ª¹Ñè segment_off 㪠»´ ¡ÒÃáÊ´§¼Å¢ ÍÁÙŢͧ LED µÑÇàÅ¢ 7 Ê Ç¹ ÃٻẺ¿ §¡ ªÑè¹ void segment_off(void)

4.5.5 ¿ §¡ ª¹Ñè led8 㪠ÊÒí ËÃѺ¤Çº¤ØÁ¡ÒõԴ/´Ñº¢Í§ LED áÊ´§¼Å 8 ¨Ø´º¹á¼§Ç§¨ÃáÊ´§¼ÅµÑÇàÅ¢ 4 ËÅÑ¡ ÃٻẺ¿ §¡ ªÑè¹ void led8(unsigned char dat)

¾ÒÃÒÁÔàµÍà dat

·íÒ˹ Ò·Õ¡è Òí ˹´¢ ÍÁÙÅà¾×Íè ¤Çº¤ØÁ¡ÒõԴ/´Ñº¢Í§ LED «Ö§è ¡ç¤Í× ¢ ÍÁÙÅ 8 ºÔµ¢Í§¾Íà µ C

4.5.10 ¿ §¡ ª¹Ñè led8_off 㪠¡Òí ˹´ãË LED ÍÂÙ㠹ʶҹдѺ àÁ×Íè ¾Ô¨ÒóÒã¹ÃٻẺ亵 ¢Í ÁÙÅ ÃٻẺ¿ §¡ ªÑè¹ void led8_off()


60 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

4.6 ªØ´¤íÒÊÑ§è ¢ÑºÁÍàµÍà 俵ç 4.6.1 ¡ÒÃàª×Íè Áµ Í·Ò§ÎÒà ´áÇà ¡Ò÷´Êͺ¤íÒÊÑ觹Õéµ Í§¹íÒἧǧ¨Ã¤Çº¤ØÁ MicroBOX µ ͡Ѻἧǧ¨Ã¢ÑºÁÍàµÍà 俵ç (ἧǧ¨Ã ZX-DCM2) ÊíÒËÃѺÁÍàµÍà ªÍ § 1 µ ÍÊÒ¨ҡ¨Ø´µ Í PD2 ¢Í§á¼§Ç§¨Ã MicroBOX ࢠҡѺ¨Ø´ DIR1A ¢Í§á¼§Ç§¨Ã¢ÑºÁÍàµÍà l µ ÍÊÒ¨ҡ¨Ø´µ Í PD3 ¢Í§á¼§Ç§¨Ã MicroBOX ࢠҡѺ¨Ø´ DIR1B ¢Í§á¼§Ç§¨Ã¢ÑºÁÍàµÍà l µ ÍÊÒ¨ҡ¨Ø´µ Í PD4 ¢Í§á¼§Ç§¨Ã MicroBOX ࢠҡѺ¨Ø´µ Í PWM1E ¢Í§á¼§Ç§¨Ã¢ÑºÁÍàµÍà l ¹íÒÁÍàµÍà 俵çµ Íࢠҷը è ´Ø µ Í OUT1 ¢Í§á¼§Ç§¨Ã¢ÑºÁÍàµÍà l ¹íÒáËÅ §¨ ÒÂä¿ÊíÒËÃѺÁÍàµÍà ÁÒµ Íࢠҷը è ´Ø µ Íä¿àÅÕÂé §¢Í§á¼§Ç§¨Ã¢ÑºÁÍàµÍà +Vm ËÃ×ÍÍÒ¨ 㪠¨Ò¡¨Ø´µ Íä¿àÅÕÂé §¢Í§á¼§Ç§¨Ã MicroBOX ¡çä´ l

ÊíÒËÃѺÁÍàµÍà ªÍ § 2 l

µ ÍÊÒ¨ҡ¨Ø´µ Í PD7 ¢Í§á¼§Ç§¨Ã MicroBOX ࢠҡѺ¨Ø´µ Í DIR2A ¢Í§á¼§Ç§¨Ã¢ÑºÁÍàµÍÃ

l

µ ÍÊÒ¨ҡ¨Ø´µ Í PD6 ¢Í§á¼§Ç§¨Ã MicroBOX ࢠҡѺ¨Ø´µ Í DIR2B ¢Í§á¼§Ç§¨Ã¢ÑºÁÍàµÍÃ

l

µ ÍÊÒ¨ҡ¨Ø´µ Í PD5 ¢Í§á¼§Ç§¨Ã MicroBOX ࢠҡѺ¨Ø´µ Í PWM2E ¢Í§á¼§Ç§¨Ã¢ÑºÁÍàµÍÃ

l

¹íÒÁÍàµÍà 俵çµ Íà¢ Ò·Õ¨è ´Ø µ Í OUT2 ¢Í§á¼§Ç§¨Ã¢ÑºÁÍàµÍÃ

DC MOTOR 6-12V

PB4 PB3

PWM2 DIR2A DIR2B 2E

+VM

2B 2A 2E G

+VM

PA1 PA3 PA5

L293D/SN754410

PB1

PB2 PB0 PA0 PA2 PA4

GND PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 +5V ON

1B 1A 1E +5

+

OFF

OUT1

TxD

ISP

+ Vin -

OUT2

+5V

IPST MicroBOX

DIR1B DIR1A PWM1 1E

ATMEGA16 PA6

ZX-DCM2

RESET

PD3

PA7

+

PD2

PD5

PORTC

+

PD4

PD7

PD1

PD6

DC input

DC MOTOR 6-12V


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 61

4.6.2 ¿ §¡ ª¹Ñè motor

㪠ÊíÒËÃѺ¢ÑºÁÍàµÍà 俵ç ÃٻẺ¿ §¡ ªÑè¹ void motor(char _channel,int _power)

¾ÒÃÒÁÔàµÍÃ

㪠¡Òí ˹´ª ͧ¢Í§ÁÍàµÍà ·µÕè Í §¡ÒâѺ _power 㪠¡Òí ˹´ÃдѺ¡Òè Ò¾Åѧ§Ò¹ãË á¡ ÁÍàµÍà 俵ç ÁÕ¤Ò ã¹ª ǧ -100 ¶Ö§ 100 ¶ Ò¡íÒ˹´¤ Ò _power à» ¹ºÇ¡ (1 ¶Ö§ 100) ·íÒãË ÁÍàµÍà ËÁعä»ã¹·Ôȷҧ˹֧è áµ ¶Ò ¡íÒ˹´¤ Ò_power à» ¹Åº (-1 ¶Ö§ -100) ·íÒãË ÁÍàµÍà ËÁعä»ã¹·Ôȵç¢ ÒÁ Ê Ç¹ã¹¡Ã³Õ¡Òí ˹´¤ Ò _power ãË à» ¹ 0 ÁÍàµÍà ¨ÐËÂØ´ËÁع (á¹Ð¹íÒÇ Ò ã¹¡ÒÃàºÃ¡ ÁÍàµÍà ¤ÇÃàÃÕ¡㪠¿§ ¡ ª¹Ñè motor_stop ¨ÐÊÁºÙó ¡Ç Ò ) _channel

µÑÇÍ ҧ·Õè 4-11 motor(1,60);

//

¢ÑºÁÍàµÍà ªÍ § 1 ´ Ç¡íÒÅѧ 60% ¢Í§¡íÒÅѧÊÙ§ÊØ´

//

¢ÑºÁÍàµÍà ªÍ § 1 ´ Ç¡íÒÅѧ 60% ¢Í§¡íÒÅѧÊÙ§ÊØ´ã¹·Ôȵç¢ ÒÁ

//

¢ÑºÁÍàµÍà ªÍ § 2 ´ Ç¡íÒÅѧ 100% (ÊÙ§ÊØ´)

................ motor(1,-60);

µÑÇÍ ҧ·Õè 4-12 motor(2,100);

4.6.3 ¿ §¡ ª¹Ñè motor_stop 㪠ÊíÒËÃѺËÂØ´¡ÒâѺÁÍàµÍà ÃٻẺ¿ §¡ ªÑè¹ void motor_stop(char _channel)

¾ÒÃÒÁÔàµÍà ·íÒ˹ Ò·Õ¡è Òí ˹´ª ͧ¢Í§ÁÍàµÍà ·µÕè Í §¡ÒÃËÂØ´ àÁ×Íè _channel ¡íÒ˹´à» ¹ 1 ¤×Í ËÂØ´¡ÒâѺÁÍàµÍà ·ª Õè Í § OUT1 _channel ¡íÒ˹´à» ¹ 2 ¤×Í ËÂØ´¡ÒâѺÁÍàµÍà ·ª Õè Í § OUT2 _channel ¡íÒ˹´à» ¹ ALL ¤×Í ËÂØ´¡ÒâѺÁÍàµÍà ·§Ñé Êͧª ͧ _channel

µÑÇÍ ҧ·Õè 4-13 motor_stop(1); motor_stop(2); motor_stop(ALL);

ËÂØ´¡ÒâѺÁÍàµÍà ªÍ § 1 // ËÂØ´¡ÒâѺÁÍàµÍà ªÍ §2 // ËÂØ´¡ÒâѺÁÍàµÍà ·§Ñé 2 ª ͧ (·Ñ§é ª ͧ 1 áÅÐ 2) //


62 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

4.7 ªØ´¤íÒÊѧè ÊÇÔµª ¤Çº¤ØÁÊíÒËÃѺἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ ( Display-io) 4.7.1 ¡ÒÃàª×Íè Áµ Í·Ò§ÎÒà ´áÇà 㹡Ò÷´Êͺ¤íÒÊÑ觹Õé¨Ðµ ͧ¹íÒἧǧ¨Ã¤Çº¤ØÁ MicroBOX µ ͡Ѻἧǧ¨ÃáÊ´§¼ÅáÅÐ ¾Íà µà͹¡»ÃÐʧ¤ (ἧǧ¨Ã Display-io) â´ÂªØ´¤íÒÊÑ§è ¹Õ¨é ÐÍ Ò¹¤ Ò¨Ò¡ÊÇÔµª ¡´µÔ´»Å Í´Ѻ 3 µÑÇ ·Õµè ´Ô µÑ§é ÍÂÙº ¹á¼§Ç§¨Ã Display-io «Ö§è ¡íҡѺª×Íè à» ¹ SW1, SW2 áÅÐ SW3 PORTC

PA7 SDA

DC input

OFF

PA6

IPST MicroBOX

LCD

RS-232

PA0

PB1

PB0

PB3

PB2

I P S T - M i c r oB O X D i s p l a y - io B o a r d

PD0

PD1

PD7

TxD

PD6

PB4

ἧǧ¨ÃËÅÑ¡ MicroBOX ÍÂÙ´ Ò ¹Å Ò§

RxD

PD5

SW3

PD4

SW2

PD3

SW1 RESET

PD2

ATMEGA16

PA2

PA1

+ Vin -

PA3

âÁ´ÙÅ LCD 16 µÑÇÍÑ¡Éà 2 ºÃ÷Ѵ µÔ´µÑ§é ÍÂÙº ¹á¼§Ç§¨Ã Display-io

ON

PA4

PA5

GND PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 +5V

SCL

KNOB PA7

Display-io

ἧǧ¨ÃáÊ´§¼ÅáÅÐ ¾Íà µà͹¡»ÃÐʧ¤

ÊÇÔµª Í¹Ô ¾Øµà¾ÔÁè àµÔÁ ÊÒÁÒö㪠¿§ ¡ ª¹èÑ SW1 ¶Ö§ SW3 ã¹äźÃÒÃÕ ipst.h à¾×Íè Í Ò¹¤ Òä´ â´ÂµÃ§

4.7.2 ¿ §ªÑ¹è ÊíÒËÃÑºÍ Ò¹¤ ÒʶҹÐÊÇÔµª ÁÕ´Ç Â¡Ñ¹ 3 ¿ §¡ ª¹Ñè ¤×Í sw1() 㪠ÊÒí ËÃѺµÃǨÊͺʶҹСÒá´ÊÇÔµª SW1 sw2() 㪠ÊÒí ËÃѺµÃǨÊͺʶҹСÒá´ÊÇÔµª SW2 sw3() 㪠ÊÒí ËÃѺµÃǨÊͺʶҹСÒá´ÊÇÔµª SW3 ÃٻẺ¿ §¡ ªÑè¹ à» ¹ÁÒâ¤Ã¿ §¡ ª¹Ñè ÊíÒËÃÑºÍ Ò¹¤ ÒÅͨԡ¢Í§¢Ò¾Íà µ·Õµè Í Ç§¨ÃࢠҡѺÊÇÔµª

¡Òä׹¤ Ò àÁ×Íè ÊÇÔµª ¶¡Ù ¡´ ¨Ð¤×¹¤ Òà» ¹ 0 àÁ×Íè ÊÇÔµª äÁ ¶¡Ù ¡´ ¨Ð¤×¹¤ Òà» ¹ 1


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 63

µÑÇÍ ҧ·Õè 4-14 void main()

//

â»Ãá¡ÃÁËÅÑ¡

//

ǹÃͺäÁ è٠º

//

µÃǨÊÍºÇ Ò ÊÇÔµª SW1 ¶Ù¡¡´ËÃ×ÍäÁ

{ while(1) { if(sw1()==0) { lcd(“sw1 active!”);

//

sleep(500);

//

áÊ´§¢ ͤÇÒÁÇ Ò ÊÇÔµª ¶¡Ù ¡´ º¹âÁ´ÙÅ LCD ˹ ǧàÇÅÒà¾×Íè áÊ´§¢ ͤÇÒÁ

//

ÊíÒËÃѺ¡Ã³Õ·ÊÕè ÇÔµª äÁ ¶¡Ù ¡´

//

à¤ÅÕÂà ¢Í ¤ÇÒÁ·Õâè Á´ÙÅ LCD

} else { lcd(“#c”); } } }

4.7.3 ¿ §ªÑ¹è ÊíÒËÃÑºÍ Ò¹¤ ÒʶҹÐÊÇÔµª ÁÕ´Ç Â¡Ñ¹ 3 ¿ §¡ ª¹Ñè ¤×Í sw1_press() 㪠ÊÒí ËÃѺµÃǨÊͺʶҹСÒá´ÊÇÔµª SW1 ã¹ÅѡɳСÒÃÃͨ¹

¡Ç Ò¨ÐÁÕ¡Òá´ÊÇÔµª SW1

sw2_press() 㪠ÊÒí ËÃѺµÃǨÊͺʶҹСÒá´ÊÇÔµª SW2 ã¹ÅѡɳСÒÃÃͨ¹

¡Ç Ò¨ÐÁÕ¡Òá´ÊÇÔµª SW2

sw3_press() 㪠ÊÒí ËÃѺµÃǨÊͺʶҹСÒá´ÊÇÔµª SW3 ã¹ÅѡɳСÒÃÃͨ¹

¡Ç Ò¨ÐÁÕ¡Òá´ÊÇÔµª SW3 ÃٻẺ¿ §¡ ªÑè¹

à» ¹ÁÒâ¤Ã¿ §¡ ª¹Ñè ÊíÒËÃѺǹµÃǨÊͺ¡Òá´ÊÇÔµª ã´æ

¾ÒÃÒÁÔàµÍà äÁ ÁÕ


64 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

µÑÇÍ ҧ·Õè 4-15 void main()

//

â»Ãá¡ÃÁËÅÑ¡

{ int i=0;

//

lcd(“Press sw2 to run#c”);

// //

sw2_press();

// //

while(1)

//

»ÃСÒÃȵÑÇá»Ãà¡çº¤ Ò¡ÒùѺ áÊ´§¢ ͤÇÒÁᨠ§Ç Ò ãË ¡´ÊÇÔµª SW2 à¾×Íè ࢠÒÊÙà кº¡ÒùѺ¤ Ò Ãͨ¹¡Ç Ò¨ÐÁÕ¡Òá´ÊÇÔµª SW2 ¨Ö§¨Ð¡ÃзíÒ¤íÒÊÑ§è ºÃ÷Ѵ¶Ñ´ä» ǹÃͺäÁ è٠º

{

} }

lcd(“Count: %d “,i++);

//

sleep(1000);

//

áÊ´§¤ Ò¡ÒùѺ¢Í§µÑÇá»Ã i ·Õâè Á´ÙÅ LCD ˹ ǧàÇÅÒ»ÃÐÁÒ³ 1 ÇÔ¹Ò·Õ


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 65

4.8 ªØ´¤íÒÊѧè ÊíÒËÃѺáÊ´§¼Å¢ ͤÇÒÁ·Õâè Á´ÙÅ LCD Ẻ 16x2 º¹á¼§Ç§¨Ã áÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) 4.8.1 ¡ÒÃàª×Íè Áµ Í·Ò§ÎÒà ´áÇà 㹡Ò÷´Êͺ¤íÒÊÑ觹Õé¨Ðµ ͧ¹íÒἧǧ¨Ã¤Çº¤ØÁ MicroBOX µ ͡Ѻἧǧ¨ÃáÊ´§¼ÅáÅÐ ¾Íà µà͹¡»ÃÐʧ¤ (ἧǧ¨Ã Display-io) â´ÂªØ´¤íÒÊÑ§è ¹Õ¨é Ðà¢Õ¹¤ Òä»áÊ´§¼ÅÂѧâÁ´ÙÅ LCD ¢¹Ò´ 16 µÑÇÍÑ¡Éà 2 ºÃ÷Ѵ·Õµè ´Ô µÑ§é º¹á¼§Ç§¨Ã Display-io »ÃѺ¤ÇÒÁÊÇ Ò§¨ÍáÊ´§¼Å¢Í§âÁ´ÙÅ LCD PORTC

PA7 SDA

DC input

OFF

PA6

IPST MicroBOX

LCD

RS-232

PA0

I P S T - M i c r oB O X ATMEGA16

PA2

PA1

+ Vin -

PA3

ἧǧ¨ÃËÅÑ¡ MicroBOX ÍÂÙ ´ ҹŠҧ

PD0

PD1

PD7

TxD

PD6

RxD

PD5

PB4

RESET

SW3

PD4

PB2 SW2

PD3

PB0

PB3

SW1

PD2

D i s p l a y - io B o a r d PB1

âÁ´ÙÅ LCD 16 µÑÇÍÑ¡Éà 2 ºÃ÷Ѵ µÔ´µÑé§ÍÂÙ º¹á¼§Ç§¨Ã Display-io

ON

PA4

PA5

GND PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 +5V

SCL

KNOB PA7

Display-io

ἧǧ¨ÃáÊ´§¼ÅáÅÐ ¾Íà µà͹¡»ÃÐʧ¤


66 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

4.8.2 ¿ §¡ ª¹Ñè lcd ËÃ×Í LCD 㪠áÊ´§¼Å¢ ͤÇÒÁ·Õâè Á´ÙÅ LCD ¢¹Ò´ 16 µÑÇÍÑ¡Éà 2 ºÃ÷Ѵ ÃٻẺ¿ §¡ ªÑè¹ void lcd(char *p,...)

¾ÒÃÒÁÔàµÍà p 㪠¡Òí ˹´¡ÅØÁ ¢ ͤÇÒÁ·Õµè Í §¡ÒÃáÊ´§¼Å·Õâè Á´ÙÅ LCD â´ÂÊÒÁÒö¡íÒ˹´ÃٻẺ¡ÒÃá·Ã¡

ÊÑ­Åѡɳ ¾àÔ ÈÉà¾×Íè à ÇÁáÊ´§¼Å¤ Ò¢ ÍÁÙŵÑÇàÅ¢ÃٻẺÍ×¹è æ ÍÑ¹ä´ á¡ ÃËÑʺѧ¤Ñº ¡Ò÷íÒ§Ò¹ %c ËÃ×Í %C ãª ÃºÑ ¤ Ò¡ÒÃáÊ´§¼ÅµÑÇÍÑ¡Éà 1 µÑÇ %d ËÃ×Í %D ãª ÃºÑ ¤ Ò¡ÒÃáÊ´§¼ÅàÅ¢°Ò¹ÊÔºµÑ§é áµ -32,768 ¶Ö§ +32,767 %l ËÃ×Í %L ãª ÃºÑ ¤ Ò¡ÒÃáÊ´§¼ÅµÑÇàÅ¢°Ò¹ÊÔºµÑ§é áµ -2,147,483,648 ¶Ö§ +2,147,483,647 %f ËÃ×Í %F ãª ÃºÑ ¤ Òà¾×Íè áÊ´§¼Å¢ ÍÁÙÅẺ¨íҹǹ¨ÃÔ§ (áÊ´§·È¹ÔÂÁ 3 ËÅÑ¡) #c ¤Õ¤ Òí Êѧè à¾×Íè Êѧè à¤ÅÕÂà ¢Í ¤ÇÒÁ¡ ͹áÊ´§¼Åã¹Ãͺ¶Ñ´ä» #n ¤Õ¤ Òí ÊÑ§è ¾ÔàÈÉà¾×Íè ÊÑ§è µÑ´¢ ͤÇÒÁä»áÊ´§·Õºè Ã÷Ѵ·Õè 2

¡Òä׹¤ Ò

äÁ Á¡Õ Òä׹¤ Ò ËÁÒÂà赯 ¡ÒáíÒ˹´ÍСÔÇàÁ¹µ µÍ §µÃ§¡ÑºÅíҴѺÃËÑʺѧ¤Ñº·Õ¨è зíÒ§Ò¹¹Ñ¹é æ ÁÔ©Ð¹Ñ¹é ¡ÒÃáÊ´§¼Å ÍÒ¨à¡Ô´¤ÇÒÁ¼Ô´¾ÅÒ´ä´

µÑÇÍ ҧ·Õè 4-16

lcd(“Hello LCD”);

¼ÅÅѾ¸ ·âÕè Á´ÙÅ LCD à» ¹´Ñ§¹Õé Hello

// áÊ´§¢ ͤÇÒÁ

Hello LCD ·Õâè Á´ÙÅ LCD

LCD

µÑÇÍ ҧ·Õè 4-17 lcd(“abcdefghijklmnopqrstuvwxyz”);

è ¨íҹǹµÑÇÍÑ¡ÉÃà¡Ô¹ 16 µÑÇ ÍÑ¡¢ÃеÑǶѴ仨Ðä»áÊ´§ÂѧºÃ÷Ѵ·Õè 2 ·Ñ¹·Õ // áÊ´§¢ ͤÇÒÁàÁ×Í ¼ÅÅѾ¸ ·âÕè Á´ÙÅ LCD à» ¹´Ñ§¹Õé abcdefghijklmnop qrstuvwxyz


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 67

µÑÇÍ ҧ·Õè 4-18 lcd(“Value: %d unit “,518);

// áÊ´§¢ ͤÇÒÁà ÇÁ¡Ñº¢ ÍÁÙŵÑÇàÅ¢

(518) ·Õâè Á´ÙÅ LCD

¼ÅÅѾ¸ ·âÕè Á´ÙÅ LCD à» ¹´Ñ§¹Õé Value:

518

unit

µÑÇÍ ҧ·Õè 4-19 lcd(“Value: %d “,analog(4));

// Í Ò¹¤ ÒÍйÒÅÍ¡·Õª è Í §

4 (¾Íà µ PA4) ÁÒáÊ´§·Õâè Á´ÙÅ LCD

¼ÅÅѾ¸ ·âÕè Á´ÙÅ LCD à» ¹´Ñ§¹Õé Value:

xxx

â´Â·Õè xxx ¤×Í ¤ Ò·ÕÍè Ò ¹ä´ â´ÂÍÒ¨ÁÕ¤Ò µÑ§é áµ 0 ¶Ö§ 1,023

µÑÇÍ ҧ·Õè 4-20 char c_test=’j’; lcd(“abcd%cxyz”,c_test);

//

áÊ´§µÑÇÍÑ¡Éà j à ÇÁ¡Ñº¢ ͤÇÒÁÍ×¹è æ

//

áÊ´§¢ ͤÇÒÁà ÇÁ¡ÑºµÑÇàÅ¢¨íҹǹ¨ÃÔ§·È¹ÔÂÁ 3 ËÅÑ¡

¼ÅÅѾ¸ ·âÕè Á´ÙÅ LCD à» ¹´Ñ§¹Õé abcd

j

xyz

µÑÇÍ ҧ·Õè 4-21 lcd(“Value: %f “,125.450);

¼ÅÅѾ¸ ·âÕè Á´ÙÅ LCD à» ¹´Ñ§¹Õé Value:

125.450

µÑÇÍ ҧ·Õè 4-22 lcd(“count1: %d #ncount2: %d”,12,48);

áÊ´§¢ ͤÇÒÁà ÇÁ¡Ñº 2 ÃËÑʤǺ¤ØÁ áÅФÕ #n à¾×Íè ¡íÒ˹´ãË ¡ÅØÁ ¢ ͤÇÒÁ·Õµè Í · Ò #n // ¨Ð¶Ù¡µÑ´¹íÒÁÒáÊ´§¼ÅºÃ÷Ѵ·Õè 2 ËÃ×ͺÃ÷ѴŠҧ //

¼ÅÅѾ¸ ·âÕè Á´ÙÅ LCD à» ¹´Ñ§¹Õé count1:

12

count2:

48


68 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

4.9 ªØ´¤íÒÊÑè§ÊíÒËÃѺÃѺ/Ê §¢ ÍÁÙż Ò¹¾Íà µÍ¹Ø¡ÃÁº¹á¼§Ç§¨ÃáÊ´§¼Å áÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) 4.9.1 ¡ÒÃàª×Íè Áµ Í·Ò§ÎÒà ´áÇÃ

㹡Ò÷´Êͺ¤íÒÊÑ§è ¹Õ¨é е ͧ¹íÒἧǧ¨Ã¤Çº¤ØÁ MicroBOX µ ͡Ѻἧǧ¨Ã Display-io áÅе Í ÊÒÂà¢ Ò·Õ¨è ´Ø µ Í SERIAL PORT ¢Í§á¼§Ç§¨Ã Display-io ¡Ñº¾Íà µÍ¹Ø¡ÃÁ RS-232 ¢Í§¤ÍÁ¾ÔÇàµÍà ¡ÒÃàª×Íè Áµ ͡Ѻ¤ÍÁ¾ÔÇàµÍà ÊÒÁÒö·íÒä´ 2 ÅѡɳФ×Í 1. µ ÍࢠҡѺ¾Íà µÍ¹Ø¡ÃÁ RS-232 â´ÂµÃ§ â´Â㪠ÊÒ CX-4 (¨Ñ´ÁҾà ÍÁ¡Ñºá¼§Ç§¨Ã áÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ áÅ Ç) 2. µ ͡Ѻ¾Íà µ USB â´Â¼ Ò¹µÑÇá»Å§ÊÑ­­Ò³¾Íà µ USB à» ¹¾Íà µÍ¹Ø¡ÃÁ ã¹¡Ã³Õ ¹Õãé Ë ·Òí ¡ÒÃÊÅѺÊÒÂÁÒ¨Ò¡ªØ´â»Ãá¡ÃÁ¼ Ò¹¾Íà µÍ¹Ø¡ÃÁ ¹Ñ¹è ¤×Í ËÅѧ¨Ò¡â»Ãá¡ÃÁàÊÃç¨ãË »Å´ÊÒ CX-4 ·Ò§½ § »ÅÑ¡ê âÁ´ÙÅÒ Ã (»ÅÑ¡ê â·ÃÈѾ· ) ÍÍ¡¨Ò¡à¤Ã×Íè §â»Ãá¡ÃÁ áŠǹíÒÁÒµ ÍࢠҡѺ¨Ø´µ ͺ¹á¼§ ǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ á·¹ ¾Ã ÍÁ¡Ñ¹¹Ñ¹é ãË »´ â»Ãá¡ÃÁ AVR Prog. ¡ ͹·íÒ¡ÒÃÃѹ â»Ãá¡ÃÁ´ Ç µ ÍࢠҡѺ¾Íà µÍ¹Ø¡ÃÁ ¢Í§¤ÍÁ¾ÔÇàµÍà â´ÂµÃ§

ÊÒÂ CX-4 UCON-232S

µ ÍÊÒ CX-4 ࢠҡѺ UCON-232S µÑÇá»Å§ÊÑ­­Ò³¾Íà µ USB à» ¹¾Íà µÍ¹Ø¡ÃÁ 㹡óշ¤èÕ ÍÁ¾ÔÇàµÍà äÁ Á¾ Õ Íà µÍ¹Ø¡ÃÁ PORTC

PA7

PA6

IPST MicroBOX

LCD

DC input

OFF

ON

PA4

PA5

GND PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 +5V

SCL

KNOB PA7

RS-232

SDA

PA0

ATMEGA16

PA2

PA1

+ Vin -

PA3

I P S T - M i c r oB O X

TxD

PD0

PD1

PD7

PB4

RxD

PD6

SW3

PD5

PB2 SW2

PD4

PB0

PB3

SW1 ISP

PD3

PB1

RESET

PD2

D i s p l a y - io B o a r d

µ ͡Ѻ¾Íà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍÃ


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 69

4.9.2 ¿ §¡ ª¹Ñè uart ãª Ê §¢ ÍÁÙÅÊÒÂÍÑ¡¢ÃÐÍÍ¡·Ò§Ç§¨ÃÀÒ¤Ê §¢Í§âÁ´ÙÅ UART ã¹äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ATMega16 º¹á¼§Ç§¨Ã MicroBOX â´ÂÁÕ굄 ÃÒàÃçÇ㹡Òö Ò·ʹ¢ ÍÁÙÅàÃÔÁè µ ¹·Õè 9,600 ºÔµµ ÍÇÔ¹Ò·Õ ÃٻẺ¿ §¡ ªÑè¹ void uart(char *p,...)

¾ÒÃÒÁÔàµÍà p 㪠ÊíÒËÃѺ¡íÒ˹´¡ÅØ Á¢ ͤÇÒÁ·Õèµ Í§¡ÒÃÊ §ÍÍ¡ä»Âѧ¾Íà µÍ¹Ø¡ÃÁ¢Í§¤ÍÁ¾ÔÇàµÍà â´Â ÊÒÁÒö¡íÒ˹´ÃٻẺ¡ÒÃá·Ã¡ÊÑ­Åѡɳ ¾àÔ ÈÉà¾×Íè à ÇÁáÊ´§¼Å¤ Ò¢ ÍÁÙŵÑÇàÅ¢ÃٻẺÍ×¹è æ ÍÑ¹ä´ á¡ ÃËÑʺѧ¤Ñº %c ËÃ×Í %C %d ËÃ×Í %D %l ËÃ×Í %L %f ËÃ×Í %F \r \n ËÁÒÂà˵Ø

¡Ò÷íÒ§Ò¹ ãª ÃºÑ ¤ Ò¡ÒÃáÊ´§¼ÅµÑÇÍÑ¡Éà 1 µÑÇ ãª ÃºÑ ¤ Ò¡ÒÃáÊ´§¼ÅàÅ¢°Ò¹ÊÔºµÑ§é áµ -32,768 ¶Ö§ +32,767 ãª ÃºÑ ¤ Ò¡ÒÃáÊ´§¼ÅàÅ¢°Ò¹ÊÔºµÑ§é áµ -2,147,483,648 ¶Ö§ +2,147,483,647 ãª ÃºÑ ¤ Òà¾×Íè áÊ´§¼Å¢ ÍÁÙÅẺ¨íҹǹ¨ÃÔ§ (·È¹ÔÂÁ 3 ËÅÑ¡) ¤Õ¤ Òí ÊÑ§è ¡íÒ˹´ãË ¢Í ¤ÇÒÁªÔ´ä»·Ò§´ Ò¹« Ò¢ͧºÃ÷Ѵ ¤Õ¤ Òí ÊÑ§è ¾ÔàÈÉà¾×Íè ¡íÒ˹´ãË ¢Í ¤ÇÒÁ¢Ö¹é ºÃ÷ѴãËÁ

¡ÒáíÒ˹´ÍСÔÇàÁ¹µ µÍ §µÃ§¡ÑºÅíҴѺÃËÑʺѧ¤Ñº ÁÔ©Ð¹Ñ¹é ¡ÒÃáÊ´§¼ÅÍÒ¨¼Ô´¾ÅÒ´ä´

4.9.3 ¿ §¡ ª¹Ñè uart_set_baud 㪠¡íÒ˹´ÍѵÃҺʹËÃ×ÍÍѵÃÒàÃçÇ㹡ÒÃÊ×èÍÊÒâ ÍÁÙšѺ¤ÍÁ¾ÔÇàµÍà ÃٻẺ¿ §¡ ªÑè¹ void uart_set_baud(unsigned int baud)

¾ÒÃÒÁÔàµÍà baud 㪠¡Òí ˹´¤ ÒÍѵÃҺʹ㹡ÒÃÊ×Íè ÊÒâ ÍÁÙÅ͹ءÃÁ¡Ñº¤ÍÁ¾ÔÇàµÍà ¶ ÒËÒ¡äÁ Á¡Õ ÒáíÒ˹´¤ ÒÍѵÃҺʹ ¤ ÒµÑ§é µ ¹·Õãè ª ¨Ð෠ҡѺ 9,600 ºÔµµ ÍÇÔ¹Ò·Õ

µÑÇÍ ҧ·Õè 4-23 uart_set_baud(4800);

//

¡íÒ˹´ÍѵÃҺʹ㹡ÒÃÊ×Íè ÊÒâ ÍÁÙÅà» ¹ 4,800 ºÔµµ ÍÇÔ¹Ò·Õ


70 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

¡ÒÃµÑ§é ¤ ÒáÅÐ㪠§Ò¹â»Ãá¡ÃÁ Hyper Terminal

1. àÁ×Íè à» ´â»Ãá¡ÃÁ Hyper Terminal ¨Ð»ÃÒ¡¯Ë¹ Òµ Ò§¡íÒ˹´ª×Íè ¡ÒÃàª×Íè Áµ Í ÃкتÍ×è 㹪 ͧ Name : áŠǤÅÔ¡ OK Hyper Terminal à» ¹â»Ãá¡ÃÁà·Íà Á¹Ô ÍÅ¢¹Ò´àÅç¡·Õãè ª ÊÍ×è ÊÒâ ÍÁÙŠ͹ءÃÁÃÐËÇ Ò§¤ÍÁ¾ÔÇàµÍà ¡ºÑ ÍØ»¡Ã³ ÀÒ¹͡¼ Ò¹·Ò§¾Íà µÍ¹Ø¡ÃÁ ÊÒÁÒö㪠§Ò¹Ã ÇÁ¡Ñº¾Íà µÍ¹Ø¡ÃÁàÊÁ×͹·Õàè ¡Ô´¨Ò¡µÑÇá»Å§ÊÑ­­Ò³ ¾Íà µ USB à» ¹¾Íà µÍ¹Ø¡ÃÁ áÅÐÍØ»¡Ã³ ºÅÙ·¸Ù ´Í§à¡ÔÅ·Õ·è Òí §Ò¹ã¹ áºº SPP (Serial port profile) ÊÒÁÒöµÔ´µ ͡Ѻἧǧ¨Ã MicroBOX ·Õµè ´Ô µÑ§é ἧǧ¨ÃáÊ´§¼ÅáÅоÍà µà͹¡»ÃÐʧ¤ (Display-io) äÇ áÅ Ç ¼ Ò¹·Ò§¾Íà µÍ¹Ø¡ÃÁà¾×Íè Ê §áÅÐÃѺ¢ ÍÁÙÅÁÒáÊ´§¼ÅÂѧ¤ÍÁ¾ÔÇàµÍà 2. àÅ×Í¡¾Íà µÍ¹Ø¡ÃÁÊíÒËÃѺàª×Íè Áµ ͡Ѻâ»Ãá¡ÃÁ Hyper Terminal ¨Ò¡µÑÇÍ ҧ໠¹ COM1 áŠǤÅÔ¡»ØÁ OK

3. ¡íÒ˹´¤ ÒÁҵðҹ㹡ÒÃÊ×Íè ÊÒâ ÍÁÙÅ ´Ñ§ÃÙ» â´Â¡íÒ˹´à» ¹ 9600 ºÔµµ ÍÇÔ¹Ò·Õ 8 ºÔµ¢ ÍÁÙÅ 1 ºÔµËÂØ´ äÁ ÁºÕ µÔ ¾ÒÃÔ µÕé àÁ×Íè µÑ§é ¤ ÒáÅ Ç ¡´»ØÁ OK ¨Ð»ÃÒ¡¯Ë¹ Òµ Ò§·íÒ§Ò¹ËÅÑ¡¢Í§ Hyper Terminal ¾Ã ÍÁÊíÒËÃѺ¡ÒõԴµ ÍÊ×Íè ÊÒâ ÍÁÙÅ


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 71

4.9.4 ¿ §¡ ª¹Ñè uart_getkey 㪠ÃѺ¢ ÍÁÙÅ·ÕèÁÒ¨Ò¡¾Íà µÍ¹Ø¡ÃÁ¼ Ò¹¡ÒÃÊ×èÍÊÒâ ÍÁÙÅ͹ءÃÁ¡Ñº¤ÍÁ¾ÔÇàµÍà ÃٻẺ¿ §¡ ªÑè¹ char uart_getkey(void)

¾ÒÃÒÁÔàµÍà äÁ Á¡Õ Òä׹¤ Ò

¡Òä׹¤ Ò l

¨Ð¤×¹¤ Òà» ¹ 0 àÁ×Íè ÂѧäÁ Á¡Õ ÒÃÃѺÍÑ¡¢ÃÐã´æ ࢠÒÁÒÂѧÀÒ¤ÃѺ¢Í§âÁ´ÙÅÊ×Íè ÊÒâ ÍÁÙÅ͹ءÃÁ

l

àÁ×èÍÁÕ¡ÒÃÃѺÍÑ¡¢ÃÐࢠÒÁÒÂѧâÁ´ÙÅÊ×èÍÊÒâ ÍÁÙÅ͹ءÃÁ ¨Ð¤×¹¤ Ò·ÕèµÃ§¡ÑºÍÑ¡¢ÃйÑé¹æ

¨Ò¡¿ §¡ ªÑè¹

µÑÇÍ ҧ·Õè 4-24 void main()

//

â»Ãá¡ÃÁËÅÑ¡

//

ǹÃͺäÁ è٠º

//

µÃǨ¨Ñº¡Òá´á» ¹¤Õ a Ç Ò¶Ù¡¡´ËÃ×ÍäÁ

{ while(1) { if(uart_getkey()==’a’) { lcd(“Key a Active!”);

//

sleep(1000);

//

áÊ´§¢ ͤÇÒÁÇ Ò¨Ñºä´ ÇÒ ÁÕ¡Òá´á» ¹¤Õ a ˹ ǧàÇÅÒáÊ´§¢ ͤÇÒÁ»ÃÐÁÒ³ 1 ÇÔ¹Ò·Õ

//

à¤ÅÕÂà ¢Í ¤ÇÒÁ·Õ¨è ÍáÊ´§¼Å¢Í§âÁ´ÙÅ LCD

} else { lcd(“#c”); } } }

ËÁÒÂà赯 ¡ÒÃàÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè uart à¾×Íè Ê §¢ ÍÁÙÅÍÍ¡·Ò§ä»Âѧ¾Íà µÍ¹Ø¡ÃÁáÅп §¡ ª¹Ñè uart_getkey à¾×Íè µÃǨ¨ÑºÍÑ¡ÉÃÐã´æ¹Ñ¹é ÍѵÃҺʹËÃ×ÍÍѵÃÒàÃçÇ㹡ÒÃÊ×Íè ÊÒâ ÍÁÙÅÃÐËÇ Ò§âÁ´ÙÅÊ×Íè ÊÒâ ÍÁÙÅ͹ءÃÁä´ ¶¡Ù ¡íÒ˹´à» ¹ 9,600 ºÔµµ ÍÇÔ¹Ò·Õ ¨íҹǹºÔµ¢ ÍÁÙÅ 8 ºÔµ áÅÐäÁ 㪠§Ò¹ºÔµ¾ÒÃÔµâÕé ´ÂÍѵâ¹ÁÑµÔ (à» ¹¤ ÒµÑ§é µ ¹) àÁ×Íè ÁÕ¡ÒÃàÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè ´Ñ§¡Å ÒÇ «Ö§è ¶×Íà» ¹ÍѵÃҺʹËÃ×ÍÍѵÃÒàÃçÇ㹡Òö Ò·ʹ¢ ÍÁÙÅÁÒµÃÒ°Ò¹·Õ¹è ÂÔ Á㪠§Ò¹ â´Â·ÑÇè ä» à¾×Íè Å´¤ÇÒÁ«Ñº« ͹㹡ÒÃà¢Õ¹â»Ãá¡ÃÁŧ áµ àÁ×Íè ¼Ù¾ ² Ñ ¹Òâ»Ãá¡ÃÁµ ͧ¡ÒÃà»ÅÕÂè ¹á»Å§¤ ÒÍѵÃҺʹ 㹡ÒÃÊ×Íè ÊÒâ ÍÁÙÅ¡çÊÒÁÒö·íÒä´ â´ÂàÃÕ¡¡ÒáíÒ˹´¤ Ò¨Ò¡¿ §¡ ª¹Ñè uart_set_baud â´Â¼Ù¾ ² Ñ ¹Ò¤ÇäíÒ¹Ö§ ¶Ö§´ ÇÂÇ Ò àÁ×Íè ÍѵÃҺʹ㹡ÒÃÊ×Íè ÊÒÃÊÙ§¢Ö¹é ÍÒ¨Ê §¼Å¡Ãзºµ ͤÇÒÁ¶Ù¡µ ͧ㹡ÒÃÊ×Íè ÊÒâ ÍÁÙÅ´ ÇÂ


72 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

4.10 ªØ´¤íÒÊÑ§è ¡íÒà¹Ô´àÊÕ§

4.10.1 ¡ÒÃàª×Íè Áµ Í·Ò§ÎÒà ´áÇà 㹡Ò÷´ÊͺªØ´¤íÒÊÑ§è ¹Õ¨é е ͧ¹íÒἧǧ¨ÃÅíÒ⾧໠Ââ« (ZX-SPEAKER) µ ÍࢠҡѺἧǧ¨Ã ¤Çº¤ØÁËÅÑ¡ MicroBOX ·Õ¨è ´Ø µ ;Íà µã´æ ÊÒÁÒöµ ͡Ѻ ¢Ò¾Íà µã´æ ¢Í§ ATmega16 SPEAKER

PB4 PB2

PB3

TxD

PB0

PB1

RxD ISP

PD3

RESET

PD2

PD5

PD1

PD4

PD7

PD0

PD6

PA7

PA6

PA3 PA5

PA1

PA2 PA4

GND PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 +5V ON

OFF

DC input

+ Vin -

PA0

ATMEGA16 PORTC

IPST MicroBOX

4.10.1 ¿ §¡ ª¹Ñè beep beep_a àÅ×Í¡¡íÒà¹Ô´àÊÕ§¤ÇÒÁ¶Õè 2000Hz ·Õ¢ è ÒÊÑ­­Ò³ã´æ ¹Ò¹ 10 ÁÔÅÅÔÇ¹Ô Ò·Õ¨Ò¡¾Íà µ A beep_b àÅ×Í¡¡íÒà¹Ô´àÊÕ§¤ÇÒÁ¶Õè 2000Hz ·Õ¢ è ÒÊÑ­­Ò³ã´æ ¹Ò¹ 10 ÁÔÅÅÔÇ¹Ô Ò·Õ¨Ò¡¾Íà µ B beep_c àÅ×Í¡¡íÒà¹Ô´àÊÕ§¤ÇÒÁ¶Õè 2000Hz ·Õ¢ è ÒÊÑ­­Ò³ã´æ ¹Ò¹ 10 ÁÔÅÅÔÇ¹Ô Ò·Õ¨Ò¡¾Íà µ C beep_d àÅ×Í¡¡íÒà¹Ô´àÊÕ§¤ÇÒÁ¶Õè 2000Hz ·Õ¢ è ÒÊÑ­­Ò³ã´æ ¹Ò¹ 10 ÁÔÅÅÔÇ¹Ô Ò·Õ¨Ò¡¾Íà µ D

ÃٻẺ¿ §¡ ªÑè¹ void beep_a(char ch) void beep_b(char ch) void beep_c(char ch) void beep_d(char ch)

¾ÒÃÒÁÔàµÍà ch

·íÒ˹ Ò·Õ¡è Òí ˹´¢ÒÊÑ­­Ò³·Õµè Í §¡ÒáÅѺÅͨԡ«Ö§è ÁÕ¤Ò µÑ§é áµ 0 ¶Ö§ 7


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 73

4.10.2 ¿ §¡ ª¹Ñè sound

ÊíÒËÃѺàÅ×Í¡¡íÒà¹Ô´àÊÕ§·Õ¢è ÒÊÑ­­Ò³ã´æ ¨Ò¡¾Íà µ A sound_b ÊíÒËÃѺàÅ×Í¡¡íÒà¹Ô´àÊÕ§·Õ¢ è ÒÊÑ­­Ò³ã´æ ¨Ò¡¾Íà µ B sound_c ÊíÒËÃѺàÅ×Í¡¡íÒà¹Ô´àÊÕ§·Õ¢ è ÒÊÑ­­Ò³ã´æ ¨Ò¡¾Íà µ C sound_d ÊíÒËÃѺàÅ×Í¡¡íÒà¹Ô´àÊÕ§·Õ¢ è ÒÊÑ­­Ò³ã´æ ¨Ò¡¾Íà µ D ÃٻẺ¿ §¡ ªÑè¹ sound_a

void void void void

sound_a(char sound_b(char sound_c(char sound_d(char

ch,int ch,int ch,int ch,int

freq,int freq,int freq,int freq,int

time) time) time) time)

¾ÒÃÒÁÔàµÍà ·íÒ˹ Ò·Õ¡è Òí ˹´¢ÒÊÑ­­Ò³·Õµè Í §¡ÒáÅѺÅͨԡ«Ö§è ÁÕ¤Ò µÑ§é áµ 0 ¶Ö§ 7 freq ·íÒ˹ Ò·Õ¡ è Òí ˹´¤ÇÒÁ¶ÕÊè ­ Ñ ­Ò³àÊÕ§ time ·íÒ˹ Ò·Õ¡ è Òí ˹´ª ǧàÇÅÒ㹡ÒáíÒà¹Ô´àÊÕ§໠¹¨íҹǹàµçÁ෠Ңͧ 0.1 ÁÔÅÅÔÇ¹Ô Ò·Õ ch

µÑÇÍ ҧ·Õè 4-26 beep_d(2); sound_b(4,800,500);

¡íÒà¹Ô´àÊÕ§¤ÇÒÁ¶Õè 2000Hz ¹Ò¹ 10 ÁÔÅÅÔÇ¹Ô Ò·Õ¨Ò¡¢Ò¾Íà µ PA2 // ¡íÒà¹Ô´àÊÕ§¤ÇÒÁ¶Õè 800 Hz ¹Ò¹ 50 ÁÔÅÅÔǹ Ô Ò·Õ¨Ò¡¢Ò¾Íà µ P4 //


74 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 75

º··Õè 5

äźÃÒÃÕÁҵðҹ¢Í§ WinAVR ¤ÍÁä¾àÅÍà 㹺··Õè 4 ä´ ¹Òí àʹÍÃÒÂÅÐàÍÕ´¢Í§ä¿Å äźÃÒÃÕ ipst.h «Ö§è ¶Ù¡Í͡ẺÁÒà¾×Íè ãË ¡ÒþѲ¹Ò â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺªØ´¡Å ͧÊÁͧ¡Å IPST Micro-BOX ·íÒä´ §Ò  â´ÂÀÒÂã¹ä¿Å äźÃÒÃÕ ipst.h ä´ ¼¹Ç¡ä¿Å äźÃÒÃՠͧ͢¿ §¡ ªÑè¹äÇ à» ¹¨íҹǹÁÒ¡ à¾×èÍãË ÊÒÁÒöÃͧÃѺ¡Ñº¡Ò÷íÒ§Ò¹·Õèᵡ µ Ò§¡Ñ¹ «Ö§è ¼Ù¾ ² Ñ ¹Òâ»Ãá¡ÃÁàͧÊÒÁÒö·Õ¨è ÐàÃÕ¡㪠ä¿Å äźÃÒÃÕÂÍ ÂàËŠҹѹé ੾ÒÐ â´ÂäÁ µÍ §¼¹Ç¡ ä¿Å äźÃÒÃÕ ipst.h ·Ñ§é ËÁ´à¢ Òä»ã¹ä¿Å â»Ãà¨ç¡µ ··Õè Òí ¡ÒþѲ¹Ò¡çä´ ·Ñ§é ¹Õàé ¾×Íè Å´¢¹Ò´¢Í§â»Ãá¡ÃÁ áÅЪ ÇÂãË ¡ÒúÃÔËÒ÷ÃѾÂҡâͧÃкºà» ¹ä»Í ҧÁÕ»ÃÐÊÔ·¸ÔÀÒ¾ ¹Í¡à˹×ͨҡ¡ÒÃàÃÕ¡㪠§Ò¹ä¿Å äźÃÒÃÕ ipst.h áÅСÒÃàÃÕ¡㪠ä¿Å äźÃÒÃÕÂÍ ÂÀÒÂã¹ä¿Å äźÃÒÃÕ ipst.h áÅ Ç ÂѧÁÕ¡ÅØÁ ¢Í§ä¿Å äźÃÒÃÕʹѺ¡Ò÷íÒ§Ò¹ã¹Ê ǹÍ×¹è æ ·Õ¹è Ò Ê¹ã¨ÍÕ¡¾ÍÊÁ¤Çà ·ÕÁè Ҿà ÍÁ¡Ñº¤ÍÁä¾àÅÍà WinAVR ÍÑ¹ä´ á¡ math.h, string.h, stdlib.h, ctype.h áÅÐ stdio.h â´ÂÁÕ ÃÒÂÅÐàÍÕ´·Õè¤Ç÷ÃÒº´Ñ§¹Õé

5.1 äźÃÒÃÕ math.h ¿ §¡ ªÑè¹·ÕèºÃèØÍÂÙ ÀÒÂã¹äźÃÒÃÕ¹Õéà» ¹¡ÅØ Á¢Í§¿ §¡ ªÑè¹·Õè㪠¤íҹdz·Ò§¤³ÔµÈÒʵÃ

5.1.1 ¿ §¡ ª¹Ñè sqrt ÊíÒËÃѺ¤íҹdz¤ ÒÃÒ¡·ÕèÊͧ¢Í§µÑÇàÅ¢·Õè¡íÒ˹´ ÃٻẺ¿ §¡ ªÑè¹ double sqrt(double x)

¾ÒÃÒÁÔàµÍà x

¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡ÒöʹÃÒ¡·ÕÊè ͧ

¡Òä׹¤ Ò ¤ ÒÃÒ¡·ÕÊè ͧ¢Í§ x


76 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.1.2 ¿ §¡ ª¹Ñè exp ÊíÒËÃѺ¤íҹdz¤ Ò ex(e = 2.71828) ÃٻẺ¿ §¡ ªÑè¹ double exp(double x)

¾ÒÃÒÁÔàµÍà x

¤×ͤ Ò¡íÒÅѧ

¡Òä׹¤ Ò ¼ÅÅѾ¸ ¢Í§ ex

5.1.3 ¿ §¡ ª¹Ñè log10 ÊíÒËÃѺ¤íҹdz¤ ÒÅÍ¡ÒÃÔ¸ÖÁ°Ò¹ÊÔº ÃٻẺ¿ §¡ ªÑè¹ double log10(double x)

¾ÒÃÒÁÔàµÍà x

¤×ͤ ÒµÑÇàÅ¢·Õµè Í §¡Òöʹ¤ ÒÅÍ¡ÒÃÔ¸ÁÖ °Ò¹ÊÔº

¡Òä׹¤ Ò ¼ÅÅѾ¸ ¢Í§ log x

5.1.4 ¿ §¡ ª¹Ñè log ÊíÒËÃѺ¤íҹdz¤ ÒÅÍ¡ÒÃÔ¸ÁÖ °Ò¹¸ÃÃÁªÒµÔËÃ×Í ln ÃٻẺ¿ §¡ ªÑè¹ double log(double x)

¾ÒÃÒÁÔàµÍà x

¤×ͤ ÒµÑÇàÅ¢·Õµè Í §¡Òöʹ¤ ÒÅÍ¡ÒÃÔ¸ÁÖ °Ò¹¸ÃÃÁªÒµÔ

¡Òä׹¤ Ò ¼ÅÅѾ¸ ¢Í§ ln x


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.1.5 ¿ §¡ ª¹Ñè pow ¤íҹdz¤ ÒàŢ¡¡íÒÅѧ ÃٻẺ¿ §¡ ªÑè¹ double pow(double x,double y)

¾ÒÃÒÁÔàµÍà ¤×ͤ Ò°Ò¹ y ¤×ÍàÅ¢ªÕ¡ é Òí Åѧ x

¡Òä׹¤ Ò ¼ÅÅѾ¸ ¢Í§ xy

5.1.6 ¿ §¡ ª¹Ñè sin ¤íҹdz¤ Ò sine ·Ò§µÃÕ⡳ÁÔµ¢Ô ͧµÑÇàÅ¢·Õ¡è Òí ˹´ ÃٻẺ¿ §¡ ªÑè¹ double sin(double x)

¾ÒÃÒÁÔàµÍà x

¤×ͤ ÒµÑÇàÅ¢·Õµè Í §¡Òöʹ¤ Ò sine «Ö§è ÁÕ˹ ÇÂà» ¹àÃà´Õ¹

¡Òä׹¤ Ò ¤ Ò sine ¢Í§ x

5.1.7 ¿ §¡ ª¹Ñè cos ¤íҹdz¤ Ò cosine ·Ò§µÃÕ⡳ÁÔµ¢Ô ͧµÑÇàÅ¢·Õ¡è Òí ˹´ ÃٻẺ¿ §¡ ªÑè¹ double cos(double x)

¾ÒÃÒÁÔàµÍà x

¤×ͤ ÒµÑÇàÅ¢·Õµè Í §¡Òöʹ¤ Ò cosine «Ö§è ÁÕ˹ ÇÂà» ¹àÃà´Õ¹

¡Òä׹¤ Ò ¤ Ò cosine ¢Í§ x

l 77


78 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.1.8 ¿ §¡ ª¹Ñè tan ¤íҹdz¤ Ò tangent ·Ò§µÃÕ⡳ÁÔµ¢Ô ͧµÑÇàÅ¢·Õ¡è Òí ˹´ ÃٻẺ¿ §¡ ªÑè¹ double tan(double x)

¾ÒÃÒÁÔàµÍà x

¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡Òöʹ¤ Ò tangent ÁÕ˹ ÇÂà» ¹àÃà´Õ¹

¡Òä׹¤ Ò ¤ Ò tangent ¢Í§ x

5.1.9 ¿ §¡ ª¹Ñè asin ¤íҹdz¤ Ò Arc sine ·Ò§µÃÕ⡳ÁÔµ¢Ô ͧµÑÇàÅ¢·Õ¡è Òí ˹´ ÃٻẺ¿ §¡ ªÑè¹ double asin(double x)

¾ÒÃÒÁÔàµÍà x

¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡Òöʹ¤ Ò arcsine ÁÕ˹ ÇÂà» ¹àÃà´Õ¹

¡Òä׹¤ Ò ¤ Ò arcsine ¢Í§ x ËÃ×Í sin-1 (x)

5.1.10 ¿ §¡ ª¹Ñè acos ¤íҹdz¤ Ò Arc cosine ·Ò§µÃÕ⡳ÁÔµ¢Ô ͧµÑÇàÅ¢·Õ¡è Òí ˹´ ÃٻẺ¿ §¡ ªÑè¹ double acos(double x)

¾ÒÃÒÁÔàµÍà x

¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡Òöʹ¤ Ò cosine ÁÕ˹ ÇÂà» ¹àÃà´Õ¹

¡Òä׹¤ Ò ¤ Ò arccosine ¢Í§ x ËÃ×Í cos-1 (x)


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.1.11 ¿ §¡ ª¹Ñè atan ¤íҹdz¤ Ò Arc tangent ·Ò§µÃÕ⡳ÁÔµ¢Ô ͧµÑÇàÅ¢·Õ¡è Òí ˹´ ÃٻẺ¿ §¡ ªÑè¹ double atan(double x)

¾ÒÃÒÁÔàµÍà x

¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡Òöʹ¤ Ò tangent ÁÕ˹ ÇÂà» ¹àÃà´Õ¹

¡Òä׹¤ Ò ¤ Ò arctangent ¢Í§ x ËÃ×Í tan-1 (x)

5.1.12 ¿ §¡ ª¹Ñè atan2 ¤íҹdz¤ Ò Arc tangent ·Ò§µÃÕ⡳ÁÔµ¢Ô ͧàÈÉÊ Ç¹·Õ¡è Òí ˹´ ÃٻẺ¿ §¡ ªÑè¹ double atan2(double x,double y)

¾ÒÃÒÁÔàµÍà ¤×Í ¤ ÒµÑÇàÅ¢àÈÉ y ¤×Í ¤ ÒµÑÇàÅ¢Ê Ç¹ x

¡Òä׹¤ Ò ¤ Ò Arc tangent ¢Í§ x/y ËÃ×Í tan-1 (x/y)

5.1.13 ¿ §¡ ª¹Ñè sinh ¤íҹdz¤ Ò hyperbolic sine ¢Í§µÑÇàÅ¢·Õ¡è Òí ˹´ ÃٻẺ¿ §¡ ªÑè¹ double sinh(double x)

¾ÒÃÒÁÔàµÍà x

¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡Òöʹ¤ Ò hyperbolic sine

¡Òä׹¤ Ò ¤ Ò hyperbolic sine ¢Í§ x

l 79


80 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.1.14 ¿ §¡ ª¹Ñè cosh ¤íҹdz¤ Ò hyperbolic cosine ¢Í§µÑÇàÅ¢·Õ¡è Òí ˹´ ÃٻẺ¿ §¡ ªÑè¹ double cosh(double x)

¾ÒÃÒÁÔàµÍà x

¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡Òöʹ¤ Ò hyperbolic cosine

¡Òä׹¤ Ò ¤ Ò hyperbolic cosine ¢Í§ x

5.1.15 ¿ §¡ ª¹Ñè tanh ¤íҹdz¤ Ò hyperbolic tangent ¢Í§µÑÇàÅ¢·Õ¡è Òí ˹´ ÃٻẺ¿ §¡ ªÑè¹ double tanh(double x)

¾ÒÃÒÁÔàµÍà x

¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡Òöʹ¤ Ò hyperbolic tangent

¡Òä׹¤ Ò ¤ Ò hyperbolic tangent ¢Í§ x

5.1.16 ¿ §¡ ª¹Ñè ceil ¤íҹdz¤ Ò´ Ç¡Òû ´àÈÉ¢Ö鹢ͧàÅ¢·È¹ÔÂÁ ÃٻẺ¿ §¡ ªÑè¹ double ceil(double x)

¾ÒÃÒÁÔàµÍà x

¤×Í ¤ ÒµÑÇàÅ¢·È¹ÔÂÁ·Õ¹è Òí ÁÒ¤íҹdz

¡Òä׹¤ Ò ¤ Ò·Õäè ´ ¨Ò¡¡Òû ´àÈÉ¢Ö¹é ¢Í§ x


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.1.17 ¿ §¡ ª¹Ñè floor ¤íҹdz¤ Ò´ Ç¡Òû ´àÈÉŧ¢Í§àÅ¢·È¹ÔÂÁ ÃٻẺ¿ §¡ ªÑè¹ double floor(double x)

¾ÒÃÒÁÔàµÍà x

¤×Í ¤ ÒµÑÇàÅ¢·È¹ÔÂÁ·Õ¹è Òí ÁÒ¤íҹdz

¡Òä׹¤ Ò ¤ Ò·Õäè ´ ¨Ò¡¡Òû ´àÈÉŧ¢Í§ x

5.1.18 ¿ §¡ ª¹Ñè fmod à» ¹¿ §¡ ªÑè¹ËÒÃà¾×èÍàÍÒàÈɢͧàÅ¢·È¹ÔÂÁÊͧ¤ Ò ÃٻẺ¿ §¡ ªÑè¹ double fmod(double x,double y)

¾ÒÃÒÁÔàµÍà x ¤×Í ¤ ÒàÈÉ y ¤×Í ¤ ÒÊ Ç¹

¡Òä׹¤ Ò àÈɨҡ¡ÒÃËÒâͧ x/y

5.1.19 ¿ §¡ ª¹Ñè modf ¤íҹdz¨íҹǹàµçÁáÅÐàÈɢͧàÅ¢·È¹ÔÂÁà¾×èÍá¡ͧ¤ »ÃСͺ ÃٻẺ¿ §¡ ªÑè¹ double modf(double x,double * y)

¾ÒÃÒÁÔàµÍà ¤×Í àÅ¢·È¹ÔÂÁ·Õµè Í §¡ÒÃá¡ͧ¤ »ÃСͺ y ¤×Í à» ¹µÑǪÕàé ÈÉ·Õäè ´ ¨Ò¡á¡ͧ¤ »ÃСͺ¢Í§ x x

¡Òä׹¤ Ò ¨íҹǹàµçÁ¢Í§ x (áµ Â§Ñ ¤§à» ¹ª¹Ô´¢ ÍÁÙÅ double)

l 81


82 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.2 äźÃÒÃÕ string.h

ºÃèءÅØÁ ¢Í§¿ §¡ ª¹Ñè ·Õãè ª 㹡ÒèѴ¡ÒÃà¡ÕÂè ǡѺÊÒÂÍÑ¡¢ÃÐËÃ×ÍʵÃÔ§ã¹ÀÒÉÒ C

5.2.1 ¿ §¡ ª¹Ñè strrchr ¤ ¹ËÒÍÑ¡¢ÃеÑÇ· ÒÂÊØ´ÀÒÂã¹ÊÒÂÍÑ¡¢ÃзÕè¡íÒ˹´ ÃٻẺ¿ §¡ ªÑè¹ char *strrchr(const char *s, int c)

¾ÒÃÒÁÔàµÍà ¤×Í ÍÑ¡¢Ãзյè Í §¡ÒÃËÒÀÒÂã¹ÊÒÂÍÑ¡¢ÃÐ s ·Õ¶è ¡Ù ¡íÒ˹´ s ¤×Í ÊÒÂÍÑ¡¢Ãзա è Òí ˹´ c

¡Òä׹¤ Ò ¤×¹¤ ÒáÍ´à´ÃʢͧÍÑ¡¢ÃÐ c áµ ¶Ò äÁ ¾º¨Ð¤×¹¤ Ò NULL

5.2.2 ¿ §¡ ª¹Ñè strchr ¤ ¹ËÒÍÑ¡¢ÃеÑÇááÊØ´ÀÒÂã¹ÊÒÂÍÑ¡¢ÃзÕè¡íÒ˹´ ÃٻẺ¿ §¡ ªÑè¹ char *strchr(char *s, int c)

¾ÒÃÒÁÔàµÍà ¤×Í ÍÑ¡¢Ãзյè Í §¡ÒÃËÒÀÒÂã¹ÊÒÂÍÑ¡¢ÃÐ s ·Õ¶è ¡Ù ¡íÒ˹´ s ¤×ÍÊÒÂÍÑ¡¢Ãзա è Òí ˹´ c

¡Òä׹¤ Ò ¤×¹¤ ÒáÍ´à´ÃʢͧÍÑ¡¢ÃÐ c áµ ¶Ò äÁ ¾º¨Ð¤×¹¤ Ò NULL

5.2.3 ¿ §¡ ª¹Ñè strcat µ ÍÊÒÂÍÑ¡¢ÃÐࢠҴ Ç¡ѹ ÃٻẺ¿ §¡ ªÑè¹ char *strcat(char *p1, char *p2)

¾ÒÃÒÁÔàµÍà ¤×Í ÊÒÂÍÑ¡¢ÃЪش˹ Ò p2 ¤×Í ÊÒÂÍÑ¡¢ÃЪشËÅѧ p1

¡Òä׹¤ Ò ¤×¹¤ ÒáÍ´à´Ãʢͧ p1 â´Âä´ ÊÒÂÍÑ¡¢ÃÐãËÁ ·àÕè ¡Ô´¢Ö¹é ¨Ò¡¡Òõ Í´ ÇÂÊÒÂÍÑ¡¢ÃÐ p2


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.2.4 ¿ §¡ ª¹Ñè strncat µ ÍÊÒÂÍÑ¡¢ÃÐࢠҴ Ç¡ѹµÒÁ¨íҹǹµÑÇ·Õè¡íÒ˹´ ÃٻẺ¿ §¡ ªÑè¹ char *strncat(char *p1, char *p2, int n)

¾ÒÃÒÁÔàµÍà ¤×Í ÊÒÂÍÑ¡¢ÃЪش˹ Ò p2 ¤×Í ÊÒÂÍÑ¡¢ÃЪشËÅѧ n ¤×Í ¤ Ò·ÕÃè кبÒí ¹Ç¹µÑÇÍÑ¡¢Ãзյ è Í §¡ÒÃãË ¹Òí ÁÒµ Í p1

¡Òä׹¤ Ò ¤×¹¤ ÒáÍ´à´Ãʢͧ p1 â´Âä´ ÊÒÂÍÑ¡¢ÃÐãËÁ ·àÕè ¡Ô´¢Ö¹é ¨Ò¡¡Òõ Í´ ÇÂÊÒÂÍÑ¡¢ÃÐ p2

5.2.5 ¿ §¡ ª¹Ñè strcpy ¤Ñ´ÅÍ¡ÊÒÂÍÑ¡¢ÃÐ ÃٻẺ¿ §¡ ªÑè¹ char *strcpy(char *p1, char *p2)

¾ÒÃÒÁÔàµÍà ¤×Í µÑǪÕÊé ÒÂÍÑ¡¢ÃлÅÒ·ҧ p2 ¤×Í ÊÒÂÍÑ¡¢Ãзյ è Í §¡ÒäѴÅÍ¡ p1

¡Òä׹¤ Ò ¤×¹¤ ÒáÍ´à´Ãʢͧ p1 â´Âä´ ÊÒÂÍÑ¡¢ÃÐãËÁ ¨Ò¡¡ÒäѴÅÍ¡ÊÒÂÍÑ¡¢ÃÐ p2 ä»Âѧ p1

5.2.6 ¿ §¡ ª¹Ñè strncpy ¤Ñ´ÅÍ¡ÊÒÂÍÑ¡¢ÃÐâ´ÂÃкبíÒµÑÇÍÑ¡¢ÃзÕèµ Í§¡ÒäѴÅÍ¡ ÃٻẺ¿ §¡ ªÑè¹ char *strncpy(char *p1, char *p2, int n)

¾ÒÃÒÁÔàµÍà ¤×Í µÑǪÕÊé ÒÂÍÑ¡¢ÃлÅÒ·ҧ p2 ¤×Í ÊÒÂÍÑ¡¢Ãзյ è Í §¡ÒäѴÅÍ¡ n ¤×Í ¤ Ò·ÕÃè кبÒí ¹Ç¹µÑÇÍÑ¡¢Ãзյ è Í §¡ÒäѴÅÍ¡ p1

¡Òä׹¤ Ò ¤×¹¤ ÒáÍ´à´Ãʢͧ p1 â´Âä´ ÊÒÂÍÑ¡¢ÃÐãËÁ ¨Ò¡¡ÒäѴÅÍ¡ÊÒÂÍÑ¡¢ÃÐ p2 ä»Âѧ p1

l 83


84 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.2.7 ¿ §¡ ª¹Ñè strcmp à»ÃÕºà·ÕºÊÒÂÍÑ¡¢ÃÐ ÃٻẺ¿ §¡ ªÑè¹ int strcmp(char *p1, char *p2)

¾ÒÃÒÁÔàµÍà ¤×Í µÑǪÕÊé ÒÂÍÑ¡¢ÃЪشáá p2 ¤×Í µÑǪÕÊ é ÒÂÍÑ¡¢ÃЪش·ÕÊè ͧ p1

¡Òä׹¤ Ò ¶ ÒÍÑ¡¢Ãзժè âÕé ´Â p1 áÅÐ p2 àËÁ×͹¡Ñ¹·Ø¡»ÃСÒèФ׹¤ Òà» ¹ 0 áµ ¶Ò ÅíҴѺÍÑ¡¢Ãзժè âÕé ´Â p1>p2 ¨Ð¤×¹¤ Òà» ¹¤ Һǡ áµ ¶Ò p1<p2 ¨Ð¤×¹¤ Òà» ¹¤ Òź

5.2.8 ¿ §¡ ª¹Ñè strncmp à»ÃÕºà·ÕºÊÒÂÍÑ¡¢ÃзÕèÊÒÁÒö¡íÒ˹´¨íҹǹµÑÇÍÑ¡¢ÃзÕèµ Í§¡ÒÃà»ÃÕºà·ÕÂºä´ ÃٻẺ¿ §¡ ªÑè¹ int strncmp(char *p1, char *p2 ,int n)

¾ÒÃÒÁÔàµÍà ¤×Í µÑǪÕÊé ÒÂÍÑ¡¢ÃЪشáá p2 ¤×Í µÑǪÕÊ é ÒÂÍÑ¡¢ÃЪش·ÕÊè ͧ n ¤×Í ¤ Ò·ÕÃè кبÒí ¹Ç¹µÑÇÍÑ¡¢Ãзյ è Í §¡ÒÃãË ¹Òí ÁÒà»ÃÕºà·Õº p1

¡Òä׹¤ Ò ¶ ÒÍÑ¡¢Ãзժè âÕé ´Â p1 áÅÐ p2 àËÁ×͹¡Ñ¹·Ø¡»ÃСÒÃÊíÒËÃѺ n µÑÇáá¨Ð¤×¹¤ Òà» ¹ 0 áµ ¶Ò ÅíҴѺ ÍÑ¡¢Ãзժè âÕé ´Â p1>p2 ¨Ð¤×¹¤ Òà» ¹¤ Һǡ áµ ¶Ò p1<p2 ¨Ð¤×¹¤ Òà» ¹¤ Òź

5.2.9 ¿ §¡ ª¹Ñè strlen µÃǨÊͺ¤ÇÒÁÂÒǢͧÊÒÂÍÑ¡¢ÃÐ ÃٻẺ¿ §¡ ªÑè¹ int strlen(char *p1)

¾ÒÃÒÁÔàµÍà p1

¤×͵ÑǪÕÊé ÒÂÍÑ¡¢Ãзչè Òí ÁÒµÃǨÊͺ

¡Òä׹¤ Ò ¤×¹¤ Ò¤ÇÒÁÂÒǢͧÊÒÂÍÑ¡¢ÃÐ


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 85

5.3 äźÃÒÃÕ stdlib.h ¿ §¡ ª¹Ñè ·Õºè ÃèØÍÂÙÀ ÒÂã¹äźÃÒÃÕ¹àÕé » ¹¡ÅØÁ ¢Í§¿ §¡ ª¹Ñè ·Õãè ª á»Å§¢ ÍÁÙÅÃٻẺµ Ò§æ áÅкҧ Ê Ç¹ÊíÒËÃѺ¤íҹdz·Ò§¤³ÔµÈÒʵÃ

5.3.1 ¿ §¡ ª¹Ñè atoi á»Å§ÊÒÂÍÑ¡¢ÃÐ(áÍÊ¡Õ)é ä»à» ¹àÅ¢¨íҹǹàµçÁª¹Ô´ int ÃٻẺ¿ §¡ ªÑè¹ int atoi(const char *s)

¾ÒÃÒÁÔàµÍà s

¤×Í ÊÒÂÍÑ¡¢Ãзյè Í §¡ÒÃá»Å§ä»à» ¹àÅ¢¨íҹǹàµçÁ

¡Òä׹¤ Ò àÅ¢¨íҹǹàµçÁª¹Ô´ int ·Õäè ´ ¨Ò¡¡ÒÃá»Å§

5.3.2 ¿ §¡ ª¹Ñè atol á»Å§ÊÒÂÍÑ¡¢ÃÐ(áÍÊ¡Õ)é ä»à» ¹àÅ¢¨íҹǹàµçÁª¹Ô´ long ÃٻẺ¿ §¡ ªÑè¹ int atol(const char *s)

¾ÒÃÒÁÔàµÍà s

¤×Í ÊÒÂÍÑ¡¢Ãзյè Í §¡ÒÃá»Å§ä»à» ¹àÅ¢¨íҹǹàµçÁ

¡Òä׹¤ Ò àÅ¢¨íҹǹàµçÁª¹Ô´ long ·Õäè ´ ¨Ò¡¡ÒÃá»Å§

5.3.3 ¿ §¡ ª¹Ñè atof á»Å§ÊÒÂÍÑ¡¢ÃÐ (áÍÊ¡Õ)é ä»à» ¹àÅ¢·È¹ÔÂÁ ÃٻẺ¿ §¡ ªÑè¹ double atof(const char *s)

¾ÒÃÒÁÔàµÍà s

¤×Í ÊÒÂÍÑ¡¢Ãзյè Í §¡ÒÃá»Å§ä»à» ¹àÅ¢·È¹ÔÂÁ

¡Òä׹¤ Ò àÅ¢·È¹ÔÂÁ·Õäè ´ ¨Ò¡¡ÒÃá»Å§


86 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.3.4 ¿ §¡ ª¹Ñè strtod á»Å§ÊÒÂÍÑ¡¢ÃÐ(áÍÊ¡Õé)ä»à» ¹àÅ¢·È¹ÔÂÁ ÃٻẺ¿ §¡ ªÑè¹ double strtod(const char *s,char **endptr)

¾ÒÃÒÁÔàµÍà ¤×Í ÊÒÂÍÑ¡¢Ãзյè Í §¡ÒÃá»Å§ä»à» ¹àÅ¢·È¹ÔÂÁ endptr ¤×Í µÑǪÕàé ¡çºµíÒá˹ §¼ÅÅѾ¸ ú Ñ ¤ Òà» ¹µÑÇá»Ã¾Í¹ àµÍà s

¡Òä׹¤ Ò à» ¹àÅ¢·È¹ÔÂÁ àÁ×Íè ¡ÒÃá»Å§à» ¹ä»Í ҧÊÁºÙó ¨Ð¤×¹¤ Ò NULL ¡ÅѺÁÒ·Õè endptr áµ ¶Ò äÁ ÊÁºÙó ËÃ×Íá»Å§äÁ ä´ ¨Ð¤×¹áÍ´à´ÃÊ·Õ¼è ´Ô ¾ÅÒ´¡ÅѺÁÒÂѧ endptr

5.3.5 ¿ §¡ ª¹Ñè strtol ÊíÒËÃѺá»Å§ÊÒÂÍÑ¡¢ÃÐ(áÍÊ¡Õ)é ä»à» ¹àÅ¢¨íҹǹàµçÁª¹Ô´ long ÃٻẺ¿ §¡ ªÑè¹ long strtol(const char *s,char **endptr,int base)

¾ÒÃÒÁÔàµÍà ¤×Í ÊÒÂÍÑ¡¢Ãзյè Í §¡ÒÃá»Å§ä»à» ¹àÅ¢¨íÒ¹íÒàµçÁª¹Ô´ long endptr ¤×Í µÑǪÕàé ¡çºµíÒá˹ §¼ÅÅѾ¸ ú Ñ ¤ Òà» ¹µÑÇá»Ã¾Í¹ àµÍà base ¤×Í °Ò¹·Õ¨ è СíÒ˹´ã¹¡ÒÃá»Å§àª ¹ 2, 8, 10 ËÃ×Í 16 à» ¹µ ¹ s

¡Òä׹¤ Ò à» ¹àÅ¢¨íҹǹàµçÁª¹Ô´ long àÁ×Íè ¡ÒÃá»Å§à» ¹ä»Í ҧÊÁºÙó ¨Ð¤×¹¤ Ò NULL ¡ÅѺÁÒ·Õè endptr áµ ¶Ò äÁ ÊÁºÙó ËÃ×Íá»Å§äÁ ä´ ¨Ð¤×¹áÍ´à´ÃÊ·Õ¼è ´Ô ¾ÅÒ´¡ÅѺÁÒÂѧ endptr


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 87

5.3.6 ¿ §¡ ª¹Ñè strtoul á»Å§ÊÒÂÍÑ¡¢ÃÐ (áÍÊ¡Õ)é ä»à» ¹àÅ¢¨íҹǹàµçÁª¹Ô´ unsigned long ÃٻẺ¿ §¡ ªÑè¹ long strtoul(const char *s,char **endptr,int base)

¾ÒÃÒÁÔàµÍà ¤×Í ÊÒÂÍÑ¡¢Ãзյè Í §¡ÒÃá»Å§ä»à» ¹àÅ¢¨íҹǹàµçÁª¹Ô´ long endptr ¤×Í µÑǪÕàé ¡çºµíÒá˹ §¼ÅÅѾ¸ ú Ñ ¤ Òà» ¹µÑÇá»Ã¾Í¹ àµÍà base ¤×Í °Ò¹·Õ¨ è СíÒ˹´ã¹¡ÒÃá»Å§àª ¹ 2, 8, 10 ËÃ×Í 16 à» ¹µ ¹ s

¡Òä׹¤ Ò à» ¹àÅ¢¨íҹǹàµçÁª¹Ô´ unsigned long àÁ×Íè ¡ÒÃá»Å§à» ¹ä»Í ҧÊÁºÙó ¨Ð¤×¹¤ Ò NULL ¡ÅѺÁÒ·Õè endptr áµ ¶Ò äÁ ÊÁºÙó ËÃ×Íá»Å§äÁ ä´ ¨Ð¤×¹áÍ´à´ÃÊ·Õ¼è ´Ô ¾ÅÒ´¡ÅѺÁÒÂѧ endptr

5.3.7 ¿ §¡ ª¹Ñè itoa á»Å§àÅ¢¨íҹǹàµçÁª¹Ô´ int ä»à» ¹ÊÒÂÍÑ¡¢ÃÐ ÃٻẺ¿ §¡ ªÑè¹ char *itoa(int val, char *s, int radix)

¾ÒÃÒÁÔàµÍà ¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡ÒùíÒä»á»Å§ s ¤×Í ÍÐààËÃ×;͹ àµÍà ·¹ Õè Òí ÁÒà¡çº¤ ÒÊÒÂÍÑ¡¢ÃзÕäè ´ ¨Ò¡¡ÒÃá»Å§ radix ¤×Í °Ò¹·Õ¨ è СíÒ˹´ã¹¡ÒÃá»Å§àª ¹ 2, 8, 10 ËÃ×Í 16 à» ¹µ ¹ val

¡Òä׹¤ Ò ¤×¹¤ ÒáÍ´à´ÃʢͧÊÒÂÍÑ¡¢ÃШҡ¡ÒÃá»Å§


88 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.3.8 ¿ §¡ ª¹Ñè utoa á»Å§àÅ¢¨íҹǹàµçÁª¹Ô´ unsigned int ä»à» ¹ÊÒÂÍÑ¡¢ÃÐ ÃٻẺ¿ §¡ ªÑè¹ char *utoa(unsigned int val, char *s, int radix)

¾ÒÃÒÁÔàµÍà ¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡ÒùíÒä»á»Å§ s ¤×Í ÍÐààËÃ×;͹ àµÍà ·¹ Õè Òí ÁÒà¡çº¤ ÒÊÒÂÍÑ¡¢ÃзÕäè ´ ¨Ò¡¡ÒÃá»Å§ radix ¤×Í °Ò¹·Õ¨ è СíÒ˹´ã¹¡ÒÃá»Å§àª ¹ 2, 8, 10 ËÃ×Í16 à» ¹µ ¹ val

¡Òä׹¤ Ò ¤×¹¤ ÒáÍ´à´ÃʢͧÊÒÂÍÑ¡¢ÃШҡ¡ÒÃá»Å§

5.3.9 ¿ §¡ ª¹Ñè ltoa á»Å§àÅ¢¨íҹǹàµçÁª¹Ô´ long ä»à» ¹ÊÒÂÍÑ¡¢ÃÐ ÃٻẺ¿ §¡ ªÑè¹ char *ltoa(long val, char *s, int radix)

¾ÒÃÒÁÔàµÍà ¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡ÒùíÒä»á»Å§ s ¤×Í ÍÐààËÃ×;͹ àµÍà ·¹ Õè Òí ÁÒà¡çº¤ ÒÊÒÂÍÑ¡¢ÃзÕäè ´ ¨Ò¡¡ÒÃá»Å§ radix ¤×Í °Ò¹·Õ¨ è СíÒ˹´ã¹¡ÒÃá»Å§àª ¹ 2, 8, 10 ËÃ×Í 16 à» ¹µ ¹ val

¡Òä׹¤ Ò ¤×¹¤ ÒáÍ´à´ÃʢͧÊÒÂÍÑ¡¢ÃШҡ¡ÒÃá»Å§

5.3.10 ¿ §¡ ª¹Ñè ultoa á»Å§àÅ¢¨íҹǹàµçÁª¹Ô´ unsigned long ä»à» ¹ÊÒÂÍÑ¡¢ÃÐ ÃٻẺ¿ §¡ ªÑè¹ char *ultoa(unsigned long val, char *s, int radix)

¾ÒÃÒÁÔàµÍà ¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡ÒùíÒä»á»Å§ s ¤×Í ÍÐààËÃ×;͹ àµÍà ·¹ Õè Òí ÁÒà¡çº¤ ÒÊÒÂÍÑ¡¢ÃзÕäè ´ ¨Ò¡¡ÒÃá»Å§ radix ¤×Í°Ò¹·Õ¨ è СíÒ˹´ã¹¡ÒÃá»Å§àª ¹ 2, 8, 10 ËÃ×Í 16 à» ¹µ ¹ val

¡Òä׹¤ Ò ¤×¹¤ ÒáÍ´à´ÃʢͧÊÒÂÍÑ¡¢ÃШҡ¡ÒÃá»Å§


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 89

5.3.11 ¿ §¡ ª¹Ñè dtostrf á»Å§àÅ¢·È¹ÔÂÁä»à» ¹ÊÒÂÍÑ¡¢ÃÐã¹ÃٻẺ [-]dd.dd â´Â·Õè d ¤×͵ÑÇàÅ¢°Ò¹ÊÔº ÃٻẺ¿ §¡ ªÑè¹ char *dtostrf(double val, char width, char prec, char *s)

¾ÒÃÒÁÔàµÍà ¤×Í ¤ ÒµÑÇàÅ¢·Õµè Í §¡ÒùíÒä»á»Å§ width ¤×Í ¨íҹǹËÅÑ¡¢Í§µÑÇàÅ¢·Ñ§é ËÁ´ã¹¡ÒÃáÊ´§¼Å (¤ÍÁä¾àÅÍà ¨Ð¾ÂÒÂÒÁ»ÃѺãË ã¡Å à¤Õ§) prec ¤×Í ¨íҹǹËÅÑ¡¢Í§·È¹ÔÂÁ㹡ÒÃá»Å§ s ¤×ÍÍÐààËÃ×;͹ àµÍà ·¹ Õè Òí ÁÒà¡çº¤ ÒÊÒÂÍÑ¡¢ÃзÕäè ´ ¨Ò¡¡ÒÃá»Å§ val

¡Òä׹¤ Ò ¤×¹¤ ÒáÍ´à´ÃʢͧÊÒÂÍÑ¡¢ÃШҡ¡ÒÃá»Å§

5.3.12 ¿ §¡ ª¹Ñè dtostre á»Å§àÅ¢·È¹ÔÂÁä»à» ¹ÊÒÂÍÑ¡¢ÃÐã¹ÃٻẺ [-]dd.dde±dd â´Â·Õè d ¤×Í µÑÇàÅ¢°Ò¹ÊÔº áÅÐ e ¤×Í àÅ¢°Ò¹ÊÔº·ÕÂè ¡¡íÒÅѧ´ Ç ±dd µÑÇÍ ҧ 2300.00 ¨Ð¶Ù¡á»Å§à» ¹ 2.3e+03

ÃٻẺ¿ §¡ ªÑè¹ char *dtostre(double val, char *s, unsigned char prec,unsigned char flags);

¾ÒÃÒÁÔàµÍà ¤×ͤ ÒµÑÇàÅ¢·Õµè Í §¡ÒùíÒä»á»Å§ s ¤×Í ÍÐààËÃ×;͹ àµÍà ·¹ Õè Òí ÁÒà¡çº¤ ÒÊÒÂÍÑ¡¢ÃзÕäè ´ ¨Ò¡¡ÒÃá»Å§ prec 㪠ÃкبÒí ¹Ç¹ËÅÑ¡¢Í§·È¹ÔÂÁ㹡ÒÃá»Å§ flags 㪠¡Ò í ˹´ÃٻẺà¤Ã×Íè §ËÁÒÂ㹡ÒÃá»Å§ ¡Ã³Õáá ¶ Ò¡íÒ˹´ flags à» ¹ DTOSTR_ALWAYS_SIGN àÁ×Íè ¤ ÒµÑÇàŢ໠¹¤ Һǡ¨ÐàÇ ¹ª Í§Ç Ò§ 1 ª ᷹ͧ¡ÒÃáÊ´§à¤Ã×Íè §ËÁÒ¤ Ò·Õè à» ¹ºÇ¡¹Ñ¹é áµ ¶Ò à» ¹¤ Òź¡ç¨ÐãÊ à¤Ã×Íè §ËÁÒÂź´ ҹ˹ ÒµÒÁ»¡µÔ ¡Ã³Õ·ÊÕè ͧ ¶ Ò¡íÒ˹´ flags à» ¹ DTOSTR_PLUS_SIGN àÁ×Íè ¤ ÒµÑÇàŢ໠¹¤ Һǡ¨ÐäÁ àÇ ¹ª Í§Ç Ò§ 1 ª ᷹ͧ¡ÒÃáÊ´§à¤Ã×Íè §ËÁÒ¤ Ò ·Õàè » ¹ºÇ¡¹Ñ¹é áµ ¶Ò à» ¹¤ Òź¡ç¨ÐãÊ à¤Ã×Íè §ËÁÒÂź´ ҹ˹ ÒµÒÁ»¡µÔ val

¡Òä׹¤ Ò ¤×¹¤ ÒáÍ´à´ÃʢͧÊÒÂÍÑ¡¢ÃШҡ¡ÒÃá»Å§


90 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.3.13 ¿ §¡ ª¹Ñè rand ÊØÁ ¤ ÒµÑÇàÅ¢ª ǧµÑ§é áµ 0 ¶Ö§ 32,767 ÃٻẺ¿ §¡ ªÑè¹ int rand()

¡Òä׹¤ Ò àÅ¢¨íҹǹàµçÁª¹Ô´ int ·Õäè ´ ¨Ò¡¡ÒÃÊØÁ

5.3.14 ¿ §¡ ª¹Ñè srand ¡íÒ˹´¤ ÒµÑ§é µ ¹ã¹¡ÒÃÊØÁ ¢Í§¿ §¡ ª¹Ñè rand ÃٻẺ¿ §¡ ªÑè¹ void srand(unsigned int seed)

¾ÒÃÒÁÔàµÍà seed

¡íÒ˹´¤ ÒµÑ§é µ ¹ã¹¡ÒÃÊØÁ

5.3.15 ¿ §¡ ª¹Ñè random ÊØÁ ¤ ÒµÑÇàÅ¢ª ǧµÑ§é áµ 0 ¶Ö§ 2,147,483,647 ÃٻẺ¿ §¡ ªÑè¹ long random()

¡Òä׹¤ Ò àÅ¢¨íҹǹàµçÁª¹Ô´ long ·Õäè ´ ¨Ò¡¡ÒÃÊØÁ

5.3.16 ¿ §¡ ª¹Ñè srandom ¡íÒ˹´¤ ÒµÑ§é µ ¹ã¹¡ÒÃÊØÁ ¢Í§¿ §¡ ª¹Ñè random ÃٻẺ¿ §¡ ªÑè¹ void srandom(unsigned long seed)

¾ÒÃÒÁÔàµÍà seed

¡íÒ˹´¤ ÒµÑ§é µ ¹ã¹¡ÒÃÊØÁ


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 91

5.4 äźÃÒÃÕ ctype.h ¿ §¡ ª¹Ñè ·Õºè ÃèØÍÂÙÀ ÒÂã¹äźÃÒÃÕ¹àÕé » ¹¡ÅØÁ ¢Í§¿ §¡ ª¹Ñè ·Õãè ª µÃǨÊͺ áÅÐá»Å§ÍÑ¡¢Ãе Ò§æ

5.4.1 ¿ §¡ ª¹Ñè isalnum µÃǨÊͺ¤ ҢͧÍÑ¡¢ÃÐÇ Òà» ¹ÍÑ¡¢ÃÐÊÁÒªÔ¡ÀÒÂã¹ A ¶Ö§ Z , a ¶Ö§ z , 0 ¶Ö§ 9 ËÃ×ÍäÁ ÃٻẺ¿ §¡ ªÑè¹ int isalnum(int c)

¾ÒÃÒÁÔàµÍà c

¤×Í¢ ÍÁÙÅÍÑ¡¢Ãзչè Òí ÁÒµÃǨÊͺ

¡Òä׹¤ Ò ¤×¹¤ Òà» ¹ 1 àÁ×Íè àÁ×Íè ÍÑ¡¢ÃÐ c à» ¹ÊÁÒªÔ¡ÀÒÂã¹ A ¶Ö§ Z , a ¶Ö§ z , 0 ¶Ö§ 9 ¤×¹¤ Òà» ¹ 0 ¶ ÒäÁ ãª

5.4.2 ¿ §¡ ª¹Ñè isalpha µÃǨÊͺ¤ ҢͧÍÑ¡¢ÃÐÇ Òà» ¹ÍÑ¡¢ÃÐÊÁÒªÔ¡ÀÒÂã¹ A ¶Ö§ Z ËÃ×Í a ¶Ö§ z ËÃ×ÍäÁ ÃٻẺ¿ §¡ ªÑè¹ int isalpha(int c)

¾ÒÃÒÁÔàµÍà c ¤×Í¢ ÍÁÙÅÍÑ¡¢Ãзչè Òí ÁÒµÃǨÊͺ

¡Òä׹¤ Ò ¤×¹¤ Òà» ¹ 1 àÁ×Íè àÁ×Íè ÍÑ¡¢ÃÐ c à» ¹ÊÁÒªÔ¡ÀÒÂã¹ A ¶Ö§ Z ËÃ×Í a ¶Ö§ z ¤×¹¤ Òà» ¹ 0 ¶ ÒäÁ ãª

5.4.3 ¿ §¡ ª¹Ñè isascii µÃǨÊ꼂 Òà» ¹ÃËÑÊáÍÊ¡Õé (ÁÕ¤Ò µÑ§é áµ 0x20 ¶Ö§ 0x7E) ËÃ×ÍäÁ ÃٻẺ¿ §¡ ªÑè¹ int isascii(int c)

¾ÒÃÒÁÔàµÍà c

¤×Í¢ ÍÁÙÅÍÑ¡¢Ãзչè Òí ÁÒµÃǨÊͺ

¡Òä׹¤ Ò ¤×¹¤ Òà» ¹ 1 àÁ×Íè àÁ×Íè c à» ¹ÃËÑÊáÍÊ¡Õé áÅФ׹¤ Òà» ¹ 0 ¶ ÒäÁ ãª


92 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.4.4 ¿ §¡ ª¹Ñè isdigit µÃǨÊ꼂 Òà» ¹ÍÑ¡¢ÃÐÊÁÒªÔ¡ÀÒÂã¹ 0 ¶Ö§ 9 ËÃ×ÍäÁ ÃٻẺ¿ §¡ ªÑè¹ int isdigit(int c)

¾ÒÃÒÁÔàµÍà c

¤×Í¢ ÍÁÙÅÍÑ¡¢Ãзչè Òí ÁÒµÃǨÊͺ

¡Òä׹¤ Ò ¤×¹¤ Òà» ¹ 1 àÁ×Íè àÁ×Íè ÍÑ¡¢ÃÐ c à» ¹ÊÁÒªÔ¡ÀÒÂã¹ 0 ¶Ö§ 9 ¤×¹¤ Òà» ¹ 0 ¶ ÒäÁ ãª

5.4.5 ¿ §¡ ª¹Ñè isupper µÃǨÊ꼂 Òà» ¹ÍÑ¡¢ÃÐÊÁÒªÔ¡ÀÒÂã¹ A ¶Ö§ Z (ÍÑ¡ÉõÑǾÔÁ¾ ãË­ )ËÃ×ÍäÁ ÃٻẺ¿ §¡ ªÑè¹ int isupper(int c)

¾ÒÃÒÁÔàµÍà c

¤×Í¢ ÍÁÙÅÍÑ¡¢Ãзչè Òí ÁÒµÃǨÊͺ

¡Òä׹¤ Ò ¤×¹¤ Òà» ¹ 1 àÁ×Íè àÁ×Íè ÍÑ¡¢ÃÐ c à» ¹ÊÁÒªÔ¡ÀÒÂã¹ A ¶Ö§ Z ¤×¹¤ Òà» ¹ 0 ¶ ÒäÁ ãª

5.4.6 ¿ §¡ ª¹Ñè islower µÃǨÊ꼂 Òà» ¹ÍÑ¡¢ÃÐÊÁÒªÔ¡ÀÒÂã¹ a ¶Ö§ z (ÍÑ¡ÉõÑǾÔÁ¾ àÅç¡)ËÃ×ÍäÁ ÃٻẺ¿ §¡ ªÑè¹ int islower(int c)

¾ÒÃÒÁÔàµÍà c

¤×Í¢ ÍÁÙÅÍÑ¡¢Ãзչè Òí ÁÒµÃǨÊͺ

¡Òä׹¤ Ò ¤×¹¤ Òà» ¹ 1 àÁ×Íè àÁ×Íè ÍÑ¡¢ÃÐ c à» ¹ÊÁÒªÔ¡ÀÒÂã¹ a ¶Ö§ z ¤×¹¤ Òà» ¹ 0 ¶ ÒäÁ ãª


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

l 93

5.4.7 ¿ §¡ ª¹Ñè isxdigit µÃǨÊ꼂 Òà» ¹ÍÑ¡¢ÃÐÊÁÒªÔ¡ÀÒÂã¹ A ¶Ö§ Z , a ¶Ö§ z ËÃ×Í 0 ¶Ö§ 9 ËÃ×ÍäÁ (·íÒ§Ò¹ àËÁ×͹¡Ñº isalnum) ÃٻẺ¿ §¡ ªÑè¹ int isxdigit(int c)

¾ÒÃÒÁÔàµÍà c

¤×Í¢ ÍÁÙÅÍÑ¡¢Ãзչè Òí ÁÒµÃǨÊͺ

¡Òä׹¤ Ò ¤×¹¤ Òà» ¹ 1 àÁ×Íè àÁ×Íè ÍÑ¡¢ÃÐ c à» ¹ÊÁÒªÔ¡ÀÒÂã¹ A ¶Ö§ Z , a ¶Ö§ z ËÃ×Í 0 ¶Ö§ 9 ¤×¹¤ Òà» ¹ 0 ¶ ÒäÁ ãª

5.4.8 ¿ §¡ ª¹Ñè isspace µÃǨÊ꼂 Òà» ¹ÍÑ¡¢ÃÐÊÁÒªÔ¡ÀÒÂã¹ 0x09 ¶Ö§ 0x0D ËÃ×Í 0x20 «Ö§è ¡ç¤Í× ª Í§Ç Ò§ ËÃ×ÍäÁ ÃٻẺ¿ §¡ ªÑè¹ int isspace(int c)

¾ÒÃÒÁÔàµÍà c

¤×Í¢ ÍÁÙÅÍÑ¡¢Ãзչè Òí ÁÒµÃǨÊͺ

¡Òä׹¤ Ò ¤×¹¤ Òà» ¹ 1 àÁ×Íè àÁ×Íè ÍÑ¡¢ÃÐ c à» ¹ÊÁÒªÔ¡ÀÒÂã¹ 0x09 ¶Ö§ 0x0D ËÃ×Í 0x20 ¤×¹¤ Òà» ¹ 0 ¶ ÒäÁ ãª

5.4.9 ¿ §¡ ª¹Ñè iscntrl µÃǨÊ꼂 Òà» ¹ÍÑ¡¢ÃÐÊÁÒªÔ¡ÀÒÂã¹ 0x00 ¶Ö§ 0x7F ËÃ×ÍäÁ ÃٻẺ¿ §¡ ªÑè¹ int iscntrl(int c)

¾ÒÃÒÁÔàµÍà c

¤×Í¢ ÍÁÙÅÍÑ¡¢Ãзչè Òí ÁÒµÃǨÊͺ

¡Òä׹¤ Ò ¤×¹¤ Òà» ¹ 1 àÁ×Íè àÁ×Íè ÍÑ¡¢ÃÐ c à» ¹ÊÁÒªÔ¡ÀÒÂã¹ 0x00 ¶Ö§ 0x7F ¤×¹¤ Òà» ¹ 0 ¶ ÒäÁ ãª


94 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.4.10 ¿ §¡ ª¹Ñè isprint µÃǨÊ꼂 Òà» ¹ÍÑ¡¢ÃÐÊÁÒªÔ¡ÀÒÂã¹ 0x20 ¶Ö§ 0x7F ËÃ×ÍäÁ ÃٻẺ¿ §¡ ªÑè¹ int isprint(int c)

¾ÒÃÒÁÔàµÍà c

¤×Í¢ ÍÁÙÅÍÑ¡¢Ãзչè Òí ÁÒµÃǨÊͺ

¡Òä׹¤ Ò ¤×¹¤ Òà» ¹ 1 àÁ×Íè àÁ×Íè ÍÑ¡¢ÃÐ c à» ¹ÊÁÒªÔ¡ÀÒÂã¹ 0x20 ¶Ö§ 0x7F ¤×¹¤ Òà» ¹ 0 ¶ ÒäÁ ãª

5.4.11 ¿ §¡ ª¹Ñè ispunct µÃǨÊ꼂 Òà» ¹ÍÑ¡¢ÃÐÊÁÒªÔ¡¢Í§à¤Ã×èͧËÁÒÂÇÃäµÍ¹ËÃ×ÍäÁ «Ö觻ÃСͺ´ Ç à¤Ã×èͧ ËÁÒÂà«ÁÔâ¤Ã͹ (;), à¤Ã×Íè §ËÁÒ¤ÍÁÁÒ (,) áÅÐà¤Ã×Íè §ËÁÒªÒà » (#) ÃٻẺ¿ §¡ ªÑè¹ int ispunct(int c)

¾ÒÃÒÁÔàµÍà c

¤×Í¢ ÍÁÙÅÍÑ¡¢Ãзչè Òí ÁÒµÃǨÊͺ

¡Òä׹¤ Ò ¤×¹¤ Òà» ¹ 1 àÁ×Íè àÁ×Íè ÍÑ¡¢ÃÐà» ¹à¤Ã×Íè §ËÁÒÂÇÃäµÍ¹ áÅФ׹¤ Òà» ¹ 0 ¶ ÒäÁ ãª

5.5 äźÃÒÃÕ stdio.h ¿ §¡ ªÑè¹·ÕèºÃèØÍÂÙ ÀÒÂã¹äźÃÒÃÕ¹Õéà» ¹¡ÅØ Á¢Í§¿ §¡ ªÑè¹á»Å§¢ºÇ¹¢ ÍÁÙÅ͹ءÃÁÊíÒËÃѺ µÔ´µ ͡ѺÍÔ¹¾Øµ/àÍÒµ ¾µØ ¢Í§Ãкº ÍÒ·Ô âÁ´ÙÅÊ×Íè ÊÒâ ÍÁÙż Ò¹¾Íà µÍ¹Ø¡ÃÁËÃ×Í UART (¼Ù¾ ² Ñ ¹Ò ÊÒÁÒöàÃÕ¡㪠§Ò¹¿ §¡ ª¹Ñè ·Õ¨è ´Ñ àµÃÕÂÁÁÒãË ÀÒÂã¹äźÃÒÃÕ ipst.h ËÃ×ÍàÃÕ¡â´ÂµÃ§¨Ò¡ uart.h «Ö§è ¨Ð Êдǡ㹡ÒÃ㪠§Ò¹ÁÒ¡¡Ç Ò ã¹¡Ã³Õ·àÕè ÃÔÁè µ ¹¾Ñ²¹Òâ»Ãá¡ÃÁ) ¿ §¡ ªÑè¹Â ÍÂËÅÒÂæ¿ §¡ ªÑè¹ÀÒÂã¹ stdio.h ¨ÐãË ¼ÅÅѾ¸ ¤Å Ò¡Ѻä¿Å äźÃÒÃÕ stdlib.h áÅÐ string.h ·íҧҹà ÇÁ¡Ñ¹ ÊíÒËÃѺ¿ §¡ ª¹Ñè ·Õ¹è Ò Ê¹ã¨¢Í§ä¿Å äźÃÒÃÕ¹¤Õé Í× sprintf «Ö§è 㪠㹡ÒÃá»Å§ÊÒÂÍÑ¡¢ÃÐà» ¹ÃÙ» Ẻµ Ò§æ ÁÕÃÒÂÅÐàÍÕ´â´ÂÊÃØ»´Ñ§¹Õé


¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX

5.5.1 ¿ §¡ ª¹Ñè sprintf á»Å§ÊÒÂÍÑ¡¢ÃÐã¹ÃٻẺµ Ò§æ ÃٻẺ¿ §¡ ªÑè¹ int sprintf(char *s, const char *format, ...)

¾ÒÃÒÁÔàµÍà ¤×Í ÍÐààËÃ×;͹ àµÍà ·¹Õè Òí ÁÒà¡çº¤ ÒÊÒÂÍÑ¡¢ÃзÕäè ´ ¨Ò¡¡ÒÃá»Å§ format ¤×Í ÃٻẺÊÒÂÍÑ¡¢Ãзյ è Í §¡Òà «Ö§è ÁÕÃËÑʺѧ¤Ñº´Ñ§µ Í仹Õé ÃËÑʺѧ¤Ñº ¡Ò÷íÒ§Ò¹ %c ãª ÃºÑ ¤ Ò¡ÒÃáÊ´§¼ÅÍÑ¡¢ÃÐ 1 µÑÇ %d ãª ÃºÑ ¤ ÒµÑÇàŢẺ int °Ò¹ÊÔº %x ãª ÃºÑ ¤ ÒµÑÇàŢẺ int °Ò¹ÊԺˡ %p ãª ÃºÑ ¤ ÒµÑÇàŢẺ int °Ò¹ÊԺˡ(â´ÂÁÕ¾ÃÕ¿¡ 0x ¹íÒ˹ Ò) %f ãª ÃºÑ ¤ ÒµÑÇàŢẺ·È¹ÔÂÁÃٻẺ %e ãª ÃºÑ ¤ ÒµÑÇàŢẺ·È¹ÔÂÁÃٻẺ %s ãª ÃºÑ ¤ ÒÊÒÂÍÑ¡¢ÃÐ ... ¤×Í Ê Ç¹¡íÒ˹´ÍСÔÇàÁ¹µ ãË ÊÁ Ñ ¾Ñ¹¸ ¡ºÑ ÃËÑʺѧ¤Ñºã¹Ê ǹ format s

¡Òä׹¤ Ò ¨íҹǹÍÑ¡¢ÃзÕáè »Å§ä´ ·§Ñé ËÁ´

l 95


96 l ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ

C ÊíÒËÃѺ㪠§Ò¹¡Å ͧÊÁͧ¡Å IPST-MicroBOX


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.