Supayotin na songkla¸«น่วย...การทํางานได้เร็วขึ้น...
Transcript of Supayotin na songkla¸«น่วย...การทํางานได้เร็วขึ้น...
Supayotin na [email protected]
ไมโครคอนโทรลเลอรและไมโครโปรเซสเซอร
• ไมโคร คอนโทรลเลอร คอ อปกรณประเภทสารกงตวนาทรวบรวมฟงกชนการทางานตางๆ ไวภายในตวของมนเอง โดยมโครงสรางใกลเคยงกบคอมพวเตอร คอ ภายในประกอบดวยหนวยรบขอมลและโปรแกรม หนวยประมวลผล หนวยความจา หนวยแสดงผล ซงสวนประกอบเหลานมความสมบรณในตวของมนเอง ทาใหมขนาดเลก และสามารถเขยนโปรแกรมควบคมการทางานของอปกรณตางๆ ทเชอมตอกบตวมน งายตอการนาไปประยกตใชงาน
ไมโครคอนโทรลเลอรและไมโครโปรเซสเซอร
• ไมโคร คอนโทรลเลอร ( Microcontroller ) มาจากคา 2 คา คาหนงคอ ไมโคร ( Micro ) หมายถงขนาดเลก และคาวา คอนโทรลเลอร ( controller)หมายถงตวควบคมหรออปกรณควบคม ดงนน ไมโครคอนโทรลเลอร จงหมายถงอปกรณควบคมขนาดเลก แตในตวอปกรณควบคมขนาดเลกน ไดบรรจความสามารถทคลายคลงกบระบบคอมพวเตอร ทคนโดยสวนใหญคนเคย กลาวคอภายใน ไมโครคอนโทรลเลอร ไดรวมเอาซพย , หนวยความจา และพอรต ซงเปนสวนประกอบหลกสาคญของระบบคอมพวเตอรเขาไวดวยกน โดยทาการบรรจเขาไวในตวถงเดยวกน
• ความแตกตางของ MicroController กบ MicroComputer คอ MicroControllerนนมสมบรณภายในตวของมนเอง คอ มสวนประกอบตางๆ ครบถวน สวน MicroComputer นนตองทางานรวมกบอปกรณขางเคยงทเชอมตอจากภายนอก เชน แปนพมพ เครองอานเขยนแผนบนทก หนวยความจา I/O ฯลฯ
ทาไมตองไมโครคอนโทรลเลอร
• นก ออกแบบ พฒนาผลตภณฑ ตลอดจนนกประดษฐทงหลาย ตางหลกเลยงไมไดเลยทจะตองอาศยวงจรอเลกทรอนกส เขาไปมสวนเกยวของในการควบคม แตครนวงจรอเลกทรอนกสทนามาตออนกรมเพอความสามารถทเราตองการ นนกใหญโตเสยเหลอเกน ดเหมอนจะขดแยงกบความตองการของผบรโภค และหลกการออกแบบผลตภณฑ
• ดงนนไมโครคอนโทรลเลอรจงเขามาเกยว ของ เพอรองรบกบความตองการ นาไปควบคมระบบทความสามารถทเราตองการโดยใหมขนาดเลกทสด แตมใชเพยงแตขนาดเลกเทานน มนยงสามารถปอนชดคาสงใหสามารถทางานไดอยางอตโนมต ดวยรปแบบการเขยนโปรแกรมภาษาตางๆ ตามความถนด
ไมโครคอนโทรลเลอรและไมโครโปรเซสเซอร ตางกนอยางไร ?
• ไมโครคอนโทรลเลอร คอ อปกรณขนาดยอมๆ ทใชควบคมปลายทาง ซงมนจะแทป "ขา" ทใชสาหรบควบคม ใหตอใชงาน ซงเราจะเหนตวมนอยทแผงบอรดวงจรอเลกทรอนกส ถาเราสงเกตดๆ ตวนจะอยใกลๆ อปกรณกาลงทใชขบโหลด เชน รเลย โซลตสเตจ ไตรแอค เอสซอาร เพอสงอปกรณทางกลไฟฟา
• ไมโครโปรเซสเซอร คอ อปกรณขนาดยอมๆ ทใชประมวณผล ประมวณคาสงจากตนทาง ตวนสามารถ คานวณหาผลลพธเกง ซงจะมความเรวสง ซงมนจะไมแทป "ขา" ทใชสาหรบควบคมใหตอใชงาน หรอพดงายๆ วามนไมมขาทจะเอาไวไปสง อปกรณกาลง เชน รเลย โซลตสเตจ ไตรแอค เอสซอาร เพอสงอปกรณทางกลไฟฟา ตวนจะอยในบอรดวงจรอเลกทรอนกสเหมอนกน ซง "ขา" ของมน มไวสาหรบนาขอมลเขามาประมวณผลและนาผลลพธทไดออกไปใชงาน
ดงนน ไมโครโปรเซสเซอร + ไมโครคอนโทรลเลอร = ไมโครคอมพวเตอร
ไมโคร คอมพวเตอร
• ไมโคร คอมพวเตอร กคอ คอมพวเตอรทเราใชงานกนอยนละ ซงมนจะมไมโครโปเซสเซอรและไมโครคอนโทรลเลอรอยในบอรดวงจร อเลกทรอนกสเดยวกน ทเรยกกนวา "เมนบอรด" นนละ มขาใหใชงาน เรยกวา " พอตร" Port ซงพอตรตางๆกจะมชอเรยกกนไป เชน พอตรจอภาพ พอตรขนาน พอตรอนกรณ พอตรยเอสบ พอตรแลน พอตรฮารดส พอตรซดรอม พอตรปอปปดส และพอตรเสยบการดตางๆ
• อนง ไมโครคอมพวเตอรสมยใหมๆ มคจะไมม พอรดขนานใหเราใชงานแลว ชาวบานเรยกวาพอตรปรนเตอร อนใหญๆยาวๆทสด จงตองมการใชไมโครคอนโทลนเลอรขนมาเพอแปลงขอมลทประมวณผลไดจาก ไมโครคอมพวเตอร มาเปน " ขา " ขบรเลย โซลสเตจ เอสซอา ไตรแอร และ บอรดกาลง เพอสงงานเครองจกรกล ทชาวบานเคาเรยก โมชนคอนโทรลเลอร นนละ ตอนนเทาทเหนมขายก เนเชนแนวอนสตเมน NI ใชกบ แลปวว ซงแพงมากๆ และตองซอลขสทธซอฟแวรอก จงไดมการทา โมชนบานหมอ โมชนอซอรตโมชนเพอการศกษา อะไรแบบน
ภาษาทใชกบไมโครคอนโทรลเลอร
• ภาษา ทใชกบไมโครคอนโทรลเลอรนน จะแตกตางกนขนอยกบไมโครคอนโทรลเลอรแตละตระกล แตภาษาทใชโดยทวไป สามารถแบงออกเปน 3ประเภท ดงน
• 1. ภาษาเครอง
• 2. ภาษา Assembly• 3. Interpreters• 4. Compilers
• 1. ภาษาเครองภาษา เครอง (Machine Language) เปนภาษาทอยในรปแบบของรหสเลขฐานสอง ไมโครคอนโทรลเลอรสามารถเขาใจภาษานไดทนท โดยไมตองผานกระบวนการแปล แตเปนภาษาทยากตอการเรยนร เพราะอยในรปแบบของเลขฐานสอง และผใชตองมความรเกยวกบฮารดแวรเปนอยางด แตขอดของภาษาน คอ มขนาดเลก ทางานไดรวดเรว และสามารถตดตอกบฮารดแวรไดโดยตรง
ภาษาทใชกบไมโครคอนโทรลเลอร
• ภาษา ทใชกบไมโครคอนโทรลเลอรนน จะแตกตางกนขนอยกบไมโครคอนโทรลเลอรแตละตระกล แตภาษาทใชโดยทวไป สามารถแบงออกเปน 3ประเภท ดงน
• 1. ภาษาเครอง
• 2. ภาษา Assembly• 3. Interpreters• 4. Compilers
• 2. ภาษา Assemblyภาษา Assembly สรางขนมาเพอใหการเขยนโปรแกรมงายขน ภาษา assembly ใชคาในภาษาองกฤษแทนรหสเลขฐานสอง ในภาษาเครองดงนนในการใชงาน จะตองผานการแปลจากภาษา Assembly เปนภาษาเครองกอน ตวแปลภาษา เรยกวา Assembler โปรแกรมทเขยนโดยภาพา assembly จะทางานเรวและมขนาดเลก เพราะวามนสามารถเขาถง Hardware ไดโดยตรงเชนเดยวกบภาษาเครอง แตทงนขนอยกบวธการเขยนของผ เขยนดวย
ภาษาทใชกบไมโครคอนโทรลเลอร
• ภาษา ทใชกบไมโครคอนโทรลเลอรนน จะแตกตางกนขนอยกบไมโครคอนโทรลเลอรแตละตระกล แตภาษาทใชโดยทวไป สามารถแบงออกเปน 3ประเภท ดงน
• 1. ภาษาเครอง
• 2. ภาษา Assembly• 3. Interpreters• 4. Compilers
• 3. Interpretersinterpreter คอ ภาษาระดบสงซงใกลเคยงกบภาษาของมนษย โดยจะฝงตวอยในหนวยความจา และทาหนาทอานคาสงจากโปรแกรมขนมาทละคาสง ทาการแปลเปนภาษาเครอง แลวปฏบตตามคาสงนนๆ ตวอยางของ interpreter ทรจกกนดคอ ภาษาBASIC ขอเสยของ interpreter คอ ทางานไดชา เนองจากตองแปลคาสงทละคาสง
ภาษาทใชกบไมโครคอนโทรลเลอร
• ภาษา ทใชกบไมโครคอนโทรลเลอรนน จะแตกตางกนขนอยกบไมโครคอนโทรลเลอรแตละตระกล แตภาษาทใชโดยทวไป สามารถแบงออกเปน 3ประเภท ดงน
• 1. ภาษาเครอง
• 2. ภาษา Assembly• 3. Interpreters• 4. Compilers
• 4. Compilerscompiler คอ ภาษาระดบสงซงทาหนาทแปลโปรแกรมทเขยนขนมาทงหมดใหเปนภาษา เครอง จากนนจงนาเอาโปรแกรมทแปลเสรจแลวเขาไปเกบในหนวยความจา หลงจากนนจงสงใหไมโครคอนโทรลเลอรปฎบตตามคาสงนนๆ ทาใหการทางานไดเรวขน ตวอยางเชน ภาษา C เปนตน
ตระกลตางๆ ของไมโครคอนโทรเลอร
• ตระกลตางๆ ของไมโครคอนโทรเลอร
• AVR , ARM , BASIC STAMP , MCS-51 , PIC, ST
ไมโครคอนโทรลเลอรตระกล
• ไมโครคอนโทรลเลอรตระกล MCS-51ของบรษท Philips
• ไมโครคอนโทรลเลอรตระกล AVR ของบรษท ATMEL
• และไมโครคอนโทรลเลอรตระกล PIC ทบรษท Micro chip เปนผผลต
ไมโครคอนโทรลเลอรตระกล PIC
• ไมโครคอนโทรลเลอรตระกล PIC ได ถกพฒนามาอยางตอเนอง จนสามารถนามาใชงานในการควบคมไดอยางหลากหลาย เนองจากมคณสมบตทครบครน อกทงยงงายตอผ ทเรมเรยน คอสามารถทจะเรยนรไดงายและสามารถนาไปใชงานไดจรง เนองจากมประสทธภาพทสง ราคาถก เปนทนยม และมใหเลอกมากมายหลายเบอร
ความเปนมาของ PIC
• ค.ศ. 1977 บรษท General Instrument หรอบรษทไมโครชพในปจจบน ไดมการผลตไมโครคอนโทรลเลอร PIC (Peripheral Interface Controller) ออกมาวางจาหนาย PIC เบอรแรกทผลตออกมากคอ PIC1650
• การออกแบบ PIC จะยดถอการออกแบบทวารวมทกอยางไวใน chip ตวเดยวโดยไมตองตออปกรณใดๆ เพมเตม ไดแก หนวยประมวลผลกลาง (CPU) หนวยความจาโปรแกรม, หนวยความจาขอมล, Timer, EEPROM,FeedbackControl, , CCP, ADC (analog to digital convertor)
ความเปนมาของ PIC
• ในปจจบนน PIC ได ถกนามาประยกตใชงานกนอยางแพรหลายในเครองมอตางๆ ตวอยางเชน การนามาควบคมการแสดงผลของจอแสดงผล,การนามาสงสญญาณเพอสรางคลนพาห สาหรบการสงอนฟราเรด, การนามาควบคมการปด-เปดสวตชดวยสญญาณคลนวทย, การนามาควบคมในเตาหงตมเหนยวนาความรอน, การนามาควบคมวงจรจดชนวนอปกรณอเลกทรอนกสกาลง, การนามาควบคมหนยนต เปนตน
ความเปนมาของ PIC
• อธบายลาดบขนตอนการสราง PIC เพอ นาไปใชงานในการควบคมตางๆ โดยสงเขป เพอทจะใหผอานไดเขาใจงายและสามารถเรยนรไดไว โดยมรายละเอยดลาดบขนตอนดงน
ความเปนมาของ PIC
• การเขยนโปรแกรมภาษาซสาหรบ PIC จะมหลากหลายโปรแกรมใหเลอกใช ตวอยางเชนโปรแกรม MikroC for PIC,โปรแกรม PIC Basic PRO,โปรแกรม C Compilerและโปรแกรม CCS ‘C’ Compiler
ความเปนมาของ PIC
• การจาลองการทางานบนคอมพวเตอรดวยโปรแกรม PROTEUS เปน โปรแกรมจาลองการทางานของวงจรไฟฟาและสามารถออกแบบแผน
ปรนทไดอกดวย โปรแกรมนจะชวยใหผ เขยนโปรแกรมสามารถดผลการทางานของโปรแกรม กอนทจะทาการอดโปรแกรมลงในตวชพ จงชวยใหผ เขยนโปรแกรมสามารถตรวจสอบขอผดพลาดของโปรแกรมได
ความเปนมาของ PIC
• โปรแกรมจะประกอบไปดวยอปกรณตางๆ ใหเลอกใชมากมายตวอยางเชน หลอด LED สตางๆ สวตซป มกด ตวตานทาน ตวเหนยวนา ตวเกบประจ แบตเตอรร 7-Segment จอแอลซด มอเตอรตางๆ รวมไปถงเครองมอวดตางๆ เชน oscilloscope, volt meter, Amp meter
การถายโอนชดคาสงจากคอมพวเตอร
• ลาดบท 3 การถายโอนชดคาสงจากคอมพวเตอรส PIC (Compiler)
• การถายโอนชดคาสงหรอคอมไพเลอรนน มอย 2 วธคอ 1)โปรแกรมผานพอรตอนกรมและ 2)โปรแกรมผานพอรต USB ซงการเลอกใชวาจะโปรแกรมดวยวธไหนนนขนอยกบความสะดวกของผใช เนองจากคอมพวเตอร Note Book รนใหมๆ จะไมมพอรตอนกรม การโปรแกรมผานพอรต USB จงงายกวาและสะดวกกวาสาหรบคอมพวเตอรNote Book การโปรแกรมผานพอรต USB นน จะใชบอรด Pic kit 2 และจะตองใชควบคกนกบโปรแกรม Pic Kit 2
ลาดบท 4 การนา PIC ไปตอใชงาน
• การตอใชงานไมโครคอนโทรลเลอร PIC นน เปนเรองงายมาก เนองจากทางบรษทไมโครชพมแนวคดคอการพยายามรวมเอาทกอยางไวในชพตว เดยวกน การตอเพมเตมจงมไมมาก เพยงจายไฟเลยงให ตอวงจรสรางสญญาณนาฬกา และวงจรรเซตเปนวงจรพนฐานเทานน ซงในแตละการทดลองจะมบอกไว อาจจะมการเชอมตอหนวยความจาจากภายนอกกตอเมอใชงานมากขนเทานน เชนการเชอมตอกบไอซทบอก วน/เดอน/ป ในงานทจาเปนตองเชอมตอเชน การสรางนาฬกาดจตอลเปนตน
การทดลองสวทช สงให LED ตดทละดวงดวย สวชตตวเดยว
• การ ทดลองนเปนการทดลองของเอาตพตทงพอรตโดยกาหนดใหขาพอรต D เปนเอาตพต โดยตอขาพอรต D ใชงานตงแต DB0 - DB7 โดยท LED จะตดเรยงไปเรอยๆ และวนกลบมาใหม เมอเรากดสวชตท พอรต RB0ฟงกชน rotate_left() เปนฟงกชนการหมนบต
ของขอมลไปทางชาย ของตวแปรรปแบบการใชงาน:
rotate_left(address,bytes);พารามเตอร:address : แอดเดรสของหนวยความจาท
พอยนเตอรช bytes : จานวนไบตทตอการหมน
การทดลองสวทช สงให LED ตดทละดวงดวย สวชตตวเดยว
• โปรแกรมทใชในกาทดลอง
• /*1*/ #include <16F877A.h>/*2*/ #FUSES NOWDT,HS,NOPROTECT,NODEBUG,NOLVP,NOWRT
/*3*/ #use delay(clock=20000000)/*4*/ int i=0b00000001;/*5*/ void main()/*6*/ {/*7*/ set_tris_b(0b00000000);/*8*/ while(TRUE)/*9*/ {/*10*/ if(input(pin_b0)==0)/*11*/ {/*12*/ delay_ms(250);/*13*/ rotate_left(&i,1) ;/*14*/ }/*15*/ output_D(i); /*16*/ }/*17*/ }
• อธบายการทางาน
• บรรทดท 1 เปนการเรยกใช 16f887A.h ชงจะเกบไรบลารตางๆของไมโครคอนโทรลเลอรเบอร 16f877Aบรรทดท 2 เปนการกาหนดคาคอนฟกใหกบไมโครคอนโทรลเลอรบรรทดท 3 เปนการเรยกใชฟงกชนของเวลาบรรทดท 4 เปนการกาหนดตวแปร ชนด int ชอตวแปล i ใหมตวแปร iเทากบ 0b00000001บรรทดท 5 เปนฟงกชนเรมตนการทางานของโปรแกรมบรรทดท 7 เปนการประกาศใชงานพอรต D ทหมดใหเปนเอาตพตบรรทดท 8 เปนคาสงวนรอบ While (true) กาหนดใหเปน TRUEเพอใหโปรแกรมทางานวนรอบตอเนองบรรทด ท 10 เปนคาสง ตดสนใจ เมอเรากดสวชต กจะมการทางานภายใตวงเลบปกกา คาสงในบรรทดท 12 และ13 จะทางานเมอเราปลอยสวชต ในบรรทดท 12 และ 13 กจะหยดการทางาน
การทอลองอนพตระดบไบต
• การทดลองนเปนการรบอนพตระดบไบตโดยกาหนดใหขาพอรต D เปนเอาตพตเพอบอกสถานการณทางานของ LED_1 ถง LED_8 ทขาพอรต RD0-RD7 จากนนจะรบสญญาณอนพตทพอรต B ทขาพอรต RB0-RB7 ซงเมอมการกดสวตช ตาแหนง บตใด LED ของบตนน จะสวาง
การทอลองอนพตระดบไบต
• ////////////// TEST INPUT BYTE ///////////////////
•/*1*/ #include <16F877A.h>
• /*2*/ #FUSES NOWDT,HS,NOPROTECT,NODEBUG,NOLVP,NOWRT
• /*3*/ #use delay(clock=20000000)
• /*4*/ #use fast_io(B)
• /*5*/ #use fast_io(D)
• /*6*/ void main()
• /*7*/ {
• /*8*/ int button;
• /*9*/ set_tris_B(0b11111111);
• /*10*/ set_tris_D(0b00000000);
• /*11*/ setup_comparator(NC_NC_NC_NC);
• /*12*/ SETUP_ADC_PORTS(NO_ANALOGS);
• /*13*/ while(true)
• /*14*/ {
• /*15*/ button=~input_b();
• /*16*/ output_d(button);
• /*17*/ }
• /*18*/ }
• //////////////////////////////////////////////////////////
• โปรแกรมทใชในการทดลองอนพตระดบไบต
• อธบายการทางาน
• บรรทดท 1 เปนการเรยกใช 16f887A.h ชงจะเกบไรบลารตางๆของไมโครคอนโทรลเลอรเบอร 16f877A
• บรรทดท 2 เปนการกาหนดคาคอนฟกใหกบไมโครคอนโทรลเลอร
• บรรทดท 3 เปนการเรยกใชฟงกชนของเวลา
• บรรทดท 4 เปนการประกาศใชงานพอรต B
• บรรทดท 5 เปนการประกาศใชงานพอรต D
• บรรทดท 6 เปนฟงกชนเรมตนการทางานของโปรแกรม
• บรรทดท 8 เปนการกาหนดตวแปร ชนด int ชอตวแปล button
• บรรทดท 9 เปนการประกาศใชงานพอรต B ทหมดใหเปนอนพต
• บรรทดท 10 เปนการประกาศใชงานพอรต D ทหมดใหเปนเอาตพต
• บรรทดท 11 เปนฟงกชนกาหนดไมใหมฟงกชน Comparator
• บรรทดท 12 เปนฟงกชนกาหนดคาฟงกชนแอนะลอก(Analog) ชงในโปรแกรมจาเปนตองปดฟงกชนนไวเนองจากพอรต B สามารถเปนไดทงอนเพตและเอาตพตหรอแอนะลอกอนพต
• บรรทดท 13 เปนคาสงวนรอบ While (true) กาหนดใหเปน TRUE เพอใหโปรแกรมทางานวนรอบตอเนอง
• บรรทดท 15 เปนฟงกชนอานคาอนพตท พอรต B จะอานคาตงแตพอรต RD0- DB7 เกบไวในตวแปร button โดยจะม ตว (Grave Accent) “ ~ “ หรอ ตวหนอนเปนตวทกลบบตคา เชน เมอรบอนพต “1111” กจะไดเปน “ 0000 0000 ”
• บรรทดท 16 เปนฟงกชนแสดงผลทางเอาตพต โดยสงคาตวแปร button ไปยงพอรต D
•
• เกรดความร
• “ ~ “ Grave Accent หรอ ตวหนอน ในโปรแกรม สามารถ กลบบตขอมลได
• ตวอยาง
• เมอรบ Input_b(0b00000000) ปกตคาทได กจะเปน 0000 0000
• แตถาตวหนอนหนาคาสง ~ Input_b(0b00000000)
• กจะได ~ Input_b(0b00000000) ปกตคาทได กจะเปน 1111 1111
การทอลองอนพตระดบไบต
การทดลองนเปนการรบอนพตระดบไบตโดยกาหนดใหขาพอรต D เปนเอาตพตเพอบอกสถานการณทางานของ LED_1 ถง LED_8 ทขาพอรต RD0-RD7 จากนนจะรบสญญาณอนพตทพอรต B ทขาพอรต RB0-RB7 ซงเมอมการกดสวตช ตาแหนง บตใด LED ของบตนน จะสวาง
การทอลองอนพตระดบไบต• ////////////// TEST INPUT BYTE ///////////////////
•/*1*/ #include <16F877A.h>
• /*2*/ #FUSES NOWDT,HS,NOPROTECT,NODEBUG,NOLVP,NOWRT
• /*3*/ #use delay(clock=20000000)
• /*4*/ #use fast_io(B)
• /*5*/ #use fast_io(D)
• /*6*/ void main()
• /*7*/ {
• /*8*/ int button;
• /*9*/ set_tris_B(0b11111111);
• /*10*/ set_tris_D(0b00000000);
• /*11*/ setup_comparator(NC_NC_NC_NC);
• /*12*/ SETUP_ADC_PORTS(NO_ANALOGS);
• /*13*/ while(true)
• /*14*/ {
• /*15*/ button=~input_b();
• /*16*/ output_d(button);
• /*17*/ }
• /*18*/ }
• //////////////////////////////////////////////////////////
• โปรแกรมทใชในการทดลองอนพตระดบไบต
• อธบายการทางาน
• บรรทดท 1 เปนการเรยกใช 16f887A.h ชงจะเกบไรบลารตางๆของไมโครคอนโทรลเลอรเบอร 16f877A
• บรรทดท 2 เปนการกาหนดคาคอนฟกใหกบไมโครคอนโทรลเลอร
• บรรทดท 3 เปนการเรยกใชฟงกชนของเวลา
• บรรทดท 4 เปนการประกาศใชงานพอรต B
• บรรทดท 5 เปนการประกาศใชงานพอรต D
• บรรทดท 6 เปนฟงกชนเรมตนการทางานของโปรแกรม
• บรรทดท 8 เปนการกาหนดตวแปร ชนด int ชอตวแปล button
• บรรทดท 9 เปนการประกาศใชงานพอรต B ทหมดใหเปนอนพต
• บรรทดท 10 เปนการประกาศใชงานพอรต D ทหมดใหเปนเอาตพต
• บรรทดท 11 เปนฟงกชนกาหนดไมใหมฟงกชน Comparator
• บรรทดท 12 เปนฟงกชนกาหนดคาฟงกชนแอนะลอก(Analog) ชงในโปรแกรมจาเปนตองปดฟงกชนนไวเนองจากพอรต B สามารถเปนไดทงอนเพตและเอาตพตหรอแอนะลอกอนพต
• บรรทดท 13 เปนคาสงวนรอบ While (true) กาหนดใหเปน TRUE เพอใหโปรแกรมทางานวนรอบตอเนอง
• บรรทดท 15 เปนฟงกชนอานคาอนพตท พอรต B จะอานคาตงแตพอรต RD0- DB7 เกบไวในตวแปร button โดยจะม ตว (Grave Accent) “ ~ “ หรอ ตวหนอนเปนตวทกลบบตคา เชน เมอรบอนพต “1111” กจะไดเปน “ 0000 0000 ”
• บรรทดท 16 เปนฟงกชนแสดงผลทางเอาตพต โดยสงคาตวแปร button ไปยงพอรต D
•
• เกรดความร
• “ ~ “ Grave Accent หรอ ตวหนอน ในโปรแกรม สามารถ กลบบตขอมลได
• ตวอยาง
• เมอรบ Input_b(0b00000000) ปกตคาทได กจะเปน 0000 0000
• แตถาตวหนอนหนาคาสง ~ Input_b(0b00000000)
• กจะได ~ Input_b(0b00000000) ปกตคาทได กจะเปน 1111 1111