PIC BASIC 2 - NTC

19
66 บทที4 โครงสรางและสถาปตยกรรมของไมโครคอนโทรลเลอร PIC16F877 ไมโครคอนโทรลเลอรตระกูล PIC ของบริษัทไมโครชิพ (Microchip) โดยเฉพาะเบอร PIC16F877 เปนไมโครคอนโทรลเลอรที่กําลังไดรับความนิยมอยางแพรหลาย เนื่องจากเปนไมโครคอนโทรลเลอรแบบ แรก ที่มีการประมวลผลแบบ RISC Processor (RISC : Reduced Instruction Set Computer ) โดยใช คําสั่งการประมวลผลเพียง 33 - 35 คําสั่ง และใชเวลาในการประมวลคําสั่งเพียง 1 หรือ 2 machine cycle ตอคําสั่งเทานั้น การประมวลผลคําสั่งเปนลักษณะ Pipe Line คือขณะประมวลผลคําสั่งแรกจะทําการโหลด คําสั่งถัดไปมาเตรียมรอไว ทําใหการทํางานที่รวดเร็วมาก นอกจากนั้นในตัวโครงสรางยังประกอบดวยฮารดแวร ฟงกชั่นโมดูลสําหรับใชงานพิเศษตาง มากมาย ไดแก โมดูล Analog to Digital Converter , USART , Timer / Counter , SPI , Compare / Capture / PWM , I2C เปนตน โมดูลเหลานี้ลวนเพิ่มขีดความสามารถ ใหนําไปใชงานไดอยางหลากหลาย ประกอบกับมีเครื่องมือในการพัฒนาที่เพียบพรอม คุณสมบัติของไมโคร คอนโทรลเลอร PIC16F877 มีดังนี้คือ - มีคําสั่งในภาษาแอสเซ็มบลี35 คําสั่ง - ใชความถี่ออสซิลเลเตอรไดสูงสุด 20 MHz - มีหนวยความจําโปรแกรม Flash Memory ขนาด 8 K word ( 14 – bit words) - มีหนวยความจําขอมูลแบบ RAM 368 Bytes - มีหนวยความจําขอมูลแบบ EEPROM 256 Byte - มีการตอบสนองอินเตอรรัพททั้งหมด 14 แหลง - สามารถเลือกระดับการปองกันขอมูล ( Code Protection ) ได - มีโหมดประหยัดพลังงาน (Sleep Mode) - สามารถเลือกแหลงสัญญาณนาฬิกาไดหลายโหมด XT RC และออสซิเลเตอรพลังงานต่ํา - มีฟงกชั่นการรักษาเสถียรภาพการทํางาน ไดแก POR , PWRT, OST, BOR และ WDT - การโปรแกรมตัวชิพแบบ ICSP ( ICSP : In-Circuit Serial Programming ) - สามารถทํางานที่ไฟเลี้ยงวงจรตั้งแต 2.0 V ถึง 5.5 V - ขาพอรท I/O แตละขา สามารถรับและปลอยกระแสไดสูงสุด 25 mA - มีโมดูล Timer / Counter ใชงานทั้งหมด 3 ตัว Timer 0 , Timer 1, และ Timer 2 - มีโมดูล CCP (CCP : Compare / Capture / PWM ) จํานวน 2 ชุด - มีโมดูล Analog to Digital Converter ความละเอียด ขนาด 8 บิท และ 10 บิท จํานวน 8 ชอง ภายในตัวชิพ - มีโมดูลสื่อสารอนุกรมแบบ USART ( USART : Universal Synchronous Asynchronous Receiver / Transmitter ) - มีพอรท I/O จํานวน 5 พอรท ไดแก พอรท A , B , C , D , และ E มีขา I/O รวมกัน 33 ขา ดังนี้คือ PORTA มี 5 ขา RA0 ถึง RA5

Transcript of PIC BASIC 2 - NTC

Page 1: PIC BASIC 2 - NTC

66

บทท 4 โครงสรางและสถาปตยกรรมของไมโครคอนโทรลเลอร PIC16F877

