intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

435
lượt xem
167
download
 
  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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2