Bài giảng: Giới thiệu họ Vi điêu khiển 8051

Chia sẻ: A A | Ngày: | Loại File: PDF | Số trang:57

0
350
lượt xem
165
download

Bài giảng: Giới thiệu họ Vi điêu khiển 8051

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Vi diêu khien 8051 là mot trong nhung vi diêu khien 8 bit thông dụng nhât hien nay. Bat dâu xuât hien vào nam 1980, tr i qua gân 30 nam, hien dã có ti hàng tram biên the (derrivatives) dươc s n xuât boi hơn 20 hãng khác nhau, trong dó ph i ke dên các dai gia trong làng bán dan (Semiconductor) như ATMEL, Texas Instrument, Philips, Analog Devices…

Chủ đề:
Lưu

Nội dung Text: Bài giảng: Giới thiệu họ Vi điêu khiển 8051

  1. Bài giảng Giới thiệu họ Vi điêu khiển 8051
  2. cng bài gi ng – 8051 Starter Kit Chương I: Gi i thi u h Vi i u khi n 8051 Vi i u khi n 8051 là m t trong nh ng vi i u khi n 8 bit thông d ng nh t hi n nay. B t u xu t hi n vào năm 1980, tr i qua g n 30 năm, hi n ã có t i hàng trăm bi n th (derrivatives) ư c s n xu t b i hơn 20 hãng khác nhau, trong ó ph i k n các i gia trong làng bán d n (Semiconductor) như ATMEL, Texas Instrument, Philips, Analog Devices… T i Vi t Nam, các bi n th c a hãng ATMEL là AT89C51, AT89C52, AT89S51, AT89S52… ã có th i gian xu t hi n trên th trư ng khá lâu và có th nói là ư c s d ng r ng rãi nh t trong các lo i vi i u khi n 8 bit. Chương này s t p trung mô t tương i chi ti t c u trúc bên trong c a các bi n th nói trên (t m g i chung là AT89) c a hãng ATMEL. C u trúc c a AT89 d ng sơ kh i t ng quát CPU B nh B nh Vào/ra Vào/ra Ng t B nh chương d li u song n i ti p th i / b trình song m P1 Timer0 P2 Timer1 P3 P4 1
  3. cng bài gi ng – 8051 Starter Kit C u trúc bus Bus a ch c a h vi i u khi n 8051 g m 16 ư ng tín hi u (thư ng g i là bus a ch 16 bit). V i s lư ng bit a ch như trên, không gian nh c a chip ư c m r ng t i a là 216 = 65536 a ch , tương ương 64K. Bus d li u c a h vi i u khi n 8051 g m 8 ư ng tín hi u (thư ng g i là bus d li u 8 bit), ó là lý do t i sao nói 8051 là h vi i u khi n 8 bit. V i r ng c a bus d li u như v y, các chip h 8051 có th x lý các toán h ng 8 bit trong m t chu kỳ l nh. CPU (Central Processing Unit) CPU là ơn v x lý trung tâm, ó là b não c a toàn b h th ng vi i n t ư c tích h p trên chip vi i u khi n. CPU có c u t o chính g m m t ơn v x lý s h c và lôgic ALU (Arithmethic Logic Unit) - nơi th c hi n t t c các phép toán s h c và phép lôgic cho quá trình x lý. B nh chương trình (Program Memory) Không gian b nh chương trình c a AT89 là 64K byte, tuy nhiên h u h t các vi i u khi n AT89 trên th trư ng ch tích h p s n trên chip m t lư ng b nh chương trình nh t nh và chi m d i a ch t 0000h tr i trong không gian b nh chương trình. AT89C51/AT89S51 có 4K byte b nh chương trình lo i Flash tích h p s n bên trong chip. ây là b nh cho phép ghi/xóa nhi u l n b ng i n, chính vì th cho phép ngư i s d ng thay i chương trình nhi u l n. S l n ghi/xóa ư c thư ng lên t i hàng v n l n. AT89C52/AT89S52 có 8K byte b nh chương trình cùng lo i. B nh chương trình c a các chip h 8051 có th thu c m t trong các lo i: ROM, EPROM, Flash, ho c không có b nh chương trình bên trong chip. Tên c a t ng chip th hi n chính lo i b nh chương trình mà nó mang bên trong, c th là vài ví d sau: STT Tên chip ROM EPROM Flash 1 8051 4 Kbyte x x 2 8052 8 Kbyte x x 3 8031 x x x 4 8032 x x x 5 87C51 x 4 Kbyte x 6 87C52 x 8 Kbyte x 7 AT89C51 / AT89S51 x x 4 Kbyte 8 AT89C52 / AT89S52 x x 8 Kbyte 2
  4. cng bài gi ng – 8051 Starter Kit B nh chương trình dùng ch a mã c a chương trình n p vào chip. M i l nh ư c mã hóa b i 1 hay vài byte, dung lư ng c a b nh chương trình ph n ánh s lư ng l nh mà b nh có th ch a ư c. a ch u tiên c a b nh chương trình (0x0000) chính là a ch Reset c a 8051. Ngay sau khi reset (do t t b t ngu n, do m c i n áp t i chân RESET b kéo lên 5V...), CPU s nh y n th c hi n l nh t t i a ch này trư c tiên, luôn luôn là như v y. Ph n còn tr ng trong không gian chương trình không dùng làm gì c . N u mu n m r ng b nh chương trình, ta ph i dùng b nh chương trình bên ngoài có dung lư ng như ý mu n. Tuy nhiên khi dùng b nh chương trình ngoài, b nh chương trình onchip không dùng ư c n a, b nh chương trình ngoài s chi m d i a ch ngay t a ch 0x0000. Hình nh minh h a b nh chương trình 0x0FFF Thân chương trình (chương trình chính, chương trình con, chương trình x lý ng t, b ng các h ng s ...) 0x0030 Vector ng t th n ... Vector ng t th 0x0003 1 a ch reset 0x0000 B nh d li u (Data Memory) Vi i u khi n h 8051 có không gian b nh d li u là 64K a ch , ó cũng là dung lư ng b nh d li u l n nh t mà m i chip thu c h này có th có ư c (n u ph i ghép m t cách chính t c, s d ng các ư ng tín hi u c a bus a ch và d li u). B nh d li u c a các chip h 8051 có th thu c m t hay hai lo i: SRAM ho c EEPROM. B nh d li u SRAM ư c tích h p bên trong m i chip thu c h vi i u khi n này, có dung lư ng khác nhau tùy lo i chip, nhưng thư ng ch kho ng vài trăm byte. ây chính là nơi ch a các bi n trung gian trong quá trình ho t ng c a chip. khi m t i n, do b n ch t c a SRAM mà giá tr c a các bi n này cũng b m t theo. Khi có i n tr l i, n i dung c a các ô nh ch a các bi n này cũng là b t kỳ, không th xác nh trư c. Bên c nh b nh lo i SRAM, m t s chip thu c h 3
  5. cng bài gi ng – 8051 Starter Kit 8051 còn có thêm b nh d li u lo i EEPROM v i dung lư ng t i a vài Kbyte, tùy t ng lo i chip c th . Dư i ây là m t vài ví d v b nh chương trình c a m t s lo i chip thông d ng thu c h 8051. STT Tên chip B nh SRAM B nh EEPROM 1 AT89C51 128 byte 0 2 AT89C52 256 byte 0 3 AT89C2051 128 byte 0 4 AT89S51 128 byte 0 5 AT89S52 256 byte 0 6 AT89S8252 256 byte 2048 byte T ng quát v b nh c a 8051, ta có th th y m i chip 8051 g m có nh ng b nh sau: Ph n không gian Ph n không gian a ch cho b nh a ch cho b nh 64 chương trình còn d li u (hoàn toàn Kbyte tr ng, b ng 64 tr ng r ng 64K Kbyte tr i lư ng byte, dành cho b b nh onchip nh d li u ghép thêm bên ngoài n u có) B nh chương trình onchip B nh SRAM Dung lư ng tùy lo i chip i v i các chip có b nh SRAM 128 byte thì a ch c a các byte SRAM này ư c ánh s t 00h n 7Fh. i v i các chip có b nh SRAM 256 byte thì a ch c a các byte SRAM ư c ánh s t 00h n FFh. c hai lo i chip, SRAM có a ch t 00h n 7Fh ư c g i là vùng RAM th p, ph n có a ch t 80h n FFh (n u có) ư c g i là vùng RAM cao. Bên c nh các b nh , bên trong m i chip 8051 còn có m t t p h p các thanh ghi ch c năng c bi t (SFR – Special Function Register). Các thanh ghi này liên quan n ho t ng c a các ngo i vi onchip (các c ng vào ra, timer, ng t ...). a ch c a chúng trùng v i d i a ch c a vùng SRAM cao, t c là cũng có a ch t 80h n FFh. 4
  6. cng bài gi ng – 8051 Starter Kit Vùng RAM cao, có a ch t 80h n FFh Vùng SFR, cũng có a ch t 80h n FFh Vùng RAM th p có a ch t 00h n 7Fh V y khi truy c p vào m t a ch thu c d i t 00h n 7Fh thì s truy c p n ô nh thu c vùng RAM th p. Tuy nhiên khi truy c p n m t a ch x thu c d i t 80h n FFh thì x y ra v n c n gi i quy t: s truy c p n thanh ghi SFR a ch x hay truy c p n ô nh a ch x c a vùng RAM cao? Nhà s n xu t quy nh r ng, trong trư ng h p này, n u ki u truy c p s d ng ch a ch tr c ti p thì s truy c p vào vùng SFR, ngư c l i n u ki u truy c p s d ng ch a ch gián ti p thì s truy c p vào vùng RAM cao. B nh d li u RAM onchip thư ng dùng ch a các bi n t m th i trong quá trình vi i u khi n ho t ng, ó cũng là nơi dành cho ngăn x p ho t ng. Không gian d li u 64Kbyte ư c tr ng hoàn toàn và ch dùng ư c khi ghép n i v i b nh d li u bên ngoài. Khi ghép n i thêm b nh d li u bên ngoài, dung lư ng c a các b nh này s chi m d n các v trí trong không gian, tuy nhiên không h nh hư ng n 128byte RAM onchip. Ngăn x p trong 8051 liên quan n m t thanh ghi tên là con tr ngăn x p SP (Stack Pointer). Thanh ghi này luôn tr vào nh c a ngăn x p, t c là nó ch a a ch c a v trí ngay sát v trí có th lưu a ch /d li u ti p theo vào. Khi c t 1 byte a ch /d li u vào ngăn x p, SP t ng tăng lên 1 ơn v sau ó m i c t a ch /d li u vào ô nh có a ch b ng v i giá tr c a SP sau khi ã tăng. Khi l y 1 byte a ch /d li u ra kh i ngăn x p, giá tr s ư c l y ra sau ó SP m i t ng tr i1 ơn v . Giá tr sau khi reset c a SP là 0x07, do ó quy nh ngăn x p s c t d li u t a ch 0x08 tr i. Tuy nhiên do c tính ho t ng bành trư ng theo chi u tăng a ch mà ngăn x p thư ng ư c b trí lên vùng trên cùng c a b nh RAM onchip tránh tranh ch p v i các bi n lưu trong RAM. 5
  7. cng bài gi ng – 8051 Starter Kit Hình nh minh h a b nh d li u 8052 có 0x7F thêm vùng RAM cao Vùng RAM ( a ch ây là vùng các thư ng (không cũng t thanh ghi ch c ánh a ch bit 0x80 n năng c bi t SFR ư c) 0xFF) (Special Function nhưng Register) có c 0x30 8051 và 8052. truy nh p 0x2F ph i theo Truy nh p Vùng RAM 16 ch a (ghi/ c) vùng này byte có th ánh ch gián là truy nh p vào a ch bit t ti p các a ch t 0x80 0x00 n 0x7F 0x20 phân bi t n 0xFF nhưng 4 băng thanh ghi 0x1F v i vùng ph i theo ch m i băng có 8 SFR a ch tr c ti p thanh ghi R0..7 0x00 6
  8. cng bài gi ng – 8051 Starter Kit B n các thanh ghi ch c năng c bi t SFR 7
  9. cng bài gi ng – 8051 Starter Kit C ng vào ra song song (I/O Port) 8051 có 4 c ng vào ra song song, có tên l n lư t là P0, P1, P2 và P3. T t c các c ng này u là c ng vào ra hai chi u 8bit. Các bit c a m i c ng là m t chân trên chip, như v y m i c ng s có 8 chân trên chip. Hư ng d li u (dùng c ng ó làm c ng ra hay c ng vào) là c l p gi a các c ng và gi a các chân (các bit) trong cùng m t c ng. Ví d , ta có th nh nghĩa c ng P0 là c ng ra, P1 là c ng vào ho c ngư c l i m t cách tùy ý, v i c 2 c ng P2 và P3 còn l i cũng v y. Trong cùng m t c ng P0, ta cũng có th nh nghĩa chân P0.0 là c ng vào, P0.1 l i là c ng ra tùy ý. Liên quan n m i c ng vào/ra song song c a 8051 ch có m t thanh ghi SFR ( thanh ghi ch c năng c bi t) có tên trùng v i tên c a c ng. Ta có các thanh ghi P0 dùng cho c ng P0, thanh ghi P1 dùng cho c ng P1 … ây là các thanh ghi ánh a ch n t ng bit (bit addressable), do ó ta có th dùng các l nh tác ng bit i v i các bit c a các thanh ghi này. M i thanh ghi này g m 8 bit tương ng v i các chân (bit) c a c ng ó. Khi m t chân (bit) c ng nào ó ư c dùng làm c ng vào thì trư c ó bit tương ng trong thanh ghi SFR ph i ư c t m c 1. N u m t chân (bit) c ng nào ó ư c dùng làm c ng ra thì giá tr c a bit tương ng trong thanh ghi SFR s là giá tr lôgic mu n ưa ra chân c ng ó. N u mu n ưa ra m c lôgic cao ( i n áp g n 5V), bit tương ng trong thanh ghi ph i ư c t b ng 1, hi n nhiên n u mu n ưa ra m c lôgic th p ( i n áp g n 0V) thì bit tương ng trong thanh ghi ph i ư c t b ng 0. Như ã nói trên, các bit trong thanh ghi c ng có th ư c t b ng 1/0 mà không làm nh hư ng n các bit còn l i trong c ng ó b ng cách dùng các l nh setb ( t lên 1) hay clr ( t v 0). Sau khi t m t chân c ng làm c ng vào, ta có th dùng các l nh ki m tra bit c vào và ki m tra các m c lôgic c a m ch ngoài ang áp vào là m c 0 hay m c 1. Các l nh này là jb (nh y n u bit b ng 1), jnb (nh y n u bit b ng 0). M i c ng có c u trúc g m m t latch (chính là các bit c a thanh ghi c ng), m ch lái u ra (output driver) và m ch m u vào (input buffer). Ngoài ch c năng vào/ra thông thư ng, m t s c ng còn ư c tích h p thêm ch c năng c a m t s ngo i vi khác. Xem b ng li t kê sau: Các chân c ng P1.0 và P1.1 ư c tích h p v i các tín hi u c a timer2 trong trư ng h p chip là 8052. Khi dùng v i các ch c năng c a các ngo i vi, chân c ng tương ng ph i ư c t lên 1. N u không các tín hi u s luôn b ghim m c 0. 8
  10. cng bài gi ng – 8051 Starter Kit Sơ c a m ch c a m t chân c ng: C ng P0 không có i n tr treo cao (pullup resistor) bên trong, m ch lái t o m c cao ch có khi s d ng c ng này v i tính năng là bus d n kênh a ch /d li u. Như v y v i ch c năng ra thông thư ng, P0 là c ng ra open drain, v i ch c năng vào, P0 là c ng vào cao tr (high impedance). N u mu n s d ng c ng P0 làm c ng vào/ra thông thư ng, ta ph i thêm i n tr pullup bên ngoài. Giá tr i n tr pullup bên ngoài thư ng t 4K7 n 10K. Các c ng P1, P2 và P3 u có i n tr pullup bên trong, do ó có th dùng v i ch c năng c ng vào/ra thông thư ng mà không c n có thêm i n tr pullup bên ngoài. Th c ch t, i n tr pullup bên trong là các FET, không ph i i n tr tuy n tính thông thư ng, tuy v y nhưng kh năng phun dòng ra c a m ch lái khi u ra m c cao (ho c khi là u vào) r t nh , ch kho ng 100 micro Ampe. Trong datasheet c a AT89S5x (m t trong nh ng bi n th c a h 8051 do Atmel s n xu t) có th ng kê s li u như sau: 9
  11. cng bài gi ng – 8051 Starter Kit Theo ó, n u ta thi t k các c ng ph i cung c p cho t i u ra m c cao m t lư ng dòng i n IOH = 60 micro Ampe thì m c i n áp u ra VOH s b kéo s t xu ng, ch có th m b o t 2.4V tr lên b i nhà s n xu t, không th cao sát v i 5V như lý thuy t. Trong khi ó, kh năng nu t dòng c a m ch lái khi u ra m c th p l i cao hơn r t nhi u, có th t t vài n hàng ch c mili Ampe. Như v y, khi thi t k v i các ph n t bên ngoài, ta nên ý n c tính vào/ra c a các chân c ng. Ví d khi dùng ghép n i v i LED ơn ho c LED 7 thanh, ta nên thi t k chân c ng nu t dòng t LED làm LED sáng (c ng n i v i Cathode c a LED), không nên thi t k chân c ng phun dòng cho LED làm LED sáng (c ng n i v i Anode c a LED). C ng vào ra n i ti p (Serial Port) C ng n i ti p trong 8051 ch y u ư c dùng trong các ng d ng có yêu c u truy n thông v i máy tính, ho c v i m t vi i u khi n khác. Liên quan n c ng n i ti p ch y u có 2 thanh ghi: SCON và SBUF. Ngoài ra, m t thanh ghi khác là thanh ghi PCON (không ánh a ch bit) có bit 7 tên là SMOD quy nh t c truy n c a c ng n i ti p có g p ôi lên (SMOD = 1) hay không (SMOD = 0). D li u ư c truy n nh n n i ti p thông qua hai chân c ng P3.0(RxD) và P3.1(TxD). Thanh ghi SBUF là thanh ghi 8bit ch a d li u truy n ho c nh n. V th c ch t có hai thanh ghi d li u khác nhau, m t dành ch a d li u truy n i, m t ch a d li nh n ư c. C hai thanh ghi này u có chung m t tên là SBUF, tuy nhiên CPU hoàn toàn phân bi t ư c m t cách d dàng. Khi ta mu n truy n d li u i, ta ph i ghi vào thanh ghi SBUF (ví d vi t l nh mov SBUF,a), còn khi mu n c ki m tra d li u nh n v ta ph i c thanh ghi SBUF (ví d vi t l nh mov a,SBUF). CPU s căn c vào vi c thanh ghi SBUF n m v trí toán h ng ích (toán h ng bên trái) hay toán h ng ngu n (toán h ng bên ph i) quy t nh s truy nh p ( c/ghi) thanh ghi SBUF nào. Ngư i l p trình không c n ph i quan tâm x lý v n này. Thanh ghi quy nh ch ho t ng và i u khi n c ng n i ti p là thanh ghi SCON ( ánh a ch bit). SM0 SM1 SM2 REN TB8 RB8 TI RI Bit SM0, SM1, SM2 quy nh ch ho t ng c a c ng n i ti p. Thông thư ng truy n thông gi a 2 vi i u khi n ho c gi a 1 vi i u khi n và 1 máy tính, giá tr c a bit SM2 ư c t b ng 0. Khi truy n thông theo ki u m ng a vi x lý (multiprocessor communication), SM2 ư c t b ng 1. Hai bit SM0 và SM1 th c s là các bit quy nh ch ho t ng c a c ng n i ti p, chúng t o ra 4 t h p (00,01,10 và 11) ng v i 4 ch ho t ng mô t trong b ng sau. 10
  12. cng bài gi ng – 8051 Starter Kit SM0 SM1 Ch Khung d li u Baud rate 0 0 0- ng b 8 bit SBUF Fosc/12 0 1 1-D b 8 bit SBUF Thay i ư c 1 0 2-D b 8bit SBUF + RB8/TB8 Fosc/32 ho c Fosc/64 1 1 3-D b 8bit SBUF + RB8/TB8 Thay i ư c Ch 0: là ch truy n ng b duy nh t. Chân RxD s là tín hi u truy n/nh n d li u, chân TxD là tín hi u xung nh p. Bit LSB (bit 0) c a d li u ư c truy n i trư c tiên. T c truy n c nh và b ng 1/12 giá tr th ch anh. Ch 1: là ch truy n d b 8 bit. D li u 8 bit ư c óng khung b i m t bit Start (= 0) u và m t bit Stop (=1) cu i trư c khi ư c truy n i. T c truy n thay i ư c theo ý ngư i l p trình. Ch 2: là ch truy n d b 9 bit. D li u 9 bit ư c ghép thành b i 8bit trong thanh ghi SBUF và bit RB8 (trư ng h p nh n v ) ho c TB8 (trư ng h p truy n i) trong thanh ghi SCON. Ngoài ra các bit Start và Stop v n ư c g n bình u và cu i khung truy n. Trong ch này, t c truy n ch có th ch n ư c 1 trong 2 m c: 1/32 ho c 1/64 giá tr c a th ch anh (tùy thu c vào giá tr c a bit SMOD trong thanh ghi PCON ã nói trên). Ch 3: cũng là ch truy n d b 9 bit, khác v i ch 2 ch t c truy n có th thay i ư c theo ý ngư i l p trình như trong ch 1. Bit REN trong thanh ghi SCON là bit cho phép nh n d li u. D li u ch ư c nh n qua c ng n i ti p khi bit này = 1. Bit TB8 là bit d li u th 9 trong trư ng h p truy n i 9 bit (8 bit kia trong thanh ghi SBUF). Bit RB8 là bit d li u th 9 trong trư ng h p nh n v 9 bit (8 bit kia trong thanh ghi SBUF). Bit TI là c ng t truy n, báo hi u vi c truy n 1 khung d li u ã hoàn t t. Bit RI là c ng t nh n, báo hi u vi c nh n 1 khung d li u ã hoàn t t. t o ra t c truy n (Baud rate) c a c ng n i ti p trong 8051, ph i dùng n timer1 ch Auto Reload 8bit. Giá tr n p l i ch a trong thanh ghi TH1 ư c tính toán theo công th c sau (ph thu c vào Baud rate mong mu n và giá tr c a th ch anh). Tóm l i s d ng c ng n i ti p c a 8051, hãy th c hi n các bư c sau: - Ch n ch cho c ng n i ti p ( ng b /d b , 8bit/9bit...), t ó ch n ư c giá tr cho các bit trong thanh ghi SCON. Lưu ý xóa các bit TI và RI. 11
  13. cng bài gi ng – 8051 Starter Kit - Ch n t c truy n mong mu n, t ó tính ra giá tr c a thanh ghi TH1. Cho timer1 ch y ch Auto Reload 8bit (không dùng ng t tràn timer1). - t m c ưu tiên ng t và cho phép ng t c ng n i ti p n u mu n. - B t u quá trình truy n d li u b ng m t l nh ghi d li u mu n truy n vào thanh ghi SBUF. Quá trình truy n k t thúc thì c TI s t ng t lên 1. - Khi m t khung d li u ã ư c nh n y , c RI s t ng t lên 1 và ngư i l p trình lúc này có th dùng l nh c thanh ghi SBUF l y d li u nh n ư c ra x lý. Ng t (Interrupt) 8051 ch có m t s lư ng khá ít các ngu n ng t (interrupt source) ho c có th g i là các nguyên nhân ng t. M i ng t có m t vector ng t riêng, ó là m t a ch c nh n m trong b nh chương trình, khi ng t x y ra, CPU s t ng nh y n th c hi n l nh n m t i a ch này. B ng tóm t t các ng t trong 8051 như sau: STT Tên ng t Mô t C Thanh ghi Vector ng t ng t ch a c 1 INT0 Ng t ngoài 0 khi có tín IE0 TCON 0x0003 hi u tích c c theo ki u ã ch n chân P3.2 2 Timer0 Ng t tràn timer0 khi TF0 TCON 0x000B giá tr timer0 tràn t giá tr max v giá tr min 3 INT1 Ng t ngoài 1 khi có tín IE1 TCON 0x0013 hi u tích c c theo ki u ã ch n chân P3.3 4 Timer1 Ng t tràn timer1 khi TF1 TCON 0x001B giá tr timer1 tràn t giá tr max v giá tr min 5 Serial Port Ng t c ng n i ti p khi TI, RI SCON 0x0023 vi i u khi n nh n ho c truy n xong m t byte b ng c ng n i ti p V i 8052, ngoài các ng t trên còn có thêm ng t c a timer2 (do vi i u khi n này có thêm timer2 trong s các ngo i vi onchip). M i ng t ư c dành cho m t vector ng t kéo dài 8byte. V m t lý thuy t, n u chương trình ng n, mã t o ra ch a trong 8 byte, ngư i l p trình hoàn toàn có th t ph n chương trình x lý ng t ngay t i vector ng t. Tuy nhiên trong h u h t các trư ng h p, chương trình x lý ng t có dung lư ng mã t o ra l n hơn 8byte nên t i vector ng t, ta ch t l nh nh y t i chương trình x lý ng t n m vùng nh khác. N u không làm v y, mã chương trình x lý ng t này s l n sang, è vào vector ng t k c n. 12
  14. cng bài gi ng – 8051 Starter Kit Liên quan n ng t ch y u có hai thanh ghi là thanh ghi IE và thanh ghi IP. cho phép m t ng t, bit tương ng v i ng t ó và bit EA ph i ư c t b ng 1. Thanh ghi IE là thanh ghi ánh a ch bit, do ó có th dùng các l nh tác ng bit tác ng riêng r lên t ng bit mà không làm nh hư ng n giá tr các bit khác. C ng t ho t ng c l p v i vi c cho phép ng t, i u ó có nghĩa là c ng t s t ng t lên b ng 1 khi có s ki n gây ng t x y ra, b t k s ki n ó có ư c cho phép ng t hay không. Do v y, trư c khi cho phép m t ng t, ta nên xóa c c a ng t ó m b o sau khi cho phép, các s ki n gây ng t trong quá kh không th gây ng t n a. Ví d trư c khi cho phép ng t timer0 mà timer 0 ã ch y và tràn (dù là tràn m t hay nhi u l n) thì c TF0 s b ng 1, n u sau ó ta cho phép ng t timer0 thì s gây ra ng t ngay do c tràn ang b ng 1 (s ki n tràn gây ng t trong trư ng h p này là tràn trong quá kh , không ph i s ki n ta quan tâm n). Vì v y hãy xóa c TF0 trư c khi cho phép ng t tràn timer0. Ngo i tr c c a c a ng t n i ti p (và c c a ng t timer2 trong 8052), các c ng t khác u t ng ư c xóa khi CPU th c hi n chương trình ph c v ng t. Lý do là ng t c ng n i ti p (và ng t timer2 trong 8052) ư c gây ra b i 2 nguyên nhân (có 2 c cho m i ng t), khi x y ra ng t, ngư i l p trình c n ph i ki m tra xem c nào ư c t b ng 1 phân bi t nguyên nhân gây ra ng t ó là nguyên nhân nào x lý thích h p. Ví d ng t c ng n i ti p là ng t ư c gây ra b i 1 trong 2 nguyên nhân: vi i u khi n nh n xong ho c truy n xong m t byte d li u qua c ng n i ti p. X y ra s ki n nào thì c ng t tương ng s t ng ư c t lên b ng 1, n u nh n xong thì c RI b ng 1, n u truy n xong thì c TI b ng 1. Trong chương trình x lý ng t, ngư i l p trình ph i ki m tra c TI hay c RI b ng 1 quy t nh x lý ng t truy n hay x lý ng t nh n. Sau khi ki m tra, ngư i l p trình ph i vi t l nh xóa c ó vì vi c này không ư c CPU th c hi n t ng như các c ng t khác. 13
  15. cng bài gi ng – 8051 Starter Kit Nói n ng t không th không nói n m c ưu tiên c a ng t. M c ưu tiên c a ng t ây có th ư c hi u là s phân b c, quy t nh x lý ng t nào khi hai hay nhi u ng t x y ra. Có 2 cơ ch phân b c ưu tiên. Th nh t là cơ ch phân b c dành cho các ng t x y ra ng th i, hai ng t A và B x y ra cùng m t th i i m nhìn t phía vi i u khi n. Th hai là cơ ch phân b c dành cho các ng t x y ra xen k nhau, trong khi ang x lý ng t A thì ng t B x y ra, v y thì trong t ng trư ng h p, CPU s x lý ra sao? Hãy xem dư i ây. V i trư ng h p các ng t x y ra ng th i, CPU s xem xét m c ưu tiên c a các ng t ó, t ó quy t nh x lý ng t có m c ưu tiên cao hơn trư c. M c ưu tiên trong trư ng h p này là m c ưu tiên c ng ( ư c quy nh b i nhà s n xu t, b i c u trúc s n có c a 8051 và ngư i l p trình không th thay i ư c). Nhìn vào b ng trên ta th y ng t INT0 là ng t có m c ưu tiên cao nh t và ng t timer2 là ng t có m c ưu tiên th p nh t trong s các ng t. Như v y n u ng t ngoài 1 và ng t timer0 cùng x y ra m t lúc, ng t timer0 s ư c CPU x lý trư c, sau ó m i x lý ng t ngoài 1. V i trư ng h p x y ra ng t xen k , khi CPU ang x lý ng t A mà ng t B x y ra, CPU s gi i quy t theo 2 hư ng: ti p t c x lý ng t A n u m c ưu tiên c a ng t B không cao hơn m c ưu tiên c a ng t A, ho c s d ng vi c x lý ng t A l i, chuy n sang x lý ng t B n u m c ưu tiên c a ng t B cao hơn m c ưu tiên c a ng t A. M c ưu tiên cho các ng t trong trư ng h p này không ph i là m c ưu tiên c ng do nhà s n xu t quy nh (t c là không căn c vào b ng trên) mà là do ngư i l p trình t. L p trình viên có th dùng thanh ghi IP quy nh m c ưu tiên cho các ng t m t trong hai m c: m c cao và m c th p. t m c ưu tiên c a m t ng t (trong trư ng h p x y ra xen k ) m c cao, ta t bit tương ng v i ng t ó trong thanh ghi IP b ng 1, m c th p ng v i giá tr bit = 0. Thanh ghi IP (Interrupt Priority) - - PT2 PS PT1 PX1 PT0 PX0 Các bit trong thanh ghi IP tương ng v i các ng t úng như trong thanh ghi IE (bit PX0 dành cho ng t ngoài 0, bit PT0 dành cho ng t timer 0…) 14
  16. cng bài gi ng – 8051 Starter Kit M t i u d nh n ra là n u m t ng t ư c t m c ưu tiên cao (bit tương ng trong thanh ghi IP b ng 1) thì s ch ng có ng t nào có th xen vào quá trình x lý nó ư c n a. Nói v m c ưu tiên ng t, có th dùng m t ví d t ng quát sau, gi s hai ng t timer0 và ng t c ng n i ti p cùng ư c cho phép (các bit tương ng và bit EA trong thanh ghi IE ư c t b ng 1), bit PT0 = 0, bit PS = 1 thì: - N u hai ng t cùng x y ra, ng t timer0 s th ng th và ư c ph c v trư c. - N u ng t c ng n i ti p x y ra trư c và ang ư c x lý thì ng t timer0 n u có x y ra cũng không th chen vào, làm d ng quá trình x lý ng t c ng n i ti p ư c. - N u ng t timer0 x y ra trư c và ang ư c x lý mà ng t c ng n i ti p x y ra thì CPU s ph i d ng vi c x lý ng t timer0 l i, chuy n sang x lý ng t c ng n i ti p, x lý xong m i quay l i x lý ti p ng t timer0. Như ã nói trên, 8051 có 2 ng t ngoài là INT0 và INT1. Ng t ngoài ư c hi u là ng t ư c gây ra b i s ki n m c lôgic 0 (m c i n áp th p, g n 0V) ho c sư n xu ng (s chuy n m c i n áp t m c cao v m c th p) x y ra chân ng t tương ng (P3.2 v i ng t ngoài 0 và P3.3 v i ng t ngoài 1). Vi c l a ch n ki u ng t ư c th c hi n b ng các bit IT (Interrupt Type) n m trong thanh ghi TCON. ây là thanh ghi i u khi n timer nhưng 4 bit LSB (bit0..3) ư c dùng cho các ng t ngoài. Khi bit ITx = 1 thì ng t ngoài tương ng ư c ch n ki u là ng t theo sư n xu ng, ngư c l i n u bit ITx = 0 thì ng t ngoài tương ng ư c s có ki u ng t là ng t theo m c th p. Các bit IE là các bit c ng t ngoài, ch có tác d ng trong trư ng h p ki u ng t ư c ch n là ng t theo sư n xu ng. Khi ki u ng t theo sư n xu ng ư c ch n thì ng t s x y ra duy nh t m t l n khi có sư n xu ng c a tín hi u, sau ó khi tín hi u m c th p, ho c có sư n lên, ho c m c cao thì cũng không có ng t x y ra n a cho n khi có sư n xu ng ti p theo. C ng t IE s d ng lên khi có sư n xu ng và t ng b xóa khi CPU b t u x lý ng t. Khi ki u ng t theo m c th p ư c ch n thì ng t s x y ra b t c khi nào tín hi u t i chân ng t m c th p. N u sau khi x lý xong ng t mà tín hi u v n m c th p thì l i ng t ti p, c như v y cho n khi x lý xong ng t l n th n , tín hi u ã lên m c cao r i thì thôi không ng t n a. C ng t IE trong trư ng h p này không có ý nghĩa gì c . Thông thư ng ki u ng t hay ư c ch n là ng t theo sư n xu ng. B nh th i/B m (Timer/Counter) 8051 có 2 timer tên là timer0 và timer1. Các timer này u là timer 16bit, giá tr m max do ó b ng 216 = 65536 ( m t 0 n 65535). 15
  17. cng bài gi ng – 8051 Starter Kit Hai timer có nguyên lý ho t ng hoàn toàn gi ng nhau và c l p. Sau khi cho phép ch y, m i khi có thêm m t xung t i u vào m, giá tr c a timer s t ng ư c tăng lên 1 ơn v , c như v y cho n khi giá tr tăng lên vư t quá giá tr max mà thanh ghi m có th bi u di n thì giá tr m l i ư c ưa tr v giá tr min (thông thư ng min = 0). S ki n này ư c hi u là s ki n tràn timer (overflow) và có th gây ra ng t n u ng t tràn timer ư c cho phép (bit ETx trong thanh ghi IE = 1). Vi c cho timer ch y/d ng ư c th c hi n b i các bit TR trong thanh ghi TCON ( ánh a ch n t ng bit). Khi bit TRx = 1, timerx s m, ngư c l i khi TRx = 0, timerx s không m m c dù v n có xung ưa vào. Khi d ng không m, giá tr c a timer ư c gi nguyên. Các bit TFx là các c báo tràn timer, khi s ki n tràn timer x y ra, c s ư c t ng t lên b ng 1 và n u ng t tràn timer ư c cho phép, ng t s x y ra. Khi CPU x lý ng t tràn timerx, c ng t TFx tương ng s t ng ư c xóa v 0. Giá tr m 16bit c a timerx ư c lưu trong hai thanh ghi THx (byte cao) và TLx (byte th p). Hai thanh ghi này có th ghi/ c ư c b t kỳ lúc nào. Tuy nhiên nhà s n xu t khuy n cáo r ng nên d ng timer (cho bit TRx = 0) trư c khi ghi/ c các thanh ghi ch a giá tr m. Các timer có th ho t ng theo nhi u ch , ư c quy nh b i các bit trong thanh ghi TMOD (không ánh a ch n t ng bit). 16
  18. cng bài gi ng – 8051 Starter Kit xác nh th i gian, ngư i ta ch n ngu n xung nh p (clock) ưa vào m trong timer là xung nh p bên trong (dành cho CPU). Ngu n xung nh p này thư ng r t u n (có t n s n nh), do ó t s m c a timer ngư i ta có th nhân v i chu kỳ xung nh p tính ra th i gian trôi qua. Timer lúc này ư c g i chính xác v i cái tên “timer”, t c b nh th i. m các s ki n bên ngoài, ngư i ta ch n ngu n xung nh p ưa vào m trong timer là tín hi u t bên ngoài ( ã ư c chu n hóa v d ng xung vuông 0V/5V). Các tín hi u này s ư c n i v i các bit c ng có d n kênh thêm các tính năng T0/T1/T2. Khi có s ki n bên ngoài gây ra thay i m c xung u vào m, timer s t ng tăng lên 1 ơn v gi ng như trư ng h p m xung nh p bên trong. Lúc này, timer ư c g i chính xác v i cái tên khác: “counter”, t c b m (s ki n). Nhìn vào b ng mô t thanh ghi TMOD bên trên, ta có th nh n th y có 2 b 4 bit gi ng nhau (g m GATEx, C/Tx, Mx0 và Mx1) dành cho 2 timer0 và 1. Ý nghĩa các bit là như nhau i v i m i timer. Bit GATEx quy nh vi c cho phép timer m (run timer). N u GATEx = 0, timerx s m khi bit TRx b ng 1, d ng khi bit TRx b ng 0. N u GATEx = 1, timerx s ch m khi bit TRx = 1 và tín hi u t i chân INTx = 1, d ng khi m t trong hai i u ki n trên không còn th a mãn. Thông thư ng ngư i ta dùng timer v i GATE = 0, ch dùng timer v i GATE = 1 trong trư ng h p mu n o r ng xung vì lúc ó timer s ch m th i gian khi xung ưa vào chân INTx m c cao. Bit C/Tx quy nh ngu n clock ưa vào m trong timer. N u C/Tx = 0, timer s ư c c u hình là b nh th i, n u C/Tx = 1, timer s ư c c u hình là b m s ki n. Hai bit còn l i (Mx0 và Mx1) t o ra 4 t h p các giá tr (00,01,10 và 11) ng v i 4 ch ho t ng khác nhau c a timerx. Trong 4 ch ó thư ng ch dùng ch timer/counter 16bit (Mx1 = 0, Mx0 = 1) và ch Auto Reload 8bit timer/counter (Mx1 = 1, Mx0 = 0). Trong ch timer/counter 16bit, giá tr m (ch a trong hai thanh ghi THx và TLx) t ng ư c tăng lên 1 ơn v m i l n nh n ư c thêm m t xung nh p. Khi giá tr m tăng vư t quá giá tr max = 65535 thì s tràn v 0, c ng t TFx ư c t ng t = 1. Ch này ư c dùng trong các ng d ng m th i gian và m s ki n. Trong ch Auto Reload 8bit, giá tr m s ch ư c ch a trong thanh ghi TLx, còn giá tr c a thanh ghi THx b ng m t s n (t 0 n 255) do ngư i l p trình ưa vào. Khi có thêm 1 xung nh p, giá tr m trong TLx ương nhiên cũng tăng lên 1 ơn v như bình thư ng. Tuy nhiên trong trư ng h p này, giá tr m l n nh t là 255 ch không ph i 65535 như trư ng h p trên vì timer/counter ch còn 8bit. Do v y s ki n tràn lúc này x y ra nhanh hơn, ch c n vư t quá 255 là giá tr ms tràn. C ng t TFx v n ư c t ng t = 1 như trong trư ng h p tràn 16bit. i m khác bi t là thay vì tràn v 0, giá tr THx s ư c t ng n p l i (Auto Reload) vào thanh ghi TLx, do ó timer/counter sau khi tràn s có giá tr b ng n (giá tr ch a trong THx) và s m t giá tr n tr i. Ch này ư c dùng trong vi c t o Baud rate cho truy n thông qua c ng n i ti p. 17
  19. cng bài gi ng – 8051 Starter Kit s d ng timer c a 8051, hãy th c hi n các bư c sau: - Quy nh ch ho t ng cho timer b ng cách tính toán và ghi giá tr cho các bit trong thanh ghi TMOD. - Ghi giá tr m kh i u mong mu n vào 2 thanh ghi m THx và TLx. ôi khi ta không mu n timer/counter b t u m t 0 mà t m t giá tr nào ó th i i m tràn g n hơn, ho c ch n hơn trong tính toán sau này. Ví d n u cho timer m t 15535 thì sau 50000 xung nh p (t c 50000 micro giây v i th ch anh 12MHz) timer s tràn, và th i gian m t giây có th d dàng tính ra khá chính xác = 20 l n tràn c a timer ( ương nhiên m i l n tràn l i ph i n p l i giá tr 15535). - t m c ưu tiên ng t và cho phép ng t tràn timer (n u mu n). - Dùng bit TRx trong thanh ghi TCON cho timer ch y hay d ng theo ý mu n. 18
  20. cng bài gi ng – 8051 Starter Kit Chương II: Các ngôn ng l p trình cho vi i u khi n Trong k thu t vi x lý nói chung, ngôn ng l p trình thư ng ư c chia làm 2 lo i: Ngôn ng b c th p và Ngôn ng b c cao. Ngôn ng b c th p là ngôn ng máy ho c ngôn ng g n v i máy. Ngôn ng máy là ngôn ng b c th p nh t, chính là mã máy d ng nh phân. L p trình v i ngôn ng này ng nghĩa v i vi c l p trình viên ph i vi t t ng bit 0/1 cho t ng mã l nh c th , ương nhiên ó là vi c r t v t v và khó khăn. K n là ngôn ng g n v i máy, chính là h p ng (Assembly). V i ngôn ng này, l p trình viên có th vi t các l nh c th d ng ký t , tuân theo m t t p h p các ký t nh t nh g i là t p l nh. Nói cách khác, c p này, l p trình viên s vi t các l nh d ng mã g i nh (mnemonic) thay vì ph i vi t các bit 0/1 cho các mã l nh c th . Trình h p ng (Assembler) - m t ph n m m trên máy tính - s m nhi m vi c d ch các l nh do l p trình viên vi t d ng mã g i nh sang d ng mã máy 0/1. Ngôn ng b c cao là các ngôn ng g n v i ngôn ng con ngư i hơn, do ó vi c l p trình b ng các ngôn ng này tr nên d dàng và ơn gi n hơn. Có th k n m t s ngôn ng l p trình b c cao như C, Basic, Pascal… trong ó C là ngôn ng thông d ng hơn c trong k thu t vi x lý. V b n ch t, s d ng các ngôn ng này thay cho ngôn ng b c th p là s gi m t i cho l p trình viên trong vi c nghiên c u các t p l nh và xây d ng các c u trúc gi i thu t. Chương trình vi t b ng ngôn ng b c cao cũng s ư c m t ph n m m trên máy tính g i là trình biên d ch (Compiler) chuy n sang d ng h p ng trư c khi chuy n sang mã máy. M i lo i ngôn ng có ưu và như c i m riêng. V i h p ng ( i di n cho ngôn ng b c th p): - Ưu i m: mã máy sinh ra r t ng n g n, th i gian x lý c a CPU vì th cũng ư c gi m thi u, trình h p ng (Assembler) c a các h vi i u khi n u mi n phí i v i ngư i s d ng. - Như c i m: khó khăn trong vi c ti p c n v i t p l nh (tuy d ng mã g i nh nhưng v n chưa th c s g n v i ngôn ng con ngư i), các c u trúc gi i thu t (if…else, for…, switch…case…) h u h t không có s n, vì v y quá trình l p trình khó khăn, m t nhi u th i gian và công s c, vi c k th a và phát tri n là g n như không th . V i ngôn ng C ( i di n cho ngôn ng b c cao): - Ưu i m: ngôn ng g n v i ngôn ng con ngư i, các c u trúc gi i thu t có s n, do ó t o s thu n ti n, d dàng trong s di n t thu t toán, vi c k th a và phát tri n là kh thi, t n ít th i gian. 19
Đồng bộ tài khoản