ไมโครคอนโทรลเลอรตระกล PIC ของบรษทไมโครชพ (Microchip) โดยเฉพาะเบอร PIC16F877 เปนไมโครคอนโทรลเลอรทกาลงไดรบความนยมอยางแพรหลาย เนองจากเปนไมโครคอนโทรลเลอรแบบ แรก ๆ ทมการประมวลผลแบบ RISC Processor (RISC : Reduced Instruction Set Computer ) โดยใชคาสงการประมวลผลเพยง 33 - 35 คาสง และใชเวลาในการประมวลคาสงเพยง 1 หรอ 2 machine cycle ตอคาสงเทานน การประมวลผลคาสงเปนลกษณะ Pipe Line คอขณะประมวลผลคาสงแรกจะทาการโหลดคาสงถดไปมาเตรยมรอไว ทาใหการทางานทรวดเรวมาก นอกจากนนในตวโครงสรางยงประกอบดวยฮารดแวรฟงกชนโมดลสาหรบใชงานพเศษตาง ๆ มากมาย ไดแก โมดล Analog to Digital Converter , USART , Timer / Counter , SPI , Compare / Capture / PWM , I2C เปนตน โมดลเหลานลวนเพมขดความสามารถใหนาไปใชงานไดอยางหลากหลาย ประกอบกบมเครองมอในการพฒนาทเพยบพรอม คณสมบตของไมโคร คอนโทรลเลอร PIC16F877 มดงนคอ - มคาสงในภาษาแอสเซมบล 35 คาสง - ใชความถออสซลเลเตอรไดสงสด 20 MHz - มหนวยความจาโปรแกรม Flash Memory ขนาด 8 K word ( 14 – bit words) - มหนวยความจาขอมลแบบ RAM 368 Bytes - มหนวยความจาขอมลแบบ EEPROM 256 Byte - มการตอบสนองอนเตอรรพททงหมด 14 แหลง - สามารถเลอกระดบการปองกนขอมล ( Code Protection ) ได - มโหมดประหยดพลงงาน (Sleep Mode) - สามารถเลอกแหลงสญญาณนาฬกาไดหลายโหมด XT RC และออสซเลเตอรพลงงานตา - มฟงกชนการรกษาเสถยรภาพการทางาน ไดแก POR , PWRT, OST, BOR และ WDT - การโปรแกรมตวชพแบบ ICSP ( ICSP : In-Circuit Serial Programming ) - สามารถทางานทไฟเลยงวงจรตงแต 2.0 V ถง 5.5 V - ขาพอรท I/O แตละขา สามารถรบและปลอยกระแสไดสงสด 25 mA - มโมดล Timer / Counter ใชงานทงหมด 3 ตว Timer 0 , Timer 1, และ Timer 2 - มโมดล CCP (CCP : Compare / Capture / PWM ) จานวน 2 ชด - มโมดล Analog to Digital Converter ความละเอยด ขนาด 8 บท และ 10 บท จานวน 8 ชอง ภายในตวชพ

- มโมดลสอสารอนกรมแบบ USART ( USART : Universal Synchronous Asynchronous Receiver / Transmitter ) - มพอรท I/O จานวน 5 พอรท ไดแก พอรท A , B , C , D , และ E มขา I/O รวมกน 33 ขา ดงนคอ PORTA ม 5 ขา RA0 ถง RA5

Page 2: PIC BASIC 2 - NTC

67

PORTB ม 8 ขา RB0 ถง RB7 PORTC ม 8 ขา RC0 ถง RC7 PORTD ม 8 ขา RD0 ถง RD7 PORTE ม 3 ขา RE0 ถง RE2

รปท 1 แสดงตวอยางขอมลขดความส แบบ 28 ขา และ 40 ขา

ามารถของไมโครคอนโทรลเลอร PIC16F87X

Page 3: PIC BASIC 2 - NTC

68

รป

ท 2 แสดงตาแหนงขา (PIN Diagram) ของตวถงแบบตาง ๆ

Page 4: PIC BASIC 2 - NTC

69

รรายละเอยด

รปท 3 ตารางเปรยบเทยบรายละเอยดขดความสามารถของไมโครคอนโทรลเลอร PIC16F87F

ปท 4 แสดงสถาปตยกรรมทเปนโครงสรางของไมโครคอนโทรลเลอร PIC16F877 ของขาสญญาณ I/O และอน ๆ ของไมโครคอนโทรลเลอร ตระกลPIC16F87X มดงน

Page 5: PIC BASIC 2 - NTC

70

ตารางท 1 แสดงรายละเอยดและตาแหนงขา ของไมโครคอนโทรลเลอร PIC16F873 / PIC16F876

Page 6: PIC BASIC 2 - NTC

71

ตารางท 2 แสดงรายละเอยดและตาแหนงขา ของไมโครคอนโทรลเลอร PIC16F874 / PIC16F877

ตารางท 3 แสดงรายละเอยดและตาแหนงขา ของไมโครคอนโทรลเลอร PIC16F874 / PIC16F877

Page 7: PIC BASIC 2 - NTC

72

