¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ 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