ផ្នែកទី៣៖ សិក្សាករណី PIC16F887

1-   លក្ខណៈសំខាន់ៗ

  • ស្ថាបត្យកម្ម (Architecture) RISC
  • ប្រតិបត្តិការណ៍ក្នុងកម្រិតប្រេកង់រហូតដល់ 20MHz
  • មានប្រភពក្លក (clock) ខាងក្នុងក្នុងចន្លោះពី 31kHz ដល់ 8MHz
  • តង់ស្យុងចិញ្ចឹមចន្លោះពី 0V ទៅ 5.0V (2.0V@4MHz)
  • Power Saving Sleep Mode
  • Brown-out Reset (BOR)
  • មានជើងចេញចូលចំនួន 35 (ចរន្តហូរចូល ហូរចេញធំសម្រាប់ LED មាន Pullup resistor មាន Interrupt-on-Change ។
  • ទំហំ ROM 8k អាចបញ្ជុល/លុប បាន 100 000 ដង ។
  • មាន In-Circuit Serial Programming
  • មាន EEPROM ទំហំ 256 bytes ហើយអាចបញ្ជុល/លុប បាន 1000 000 ដង
  • មាន RAM ទំហំ 368 bytes
  • មាន A/D Converter ចំនួន 14 ច្រក និង 10-bit Resolution
  • មាន Timer/Counter ឯករាជ្យចំនួនបី
  • មាន Watch-dog Timer
  • មាន Analog Comparator ចំនួនពីរ
  • PWM (Pulse Width Modulation)
  • Enhanced UART Module
  • Master Synchronous Serial Port (MSSP) (SPI និង I2C)

pic-microcontrollers-programming-in-c-chapter-03-image-1

pic-microcontrollers-programming-in-c-chapter-03-image-2

pic-microcontrollers-programming-in-c-chapter-03-image-3

2-   Central Processing Unit (CPU )

PIC16F887 ជាកុំព្យូទ័រប្រភេទ RISC (Reduced Instruction Set Computer) ។ RISC សម្រាប់ PIC មានលក្ខណសម្បត្តិដូចខាងក្រោម៖

  • នៅក្នុង CPU មានពាក្យបញ្ជាតែ 35 ប៉ុណ្ណោះ ។ ពាក្យបញ្ជានីមួយៗ ប្រតិបត្តដោយល្បឿន 200 nanoseconds ពេលប្រើក្លក 20MHz ។
  • ពាក្យបញ្ជានីមួយៗ មានល្បឿនស្ទើរតែស្មើរគ្នាទាំងអស់គឺស្មើរនឹង ¼ នៃក្លកចូល ។ ឧទាហរណ៍ពេ លយើងប្រើក្លកចូល 20MHz នោះល្បឿននៃការប្រតិបត្តនៃពាក្យបញ្ជាគឺ ¼(20MHz) = 5 លាន ពាក្យបញ្ជាក្នុងមួយវិនាទី (5MIPS) ហើយរយៈពេលនៃការអនុវត្តពាក្យបញ្ជានីមួយៗគឺ 200 nanoseconds ។

pic-microcontrollers-programming-in-c-chapter-03-image-7

3-   Memory

Memory ដែលប្រើនៅក្នុង PIC16F887 មានបីប្រភេទគឺ៖ RAM ROM និង EEPROM ។

  • ROM

ROM (Read Only Memory )មានតួនាទីរក្សាទុកកម្មវិធីសម្រាប់ដើម្បីដំណើរការជាអចិន្ត្រៃយ៍  ហើយគេតែងហៅវាថា Program Memory ។ ទំហំ ROM គឺ 8kword (8192×14-bit) ។

pic-microcontrollers-programming-in-c-chapter-03-image-8

ដោយ ROM នៃ PIC16F887 ប្រើបច្ចេកវិទ្យា Flash Memory ដូចនេះវាត្រូវការកម្រិតតង់ស្យុង 13V ទៅ 14V ដើម្បីលុបទិន្នន័យ ។ Programmer ជាឧបករណ៍ដែលមានតួនាទីទាញយកកម្មវិធីដែលបាន Compile រួចរាល់ពីក្នុងកុំព្យូទ័រផ្ទាល់ខ្លួន ទៅក្នុង PIC មៃក្រូខុនត្រូល័រ ។

  • RAM

ផ្នែកនេះជាផ្នែកដែលស្មុគស្មាញបំផុតនៅក្នុងមៃក្រូខុនត្រូល័រ ។ ក្នុងករណីនេះ RAM ត្រូវបានបែងចែក ជាពីរផ្នែកគឺ GPR (General Purpose Registers) និង SFR (Special Function Registers) ។ RAM ត្រូវបានបែងចែកជាបួន Banks ។

GPR ត្រូវបានប្រើប្រាស់ក្នុងគោលបំណងទូទៅដូចជាអថេរសម្រាប់រក្សាទុកតម្លៃបណ្តោះអាសន្ន នៃប្រ មាណវិធីគណិតវិទ្យាជាដើម ។

  • SFR

SRF ក៏ជា RAM ដែរប៉ុន្តែវាមានមុខងារខុសពី GPR ។ SFR មានមុខងារពិសេស កំណត់រួចជាស្រេច នៅពេលគេឌីហ្សាញ និងផលិតមៃក្រូខុនត្រូល័រ ។ ថតទិន្នន័យ ឫ bit នីមួយៗរបស់វាត្រូវបានតភ្ជាប់ទៅ បញ្តាញសៀគ្វីខាងក្នុងរបស់មៃក្រូខុនត្រូល័រដូចជា៖ ADC និង Serial-Communication ជាដើមដើម្បី បញ្ជា ឫផ្ទេរទិន្នន័យ ។ ឧទាហរណ៍ ADCON0 មានមុខងារបញ្ជាទៅកាន់ផ្នែក ADC ដើម្បីគ្រប់គ្រងដំណើរ ការនៃការបំលែងស៊ីញ្ញាលអាណាឡូកទៅឌីជីថល ។ ថតទិន្នន័យនៃ SFR នីមួយៗមានអាស័យដ្ឋាន និង ឈ្មោះខុសៗគ្នា  ។

ទោះបីជា RAM ត្រូវបានបែងចែកជាបួន Banks ខុសៗគ្នាក៏ដោយ ក៏ SFRs ខ្លះដូចជា៖ STATUS និង OPTION_REG ជាដើមមានវត្តមាននៅគ្រប់ Bank ទាំងបួនពីព្រោះវាជាថតទិន្នន័យដែលត្រូវការ ជាចាំបាច់ ។pic-microcontrollers-programming-in-c-chapter-03-image-9

  • EEPROM

EEPROM ដូចជាទៅនឹង flash ដែរគឺរក្សាទិន្នន័យជាអចិន្រ្តៃយ៍ ទោះបីជាគ្មានតង់ស្យុងចឹញ្ចឹមក៏ដោយ ប៉ុន្តែវាខុសពីរ Flash ត្រង់ថា Flash ជា ROM ដូចជារាល់ទិន្នន័យ (កម្មវិធី) នៅក្នុង Flash មិនអាច កែប្រែបាននៅពេលកម្មវិធីដំណើរការបានទេ ។ ខណៈទិន្នន័យនៅក្នុង EEPROM អាចកែតម្រូវបាន នៅ ពេលកម្មវិធីដំណើរការ ។

pic-microcontrollers-programming-in-c-chapter-03-image-10

pic-microcontrollers-programming-in-c-chapter-03-image-11

pic-microcontrollers-programming-in-c-chapter-03-image-12

pic-microcontrollers-programming-in-c-chapter-03-image-13

pic-microcontrollers-programming-in-c-chapter-03-image-14

4-   Interrupt System

នៅពេលដែលការការផ្អាក (interrupt) កើតឡើងនោះកម្មវិធីដែលត្រូវដំណើរការជាប្រក្រតីត្រូវបាន ផ្អាក ហើយប្លុកកម្មវិធីដែលឆ្លើយតបទៅនឹង Interrupt (ISR)ត្រូវបានយកមកអនុវត្ត ។ នៅពេលដែល ISR ត្រូវបានអនុវត្តចប់ទើបវាត្រលប់មកកម្មវិធីជាប្រក្រតីវិញ ។ ជាធម្មតាកម្មវិធីដំណើរការជាប្រក្រតី ចាប់ ផ្តើមពីអាស័យដ្ឋាន 0x0000 នៃ ROM ខណៈ ISR ចាប់ផ្តើមនៅអាស័យដ្ឋានទី 0x0004 ។ ជាទូទៅ យើងអាចប្រើ Interrupt ក៏បានឫអត់ប្រើក៏បាន ។ ប្រភពនៃ Interrupt មានច្រើនដូចជា៖ External-Interrupt និង Timer0_overflow- interrupt ជាដើម ។ យើងនឹងបង្ហាញនៅពេលក្រោយ។

5-   Core SFRs

SFRs នៅក្នុង RAM មានច្រើន ប៉ុន្តែក្នុងនេះយើងលើកយកតែ SFRs សំខាន់មួយចំនួនដែលយើង ត្រូវការប្រើប្រាស់ជាចាំបាច់ និងញ្ញឹកញ្ញាប់ជាងគេតែប៉ុណ្ណោះ ។

  • STATUS Register

pic-microcontrollers-programming-in-c-chapter-03-image-16

ថតទិន្នន័យ STATUS រួមមាន៖ ស្ថានភាពនៃថតទិន្នន័យ WREG ស្ថានភាពនៃ Reset និងប៊ីត សម្រាប់ជ្រើសរើស Bank ជាដើម ។

  • IRP ៖ Bits Select Register Bank (ប្រើសម្រាប់ Indirect Addressing)

1-> ប្រើ Bank0 និង Bank1

0-> ប្រើ Bank2 និង Bank3

  • RP1 , RP0 ៖ bits សម្រាប់ជ្រើសរើស Bank (ប្រើសម្រាប់ Direct Addressing)
RP1 RP0 Bank ដែលជ្រើសរើស
0 0 Bank0
0 1 Bank1
1 0 Bank2
1 1 Bank3
  • TO ៖ Time-out bit

1-> បន្ទាប់ពីបើកដំណើរការ (power-on) ហើយបន្ទាប់ពីអនុវត្តពាក្យបញ្ជា CLRWDT

0-> បន្ទាប់ពី WDT ធ្វើការ Reset

  • PD ៖ Power-down bit

1-> បន្ទាប់ពីវា Reset WDT

0-> បន្ទាប់ពីអនុវត្តពាក្យបញ្ជា SLEEP

  • Z ៖ Zero bit

1-> លទ្ធផលនៃប្រមាណវិធីនព្វន្ត ឫឡូស៊ីកគឺសូន្ស

0-> លទ្ធផលនៃប្រមាណវិធីនព្វន្ត ឫឡូស៊ីកផ្ទុយពីសូន្ស

  • DC ៖ Digit Carry/ Borrow bit

1-> មាន carry-out ពីខ្ទង់ទី4 នៃ lower-nibble

0-> គ្មាន carry-out ពីខ្ទង់ទី4 នៃ lower-nibble

  • C ៖ Carry/Borrow bit

1-> មាន Carry-out ពី MSB ចេញពីលទ្ធផលនៃប្រមាណវិធី

0-> គ្មាន Carry-out ពី LSB ចេញពីលទ្ធផលនៃប្រមាណវិធី

  • OPTION_REG

pic-microcontrollers-programming-in-c-chapter-03-image-17

  • RBPU៖ Port B Pullup Enableb bit

1-> មិនប្រើ PORTB Pullups

0-> ប្រើ PORTB Pullups

pic-microcontrollers-programming-in-c-chapter-03-image-18

  • INTEDG ៖ Interrupt Edge Select bit

1-> Interrupt កើតឡើងនៅលើជំរាលឡើងនៃជើង RB0

0-> Interrupt កើតឡើងនៅលើជំរាលចុះនៃជើង RB0

pic-microcontrollers-programming-in-c-chapter-03-image-19

  • TOCS ៖ TMR0 Clock Source Select bit

1-> យកស៊ីញ្ញាលចូលតាមជើង T0CKI

0-> យកស៊ីញ្ញាល់ខាងក្នុងមៃក្រូខុនត្រូល័រ (¼Fosc)

pic-microcontrollers-programming-in-c-chapter-03-image-20

  • T0SE ៖ TMR0 Source Edge bit (ជ្រើសរើសប្រភេទជម្រាលចុះ ឫឡើង ដើម្បីឲ្យ TMR0 រាប់ តាមរយៈជើង T0CKI ។

1-> TMR0 កើនតម្លៃនៅពេលមានជម្រាលចុះតាមជើង T0CKI

0-> TMR0 កើនតម្លៃនៅពេលមានជម្រាលឡើងតាមជើង T0CKI

pic-microcontrollers-programming-in-c-chapter-03-image-21

  • PSA ៖ Prescaler Assignment Bit (ដើម្បីកំណត់ Prescaler ឲ្យ TMR0 ក្នុងមាត្រដ្ឋាន 1:1 យើងត្រូវកំណត់ Prescaler ទៅឲ្យ WDT )
PS2 PS1 PS0 TMR0 WDT
0 0 0 1:2 1:1
0 0 1 1:4 1:2
0 1 0 1:8 1:4
0 1 1 1:16 1:8
1 0 1 1:64 1:32
1 1 0 1:128 1:64
1 1 1 1:256 1:128

5-3- INTCON

មានមុខងារបញ្ជាទៅកាន់ Interrupt ផ្សេងៗដូចជា TMR0 ឫ External Interrupt ។ លើសពីនេះ ទៀតវាអាចប្រាប់ពីប្រភពនៃ interrupt ផងដែរ ។

pic-microcontrollers-programming-in-c-chapter-03-image-26

  • GIE៖ Global Interrupt Enable bit

1-> អនុញ្ញាតឲ្យមាន Interrupt

0-> មិនអនុញ្ញាតឲ្យមាន Interrupt

  • PEIE ៖ Peripheral Interrupt Enable bit

1-> អនុញ្ញាតឲ្យមាន Peripheral Interrupt

0-> មិនអនុញ្ញាតឲ្យមាន Peripheral Interrupt ទេ

  • T0IE ៖ Timer0 Interrupt Enable bit

1-> អនុញ្ញាតឲ្យមាន TMR0 interrupt

0-> មិនអនុញ្ញាតឲ្យមាន TMR0 interrupt

  • INTE ៖ RB0/External Interrupt Enable bit

1-> អនុញ្ញាតឲ្យមាន External Interrupt តាមជើង RB0

0-> មិនអនុញ្ញាតឲ្យមាន External Interrupt តាមជើង RB0

  • RBIE ៖ RB PORT Interrupt Enable bit

1-> អនុញ្ញាតឲ្យមាន Interrupt តាមជើងក្នុង PORTB ណាមួយប្តូរស្ថានភាព

0-> មិនអនុញ្ញាតឲ្យមាន Interrupt តាមជើងក្នុង PORTB ណាមួយប្តូរស្ថានភាព

  • T0IF ៖ TMR0 Overflow Interrupt Flag bit

1-> មាន Interrupt តាមជើង RB0

0-> គ្មាន Interrupt តាមជើង RB0

  • TBIF ៖ RB Port Interrupt Flag bit

1-> មានជើងណាមួយក្នុង PORTB បានផ្លាស់ប្តូរស្ថានភាព

0-> គ្មានជើងណាមួយក្នុង PORTB បានផ្លាស់ប្តូរស្ថានភាពទេ

Advertisements
This entry was posted in MikroC for 8-bit PICMicro. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s