ตารางท 4 แสดงรายละเอยดและตาแหนงขา ของไมโครคอนโทรลเลอร PIC16F874 / PIC16F877 (ตอ)

หนวยความจาและรจสเตอรภายในตวไมโครคอนโทรลเลอร ( Internal Memory Units ) การทางานของไมโครคอนโทรลเลอร มลกษณะเปนไบทแมชน (Byte Machine) ดงนนหนวยความจาเปนสวนประกอบทสาคญมาก ในโครงสรางของไมโครคอนโทรลเลอร (ตามรปท 4 ) ในตระกล PIC16F87X จะมหนวยความจาทอยภายในตวชพ หลายสวนดวยกน ไดแก 1 ) หนวยความจาโปรแกรม ( Program Memory ) 2 ) หนวยความจาทเปนรจสเตอรใชงานตาง ๆ ( Register Files ) 3 ) หนวยความจาขอมล หรอหนวยความจาเอนกประสงค ( Data Memory ) 4 ) หนวยความจาแบบทไมตองใชไฟเลยง หรอ EEPROM หนวยความจาทง 4 สวนน จะมขนาดความจ และการใชงานทแตกตางกนไป ตามจดประสงการใชงาน หนวยความจาโปรแกรม เปนหนวยความจาทใชเกบและการประมวลผลคาสงในโปรแกรมทผใชไดเขยนและบนทกเกบไว หนวยความจาสวนนจะมขนาด 14 บท ตามรปท 5 เปนโครงสรางประกอบดวย Program Counter เปนตวชตาแหนงลาดบการประมวลผล ( Execute Sequence Cycle) Stack Register เปนหนวยความจาทพกคาตาแหนงลาดบการประมวลผล กรณตองกระโดดไปทางานยอย On-chip Program Memory เปนเนอทโปรแกรมทใชในการประมวลผล ประกอบดวยตาแหนงแอดเดรสทสาคญ ๆ คอ

Page 8: PIC BASIC 2 - NTC

73

RESET Vector จะอยท 0000h และ Interrupt Vector จะอยท 0004h นอกนนเปนตาแหนงทเกบโปรแกรมเรมตงแต 0005h ไปจนถงตาแหนงสดทายของหนวยความจา

( ก ) รปท 5 แสดงโครงสราง STACK และหนวยความ (ข ) PIC16F873 / 874 หนวยความจาทเปนรจสเตอรใชงานตาง ๆ (รจสเตอรทใชงานทวไป ( General Purpose Regisจานวน 386 ไบท และรจสเตอรทเปนฟงกชนการทควบคมการทางานของระบบฮารดแวรตาง ๆ ภายในตมทอยคงท (Fixed Address) และถกกาหนดชอใชงาแบบทถกสงวนสารองไวใชงานเฉพาะ ( Reserved) เรยกวา Bank 0 Bank 1 Bank 2 และ Bank 3 เปน

( ข )

จาโปรแกรม ( ก ) สาหรบเบอร PIC16F876 / 877

Register Files) หนวยความจาสวนนจะประกอบดวยters ) สาหรบไมโครคอนโทรลเลอร PIC16F877 จะมางานพเศษ ( Special Function Registers) มไวสาหรบวชพ ไมสามารถไปใชงานอนไดโดยรจสเตอรแตละตวจะนไวแลวโดยแบงเปน 2 แบบ คอ แบบใชงานจรง และ รจสเตอรเหลานจะถกแบงออกเปนสวนยอยได 4 สวน ตน ตามรปท 6

Page 9: PIC BASIC 2 - NTC

74

รปท 6 แสดงตาแหนงหนวยความจาทเปนรจสเตอรไฟล ของ PIC16F876 / PIC16F877

Page 10: PIC BASIC 2 - NTC

75

รจสเตอรทเปนฟงชนการทางานพเศษ (Special Function Registers) รจสเตอรถกใชโดย CPU เปนหนวยความจาชนด RAM สามารถอานและเขยนได รจสเตอรเหลานจะถกกาหนดใหทาหนาทควบคมการทางานของสวน CPU เอง และอปกรณทตอประสานการทางานภายนอก(Peripheral Devices) ตามตารางท 5 ตารางท 6 และ 7 ตารางท 5 แสดงตาแหนงบทใชงานรจสเตอรทเปนฟงชนการทางานพเศษ

Page 11: PIC BASIC 2 - NTC

76

ตารางท 6 แสดงตาแหนงบทใชงานรจสเตอรทเปนฟงชนการทางานพเศษ ( ตอ )

Page 12: PIC BASIC 2 - NTC

77

