bài tập lớn môn kĩ thuật vi xử lý - vi điều khiển 8051
Trang 1TRƯỜNG ĐẠI HỌC THÀNH ĐÔ KHOA ĐIỆN - ĐIỆN TỬ
BÀI TẬP LỚN MÔN KĨ THUẬT
Trang 2MỤC LỤC
Trang 3LỜI NÓI ĐẦU
Trong sự phát triển của đất nước ta hiện nay, điện- điện tử là ngành có vai trò rấtquan trọng trong sự phát triển chung đó Các hệ thống điện- điện tử được ứng dụngtrong mọi lĩnh vực của đời sống cũng như trong các dây truyền sản xuất hiện đại
Để xây dựng lên các hệ thống điện- điện tử phải cần rất nhiều kiến thức như:Phân tích hệ thống, thiết kế đánh giá hệ thống, kiến thức về phần cứng, kiến thức vềphần mềm…Vì vậy đòi hỏi các kỹ sư điện tử phải có một kiến thức vững vàng
Bản báo cáo này cung cấp những kiến thức cơ bản nhất về vi điều khiển 8051.Đồng thời qua những kiến thức cơ bản đó, các bạn sinh viên sẽ có cái nhìn tổng quátnhất về vi xử lý và vi điều khiển
Nội dung của bản báo cáo gồm 3 chương:
Chương 1: Họ vi điều khiển 8051.
Chương 2: Ngắt và Timer trong 8051.
Chương 3: Một số bài ứng dụng của 8051.
Vì thời lượng biên soạn có hạn nên trong bản báo cáo này, nhóm em chỉ đưa ranhững vấn đề cơ bản nhất Nhóm em mong các quí thầy cô có những lời khuyên giúpnhóm em hoàn thiện hơn bản báo cáo này
Chúng em xin chân thành cảm ơn !
Trang 4Chương 1
HỌ VI ĐIỀU KHIỂN 8051 1.1 Một số khái niệm cơ bản:
1.1.1.Vi xử lí (VXL): Là thuật ngữ chung dùng để ứng dụng các công nghệ vi xử lí,
công nghệ tích hợp và xử lí theo chương trình vớ các chip được chế tạo chỉ tích hợpnhững phần cứng thiết yếu như CPU cùng với các giao tiếp với CPU và các phần cứngkhác Các phần cứng còn lại (kể cả bộ nhớ) không được tích hợp lên chip mà đượcghép nối bên ngoài
1.1.2 Vi điều khiển (VĐK): Là thuật ngữ dùng để chỉ các chíp được tích hợp các thiết
bị ngoại vi lên trên cùng 1 IC, việc tích hợp thêm các thiết bị ngoại vi như vậy tạo ranhiều lợi ích như : giảm thiểu các ghép nối bên ngoài, giảm thiểu các linh kiện điện tửphụ, giảm chi phí cho thiết kế hệ thống, nâng cao hiệu xuất và tính năng sử dụng
1.1.3 Các phương pháp lựa chọn một bộ vi điều khiển:
Hiện nay, có 4 bộ vi điều khiển 8 bit chính Đó là : 6811 của Motorola, 8051 củaIntel, Z8 của Xilog và Pic16 x của Microchip Technology Mỗi một loại trên điều cómột tập lệnh và thanh ghi riêng duy nhất, nếu chúng không tương thích lẫn nhau Vàcũng có rất nhiều các nhà sản suất khác có cùng loại như trên, vậy đâu sẽ là tiêu chuẩnlựa chọn một bộ vi điều khiển cơ bản Gồm có 3 tiêu chuẩn chính trong việc lựa chọnmột bộ vi điều khiển là :
- Tiêu chuẩn thứ nhất: Là phải đáp ứng nhu cầu tính toán của bài toán một cách hiệu
quả về mặt giá thành và đầy đủ chức năng có thể nhìn thấy được
Trong khi phân tích bài toán thì trước hết bộ vi điều khiển mà ta chọn phải đápứng được nhu cầu đặt ra về mặt công suất và giá thành Chúng ta phải biết được bộ viđiều khiển nào là 8 bit,16 bit hay 32 bit để có thể đáp ứng tốt nhất nhu cầu bài toán, cáctiêu chuẩn được đưa ra để cân nhắc là:
+ Tốc độ: Tốc độ lớn nhất mà bộ vi điều khiển hỗ trợ là bao nhiêu
+ Kiểu đóng vỏ: Đó là kiểu đóng 40 chân DIP hay QEP hay là kiểu khác
Trang 5+ Công suất tiêu thụ: Điều này đặc biệt khắt khe đối với những sản phẩm dùngpin,acquy…
+ Dung lượng bộ nhớ ROM và RAM trên chíp
+ Số chân vào - ra và bộ định thời trên chíp
+ Khả năng dễ dàng nâng cấp công suất cao hoặc giảm công suất tiêu thụ
+ Giá thành cho một đơn vị: Điều này quyết định giá thành cuối cùng của bộ sản phẩm
mà một bộ vi điều khiển được sử dụng
- Tiêu chuẩn thứ hai: Là khả năng phát triển các sản phẩm xung quanh nó dễ ràng như
thế nào? Các cân nhắc chủ yếu trong tiêu chuẩn này bao gồm: khả năng có sẵn trìnhlượng ngữ,gỡ rối, trình biên dịch ngôn ngữ C hiệu quả về mã nguồn, trình mô phỏng hỗtrợ kĩ thuật và khả năng sử dụng trong nhà và ngoài môi trường, Trong nhiều trườnghợp sự hỗ trợ của nhà cung cấp thứ ba (không phải nhà sản xuất chip) cho chíp cũng tốtnhư nhau
- Tiêu chuẩn thứ ba: Là khả năng sẵn sàng đáp ứng về số lượng trong hiện tại và tương
lai Đối với một số nhà thiết kế tiêu chuẩn này còn quan trọng hơn hai tiêu chuẩntrước Hiện nay, các bộ vi điều khiển 8 bit dấu đầu, hộ 8051 có số lượng lớn các nhàcung cấp(nhiều nguồn) Trong trường hợp 8051 nhà sáng chế của nó là Intel, nhưnghiện nay có rất nhiều nhà sản xuất nó (bao gồm: Intel,Atmel, AMD…)
1.2 Tổng quan về họ vi điều khiển 8051
1.2.1 Lịch sử ra đời và phát triển
Vào năm 1981 Hãng Intel giới thiệu bộ vi điều khiển được gọi là 8051.Bộ viđiều khiển này bao gồm: 128 byte RAM ,4K byte ROM trên chip, 2 bộ đinh thời, 1cổng nối tiếp và 4 cổng vào ra tất cả được đặt trong cùng một chíp Họ 8051 là một bộ
vi xử lí 8 bit, nghĩa là CPU xử lí được 8 bit dữ liệu trong cùng một thời điểm, cònnhững dữ liệu nào lớn hơn 8 bit sẽ được chia ra thành các dữ liệu 8 bit cho CPU xử lí
Họ vi điều khiển 8051 đã trở nên phổ biến khi Intel cho phép các nhà sản xuấtkhác cùng sản xuất ra 8051 và bán bất kỳ dạng biến thể nào của nó nhưng tất cả những
Trang 6là nếu ta viết chương trình điều khiển cho phiên bản của họ 8051 thì tất cả những dạngbiến thể đó điều hoạt động được.
1.2.2 Các đặc tính của họ 8051:
- Các đặc tính riêng của họ 8051
- Ngoài bộ vi điều khiển 8051, chúng ta còn có bộ vi điều khiển 8052,8031 và cácdạng biến thể khác
- Bảng so sánh các đặc tính của họ 8051 với các loại khác:
1.3 Bố trí bên trong của sơ đồ khối 8051:
Ram trên chip Rom
Bộ định thời Chân vào ra Cổng nối tiếp Nguồn ngắt
128 byte 4k byte 2 32 1 6
Trang 71.3.1 Đơn vị xử lí trung tâm CPU:
- Cấu tạo: CPU được xem như bộ não của vi điều khiển và nó có cấu tạo bao gồm đơn
vị xử lí số học và lôgic(ALU), các thanh ghi, các khối lôgic và các mạch giao tiếp
- Chức năng: CPU tiến hành các thao tác tính toán xử lý, đưa ra các tín hiệu địa chỉ, dữ
liệu và điều khiển nhằm thực hiện một nhiệm vụ nào đó do người lập trình đưa ra thôngqua các lệnh
1.3.2 Bộ nhớ :
Hiện nay, bộ nhớ của vi điều khiển 8051 gồm có hai dạng chính Đó là bộ nhớchương trinh và bộ nhớ dữ liệu Trong đó, bộ nhớ chương trình dùng để chứa mãchương trình hướng dẫn cho CPU thực hiện một nhiệm vụ nào đó Thông thường bộnhớ chương trình không bị mất dữ liệu khi dừng cung cấp nguồn nuôi Thí dụ có thể kểđến như: ROM, PROM, EPROM, EEPROM, Flash Bộ nhớ dữ liệu dùng để chứa dữliệu (bao gồm các tham số, các biến tạm thời…) Tùy vào dạng dữ liệu mà loại bộ nhớnày có thể mất hoặc không mất dữ liệu khi dừng cấp nguồn nuôi
1.3.3 Cổng vào/ ra nối tiếp:
- Khái niệm: Cổng nối tiếp có thể được hiểu đơn giản là việc truyền lần lượt các bít dữ
liệu trên cùng một đường tín hiệu Đồng thời việc truyền dữ liệu bằng cổng nối tiếpphải tuân theo một cơ chế, một giao thức hay một nguyên tắc nhất định Thí dụ một số
Trang 8+ Truyền đồng bộ: Thiết bị truyền và nhận đều dùng chung một xung nhịp.
+ Truyền dị bộ: Thiết bị truyền và nhận sử dụng hai nguồn xung nhịp riêng với độ
chênh lệch nhau không nhiều
Lưu ý: Trong truyền dữ liệu nối tiếp, xung nhịp là yếu tố không thể thiếu và nó có vai
trò xác định giá trị của bít dữ liệu hay nói một cách khác là xác định thời điểm đọc mứclôgic trên đường truyền dữ liệu
- Chức năng: Cổng nối tiếp gồm 03 chức năng cơ bản:
+ Đơn công: Thiết bị chỉ có thể hoặc là truyền, hoặc là nhận dữ liệu.
+ Bán song công: Thiết bị có thể truyền và nhận dữ liệu nhưng tại một thời điểm chỉ có
thể làm một trong hai việc đó
+ Song công: Thiết bị có thể đồng thời truyền và nhận dữ liệu.
1.3.4 Cổng vào/ ra song song:
- Khái niệm: Cổng song song có thể được hiểu là cổng gồm các bít dữ liệu được
truyền cùng một lúc trên các đường tín hiệu khác nhau
- Đặc điểm:
+ Đây là cổng bao gồm các đường tín hiệu được nối với một số chân của IC dùng đểgiao tiếp với thế giới bên ngoài IC Giao tiếp ở đây là đưa điện áp ra hoặc đọc vào giátrị điện áp tại chân cổng tương ứng với giá trị lôgic 0(mức điện áp thấp xấp xỉ 0VDC)hoặc 1(mức điện áp cao xấp xỉ +5 VDC)
+ Mỗi cổng vào/ra song song thường vào/ra khác nhau và gọi là các cổng 08 bít Cácđường tín hiệu vào/ra của các cổng và thuộc cùng một cổng là độc lập với nhau Từ đó,
ta có thể đưa ra hay đọc vào các giá trị lôgic khác nhau đối với từng đường tín hiệu vào/ra
+ Các cổng vào/ra song song có thể được tích hợp thêm các chức năng đặc biệt liênquan đến các ngoại vi khác
1.3.5 Bộ đếm/Bộ định thời:
Trang 9- Nhiệm vụ : Dùng để đếm các xung nhịp và giá trị của bộ đếm sẽ được tăng lên 01
đơn vị hay giảm đi 01 đơn vị mỗi khi có thêm một xung nhịp tại đầu vào đếm
- Phân loại xung nhịp: Gồm 02 loại chính:
+ Xung nhịp bên trong IC: Đó là xung nhịp được tạo ra nhờ kết hợp mạch dao động
bên trong IC và các linh kiện phụ bên ngoài nối với IC hay còn được gọi là các bộ định
thời (Timers)
+ Xung nhịp bên ngoài IC:Là các tín hiệu lôgic thay đổi liên tục giữa 02 mức 0-1và
không nhất thiết phải là đều đặn hay còn được gọi là các bộ đếm (counters)
1.3.6 Khối giao tiếp bus:
- Chức năng: Dùng để ghép nối giữa các bus bên trong chip và các chân đưa ra ngoài
chip Ngoài ra, việc đưa các tín hiệu địa chỉ và dữ liệu ra ngoài là nhằm mở rộng khảnăng phối ghép thêm của vi xử lý với các ngoại vi khác (chủ yếu là các bộ nhớngoài) ngoài các ngoại vi được tích hợp trên IC
- Đặc điểm của các đường tín hiệu:
+ Thông thường thì số lượng các đường tín hiệu là giữ nguyên khi đưa ra ngoài chip,tuy nhiên trong một số trường hợp số lượng các đường tín hiệu có thể nhỏ hơn số lượngthực bên trong (ví dụ như trường hợp của vi xử lý 8088, bus dữ liệu bên trong là 16 bitnhưng đưa ra ngoài chỉ có 8 bit)
+ Khi đưa ra ngoài, các tín hiệu địa chỉ và dữ liệu có thể được ghép với nhau (cùng sửdụng chung một số chân nào đó) hoặc được tách riêng (tín hiệu địa chỉ dùng một sốchân, tín hiệu dữ liệu dùng một số chân khác)
+ Người ta thường “dồn kênh” hay còn gọi là ghép chức năng giữa bus địa chỉ và bus
dữ liệu để giảm thiểu số chân cần thiết Lúc đó, tín hiệu địa chỉ sẽ xuất hiện trước và tínhiệu dữ liệu xuất hiên sau trên cùng một tập hợp các đường tín hiệu
1.4 Kiểu đóng vỏ của chíp 8051
- Cấu tạo: Một bộ chíp 8051 có tất cả 40 chân với các chức năng riêng và được đóng
Trang 10- Phân loại: Hiện nay có 2 kiểu đóng vỏ đối với họ 8051:
+ Đóng theo kiểu hai hàng chân PDIP/Cerdip:
+ Đóng theo kiểu vuông dẹt PQFP/TQFP:
Trang 11+ Đóng theo kiểu vuông dẹt PLCC/LCC:
1.5 Chức năng các chân của 8051:
Chíp AT89C51 gồm có 40 chân Trong đó, có 32 chân dành cho 4 cổng P0, P1,P2, P3 với mỗi cổng có 8 chân Và 8 chân còn lại dùng cho nguồn VCC, đất GND, cácchân giao động XTAL1 và XTAL2 tái lập RST cho phép chốt địa chỉ ALE truy cập địachỉ ngoài cho phép cất chương trình Cụ thể là:
- Chân VCC: Đó là chân số 40 dùng để cấp điện áp nguồn (+5V) cho chíp
- Chân GND: Đó là chân số 20 và còn được gọi là chân nối Mass
- Chân XTAL1 và XTAL2: Lần lượt là hai chân đầu vào 19 và 18 được nối với bộ
giao động thạch anh Bộ giao động thạch anh được nối tới XTAL1 và XTAL2 cũng cầnhai tụ điện giá trị 30pF Một phía của tụ điện được nối xuống đất Cần phải lưu ý rằng
có nhiều tốc độ khác nhau của họ 8051 Tốc độ được coi như là tần số cực đại của bộ
Trang 12
- Chân RST: Đó là chân số 9 còn gọi là chân tái lập RESET cho chíp 8051 Nó là đầu
vào có mức tích cực cao (bình thường ở mức thấp) Khi chân này được cấp một xungcao thì vi điều khiển sẽ hiểu rằng phải thiết lập lại trạng thái Dưới đây là sơ đồ cấu tạochân RST:
- Chân EA: Đó là chân số 31 có nghĩa là truy cập ngoài (External Access) Ngoài ra,
nó là một chân đầu vào và phải được nối hoặc với VCC hoặc GND Hay nói cách khác
nó không được để hở
- Chân PSEN: Đó là chân số 29, chân này cho phép xuất giá trị vào bộ nhớ ngoài, chân
này được nối với chân OE (Output Enable) của Rom ngoài Khi vi điều khiển làm việcvới bộ nhớ ngoài, chân PSEN phát ra tín hiệu kích hoạt ở mức thấp và được kích hoạt 2lần trong một chu kí máy
- Chân ALE: Đó là chân số 30, chân này cho phép chốt địa chỉ ngoài và được tích cực
cao Tín hiệu ở chân ALE dùng làm tín hiệu điều khiển để giải đa hợp các đường địachỉ và các đường dữ liệu khi kết nối chung với IC chốt Ngoài ra, chân ALE được sửdụng để phân kênh địa chỉ và dữ liệu bằng cách nối tới chân G của chíp 74LS373 Cácxung đưa vào chân ALE có tốc độ bằng 1/6 tần số dao động đưa vào vi điều khiển, như
Trang 13vậy có thể dùng tín hiệu chân ALE làm tín hiệu xung nhịp cho các phần khác của hệthống.
- Cổng P0: Đây là cổng chiếm tất cả 8 chân (từ chân số 32 đến 39) Nó có thể được
dùng như cổng đầu ra, để sử dụng các chân của cổng 0 vừa làm đầu ra, vừa làm đầu vàothì mỗi chân phải được nối tới một điện trở kéo bên ngoài 10kW vì cổng P0 là mộtmàng mở khác với các cổng P1, P2 và P3 Ngoài ra, khi nối 8051/31 tới bộ nhớ ngoàithì cổng 0 cung cấp cả địa chỉ và dữ liệu 8051 dồn dữ liệu và địa chỉ qua cổng P0 đểtiết kiệm số chân Dưới đây là sơ đồ cổng P0:
- Cổng P1: Cổng P1 cũng chiếm tất cả 8 chân (từ chân 1 đến chân 8) nó có thể được sử
dụng như đầu vào hoặc đầu ra So với cổng P0 thì cổng này không cần đến điện trở kéo
vì nó đã có các điện trở kéo bên trong Trong quá trình tái lập thì cổng P1 được cấuhình như một cổng đầu ra Còn để biến cổng P1 thành đầu vào thì nó phải được lậptrình ở mức logic cao đến tất cả các bit của nó
- Cổng P2: Cổng P2 cũng chiếm 8 chân (các chân từ 21 đến 28) Nó có thể được sử
dụng như đầu vào hoặc đầu ra giống như cổng P1, cổng P2 cũng không cần điện trởkéo vì nó đã có các điện trở kéo bên trong Khi tái lập, thì cổng P2 được cấu hình nhưmột cổng đầu ra Còn để tạo cổng P2 như đầu vào thì nó phải được lập trình bằng mứclogic cao tới tất cả các chân của nó
Trang 14Vai trò kép của P2: Cổng P2 được dùng như đầu ra đơn giản trong các hệ thống dựa
trên 8751, 89C51 và DS5000 Cổng P2 cũng được chỉ định như là A8 - A15 báo chứcnăng kép của nó Vì một bộ 8051/31 có khả năng cung cấp 64kbyte bộ nhớ ngoài, nócần một đường địa chỉ 16 bít Trong khi P.0 cung cấp 8 bit thấp qua A0 – A7 Côngviệc của P2 là khi 8051/31được nối tới bộ nhớ ngoài thì P2 được dùng cho 8 bít củađịa chỉ 16 bit và nó không thể dùng cho vào ra
- Cổng P3: Đây là cổng chiếm tổng cộng là 8 chân (từ chân 10 đến chân 17) nó có thể
được sử dụng như đầu vào hoặc đầu ra Cống P3 không cần các điện trở kéo cũng nhưP1 và P2 Và nó có chức năng bổ sung là cung cấp một số tín hiệu quan trọng đặc biệtchẳng hạn như các ngắt Bảng dưới đây cung cấp các chức năng khác của cống P3trong cả 8051 và 8031
Nhìn vào bảng trên ta thấy:
+ Các bit P3.0 và P3.1 được dùng cho các tín hiệu nhận và phát dữ liệu trong truyềnthông dữ liệu nối tiếp
+ Các bit P3.2 và P3.3 được dành cho các ngắt ngoài
+ Bit P3.4 và P3.5 được dùng cho các bộ định thời 0 và 1
+ Cuối cùng các bit P3.6 và P3.7 được cấp cho các tín hiệu ghi và đọc các bộ nhớ ngoàiđược nối tới các hệ thống dựa trên 8051/31 Hai bit này, được dùng với chức năng vào -
ra trong các hệ thống dựa trên 8751, 89C51 hoặc D35000
Trang 151.6 Sơ đồ mạch điện cơ bản để chíp 8051 có thể hoạt động được:
Trang 16Chương 2 NGẮT VÀ TIMER TRONG 8051 2.1 Tìm hiểu các bộ timer:
2.1.1 Timer là gì?
- Timer là một chuỗi các Flip-Flop đươc chia làm 2, nó nhận tín hiệu vào là một xungnhịp, xung nhịp của Flip –Flop thứ nhất cũng là xung nhịp của Flip – Flop thứ 2 mà nócũng chia tần số của xung đó cho 2 và cứ tiếp tục cho đến hết Vì mỗi tầng kế tiếp phảichia cho 2 nên timer n tầng phải chia tần số xung nhịp cho 2n
- Các bộ định thời (timer) được sử dụng rất rộng rãi như:
+ Trong trong ứng dụng đo lường và điều khiển
+ Định khoảng thời gian (hẹn giờ) thông qua việc thiết lập cờ trŕn bằng 1
+ Dùng để tạo xung nhịp hoặc đo độ rộng của xung
+ Đếm sự kiện dùng để xác định số lần xảy ra của sự kiện Đó chính là việc đưa các sựkiện thành sự chuyển mức từ 1 xuống 0 trên các chân T0, T1 hoặc T2 để dùng cácTimer tương ứng đếm các sự kiện đó
- Tùy thuộc vào mỗi ứng dụng mà đầu vào bộ định thời có thể là nguồn xung lấy từxung nhịp của vi điều khiển hoặc nguồn xung từ bên ngoài đưa vào
2.1.2 Các thanh ghi của Timer:
- Thanh ghi chế độ định thời (TMOD):
+ Đặc điểm: Thanh ghi TMOD chứa 2 nhóm 4 bít dùng để đặt chế độ làm việc cho
Timer 0 và Timer 1
Trang 17+ Chức năng các bít trên thanh ghi chế độ định thời (TMOD):
GATE 1: Bít mở cổng cho Timer 1, khi được đặt bằng 1 thì Timer 1 chỉ chạy khi chân
INT 1 ở mức cao Nếu bít này được cài đặt là 0 thì hoạt động của Timer 1 không bị ảnhhưởng bởi mức logic trên chân INT 1
GATE 0: Bít mở cổng cho Timer 0, khi được cài đặt bằng 1 thì Timer 0 chỉ chạy khi
chân INT 0 ở mức cao Nếu bít này được đặt là 0 thì hoạt động của Timer 0 không bịảnh hưởng bởi mức logic trên chân INT 0
C/#T1: Bít chọn chế độ Counter/Timer của Timer 1.Nếu bằng 1(couter) đếm sự kiện
<lấy xung từ bên ngoài >, nếu bằng 0(timer) dùng để định khoảng thời gian <lấy xung
từ bên trong vi điều khiển
C/#T0:Bít chọn chế độ Counter/Timer của Timer 0 Nếu 1 là đếm sự kiện, nếu 0 là
định thời gian
M1-M0: Hai bít chọn chế độ làm việc của Timer (00,01,10,11)
- Thanh ghi điều khiển Timer (TCON)
+ Đặc điểm: Thanh ghi TCON chứa các bít trạng thái và các bít điều khiển cho Timer
0 và Timer 1
+ Chức năng các bít trên thanh ghi điều khiển Timer (TCON):
TF1: Cờ báo tràn của Timer 1 được đặt bởi phần cứng khi cờ tràn, được xóa bởi phần
mềm hoặc phần cứng khi bị xử lý chỉ đến trình phục vụ ngắt
TR1: Bít điều khiển Timer 1 hoạt động được đặt/xóa bằng phần mềm để điều khiển cho
Timer chạy/dừng
TF0: Cờ báo tràn của Timer 0 được đặt bởi phần cứng khi cờ tràn, được xóa bởi phần
mềm hoặc phần cứng khi bị xử lấy chỉ đến trình phục vụ ngắt
TF1 TR1 TF0 TR0 IT1 IE1 IT0 IE0
TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0
Trang 18TR0: Bít điều khiển Timer 0 hoạt động được đặt/xóa bằng phần mềm để điều khiển cho
- Các thanh ghi chứa giá trị của các bộ định thời:
+ Đặc điểm: Các Timer 0 và Timer 1 đều là các Timer 16 bít, mỗi Timer có thanh ghi
8 bít dùng để chứa giá trị khởi tạo hoặc giá trị hiện thời của các Timer Cụ thể Timer 0
có TH0 và TL0; Timer TH1 và TL1
- Thanh ghi T2CON :
+ Đặc điểm: Thanh ghi T2CON chứa các bít trạng thái và các bít điều khiển cho Timer
0 và Timer 1
+ Chức năng các bít trên thanh T2CON:
TF2: Cờ báo tràn của Timer 2, TF2 được đặt khi Timer 2 tràn và được xóa bằng phần
mềm TF2 không được thiết lập khi TCLK hoặc RCLK được đặt bằng 1
EXF2: Cờ ngắt ngoài của Timer 2, TXF2=1, khi xảy ra sự nạp lại hoặc thu nhận.
EXF2=1cũng gây ra ngắt do Timer 2 nếu như ngắt này được lập trình cho phép, EXF2được xóa bởi phần mềm
Trang 19RCLK: Bít chọn Timer cung cấp xung nhịp cho đường nhận cổng nối tiếp RCLK=1
thì Timer 2 sẽ cung cấp tốc độ baud cho cổng nối tiếp (ở chế độ 1 và 3) RCLK=0 thìTimer sẽ cung cấp tốc độ baud cho cổng nối tiếp (ở chế độ 1 và 3)
TCLK: Bít chọn Timer cung cấp xung nhịp cho đường truyền cổng nối tiếp TCLK=1
thì Timer 2 sẽ cung cấp cho tốc độ baud cho cổng nối tiếp ở đường truyền TCLK thìTimer 1 sẽ cung cấp tốc độ baud cho cổng nối tiếp ở đường truyền
EXEN2: Bít điều khiển hoạt động của Timer 2, khi EXEN2=1 việc nạp lại hoặc thu
nhận (Capture) diễn ra khi có sự chuyển trạng thái từ 1 sang 0 ở chân T2EX nếu T2không sử dụng để cung cấp tốc độ baud cho cổng nối tiếp
TR2: Bít điều khiển hoạt động của Timer 2( giống như TR0 và TR1)
C/#T2: Bít chọn chế độ Counter/Timer của Timer 2.
CP/#RL2: Bít chọn chế độ thu nhận hay nạp lại của Timer 2 Khi CP/#RL2C=1 việc
thu nhận được thực hiện khi có xườn xuống ở chân T2EX và bít EXEN2 được đặt là 1.Khi CP/#RL2C =0 việc nạp lại được thực hiện khi hoặc là Timer 2 tràn hoặc là có sườnxuống ở chân T2EX và bít EXEN2 được đặt ở mức 1 Nế RCLK và TCLK =1, bít nàyđược bỏ qua, Timer 2 tự nạp lại khi tràn
- Thanh ghi T2MOD:
Các bít từ T2MOD.7 đến T2MOD.2 không được sử dụng.Bít T2MOD.1 ký hiệu
là DCEN cho phép đầu ra khi sử dụng Timer 2 để tạo xung(chế độ tạo xung – Clockout) Bít T2MOD.0 ký hiệu là DXEN bít này cho phép Timer 2 hoạt động nhu 1 bộđếm tiến/lùi
- Thanh ghi TH2,TL2.RCAP2H và RCAP2L:
Giống như TH0,1 và TL0,1, TH2 và TL2 chứa các giá trị đếm của Timer 2, tuynhiên khác nhau là Timer 0,1 có thể dùng THx để chứa giá trị nạp lại còn Timer 2 lạidùng RCAP2H và RCAP2L để chứa giá trị cần nạp lại
2.1.3 Các chế độ hoạt động của Timer:
Trang 20+ Đặc điểm: Chế độ 0 là chế độ định thời 13 bít, chế độ này chỉ tương thích với các bị
vị điều khiển trước kia, giờ chế độ này không còn thích hợp, ít được sử dụng Trongchế độ này bộ định thời dùng 13 bít (8 bít TH và 5 bít TL) để chứa giá trị đếm, 3 bítthấp của TL không được sử dụng
+ Sơ đồ:
+ Nguyên lý hoạt động:
Nguồn xung Clock được đưa tới Timer từ các nguồn khác nhau phụ thuộc vàobít C/#Tx trong thanh ghi TMOD Nếu C/Tx=1, xung Clock được lấy từ bên ngoài quachân Tx(T0,T1 hoặc T2) Còn nếu C/Tx=0, xung Clock sẽ được lấy từ bộ chia tần trongchíp, tần số của xung ở đây là 1/12 tần số của bộ dao động thạnh anh (Fosc)
Nguồn xung Clock nói trên sẽ được điều khiển để đưa tới các Timer bằng các bit
TR, GATE và mức logic trên các chân INTx Nếu TRx=0, các Timer sẽ bị cấm màkhông cần quan tâm đến GATE và mức logic trên các chân INTx (thể hiện là cổngAND) Còn nếu TRx=1, các Timer sẽ hoạt động khi hoặc là bít GATE =0 hoặc là bítGATE=1 và trên chân INTx có mức logic là 1
- Chế độ 1:
+ Đặc điểm:
Trang 21Trong chế độ 1, bộ định thời dùng cả hai thanh ghi TH và TL để chứa giá trịđếm, vì vậy chế độ này còn gọi là chế độ định thời 16 bít.
Với chế độ 1 giá trị lớn nhất mà Timer chứa được là 65535 (tương ứng FFFFH),khi đếm quá giá trị này sẽ xảy ra tràn, khi cờ tràn TF sẽ được đặt bằng 1 Sau khi trànnếu muốn chương trình đếm tiếp ta phải có câu lệnh nạp lại giá trị khởi tạo sau khidừng Timer
+ Sơ đồ:
- Chế độ 2:
+ Đặc điểm:
Trong chế độ 2 bộ Timer dùng TL để chứa các giá trị đếm và TH chứa giá trị nạp lại
vì vậy chế độ này được gọi là chế độ tự nạp lại 8 bít
Sau khi đếm quá 255 sẽ xảy ra tràn, khi đó TF được đặt bằng 1 đồng thời giá trị củaTimer tự động được nạp lại bằng nội dung TH
+ Sơ đồ:
Trang 22- Chế độ 3:
+ Đặc điểm: Trong chế độ 3, Timer 0 được tách thành 2 bộ Timer 8 bít hoạt động độc
lập chế độ này sẽ giúp cung cấp thêm cho ta 1 bộ Timer nữa
+ Sơ đồ:
+ Nguyên lý hoạt động:
Bộ Timer thứ 1 với nguồn xung Clock được lấy từ bộ chia tần trên chíp hoặc từ
bộ dao động bên ngoài qua chân T0 tùy thuộc vào giá trị của bít C/#T0 việc điều khiển
Trang 23hoạt động của bộ thứ 1 do bít GATE, bit TL0 và mức lôgic trên chân INT0 (giống chế
độ 0,1,2) Giá trị đếm chứa trong TL0, khi tràn cờ TF0=1 gây bởi Timer 0
Bộ Timer thứ 2 với nguồn xung Clock được lấy từ bộ chia tần trên chíp việc điềukhiển hoạt động chỉ là việc đặt lại giá trị của bít TR0, giá trị đếm chứa trong TH0 khi
cờ tràn TH1=1 gây ra ngắt bởi Timer 1.Khi Timer 0 được tách thành 2 Timer 8 bít thìTimer 1 vẫn hoạt động bình thường với các chế độ 0,1,2 tuy nhiên khi xảy ra tràn cờTF1 không được thiết lập bằng 1 Như vậy trong trường hợp này Timer 1 chỉ có thể sửdụng cho các ứng dụng không cần đến ngắt như tạo tốc độ baud cho port nối tiếp
2.1.4 Lập trình cho Timer:
- Như ta đã biết để cho Timer hoạt động trước hết chúng ta phải tính toán hai giá trịTH0 vàTL để nạp vào cho chip Sau đây là các bước tinh toán để lập trình cho Timer:
+ Bước 1: Chia thời gian trễ cần thiết (độ rộng xung) cho 1us.
+ Bước 2: Lấy 65536 – n Với n là kết quả của bước 1
+ Bước 3: Chuyển kết quả ở bước 2 sang hệ thập lục phân dưới dạng: OxAABB
+ Bước 4: Đặt TL=OxAA, TH0=OXBB.
2.2 Tìm hiểu các ngắt:
2.2.1 Ngắt là gì?
- Một bộ phận vi điều khiển có thể khắc phục một vài thiết bị, có 2 cách dể thực hiệnđiều này đó là sử dụng các ngắt và thăm dò (polling) Trong phương pháp này sử dụngcác ngắt thì mỗi khi có một thiết bị bất kỳ cần đến dịch vụ của nó thì nó báo cho bộ viđiều khiển bằng cách gửi 1 tín hiệu ngắt
- Khi nhận được tín hiệu ngắt thì bộ vi điều khiển ngắt tất cả những gì nó đang thựchiện để chuyển sang phục vụ thiết bị Chương trình đi cùng với ngắt được gọi là trìnhdịch vụ ngắt ISR (Interrupt Service Rouine) hay còn gọi là trình quản lý ngắt(Interruput Handler)
Trang 24- Còn trong phương pháp thăm dò thì bộ vi sử điều khiển hiển thị liên tục tình trạng củamột thiết bị đã cho và điều kiện thỏa mãn thì nó phục vụ thiết bị Sau đó nó chuyểnsang hiển thị tình trạng của thiết bị kế tiếp cho đến khi tất cả đều được phục vụ.
- Khi kích hoạt một ngắt bộ vi điều khiển đi qua các bước sau:
+ Nó kết thúc lệnh đang thực hiện và lưu địa chỉ của lệnh kế tiếp (PC) vào ngăn xếp.+ Nó cũng lưu tình trạng hiện tại của tất cả các ngắt vào bên trong ( nghĩa là không lưuvào ngăn xếp)
+ Nó nhảy đến một số vị trí cố định trong bộ nhớ được gọi là bảng véc tơ ngắt nói lưugiữ địa chỉ của một tình trình phục vụ ngắt
+ Bộ vi điều khiển nhận địa chỉ ISR từ bảng véc tơ ngắt và nhảy tới đó Nó bắt đầu thựchiện trình phục vụ ngắt cho đến lệnh cuối cùng của ISR là RETI (trở về từ ngắt)
+ Khi thực hiện lệnh RETI bộ vi điều khiển quay trở về nơi nó đã bị ngắt Trước hết nónhận địa chỉ của bộ đếm chương trình PC từ ngăn xếp bằng cách kéo 02 byte trên đỉnhcủa ngăn xếp vào PC Sau đó bắt đầu thực hiện các lệnh từ địa chỉ đó
Lưu ý: Ở bước 5 đến vai trò nhạy cảm của ngăn xếp, vì lý do này mà chúng ta phải cẩn
thận khi thao tác các nội dung của ngăn xếp trong ISR Đặc biệt trong ISR cũng như bất
kỳ chương trình con CALL nào số lần đẩy vào ngăn xếp (Push) và số lần ra từ nó (Pop)
và phải bằng nhau
2.2.2 Các ngắt (Interrupt) của 8051:
- Hiện nay, chíp AT89C51 có 6 ngắt:
+ Hai ngắt ngoài đến từ chân #INT0 và từ chân #INT1 tương ứng các chân P3.2 vàP3.3 của cổng P3 Vị trí trong bảng vector của các ngắt ngoài này lần lượt là 0003H và0013H gán cho các chân INT0 và INT1
+ Ngắt do bộ Timer 0 Địa chỉ của ngắt này là 000B4
+ Ngắt do bộ Timer 1 Địa chỉ của ngắt này là 001B4
+ Ngắt do bộ Timer 2
Trang 25+ Ngắt do Port nối tiếp
- Sáu ngắt này được xóa khi Reset và được đặt riêng bằng phần mềm bởi các bít trongcác thanh ghi cho phép ngắt (IE), thanh ghi ưu tiên ngắt (IP)
2.2.3 Các thanh ghi của Ngắt:
- Thanh ghi cho phép ngắt IE (Interrupt Enable)
Trong đó:
+ EA: Cho phép hoặc cấm toàn bộ
+ - : Không được định nghĩa
+ ET2 : Cho phép ngắt từ Timer 2
+ ES : Cho phép ngắt từ từ Port nối tiếp
+ ET1 : Cho phép ngắt từ Timer 1
+ EX1 : Cho phép ngắt ngoài 1
+ ET0 : Cho phép ngắt từ Timer 0
+ EX0 : Cho phép ngắt ngoài 0
- Thanh ghi ưu tiên ngắt IP :
Trong đó :
+ - : Không được định nghĩa
+ - : Không được định nghĩa