Giáo trình Vi điều khiển PIC

pdf 35 trang phuongnguyen 4630
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Vi điều khiển PIC", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_vi_dieu_khien_pic.pdf

Nội dung text: Giáo trình Vi điều khiển PIC

  1. Microcontroller Training Center DKS GROUP 1
  2. Microcontroller Training Center MC L C Bài 1.Gi i thi u vi điu khi n PIC 4 1.Gi i thi u các lo i chip PIC 4 2. Gi i thi u vi điu khi n PIC16F877 5 3.T ch c b nh PIC16F877 8 3.1.T ch c b nh ch ươ ng trình 8 3.2.B nh d li u 8 3.2.M t s thanh ghi quan tr ng 8 4.L p trình cho PIC 9 4.1.Gi i thi u 18 4.2.Ph n m m l p trình cho PIC 18 4.3.Gi i thi u ph n m m CCS 18 Bài 2.Giao ti p vào ra IO 27 1.Giao ti p IO 27 1.1.Gi i thi u 27 1.2.Các c ng vào ra 23 2.S ơ đ m ch 29 3.L p trình 30 4.N p ch ươ ng trình cho chip 35 Bài 3.Giao ti p v i led 7 thanh 39 1.Nguyên lý 39 2.Nguyên lý ho t đ ng 39 Bài 4.Giao ti p v i bàn phím 42 DKS GROUP 2
  3. Microcontroller Training Center 1.S ơ đ nguyên lý 42 2.Nguyên lý ho t đ ng 42 3.Mã ngu n 43 4.K thu t ch ng rung 44 Bài 5.B chuy n đi ADC 46 1.S d ng ADC v i CCS 46 2.Hàm h tr 46 Bài 6. ðiu ch đ r ng xung (PWM) 50 1. ðơi nét v PWM 50 2.S ơ đ kh i PWM 52 3.Hàm trong CCS 54 Bài 7.Giao ti p máy tính 58 1.Giao ti p RS-232 58 2.Hàm h tr 58 Bài 8.Giao ti p I2C 64 1.Gi i thi u chung 64 2. đc đim giao ti p I2C 64 3.Start ,stop 66 4. ðnh d ng d li u truy n 67 5. ðnh d ng đ a ch cho thi t b 62 6.Truy n d li u trên bus I2C ,master-slave 69 7.Ch đ Multi-master 72 8.Modul I2C trong vi điu khi n PIC 72 9. đc đim ph n c ng 72 10.Cách s d ng I2C trong CCS 73 Bài 9.Giao ti p LCD 74 DKS GROUP 3
  4. Microcontroller Training Center 1.Gi i thi u LCD 16x2 74 2.LCD v i CCS (4 bit) 80 3.Ví d 82 Khái ni m vi điu khi n (microcontroller – MC) đã khá quen thu c v i các sinh viên CNTT, đin t , điu khi n t đ ng c ũng nh ư C ơ đin t Nĩ là m t trong nh ng IC thích h p nh t đ thay th các IC s trong vi c thi t k m ch logic. Ngày nay đã cĩ nh ng MC tích h p đ t t c các ch c n ăng ca m ch logic. Nĩi nh ư v y khơng cĩ ngh ĩa là các IC s c ũng nh ư các IC mch s l p trình đưc khác nh ư PLD khơng cn dùng n a. MC c ũng cĩ nh ng hn ch mà rõ ràng nh t là t c đ ch m h ơn các m ch logic MC cũng là m t máy tính – máy tính nhúng vì nĩ cĩ đy đ ch c n ăng c a m t máy tính. Cĩ CPU, b nh ch ươ ng trình, b nh d li u, cĩ I/O và các bus trao đi d li u. Cn phân bi t khái ni m MC v i khái ni m vi x lý (microprocessor – MP) nh ư 8088 ch ng h n. MP ch là CPU mà khơng cĩ các thành ph n khác nh ư b nh I/O, b nh . Mu n s d ng MP c n thêm các ch c n ăng này, lúc này ng ưi ta g i nĩ là h vi x lý (microprocessor system). Do đc đim này nên n u đ l a ch n gi a MC và MP trong m t mch đin t nào đĩ thì t t nhiên ng ưi ta s ch n MC vì nĩ s r ti n h ơn nhi u do đã tích h p các ch c n ăng khác vào trong chip. Trong ph m vi mơn hc ki n trúc máy tính, chúng em xin ch n mt lo i MC đ tìm hi u v i m c đích cu i cùng là hi u h t các ch c n ăng c a MC này và thi t k , l p ráp mt m ch đo nhi t đ dùng MC. Cĩ r t nhi u lo i MC đ l a ch n nh ư h 8051 c a Atmel, Philips AVR c a Atmel, dịng 68000 (32bit) c a Motorola đây xin ch n PIC c a hãng microchip ( www.microchip.com ) vì s ph bi n c a nĩ. Cĩ m t điu khá thú v là trong s n ph m trị ch ơi đin t PlayStation c a Sony c ũng cĩ PIC.Theo đánh giá thì PIC là dịng MC 8 bit s d ng nhi u nh t trên th gi i t i th i đim n ăm 2006 này. Vi t Nam cĩ l cũng khơng ph i là m t ngo i l . 1.Gi i thi u các lo i chip PIC Nh ư đã nĩi ph n tr ưc, đây ta s ch n vi điu khi n PIC đ tìm hi u, tuy nhiên vi c ch n lo i nào trong h này cũng là m t điu c n quan tâm. PIC cĩ r t nhi u dịng t PIC12xx, PIC16xx, PIC18xx đn dsPIC theo th t đ ph c t p ca t ng dịng chip t ăng lên, vi c tìm hi u ch c n ăng c a DKS GROUP 4
  5. Microcontroller Training Center tng dịng này n m ngồi ph m vi ki n th c ca chúng em do đĩ đây xin ch n lo i cao nh t trong dịng 16 đĩ là PIC16F877 (mid-range). Nĩ là lo i vi điu khi n lo i trung vi kích c 1 l nh là 14 bit (dịng 12 kích c l nh là 12bit, 18 cĩ kích c 16bit) Ch F trong tên g i th hi n b nh ch ươ ng trình đây là b nh FLASH (cĩ th xố và n p l i xxxx l n) 2. Gi i thi u v PIC16F877 Hình 1.2.PIC16F877 a.PIC16F877 mang t t c các đ c đim chung c a các dịng PIC. - Nĩ là máy tính cĩ t p l nh rút g n (RISC). ðiu đĩ cĩ ngh ĩa là s lnh c a nĩ h n ch đn m c t i thi u ( 35 l nh). Ti sao là RISC l i cĩ l i và phát tri n sau này? Nh ư ta đã bi t đ cĩ th th c hi n m t ch c n ăng nào đĩ thì vi điu khi n c n ph i th c hi n các l nh trong b nh ch ươ ng trình (code memory) đưc l ưu d ưi d ng các s nh phân ca nĩ b ng các b gi i mã (decoder). ðiu đĩ c ũng cĩ ngh ĩa là nu MC càng cĩ nhi u t p l nh càng cn nhi u b decoder đ gi i mã. Nh ư v y s m ch gi i mã tích h p trong chip s c n nhi u lên. ðiu này làm cho chip c n tiêu th nhi u n ăng l ưng hơn c ũng nh ư chip s d b nĩng h ơn. Nh ư v y nu nh ư ng d ng cn tiêu th ít n ăng l ưng thì ng ưi ta s ch n RISC. Và cĩ l m t ph n nguyên nhân là do m ch c a nĩ đơn gi n h ơn nên RISC nh ư PIC ch ng h n đưc mi ng ưi đánh giá là lo i MC ch ng nhi u t t nh t trong dịng 8 bit. T t nhiên DKS GROUP 5
  6. Microcontroller Training Center RISC c ũng cĩ điu khơng t t, nh ư đ th c hi n m t phép tính tốn cĩ th ph c t p h ơn m t chút nh ư l nh nhân 2 s 8 bit hay chia s 16 bit cho 8 bit ch ng h n thì c n vi t các hàm cn m t chút th thu t tính tốn ( ðĩ là n u vi t tr c ti p b ng ngơn ng Assembly cịn n u vi t b ng các ngơn ng c p cao nh ư C thì s khơng c n). Khi đã xây d ng m t trình d ch b ng ngơn ng C ch ng h n thì nh ng vi c khĩ kh ăn v thu t tốn hồn tồn do trình biên dch (compiler) x lý ngh ĩa là nu xét v m t t n cơng s c l p trình v các thu t tốn thì RISC cũng xem khơng t n cơng h ơn so vi CISC. Cĩ th hình dung chuy n t CISC sang RISC là quá trình chuy n s ph c t p t ph n cng sang s ph c t p v ph n m m. Trái li CISC l i cĩ s l ưng các thanh ghi cũng nh ư b nh ít h ơn cn cĩ ít h ơn RISC vì: ð thao tác m t ch c năng nào đĩ CISC c n thao tác v i s thanh ghi nh h ơn RISC. Ngồi ra b nh ch ươ ng trình c ũng gi m h ơn r t nhi u. T ưng t ưng n u RISC c n th c hi n 1 phép tốn nào đĩ mà c n 5 l nh ch ng h n. Thay vì đĩ trong máy tính CISC ng ưi ta thi t k m t b gi i mã l nh đ gi i mã l nh thay cho c 5 lnh này, nh ư v y rõ ràng trong máy tính CISC c n cĩ thêm 1 b gi i mã lnh nh ưng mã ngu n l ưu tr trong chươ ng trình l i gi m đi đưc 1/5. G n đây l i xu t hi n xu h ưng ng ưc l i là chuy n t ph n m m v ph n c ng và cĩ l s l a ch n t t nh t trong t ươ ng lai s là trung gian gi a hai lo i đ trung hồ các đc tính c a c RISC l n CISC. Chính vì là RISC nên các l nh ca PIC đã đưc t i gi n hố, t t c các l nh tr các l nh thay đi con tr ch ươ ng trình(Program Counter - PC) đu t n 1 chu k ỳ máy ( các l nh thay đi PC t n 2 chu k ỳ máy). ðiu này là khác v i CISC cĩ th cĩ nh ng l nh tn nhi u chu k ỳ máy vì th c ra b n thân l nh c a CISC đĩ c ũng cĩ th coi là bao g m nhi u l nh c a RISC v y. PIC là MC mang c u trúc Havard là c u trúc cĩ các đưng bus d li u và bus ch ươ ng trình riêng l . ðiu này làm cho ch ươ ng trình cĩ th đưc th c hi n đ ng th i các thao tác gi i mã th c hi n l nh v i các thao tác đ c d li u cùng lúc. ðiu này khác v i c u trúc Von Neumann cĩ 2 đưng bus này chung do đĩ cùng lúc ch th c hi n 1 cơng vi c. (V s ơ đ tìm n p) . ðây là nguyên nhân làm cho cu trúc Von neumann th c hi n 1 l nh lâu h ơn máy mang c u trúc Harvard. T t nhiên ng ưi ta ch th y đưc cái l i c a c u trúc Harvard khi mà cơng ngh s n xu t chip đã đưc phát tri n lên. Cũng c n ph i nh là MC đã đưc phát tri n t nh ng dịng đi tr ưc r i và sau này nĩ cĩ thêm các ch c n ăng khác vào vy m t câu h i đưc đ t ra là nu khơng cĩ các ch c n ăng ph n c ng này thì tr ưc đây ng ưi ta s làm DKS GROUP 6
  7. Microcontroller Training Center th nào đ th c hi n các ch c n ăng c n thi t? Th c t ng ưi ta v n làm đưc các cơng vi c đĩ nh ưng là b ng ph n m m. Ng ưi vi t mã s ph i th c hi n các ch c n ăng đĩ b ng m t s ph ươ ng pháp nào đy. Cịn khi tích h p s n vào trong ph n c ng r i thì vi c th c hi n s đơn gi n h ơn tr ưc đây. ðiu này cĩ v nh ư li đi ng ưc v i khuynh h ưng đã nêu trên đi v i các b gi i mã l nh. Quá trình gi i mã l nh chuy n t ph c t p ph n c ng sang ph c t p ph n m m. Cịn quá trình th c hi n các ch c n ăng khác l i chuy n t ph c t p ph n m m sang ph n c ng. Hai quá trình này khơng cĩ gì mâu thu n v i nhau mà ng ưc l i nĩ là m t s b sung cho nhau. Cĩ th sau này ta s th y rõ h ơn điu này nh ưng đây xin đưc nĩi s ơ qua nguyên nhân. Quá trình gi i mã l nh n u nh ư dùng trong RISC thì s ph c t p ph n m m đây ngồi các gi i thu t (là điu khơng đáng ng i vì qua th i gian các gi i thu t này s đưc tích lu d n d n c ũng nh ư xây d ng đưc các compiler ngơn ng c p trung và c p cao nh ư C, Pascal) là khĩ kh ăn ra thì các phép tính c n nh ng th trung gian th c hi n lúc này là b nh chính xác h ơn là các thanh ghi (càng ngày càng r và d ch t o). Cịn quá trình th c hin các ch c n ăng khác thì nu khơng cĩ ph n c ng thêm vào thì các ph n c ng hi n th i đưc s d ng s mt cơng vào vi c này mà s khơng th c hi n đưc vi c khác. Chúng ta s th y rõ điu này h ơn sau. PIC16F877 cĩ đc đim ph n c ng và các ch c n ăng: - 368 bytes b nh d li u RAM. 8K Words b nh ch ươ ng trình FLASH (trong đĩ m i word c a dịng mid-range là 14bit), 256 bytes EEPROM - Cĩ 3 b đ nh th i Timer0, Timer1, Timer2 - Cĩ kh n ăng x lý ng t t nhi u ngu n ng t khác nhau nh ư ng t ngồi, ng t tràn Timer, ng t ngo i vi nh ư ng t ADC . - Ch c n ăng CCP g m Comparator (B so sánh), Capture và PWM (ðiu bi n đ r ng xung) - Ch c n ăng giao ti p đ ng b n i ti p SSP (Synchnorous Serial Port) bao g m 2 giao ti p SPI và giao ti p I2C - Ch c n ăng b truy n/phát khơng đ ng b đa n ăng ni ti p USART (Universal Serial Asynchnorous Receiver/Transmitter) d ng mơ đun ph n c ng ph c v cho giao ti p theo chu n RS- 232, do đĩ ta khơng cn quan tâm đ n các thao tác c p th p khi s d ng RS-232. ðây là ch c n ăng h u ích trong vi c giao ti p v i PC c a MC DKS GROUP 7
  8. Microcontroller Training Center - B chuy n đ i ADC 10 bit chuy n đ i tín hi u t ươ ng t thành tín hi u s 10 bit. Ngu n đin áp tham chi u cĩ th ch n t ngu n ngồi ho c t ngu n Vdd và Vss cp cho PIC - Ch c n ăng giao ti p song song PSP (Parralel Slave Port) - Ch c n ăng Watchdog Timer 1. T ch c b nh 2. Giao ti p vào ra I/O 3. S d ng Timer 4. Ng t 5. S d ng EEPROM và FLASH đ l ưu tham s 6. Mơ đun CCP (Capture/Compare/PWM) 7. B bi n đ i t ươ ng t - s ADC 10bit, 8bit 8. Giao ti p khơng đng b vi máy tính qua chu n RS-232 b ng USART 9. Các giao ti p n i ti p đ ng b SPI và I2C 10. Tĩm g n v t p l nh ð cĩ th cĩ cách đ c d hi u, trong quá trình gi i thi u chi ti t các ch c năng tích h p trong chip, ta s gi i thi u luơn các l nh c n thi t t ươ ng ng cn dùng. 3.T ch c b nh c a PIC 16F877 3.1.T ch c b nh ch ươ ng trình Nhìn vào s ơ đ bên ta cĩ th hình dung v b nh ch ươ ng trình c a PIC:B nh ch ươ ng trình cĩ 8KWords (1 word = 14 bits) đưc phân thành 4 trang cĩ đa ch nh ư bên. Cn nh v i con tr ch ươ ng trình PC là 13 bit thì kích c đa ch t i đa đánh đưc là 2 13 = 8K do đĩ ta cĩ th th y v i dịng mid-range thì kích th ưc b nh ch ươ ng trình PIC16F877 đã là t i đa cĩ th đ t đưc đ n, v i nh ng lo i kém h ơn trong mid-range thì b nh ít h ơn do đĩ khi PC t ăng v ưt quá giá tr b nh c a nĩ s x y ra hi n t ưng quay vịng tr l i ph n đ u c a b nh ch ươ ng trình Cĩ 8 stack. Stack là n ơi ta l ưu PC lúc c n ph c v cho các thao tác ng t cũng nh ư ch ươ ng trình con. Ch cĩ 8 m c stack điu đĩ cĩ ngh ĩa là nu cĩ 9 l n đ y vào stack thì l n đ u tiên s b m t đ a ch tr v và ch ươ ng trình s b ch y sai. PIC khơng cĩ c ng t báo x y ra tràn stack. 3.2.B nh d li u PIC là lo i chip cĩ b x lý ch qu n lý m t khơng gian đ a ch duy nh t, gi là khơng gian đa ch b nh . DKS GROUP 8
  9. Microcontroller Training Center B nh d li u phân thành 4 banks nh ư hình bên phân thành hai vùng là vùng các thanh ghi tr ng thái và điu khi n, vùng 2 là vùng các thanh ghi đa m c đích. N u mu n th c hi n m t ch c n ăng nào đĩ thơng th ưng ta cn thao tác v i các thanh ghi điu khi n đ thi t l p m t s cài đt c n thi t, cịn vùng các thanh ghi đa m c đích GPR (General Purpose Register) th ưng đ l ưu các bi n trung gian ph c v cho các thao tác tính tốn. Microchip xem vùng khơng gian nh RAM nh ư là các thanh ghi mc dù ch c n ăng c a nĩ th c s khơng ph i nh ư các thanh ghi, nĩ ch dùng đ ch d li u. Nu mu n thao tác v i thanh ghi nào tr ưc tiên ta ph i xem nĩ thu c bank nào trong 4 bank sau đĩ ta ph i chuy n đ n bank đĩ bng cách thao tác v i 2 bít RP1 và RP0 c a thanh ghi tr ng thái STATUS nh ư b ng d ưi v i các l nh BCF STATUS, RP1 BSF STATUS, RP0 s chuy n v bank 1. Các tên STATUS, RP1, RP0 khi d ch ra khơng cĩ ý ngh ĩa gì v i PIC mà nĩ ch là các tên đnh danh đã đưc khai báo trong t p tiêu đ (mà ta s ph i include đ u ch ươ ng trình) ca MPASM (Trình biên d ch assembler) t ươ ng ng v i giá tr đ a ch c a thanh ghi đĩ, c ũng cĩ th chuy n các bank b ng cách s d ng macro đã đưc trình biên d ch h p ng BANKSEL. Nu ta vi t BCF 0x03, 6 BSF 0x03, 5 Thì c ũng hồn tồn t ươ ng đươ ng v i l nh trên (lúc này khơng c n thi t include n a) 3.3.Mt s thanh ghi quan tr ng a) Thanh ghi tr ng thái Cũng gi ng nh ư t t c các b vi x lý khác, đây ta cĩ thanh ghi tr ng thái STATUS t i các đ a ch 03h, 83h,103h, 183h n m c 4 bank. Thanh ghi tr ng thái cĩ đa ch ti 4 bank đ ta cĩ th ti n trong quá trình thao tác, h ơn n a ngay b n thân các bit xác đ nh v trí bank c ũng n m trong thanh ghi tr ng thái IRP: Bit l a ch n bank đưc dùng trong ch đ truy nh p đ a ch gián ti p DKS GROUP 9
  10. Microcontroller Training Center RP1:RP0 Bit l a ch n bank đưc dùng trong ch đ truy nh p đ a ch tr c ti p TO : Bit Time-out 1 = Sau khi b t ngu n ho c lnh CLRWDT, ho c l nh SLEEP 0 = 1 time-out c a WDT x y ra (WDT = watch dog timer) PD : Bit Power-down 1 = Sau khi b t ngu n ho c lnh CLRWDT 0 = S th c hi n l nh SLEEP Z : C tr ng thái zero 1 = Thao tác logic ho c s h c b ng 0 0 = khác 0 DC : Bit carry/borrow ch s 1 = carry t 4 bit th p 0 = khơng carry t 4 bit th p C : Carry/borrow 1 = carry t bit MSb 0 = khơng carry t bit MSb b)Thanh ghi tr ng thái OPTION Nĩ chc các bit điu khi n đ c u hình RBPU : Bit enable đin tr kéo lên PORTB INTEDG : Bit xác đnh c nh lên c a ng t ngồi t i chân RB0/INT T0CS : Bit l a ch n ngu n clock c a timer0 T0SE : PSA: Bit gán t l Prescaler 1 = Gán cho WDT 0 = Gán cho mơ đun Timer0 PS2:PS0 Bit l a ch n t l gán c)Thanh ghi INTCON(Thanh ghi điu khi n ng t chung) GIE : Bit enable t t c các ngu n ng t, n u mu n disable t t c các ngu n ng t ch c n disable ngu n ng t này, cịn n u enable 1 ngu n ng t nào đĩ thì enable bit này s là l nh cu i cùng PEIE: Bit enable các ng t ngo i vi TMR0IE: Bit enable ng t trnà c a timer0 INTE: Bit enable ng t ngồi trên chân RB0/INT RBIE: Bit enable ng t thay đ i trên c ng PORTB TMR0IF: Bit c báo ng t c a timer0 DKS GROUP 10
  11. Microcontroller Training Center INTF: Bit c báo ng t ngồi trên chân RB0/INT RBIF: Bit c báo ng t thay đi trên c ng RB d)Thanh ghi PIE1 (Thanh ghi điu khi n ng t thi t b ngo i vi) PSPIE: Bit enable ng t đc/ghi cng slave song song ADIE: Bit enable ng t ADC RCIE: Bit enable ng t nh n c a USART TXIE: Bit enable ng t phát c a USART SSPIE: Bit enable ng t c ng n i ti p đ ng b CCP1IE: Bit enable ng t c a CCP1 (Compare-Capture-PWM) TMR2IE: Bit enable ng t c a timer2? TMR1IE: Bit enable ng t tràn timer1 e) Thanh ghi PIR1 4.L p trình cho PIC 4.1.Gi i thi u ð lp trình cho PIC16F877 b n cĩ th s d ng 2 ngơn ng c ơ b n là C và ASM .Nhìn chung ,2 ngơn ng này cĩ nh ng ưu và nh ưc đim riêng.Ngơn ng ASM cĩ ưu đim là g n nh ,giúp ng ưi l p trình n m b t sâu h ơn v ph n c ng .Tuy nhiên l i cĩ nh ưc đim là ph c tp ,khĩ hi u ,khơng thu n ti n đ xây d ng các ch ươ ng trình l n.Ng ưc l i ngơn ng C l i d dung ,ti n l i ,d debug ,thu n ti n đ xây d ng các ch ươ ng trình l n.Nh ưng nh ưc đim c a ngơn ng C là khơng giúp ng ưi l p trình hi u bi t sâu v ph n c ng. 4.2.Các ph n m m l p trình cho PIC -CCS Ph n m m CCS là ph n m m chuyên d ng đ l p trình cho PIC (vi t b ng ngơn ng C).Ph n m m CCS cĩ b th ư vi n hàm r t phong phú ,h tr đ y đ các tính n ăng nh ư giao ti p RS-232 ,LCD ,ch c n ăng I/O, Timer ,thu n ti n đ làm các ng d ng l n.Hi n nay CCS đã cĩ phiên b n 4 đưc c p nh t b th ư vi n hàm m i . DKS GROUP 11
  12. Microcontroller Training Center Hình 2.2.Giao di n ph n m m CCS -HT-PIC HT-PIC là ph n m m biên d ch cho PIC s d ng ngơn ng l p trình C. HT- PIC th ưng đưc tích h p trong mơi tr ưng MPLAB-IDE đ so n th o ch ươ ng trình. -MPLAB IDE DKS GROUP 12
  13. Microcontroller Training Center Hình 2.3.Giao di n ph n m m MPLAB IDE Giáo trình này s ch y u h ưng d n các b n l p trình PIC b ng ngơn ng C .S d ng ph n m m CCS phiên b n 3 4.3.Gi i thi u ph n m m CCS 4.3.1.Vì sao ta s d ng CCS ? S ra đ i c a m t lo i vi điu khi n đi kèm v i vi c phát tri n ph n m m ng d ng cho vi c l p trình cho con vi điu khi n đĩ. Vi điu khi n ch hi u và làm vi c v i hai con s 0 và 1. Ban đu đ vi c l p trình cho V ðK là làm vi c v i dãy các con s 0 và 1. Sau này khi ki n trúc c a Vi điu khi n ngày càng ph c t p, s lu ng thanh ghi l nh nhi u lên, vi c l p trình v i dãy các s 0 và 1 khơng cịn phù h p n a, địi h i ra đ i m t ngơn ng m i thay th . Và ngơn ng l p trình Assembly. đây ta khơng nĩi nhi u đ n Assmebly. Sau này khi ngơn ng C ra đ i, nhu c u dùng ngơn ng C đ thay cho ASM trong vi c mơ t các l nh l p trình cho Vi điu khi n m t cách ng n g n và DKS GROUP 13
  14. Microcontroller Training Center d hi u h ơn đã d n đ n s ra đ i c a nhi u ch ươ ng trình so n th o và biên dch C cho Vi điu khi n : Keil C, HT-PIC, MikroC,CCS Tơi ch n CCS cho bài gi i thi u này vì CCS là m t cơng c l p trình C mnh cho Vi điu khi n PIC. Nh ng ưu và nh ưc đim c a CCS s đưc đ cp đ n trong các ph n dưi đây. 4.3.2.Gi i thi u v CCS . CCS là trình biên d ch l p trình ngơn ng C cho Vi điu khi n PIC c a hãng Microchip.Ch ươ ng trình là s tích h p c a 3 trình biên d ch riêng bi t cho 3 dịng PIC khác nhau đĩ là: - PCB cho dịng PIC 12-bit opcodes - PCM cho dịng PIC 14-bit opcodes - PCH cho dịng PIC 16 và 18-bit Tt c 3 trình biên d ch này đuc tích h p l i vào trong m t ch ươ ng trình bao g m c trình so n th o và biên d ch là CCS, phiên b n m i nh t là PCWH Compiler Ver 3.227.Gi ng nh ư nhi u trình biên d ch C khác cho PIC, CCS giúp cho ng ưi s d ng n m b t nhanh đưc vi điu khi n PIC và s d ng PIC trong các d án. Các ch ươ ng trình điu khi n s đưc th c hi n nhanh chĩng và đt hi u qu cao thơng qua vi c s d ng ngơn ng l p trình cp cao – Ngơn ng C.Tài li u h ưng d n s d ng cĩ r t nhi u, nh ưng chi ti t nh t chính là b n Help đi kèm theo ph n m m (tài li u Ti ng Anh). Trong b n tr giúp nhà s n xu t đã mơ t r t nhi u v hng, bi n, ch th ti n xa lý, c u trúc các câu l nh trong ch ươ ng trình, các hàm t o s n cho ng ưi s d ng Ngồi ra v Ti ng Vi t c ũng cĩ b n d ch c a tác gi Tr n Xuân Tr ưng , SV K2001 DH BK HCM . Tài li u này d ch trên c ơ s b n Help ca CCS, tuy r ng ch ưa đy đ nh ưng đây là m t tài li u hay, n u b n tìm hi u v PIC và CCS thì nên tìm tài li u này v đ c. ð a ch Download tài li u: www.picvietnam.com -> M c nĩi v CCS. -To PROJECT đ u tiên trong CCS ð t o m t Project trong CCS cĩ nhi u cách, cĩ th dùng Project Wizard, Manual Creat,hay đơ n gi n là t o m t Files m i và thêm vào đĩ các khai báo ban đu c n thit và “b t bu c”. Dưi đây s trình bày cách t o m t project h p l theo c 3 ph ươ ng pháp. Mt điu ta cn chú ý khi t o m t Project đĩ là: khi t o b t c m t Project nào m i thì ta nên t o m t th ư m c m i v i tên liên quan đn Project ta đ nh làm, r i l ưu các files vào đĩ. Khi l p trình và biên d ch, CCS s t o ra r t nhi u files khác nhau, do đĩ n u đ chung các Project trong m t th ư m c s DKS GROUP 14
  15. Microcontroller Training Center rt m t th i gian trong vi c tìm ki m sau này. ðây c ũng là quy t c chung khi ta làm vi c v i b t k ỳ ph n m m nào, thi t k m ch hay l p trình.Vi c đ u tiên b n c n làm là kh i đ ng máy tính và b t ch ươ ng trình PIC C Compiler. -To m t PROJECT s d ng PIC Wizard Tr ưc h t b n kh i đ ng ch ươ ng trình làm vi c PIC C Compiler. T giao di n ch ươ ng trình b n di chu t ch n Project -> New -> PIC Wizard nh n nút trái chu t ch n. Sau khi nh n chu t, m t c a s hi n ra yêu c u ban nh p tên Files c n t o. Bn t o m t th ư m c m i, vào th ư m c đĩ và l ưu tên files c n t o t i đây . DKS GROUP 15
  16. Microcontroller Training Center Nh ư v y là xong b ưc đ u tiên. Sau khi nh n nút Save, mt c a s New Project hi n ra.Trong c a s này bao g m r t nhi u Tab, m i Tab mơ t v mt vài tính n ăng c a con PIC.Ta s ch n tính n ăng s d ng t i các Tab tươ ng ng.D ưi đây s trình bày ý ngh ĩa t ng m c ch n trong m i Tab. Các mc ch n này chính là đ c p đ n các tính n ăng c a m t con PIC, tùy theo tng lo i mà s cĩ các Tab t ươ ng ng. ð i v i t ng d án khác nhau, khi ta cn s d ng tính n ăng nào c a con PIC thì ta s ch n m c đĩ. T ng c ng cĩ 13 Tab đ ta l ưa ch n. Tơi gi i thi u nh ng Tab chính th ưng hay đưc s dng. -Tab General Tab General cho phép ta l a ch n lo i PIC mà ta s d ng và m t s l a ch n khác nh ư ch n t n s th ch anh dao đ ng, thi t l p các bit CONFIG nh m thi t l p ch đ ho t đ ng cho PIC. DKS GROUP 16
  17. Microcontroller Training Center -Device : Li t kê danh sách các lo i PIC 12F, 16F, 18F Ta s ch n tên Vi điu khi n PIC mà ta s d ng trong d án. L y ví d ch n PIC16F877A -Oscilator Frequency: Tn s th ch anh ta s d ng, ch n 20 MHz (tùy t ng lo i) -Fuses: Thi t l p các bit Config nh ư: Ch đ dao đ ng (HS, RC, Internal ), ch đ b o v Code, Brownout detected -Ch n ki u con tr RAM là 16-bit hay 8-bit -Tab Communications Tab Communications li t kê các giao ti p n i ti p mà m t con PIC h tr , thưng là RS232 và I2C, cùng v i các l a ch n đ thi t l p ch đ ho t đng cho t ng lo i giao ti p. Giao ti p RS232 DKS GROUP 17
  18. Microcontroller Training Center Mi m t Vi điu khi n PIC h tr m t c ng truy n thơng RS232 chu n. Tab này cho phép ta l a ch n chân Rx, Tx, t c đ Baud, Data bit, Bit Parity Giao ti p I2C ð s d ng I2C ta tích vào nút ch n Use I2C, khi đĩ ta cĩ các l a ch n: Chân SDA, SCL, T c đ truy n (Fast - Slow), ch đ Master hay Slave, đ a ch cho Salve. -Tab SPI and LCD Tab này li t kê cho ng ưi dùng các l a ch n đ i v i giao ti p n i ti p SPI, chu n giao ti p t c đ cao mà PIC h tr v ph n c ng. Chú ý khi ta dùng I2C thì khơng th dùng SPI và ng ưc l i. ð cĩ th s d ng c hai giao ti p này cùng m t lúc thì bu c m t trong 2 giao ti p ph i l p trình b ng ph n DKS GROUP 18
  19. Microcontroller Training Center mm (gi ng nh ư khi dùng I2C cho các chip AT8051, khơng cĩ h tr ph n cng SSP).Ph n c u hình cho LCD dành cho các chíp dịng 18F và 30F. Hình 2.4: Tab SPI and LCD -Tab Timer Li t kê các b đm/ đ nh th i mà các con PIC dịng Mid-range cĩ: Timer0, timer1,timer2, WDT Trong các l a ch n c u hình cho các b đ m / đ nh th i cĩ: ch n ngu n xung đng h (trong/ngồi), kho ng th i gian x y ra tràn DKS GROUP 19
  20. Microcontroller Training Center Hình 2.5: Tab Timer -Tab Analog Li t kê các l a ch n cho b chuy n đ i t ươ ng t /s (ADC) c a PIC. Tùy vào tng IC c th mà cĩ các l a ch n khác nhau, bao g m: - L a ch n c ng vào t ươ ng t - Ch n chân đin áp l y m u (Vref) - Ch n đ phân gi i: 8-bit = 0 ~ 255 hay 10-bit = 0~1023 - Ngu n xung đ ng h cho b ADC (trong hay ngồi), t đĩ mà ta cĩ đưc tc đ l y m u, th ưng ta ch n là internal 2-6 us. -Khi khơng s d ng b ADC ta ch n none DKS GROUP 20
  21. Microcontroller Training Center 4.3.3. Tab Other Tab này cho phép ta thi t l p các thơng s cho các b Capture/Comparator/PWM. Capture - B t gi - Ch n b t gi xung theo s ưn d ươ ng ( rising edge ) hay s ưn âm ( falling edge ) c a xung vào - Ch n b t gi sau 1, 4 hay 16 xung (copy giá tr c a TimerX vào thanh ghi lưu tr CCCPx sau 1, 4 hay 16 xung). Compare - So sánh - Ta cĩ các l a ch n th c hi n l nh khi x y ra b ng nhau gi a 2 đ i t ưng so sánh là giá tr c a Timer1 v i giá tr l ưu trong thanh ghi đ so sánh. Bao gm: o Th c hi n ng t và thi t l p m c 0 o Th c hi n ng t và thi t l p m c 1 DKS GROUP 21
  22. Microcontroller Training Center o Th c hi n ng t nh ưng khơng thay đi tr ng thái c a chân PIC. o ðư a Timer1 v 0 nh ưng khơng thay đi tr ng thái chân. PWM - ðiu ch đ r ng xung - L a ch n v t n s xung ra và duty cycle. Ta cĩ th l a ch n s n hay t ch n t n s ,t t nhiên t n s ra ph i n m trong m t kho ng nh t đ nh. Comparator - So sánh đin áp - La ch n m c đin áp so sánh Vref. Cĩ r t nhi u m c đin áp đ ta l a ch n. Ngồi ra ta cịn cĩ th l a ch n cho đ u vào c a các b so sánh. 4.3.4.Tab Interrupts và Tab Driver Tab Interrupts cho phép ta l a ch n ngu n ng t mà ta mu n s d ng. Tùy vào t ng lo i PIC mà s l ưng ngu n ng t khác nhau, bao g m: ng t ngồi 0(INT0), ng t RS232,ng t Timer, ng t I2C-SPI, ng t onchange PORTB.v.v Tab Drivers đưc dùng đ l a ch n nh ng ngo i vi mà trình d ch đã h tr các hàm giao ti p. ðây là nh ưng ngo i vi mà ta s k t n i v i PIC, trong các IC mà CCS h tr , đáng chú ý là các lo i EEPROM nh ư 2404, 2416, 2432, DKS GROUP 22
  23. Microcontroller Training Center 9346, 9356 Ngồi ra cịn cĩ IC RAM,PCF8570, IC th i gian th c DS1302, Keypad 3x4, LCD, ADC Chi ti t ta cĩ th xem trong - th ư m c Driver c a ch ươ ng trình : \ \PICC\Drivers Hình 2.7: Tab Interrupts DKS GROUP 23
  24. Microcontroller Training Center Hình 2.8: Tab Driver Sau các b ưc ch n trên, ta nh n OK đ k t thúc qu trình t o m t Project trong CCS,m t Files ten_project.c đưc t o ra, ch a nh ng khai báo c n thi t cho PIC trong m t Files ten_project.h. Dưi đây là n i dung m t files ch ươ ng trình m u. #include D:\1-PIC project\chuong trinh test.HEX.h #int_EXT EXT_isr() { // Code here } Void Chuong_trinh_con() { // Code here } void main() { setup_adc_ports(AN0); DKS GROUP 24
  25. Microcontroller Training Center setup_adc(ADC_CLOCK_INTERNAL); setup_psp(PSP_DISABLED); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); enable_interrupts(INT_EXT); enable_interrupts(INT_TBE); enable_interrupts(INT_RDA); enable_interrupts(GLOBAL); // Enter your code here } Chuong_trinh_mau.h #include #device adc=8 #FUSES NOWDT,HS,NOPUT,NOPROTECT,NODEBUG, #use delay(clock=20000000) #define SRAM_SCL PIN_C3 #define SRAM_SDA PIN_C4 #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9) 4.3.5. M u ch ươ ng trình chu n cho l p trình CCS Ph n trên ta đã tìm hi u cách t o m t Project trong CCS, tuy nhiên theo cách đĩ m t khá nhi u th i gian, m t khác m i ng ưi l p trình s t o ra nh ưng form tài li u theo cách riêng khác nhau, khơng đng nh t. Tài li u khơng đưc chu n hĩa s gây m t s khĩ kh ăn cho ng ưi đ c, ng ưi đ c cĩ th khơng hi u h t nh ng gì mà ng ưi l p trình mu n di n đ t.V i m c đích đư a ra m t form tài li u chu n cho vi c l p trình b ng CCS, qua tham kh o bn m u cho l p trình b ng ASM c a anh Falleaf trên di n đàn WWW.PICVIETNAM.COM .T ơi đư a ra đây m t form tài li u cho vi c vi t lp trình b ng CCS. ði kèm v ăn b n này cịn cĩ các files ngu n cho v ăn b n mu, bao g m files cho PIC16F877A, 16F876A, 16F88. V sau khi l p trình bn ch vi c copy tài li u này vào th ư m c ch a Project c a b n, sa đ i tên files.Khi c n thay đ i n i dung c u hình cho PIC b n chi vi c tham kh o qua PIC Wizard , xem code và copy đư a vào Project. DKS GROUP 25
  26. Microcontroller Training Center Mơ t n i dung ch ươ ng trình. - #include 16f877a.h : ði kèm ch ươ ng trình d ch, ch a khai báo v các thanh ghi trong mi con PIC, dùng cho vi c c u hình cho PIC. - #include def_877a.h : Files do ng ưi l p trình t o ra, ch a khai báo v các thanh ghi trong PIC giúp cho viêc l p trình đưc d dang h ơn ví d ta co th gán PORTB =0xAA (chi ti t files này s trình bày trong ph n d ưi đây) - #device *=16 ADC = 10 : Khai báo dùng con tr 8 hay 16 bit, b ADC là 8 hay 10 bit - #FUSES NOWDT, HS: Khai báo v c u hình cho PIC - #use delay(clock=20000000): Tn s th ch anh s d ng - #use rs232 (baud=9600, ): Khai báo cho giao ti p n i ti p RS232 - #use i2c(master, SDA=PIN_C4, ): Khai báo dùng I2C, ch đ ho t đng - #include : Khai báo các files th ư vi n đưc s d ng ví d LCD_lib_4bit.c - #INT_xxx : Khai báo đa ch ch ươ ng trình ph c v ng t - Void tên_ch ươ ng_trình (tên_bi n) {}: Ch ươ ng trình chính hay ch ươ ng trình con Ch ươ ng trình m u cho PIC16F877A //=== === // Ten chuong trinh : Mach test den LED_1 // Nguoi thuc hien : Falleaf // Ngay thuc hien : 23/05/2005 // Phien ban : 1.0 // Mo ta phan cung : Dung PIC16F877A - thach anh 20MHz // : LED giao tiep voi PORTB // : Cuc am cua LED noi voi GND // : RB0 - RB7 la cac chan output // // Ngay hoan thanh : 23/05/2005 // Ngay kiem tra : 23/05/2005 // Nguoi kiem tra : Doan Hiep // // Chu thich : Mo ta cac diem khac nhau cua cac phien ban khac nhau // : hoac cac chu thich khac // : vd, dung che do Power On Reset, PORTB = 00000000 // : hoac, chuong trinh viet cho PIC Tutorial // : hoac, chuong trinh nay hoan toan mien phi va co the dung cho // : moi muc dich khac nhau //=== === DKS GROUP 26
  27. Microcontroller Training Center #include #include #device *=16 ADC=8 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP #use delay(clock=20000000) #use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9) #use i2c(Master,Fast,sda=PIN_B1,scl=PIN_B4) #int_xxx // Khai bao chuong trinh ngat xxx_isr() { // Code here } void Ten_chuong_trinh_con(Ten_Bien) { // Code here } void main() { // Enter code here! } Ng ưi báo cáo: Nguy n Chí Linh Tài li u: TUT01.01.PVN Ngày: 4/2/2006 Trang: 12/32 Ch ươ ng trình m u cho PIC16F876A //=== === // Ten chuong trinh : Mach test den LED_1 // Nguoi thuc hien : Falleaf // Ngay thuc hien : 23/05/2005 // Phien ban : 1.0 // Mo ta phan cung : Dung PIC16F876A - thach anh 20MHz // : LED giao tiep voi PORTB // : Cuc am cua LED noi voi GND // : RB0 - RB7 la cac chan output // // Ngay hoan thanh : 23/05/2005 // Ngay kiem tra : 23/05/2005 // Nguoi kiem tra : Doan Hiep // // Chu thich : Mo ta cac diem khac nhau cua cac phien ban khac nhau // : hoac cac chu thich khac // : vd, dung che do Power On Reset, PORTB = 00000000 // : hoac, chuong trinh viet cho PIC Tutorial // : hoac, chuong trinh nay hoan toan mien phi va co the dung cho // : moi muc dich khac nhau //=== === DKS GROUP 27
  28. Microcontroller Training Center #include #include #device *=16 ADC=8 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9) #use i2c(Master,Fast,sda=PIN_B1,scl=PIN_B4) #int_xxx // Khai bao chuong trinh ngat xxx_isr() { // Code here } void Ten_chuong_trinh_con(Ten_Bien) { // Code here } void main() { // Enter code here! } Ch ươ ng trình m u cho PIC16F88 //=== ===A // Ten chuong trinh : Mach test den LED_1 // Nguoi thuc hien : Falleaf // Ngay thuc hien : 23/05/2005 // Phien ban : 1.0 // Mo ta phan cung : Dung PIC16F88 - thach anh 20MHz // : LED giao tiep voi PORTB // : Cuc am cua LED noi voi GND // : RB0 - RB7 la cac chan output // // Ngay hoan thanh : 23/05/2005 // Ngay kiem tra : 23/05/2005 // Nguoi kiem tra : Doan Hiep // // Chu thich : Mo ta cac diem khac nhau cua cac phien ban khac nhau // : hoac cac chu thich khac // : vd, dung che do Power On Reset, PORTB = 00000000 // : hoac, chuong trinh viet cho PIC Tutorial // : hoac, chuong trinh nay hoan toan mien phi va co the dung cho // : moi muc dich khac nhau //=== === #include DKS GROUP 28
  29. Microcontroller Training Center #include #device *=16 ADC=8 #FUSES NOWDT, HS, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG #use delay(clock=20000000) #use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9) #use i2c(Master,Fast,sda=PIN_B1,scl=PIN_B4) #int_xxx // Khai bao chuong trinh ngat xxx_isr() { // Code here } void Ten_chuong_trinh_con(Bien) { // Code here } void main() { // Enter code here! } 1. Giao ti p vào ra I/O 1.1.Gi i thi u Thơng th ưng, trong m t h vi x lý, ng ưi ta l i ph i ghép n i chip vi x lý vi các mơ đun vào ra, tuy nhiên v i t t c các lo i vi điu khi n đu tích hp mơ đun vào ra vào trong chip. B i vì cĩ th nĩi, thao tác vào ra là thao tác quan tr ng nh t mà b t c vi điu khi n nào c n cĩ 1.2.Các c ng vào ra trong PIC16F877 ð gi m b t s chân ra, mt s chân c a PIC là các chân đa ch c n ăng, nĩ ph c v cho các thi t b ngo i vi. đây khái ni m thi t b ngo i vi khơng cĩ ngh ĩa là 1 chip khác mua r i bên ngồi mà là các mơ đun đưc tích h p s n trong chip nh ư các mơ đun ADC Khi các thi t b ngo i vi này đưc enable thì các chân này khơng đưc s dng nh ư các chân c a các c ng I/O thơng th ưng n a. PIC16F877 cĩ 5 c ng vào ra là PORTA, PORTB, PORTC, PORTD, PORTE, t ươ ng ng v i nĩ là các thanh ghi c u hình TRISA, TRISB, TRISC, TRISD, TRISE. Trong PIC, các ng ăn nh trong RAM đưc g i là các thanh ghi, tt nhiên th c t thì khơng đúng b i vì các thanh ghi đưc xem là các thành ph n c a CPU, cịn các ng ăn nh l i thu c b nh . 1.3.Thanh ghi PORTA(bank0) và TRISA(bank1) DKS GROUP 29
  30. Microcontroller Training Center PORTA cĩ 6 bit, 2 h ưng (vào và ra). Các bit c u hình h ưng n m trong thanh ghi TRISA, nu bit t ươ ng ng b ng 0 thì bit đĩ là output và ng ưc l i s là input. Vi c đ c ni dung c a thanh ghi PORTA s đ c các tr ng thái c a các chân, trong khi ghi lên PORTA thì s ghi lên ch t c ng. Mt khác, t t c các ho t đng ghi đ u là ho t đ ng đ c-sa-ghi (read-modify-write). Do đĩ ghi đn 1 cng ngh ĩa là các chân c a c ng đưc đ c, giá tr đưc s a và sau đĩ ghi l i lên ch t d li u c a c ng. Chân RA4 đưc d n kênh v i đ u vao clock c a mơ đun Timer0 g i là chân RA4/T0CKI. Chân này là 1 đu vào Trigger-Schmitt và đu ra h máng. T t c các chân PORTA khác cĩ m c đin áp đ u vào theo m c TTL, cịn đin áp ddaauf ra theo m c CMOS. Các chân PORTA khác đưc d n kênh v i các đ u vào analog và đu vào đin áp tham chi u analog V ref cho c mơ đun ADC và B so sánh b bi n đ i t ươ ng t s ADC 10 bit, 8bit. Ho t đ ng c a các chân này đưc la ch n b ng cách set/clear các bit điu khi n thích h p trong ADCON1 và CMCON.Thanh ghi TRISA điu khi n h ưng c a các chân c a c ng ngay c khi các chân này đưc s d ng nh ư đu vào analog. ð nĩ là đu vào analog thì bit t ươ ng ng c a TRISA cũng ph i set ðon mã sau kh i t o PORTA BCF STATUS, RP0 BCF STATUS, RP1 ; Chuy n v bank0 ch a PORTA CLRF PORTA BSF STATUS, RP1 ; V bank 1 MOVLW 0X06 MOVWF ADCON1 ; C u hình tt c các chân là digital MOVLW 0XCF MOVWF TRISA ; RA là output, RA input 1.2.Thanh ghi PORTB và TRISB PORTB là thanh ghi 8 bit, 2 h ưng. Quan h v i TRISB c ũng t ươ ng t PORTA. Các chân c a PORTB đưc d n kênh v i 1 s ch c n ăng đ c bi t khác và các ch c n ăng debug ngay trong m ch (khơng ph i g chip ra kh i m ch), và ch c n ăng l p trình ch đ đin áp th p: RB3/PGM, RB6/PGC, RB7/PGD. ðây là nh ng ch c n ăng đ c bi t c a CPU. DKS GROUP 30
  31. Microcontroller Training Center Mi chân c a PORTB cĩ 1 đin tr kéo lên nh bên trong. M t bit điu khi n dùng đ “b t” (enable) t t c các đin tr này lên, đây chính là ch c năng c a bit RBPU trong thanh ghi OPTION. ðin tr này đưc t đ ng disable khi c ng này đưc c u hình làm output. RB0/INT là chân d n kênh v i ng t ngồi mà ta s miêu t trong ph n ng t 1.3 Thanh ghi PORTC và TRISC PORTC là thanh ghi 8 bit, 2 h ưng. Cĩ b đ m đ u vào Trigger Schmitt. Nĩ cũng đưc d n kênh v i vài ch c n ăng đ c bi t khác. 1.4 Thanh ghi PORTD và TRISD Là c ng 8 bit, 2 h ưng. cĩ b đ m đ u vào Trigger Schmitt Nĩ d n kênh thêm v i ch c n ăng giao ti p c ng song song Slave (parallel Slave Port) b ng cách thi t l p bit điu khi n PSPMODE (TRISE ) 1.5 Thanh ghi PORTE và TRISE Cĩ 3 chân, cĩ b đ m đ u vào ki u Trigger Schmitt. D n kênh v i các đ u vào analog mà ta s xem xét trong ph n ADC. TRISE do cịn th a 5 bit khơng s d ng trong c u hình PORTE do đĩ các bit th a này đưc dùng đ cu hình các ch c n ăng khác nh ư ch c n ăng c ng song song PSP. 2.S ơ đ m ch ðây là s ơ đ m ch giao ti p v i Led đơn dùng cho PIC 16F877A DKS GROUP 31
  32. Microcontroller Training Center 3. L p trình Bài h c này s h ưng d n các b n cách l p trình điu khi n các con led nh p nháy. Các b n th c hành theo các b ưc sau: -Kh i đ ng ph n m m CCS , click vào project /wizard,,r i gõ tên project c n to. Màn hình s hi n th b ng thơng s cho phép b n l a ch n Bn cĩ th l a ch n các thơng s tu ỳ ý , nh ư ch n device (ch n lo i chip đưc s d ng) 16F877A ,t n s th ch anh 20MHZ .Ngồi ra cịn các thơng s khác nh ư driver , I/O pin ,timer .communication. DKS GROUP 32
  33. Microcontroller Training Center Sau khi thi t l p các thơng s ,b n click ok , đ b ưc vào màn hình so n th o ch ươ ng trình. DKS GROUP 33
  34. Microcontroller Training Center So n th o mã ngu n nh ư sau #include "E:\nguyencan\DKS\led.h" #fuses NOWDT,NOPROTECT,HS #use delay(clock=20000000) void main() { set_tris_b(0x00); while(1) { output_high(PIN_B0); delay_ms(1000); output_low(PIN_B0); delay_ms(1000); } DKS GROUP 34
  35. Microcontroller Training Center } đon mã trên cĩ tác d ng l p trình đ con led n i v i chân RB0 b t t t liên tc. Gi i thích các l nh trong ch ươ ng trình #fuses NOWDT,NOPROTECT,HS Lnh này cho phép ch n các ch đ l p trình NOWDT là khơng ch n ch đ watchdog ,NOPROTECT là khơng cĩ ch đ b o v mã ngu n.HS là dao đng th ch anh. #use delay(clock=20000000) Hàm này ch n ch đ delay theo t n s th ch anh là 20MHZ void main() { set_tris_b(0x00); while(1) { DKS GROUP 35