ตารางท 7 แสดงตาแหนงบทใชงานรจสเตอรทเปนฟงชนการทางานพเศษ ( ตอ )

รจสเตอรทเปนฟงกชนการทางานพเศษเหลาน ผออกแบบระบบไมโครคอนโทรลเลอรจะตองเอาใจใสในรายละเอยดอยางถถวน หากการออกแบบไมรอบคอบเพยงพอจะทาใหการใชงานอาจมปญหาและอาจเปนอนตรายตอระบบและผเกยวของ หรออาจทาใหกลไกการทางานของระบบเสยหายได โดยเฉพาะคาบทขอมลในรจสเตอรทควบคมการทางานของขา I/O ในสภาวะการเรมทางาน หรอสภาวะการเกด RESET เนองจากไฟตก หรอ เกดการลมเหลวการทางาน หรอสภาวะออกจาก Sleep Mode ขอมลบทของรจสเตอรเหลานในสภาวะเกด RESET ใหดไดจากคอลมนสดทายของตารางท 5 ถง 7 รายละเอยดการทางานของรจสเตอรทงหมดนมเปนจานวนมาก ใหผอานตองเลอกศกษาเฉพาะในสวนทตองนาไปใชงานใน Datasheet ของแตละเบอร และในใบงานทดลองจะอธบายในรจสเตอรทเกยวของไวแลว สวนรจสเตอรสาคญทตองศกษาไวเปนเบองตนมดงตอไปน คอ

Page 13: PIC BASIC 2 - NTC

78

STATUS Register เปนรจสเตอรทควบคมสถานการณประมวลผลของ CPU และการเขาถง Page ของหนวยความจารจสเตอรตาง ๆ มรายละเอยดดงน

สาหรบการใชภาษา PIC Basic Pro Compiler ตวคาสงจะจดการกบสถานะตาง ๆ ไดเกอบหมด แตทตองทาความเขาใจ คอสถานะบท 4 และ 3 ทเปนสถานะทนามาเปนตวบอกวา เกดปญหาอะไรกบระบบไฟและการประมวลผลของ CPU

Page 14: PIC BASIC 2 - NTC

79

OPTION Register เปนรจสเตอรทควบคมการทางานของ R Pull – up ทพอรท B การเลอกแบบของสญญาณการอนเตอรรพท การทางานของ Timer 0 การกาหนดคา Prescaler

รายละเอยดการใชงานของ OPTION รจสเตอร จะอยในใบงานทดลอง เรองการใชงาน Timer 0

Page 15: PIC BASIC 2 - NTC

80

INTCON Register เปนรจสเตอรทควบคมการใหบรการอนเตอรรพท และแสดงสถานะของการเกดอนเตอรรพทตามตาแหนงตาง ๆ ทระบในแตละบท รายละเอยดการประยกตใชงาน อยในใบงานทดลองเรองการใชงานอนเตอรรพท

Page 16: PIC BASIC 2 - NTC

81

PIE1 Register เปนรจสเตอรทใชควบคมการเกดอนเตอรรพท จากอปกรณเชอมประสานภายนอก ไดแก Parallel Slave Port (bit 7), A/D Converter (Bit 6), USART Receiver (bit 5), USART Transmitter (bit 4) , Synchronous Serial Port (bit 3), โมดล CCP1 (bit 2), Timer 2 (bit 1), Timer 1 (bit 0) รายละเอยดการใชงานใหศกษาในใบงานทดลองเรองการใชงานอนเตอรรพท

Page 17: PIC BASIC 2 - NTC

82

PIR1 Register เปนรจสเตอรทแสดงสถานการณเกดอนเตอรรพททเกดจากอปกรณเชอมประสานภายนอก (Peripheral Interface) จากทก ๆ แหลงอยางอสระกน

Page 18: PIC BASIC 2 - NTC

83

PIE2 Register เปนรจสเตอรทควบคมการอนเตอรรพท เมอมการเขยนขอมลใน EEPROM ขอมลในบสชนกน และการใชงานโมดล CCP2

PIR2 Register เปนรจสเตอรทแสดงสถานการณเกดอนเตอรรพท จากการเปดใชงานอนเตอรรพทตามในรจสเตอร PIE2

Page 19: PIC BASIC 2 - NTC

84

PCON Register เปนรจสเตอรทใชแสดงถานะการทางานทเกยวของกบการจายไฟเลยงวงจร ไดแก POR (POR : Power On Reset) และ BOR (BOR : Brown-out Reset) เพอเปนตวตรวจสอบการเกด Reset เนองจากความผดปกตทเกยวของกบไฟจายเลยงวงจร