Bài giảng vi điều khiển 8051 (tt)

133 239 0
Bài giảng vi điều khiển 8051 (tt)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài 1: Giới thiệu họ Vi điều khiển 8051 Nội dung này: Phần I: xem xét số thành viên khác họ vi điều khiển 8051 đặc điểm bên chúng Đồng thời ta điểm qua số nhà sản xuất khác sản phẩm họ có thị trường Phần II: Giới thiệu Kiến trúc Vi điều khiển 8051 I - Tổng quan họ 8051 1.1 Tóm tắt lịch sử 8051 Vào năm 1981 Hãng Intel giới thiệu số vi điều khiển gọi 8051 Bộ vi điều khiển có 128 byte RAM, 4K byte ROM chíp, hai định thời, cổng nối tiếp cổng (đều rộng bit) vào tất đặt chíp Lúc coi “hệ thống chíp” 8051 xử lý bit có nghĩa CPU làm việc với bit liệu thời điểm Dữ liệu lớn bit chia thành liệu bit xử lý 8051 có tất cổng vào - I/O cổng rộng bit (xem hình 1) Mặc dù 8051 có ROM chíp cực đại 64 K byte, nhà sản xuất lúc cho xuất xưởng với 4K byte ROM chíp Điều bàn chi tiết sau 8051 trở nên phổ biến sau Intel cho phép nhà sản xuất khác sản xuất bán dạng biến 8051 mà họ thích với điều kiện họ phải để mã lại tương thích với 8051 Điều dẫn đến đời nhiều phiên 8051 với tốc độ khác dung lượng ROM chíp khác bán nửa nhà sản xuất Điều quan trọng có nhiều biến thể khác 8051 tốc độ dung lương nhớ ROM chíp, tất chúng tương thích với 8051 ban đầu lệnh Điều có nghĩa ta viết chương trình cho phiên chạy với phiên khác mà không phân biệt từ hãng sản xuất Đặc tính Số lượng ROM chíp 4K byte RAM 128 byte Bộ định thời Các chân vào - 32 Cổng nối tiếp Nguồn ngắt Bảng 1: Các đặc tính 8051 1.2 Bộ vi điều khiển 8051 Bộ vi điều khiển 8051 thành viên họ 8051 Hãng Intel ký hiệu MCS51 Bảng trình bày đặc tính 8051 1.3 Các thành viên khác họ 8051 Có hai vi điều khiển thành viên khác họ 8051 8052 8031 a- Bộ vi điều khiển 8052 Bộ vi điều khiển 8052 thành viên khác họ 8051, 8052 có tất đặc tính chuẩn 8051 có thêm 128 byte RAM định thời Hay nói cách khác 8052 có 256 byte RAM định thời Nó có 8K byte ROM Trên chíp thay 4K byte 8051 Đặc tính 8051 8052 8031 ROM chíp 4K byte 8K byte OK RAM 128 byte 256 byte 128 byte Bộ định thời Chân vào 32 32 32 Cổng nối tiếp 1 Nguồn ngắt Bảng 2: so sánh đặc tính thành viên họ 8051 Như nhìn thấy từ bảng 8051 tập 8052 Do tất chương trình viết cho 8051 chạy 8052 điều ngược lại không b- Bộ vi điều khiển 8031 Một thành viên khác 8051 chíp 8031 Chíp thường coi 8051 ROM chíp có OK byte ROM chíp Để sử dụng chíp ta phải bổ xung ROM cho ROM phải chứa chương trình mà 8031 nạp thực So với 8051 mà chương trình chứa ROM chíp bị giới hạn 4K byte, ROM chứa chương trinh gắn vào 8031 lớn đến 64K byte Khi bổ xung cổng, lại cổng để thao tác Để giải vấn đề ta bổ xung cổng vào - cho 8031 Phối phép 8031 với nhớ cổng vào - chẳng hạn với chíp 8255 trình bày chương 14 Ngoài có phiên khác tốc độ 8031 từ hãng sản xuất khác 1.4 Các vi điều khiển 8051 từ hãng khác Mặc dù 8051 thành viên phổi biến họ 8051 thấy kho linh kiện Đó 8051 có nhiều dạng kiểu nhớ khác UV - PROM, Flash NV - RAM mà chúng có số đăng ký linh kiện khác Việc bàn luận kiểu dạng nhớ ROM khác trình bày chương 14 Phiên UV-PROM 8051 8751 Phiên Flash ROM bán nhiều hãng khác chẳng hạn Atmel corp với tên gọi AT89C51 phiên NV-RAM 8051 Dalas Semi Conductor cung cấp gọi DS5000 Ngoài có phiên OTP (khả trình lần) 8051 sản xuất nhiều hãng a- Bộ vi điều khiển 8751 Chíp 8751 có 4K byte nhớ UV-EPROM chíp Để sử dụng chíp để phát triển yêu cầu truy cập đến đốt PROM xoá UVEPROM để xoá nội dung nhớ UV-EPROM bên 8751 trước ta lập trình lại Do thực tế ROM chíp 8751 UV-EPROM nên cần phải 20 phút để xoá 8751 trước lập trình trở lại Điều dẫn đến nhiều nhà sản xuất giới thiệu phiên Flash Rom UV-RAM 8051 Ngoài có nhiều phiên với tốc độ khác 8751 từ nhiều hãng khác b- Bộ vi điều khiển AT8951 từ Atmel Corporation Chíp 8051 phổ biến có ROM chíp dạng nhớ Flash Điều lý tưởng phát triển nhanh nhớ Flash xoá vài giây tương quan so với 20 phút mà 8751 yêu cầu Vì lý mà AT89C51 để phát triển hệ thống dựa vi điều khiển yêu cầu đốt ROM mà có hỗ trợ nhớ Flash Tuy nhiên lại không yêu cầu xoá ROM Lưu ý nhớ Flash ta phải xoá toàn nội dung ROM nhằm để lập trình lại cho Việc xoá nhớ Flash thực đốt PROM lý lại không cần đến xoá Để loại trừ nhu cầu đốt PROM hãng Atmel nghiên cứu phiên AT 89C51 lập trình qua cổng truyền thông COM máy tính IBM PC Số linh kiện ROM RAM Chân I/O Timer Ngắt Vcc Đóng vỏ AT89C51 4K 128 32 5V 40 AT89LV51 4K 128 32 3V 40 AT89C1051 1K 64 15 3V 20 AT89C2051 2K 128 15 3V 20 AT89C52 8K 128 32 5V 40 AT89LV52 8K 128 32 3V 40 Bảng 3: Các phiên 8051 từ Atmel (Flash ROM) Chữ C ký hiệu AT89C51 CMOS Cũng có phiên đóng vỏ tốc độ khác sản phẩm Xem bảng 1.6 Ví dụ để ý chữ “C” đứng trước số 51 AT 89C51 -12PC ký hiệu cho CMOS “12” ký hiệu cho 12 MHZ “P” kiểu đóng vỏ DIP chữ “C” cuối ký hiệu cho thương mại (ngược với chữ “M” quân ) Thông thường AT89C51 - 12PC lý tưởng cho dự án học sinh, sinh viên Mã linh kiện Tốc độ Số chân Đóng vỏ Mục đích AT89C5112PC 42MHZ 40 DTP Thương mại Bảng 4: Các phiên 8051 với tốc độ khác Atmel c- Bộ vi điều khiển DS5000 từ hãng Dallas Semiconductor Một phiên phổ biến khác 8051 DS5000 hãng Dallas Semiconductor Bộ nhớ ROM chíp DS5000 dạng NV-RAM Khả đọc/ ghi cho phép chương trình nạp vào ROM chíp hệ thống (không cần phải lấy ra) Điều thực thông qua cổng nối tiếp máy tính IBM PC Việc nạp chương trình hệ thống (in-system) DS5000 thông qua cổng nối tiếp PC làm cho trở thành hệ thống phát triển chỗ lý tưởng Một ưu việt NV-RAM khả thay đổi nội dung ROM theo byte thời điểm Điều tương phản với nhớ Flash EPROM mà nhớ chúng phải xoá trước lập trình lại cho chúng Mã linh kiện ROM RAM Chân I/O Timer Ngắt Vcc Đóng vỏ DS5000-8 8K 128 32 5V 40 DS5000-32 32K 128 32 5V 40 DS5000T-8 8K 128 32 5V 40 DS5000T-8 32K 128 32 5V 40 Bảng 5: Các phiên 8051 từ hãng Dallas Semiconductor Chữ “T” đứng sau 5000 có đồng hồ thời gian thực Lưu ý đồng hồ thời gian thực RTC khác với định thời Timer RTC tạo giữ thời gian l phút giờ, ngày, tháng - năm kể tắt nguồn Còn có nhiều phiên DS5000 với tốc độ kiểu đóng gói khác nhau.( Xem bảng 1.8) Ví dụ DS5000-8-8 có 8K NV-RAM tốc đọ 8MHZ Thông thường DS5000-8-12 DS5000T-8-12 lý tưởng dự án sinh viên Mã linh kiện NV- RAM Tốc độ DS5000-8-8 8K 8MHz DS5000-8-12 8K 12MHz DS5000-32-8 32K 8MHz DS5000T-32-12 32K 8MHz (with RTC) DS5000-32-12 32K 12MHz DS5000-8-12 8K 12MHz (with RTC) Bảng 6:Các phiên DS5000 với tốc độ khác d- Phiên OTP 8051 Các phiên OTP 8051 chíp 8051 lập trình lần cung cấp từ nhiều hãng sản xuất khác Các phiên Flash NVRAM thường dùng để phát triển sản phẩm mẫu Khi sản pohẩm thiết kế hoàn thiện tuyệt đối phiên OTP 8051 dùng để sản hàng loạt rẻ nhiều theo giá thành đơn vị sản phẩm e- Họ 8051 từ Hãng Philips Một nhà sản xuất họ 8051 khác Philips Corporation Thật vậy, hãng có dải lựa chọn rộng lớn cho vi điều khiển họ 8051 Nhiều sản phẩm hãng có kèm theo đặc tính chuyển đổi ADC, DAC, cổng I/0 mở rộng phiên OTP Flash II - Giới thiệu Kiến trúc Vi điều khiển 8051 2.1 Tổ chức nhớ Các vi điều khiển thuộc họ 8051 tổ chức thành không gian chương trình liệu, hình hình mô tả điều Kiến trúc vi xử lý bit 8051 cho phép truy nhập tính toán nhanh không gian liệu nhờ việc phân chia không gian nhớ chương trình liệu Tuy nhiên nhớ truy nhập hệ thống 16 bit địa thực nhờ ghi trỏ Bộ nhớ chương trình (ROM, EPROM) nhớ đọc, mở rộng tối đa 64Kbyte Với họ vi điều khiển 89xx, nhớ chương trình tích hợp sẵn chip có kích thước nhỏ 4kByte Với vi điều khiển không tích hợp sẵn nhớ chương trình chip, buộc phải thiết kế nhớ chương trình bên Ví dụ sử dụng EPROM: 2764 (64Kbyte), chân PSEN phải mức tích cực (5V) Hình 1: Cấu trúc vi điều khiển 89C51 Bộ nhớ liệu (RAM) tồn độc lập so với nhớ chương trình Họ vi điều khiển 8051 có nhớ liệu tích hợp chip nhỏ 128byte mở rộng với nhớ liệu lên tới 64kByte Với vi điều khiển không tích hợp ROM chip có RAM chip 128byte Khi sử dụng RAM ngoài, CPU đọc ghi liệu nhờ tín hiệu chân RD WR Khi sử dụng nhớ chương trình nhớ liệu bên buộc phải kết hợp chân RD PSEN cổng logic AND để phân biệt tín hiệu truy xuất liệu ROM hay RAM Bộ nhớ chương trình: Hình 2: Cấu trúc nhớ chương trình Hình 3: Địa ngắt nhớ chương trình Hình mô tả cấu trúc nhớ chương trình Sau khởi động, CPU bắt đầu thực chương trình vị trí 0000H Hình mô tả địa ngắt mặc định nhớ chương trình Mối xảy ngắt, trỏ CPU nhảy đến địa ngắt tương ứng thực thi chương trình Ví dụ ngắt có địa 0003H, xảy ngắt trỏ chương trình nhảy đến địa 0003H để thực thi chương trình Nếu chương trình ứng dụng không xử dụng đến ngắt địa 0003H dùng cho mục đích khác (sử dụng cho nhớ chương trình) Bộ nhớ liệu: Hình 4: Cấu trúc nhớ liệu Hình mô tả cấu trúc nhớ liệu nhớ liệu họ vi điều khiển 8051 CPU dùng đến chân RD WR truy cập đến nhớ liệu Hình mô tả cấu trúc nhớ liệu chip, chia thành khối 128 byte thấp, 128 byte cao 128 byte đặc biệt Hình 5: Cấu trúc nhớ 3.1 Ngắt theo mức Ở chế độ ngắt theo mức chân INT0 INT1 bình thường mức cao tín hiệu mức thấp cấp tới chúng ghi nhãn ngắt Sau vi điều khiển dừng tất công việc thực nhảy đến bảng vector ngắt để phục vụ ngắt Đây chế độ ngắt mặc định cấp nguồn cho 8051 Tín hiệu mức thấp chân INTx phải lấy trước thực lệnh cuối trình phục vụ ngắt, không ngắt khác lại tạo ra, vi điều khiển thực ngắt liên tục Để rõ xem ví dụ Ví dụ 4: Giả sử chân INT1 nối đến công tắc bình thường mức cao Mỗi ấn xuống thấp phải bật đèn LED chân P1.3 (bình thường Led tắt), bật lên phải sáng vài giây Chừng công tắc giữ trạng thái thấp đèn LED phải sáng liên tục Lời giải: #include main() //Khai báo thư viện cho VĐK 89x51 //Chương trình { IE=0x84; //cho phép ngắt while(1) //vòng lặp vô hạn { //không làm } } void nutan(void) interrupt { //Khai báo trình phục vụ ngắt //(mặc định ngắt theo mức) int a=50000; //Biến đếm trễ P1_3=0; //Cho Led sáng while(a ){} //Trễ cho Led sáng vài giây P1_3=1; //Tắt Led //Không cần xóa cờ ngắt } Hình 8: Ấn công tắc xuống làm cho đèn LED sáng thời gian Hình 9: Nhưng công tắc giữ trạng thái ấn đèn LED sáng liên tục Lưu ý: • Trong chương trình vi điều khiển quay vòng liên tục vòng lặp while(1)của chương trình Mỗi công tắc chân P3.3 (INT1) kích hoạt vi điều khiển thoát khỏi vòng lặp nhảy đến bảng vector ngắt địa 0013H Trình ISR cho INT1 bật đèn LED lên giữ lúc tắt trước trở Nếu lúc thực lệnh cuối để quay trở từ ISR mà chân INT1 mức thấp vi điều khiển khởi tạo lại ngắt, ngắt lại xảy lần • Do vậy, để giải vấn đề chân INT1 phải đưa lên cao trước thời điểm lệnh cuối ngắt thực • Có cách khác để giải triệt để vấn đề trên: sử dụng ngắt theo sườn.Khi với lần ấn phím, dù ngắt thực lần • Trước tìm hiểu ngắt theo sườn gì? Ta xem qua ngắt theo mức hoạt động  Trích mẫu ngắt theo mức Các chân P3.2 P3.3 bình thường dùng cho vào/ra Bit INT0và INT1 ghi IE không kích hoạt Sau ngắt phần cứng gi IE kích hoạt vi điều khiển trì trích mẫu chân INTx tín hiệu mức thấp lần chu trình máy Theo bảng liệu từ nhà sản xuất vi điều khiển “chân ngắt phải giữ mức thấp bắt đầu thực trình phục vụ ngắt ISR Nếu chân INTx đưa trở lại mức cao trước bắt đầu thực ISR chẳng có ngắt xảy ra” Do vậy, để bảo đảm việc kích hoạt ngắt phần cứng chânINTx phải đảm bảo thời gian tồn tín hiệu mức thấp khoảng chu trình máyvà không bé hơn, không đủ lâu ngắt không thực Tuy nhiên trình kích hoạt ngắt theo mức thấp nên lại phải đưa lênmức cao trước ISR thực lệnh cuối lại theo bảng liệu từ nhà sản xuất “nếu chân INTx mức thấp sau lệnh cuối trình phục vụ ngắt ngắt khác lại kích hoạt” Điều thực tế ngắt theo mức không chốt Hình 10: Thời gian tối thiểu xung ngắt theo mức thấp (XTAL = 11.0592MHz) 3.2 Ngắt theo sườn Ngắt theo sườn ngắt xảy có sườn âm xuất chân ngắt vi điều khiển Điều làm cho ngắt theo sườn khắc phục nhược điểm củangắt theo mức ta thấy Để kích hoạt chế độ ngắt theo sườn phải viết chương trình cài đặt cho bit ghi TCON: Hình 11: Thanh ghi TCON  Các Bit IT0 IT1 Các bit TCON.0 TCON.2 coi bit IT0 IT1 tương ứng Đây bit xác định kiểu ngắt theo sườn xung hay theo mức xung ngắt phần cứng chân INT0 INT1 tương ứng Khi bật lại nguồn bit có mức 0để biến chúng thành ngắt theo tín hiệu mức thấp Lập trình viên điều khiển số chúng lên cao để chuyển ngắt phần cứng bên thành ngắt theo sườn  Các Bit IE0 IE1 Các bit TCON.1 TCON.3 gọi IE0 IE1 tương ứng Các bit 8051 dùng để bám kiểu ngắt theo sườn xung, bit IT0 IT1 0thì có nghĩa ngắt phần cứng ngắt theo mức thấp bit IE0 IE1 không dùng đến Các Bit IE0 IE1 8051 dùng để chốt sườn xung từ cao xuống thấp chân INT0 INT1 Khi có chuyển dịch sườn xung chânINT0 (hay INT1) 8051 đánh dấu (bật lên cao) bit IEx ghi TCON nhảy đến bảng vector ngắt bắt đầu thực trình phục vụ ngắt ISR Trong 8051 thực ISR sườn xung ghi nhận chân INT0 (hayINT1) để ngắt Chỉ thực lệnh cuối trình phục vụ ngắt ISR bit IEx 8051 tự động xóa, chân ngắt lại hoạt động bình thường Ta thấy bit IE0 IE1 8051 sử dụng bên để báo có ngắt xử lý hay không Hay nói cách khác lập trình viên quan tâm đến bit  Các Bit TR0 TR1 Đây bit D4 D6 (hay TCON.4 TCON.6) ghi TCON Các bit giới thiệu trước, chúng dùng để khởi động dừng định thời Timer0 Timer1 tương ứng  Các Bit TF0 TF1 Các bit D5 (TCON.5) D7 (TCON.7) ghi TCON mà giới thiệu trước Chúng sử dụng Timer0 Timer1 tương ứng để báo định thời bị tràn hay quay không Để hiểu rõ khác biệt ngắt theo sườn âm, ta xét ví dụ Chú ý khác ví dụ ví dụ lệnh chuyển ngắt INT1 kiểu ngắt theo sườn Khi sườn âm tín hiệu cấp đến chân INT1 đèn LED bật lên lúc Đèn LED có thời gian sáng phụ thuộc vào độ trễ bên ISR INT1 Trong ví dụ chất ngắt theo mức ngắt đèn LED sáng chừng tín hiệu chân INT1 mức thấp Nhưng ví dụ để bật lại đèn LED xung chân INT1 phải đưa lên cao sau bị hạ xuống thấp để tạo sườn âm làm kích hoạt ngắt Ví dụ 5: #include //Khai báo thư viện cho VĐK 89x51 main() //Chương trình { IE=0x84; //cho phép ngắt IT1=1; //Thiết lập ngắt theo sườn âm while(1) //vòng lặp vô hạn { //không làm } } void nutan(void) interrupt { //Khai báo trình phục vụ ngắt //(mặc định ngắt theo mức) int a=50000; //Biến đếm trễ P1_3=0; //Cho Led sáng while(a ){} //Trễ cho Led sáng vài giây P1_3=1; //Tắt Led //Không cần xóa cờ ngắt } Hình 12:mô ngắt theo sườn âm:Dù công tắc giữ, có ngắt xảy  Trình mẫu ngắt theo sườn Trước kết thúc phần ta cần trả lời câu hỏi: ngắt theo sườn trích mẫu thường xuyên nào? Trong ngắt theo sườn, nguồn xung phải giữ mức cao tối thiểu chu kỳ máy, xung thấp phải kéo dài chu kỳ máy để đảm bảo vi điều khiển nhìn thấy chuyển dịch từ cao xuống thấp sườn âm Hình 13: Thời hạn xung tối thiểu để phát ngắt theo sườn âm với tần số XTAL = 11.0592MHz Sườn âm xung chốt 8051 giữ ghi TCON Các bit TCON.1 (IE0) TCON.3 (IE1) giữ sườn chốt chân INT0 INT1tương ứng hình 11 Chúng hoạt động cờ “ngắt phục vụ” (Interrupt-in-server) Khi cờ “ngắt phục vụ” bật lên báo ngắt xử lý chân INTx ngắt đáp ứng chừng ngắt chưa phục vụ xong Đây giống tín hiệu báo bận máy điện thoại Ngoài cần phải nhấn mạnh điểm quan tâm đến bit IE0 vàIE1 ghi TCON: • Khi trình phục vụ ngắt ISR kết thúc: Các Bit IE0 IE1 tự động xoá để báo ngắt hoàn tất 8051 sẵn sàng đáp ứng ngắt khác chân Để ngắt khác nhận tín hiệu chân phải trở lại mức cao sau nhảy xuống thấp để phát ngắt theo sườn âm • Trong thời gian trình phục vụ ngắt thực chân INTx bị làm ngơ, 8051 không quan tâm đến có lần chuyển dịch từ cao xuống thấp Trong thực tế điều có bit IEx Vì lý mà bit IEx gọi cờ báo “ngắt phục vụ”, cờ lên cao sườn âm phát chân INTx giữ mức cao toàn trình thực ISR Nó bị xoá sau lệnh cuối ISR Do vậy, ta không cần đến lệnh xoá cờ trình phục vụ ngắt ngắt cứng INT0 INT1 Lập trình ngắt truyền thông nối tiếp Trong trước nghiên cứu truyền thông nối tiếp 8051 Tất ví dụ sử dụng phương pháp thăm dò (polling) Ở chương khám phá phương pháp truyền thông nối tiếp dựa ngắt 4.1 Các cờ RI TI ngắt Như nói trước cờ ngắt truyền TI (Transfer interrupt) bật lên bit cuối khung liệu - bit stop truyền đi, báo ghi SBUF sẵn sàng truyền byte Trong trường hợp cờ RI (Receive Interrupt) bật lên toàn khung liệu kể bit stop nhận Chừng nói truyền thông nối tiếp tất khái niệm áp dụng giống cho dù sử dụng phương pháp thăm dò hay sử dụng phương pháp ngắt Sự khác hai phương pháp cách phục vụ trình truyền thông nối tiếp nào:  Trong phương pháp thăm dò phải đợi cho cờ (TI hay RI) bật lên lúc chờ đợi ta làm  Còn phương pháp ngắt ta báo 8051 nhận byte sẵn sàng truyền byte ta làm công việc khác chờ truyền thông nối tiếp thực Trong 8051 có ngắt dành riêng cho truyền thông nối tiếp Ngắt dùng cho truyền nhận liệu Nếu bit ngắt truyền thông ES - IE.4 ghi IE phép, cờ RI TI bật lên, 8051 nhận ngắt nhảy đến địa trình phục vụ ngắt dành cho truyền thông nối tiếp 0023H bảng vector ngắt để thực Trong trình ISR phải kiểm tra cờ TI RIđể xem cờ gây ngắt để đáp ứng cách phù hợp (xem ví dụ 6) Hình 14: Ngắt truyền thông hai cờ TI RI gọi 4.2 Sử dụng cổng COM nối tiếp 8051 Trong ứng dụng, ngắt nối tiếp chủ yếu sử dụng để nhận liệu không sử dụng để truyền liệu nối tiếp Điều giống việc báo chuông để ta biết nhận điện thoại ta biết trước lúc có điện thoại, muốn gọi điện thoại ta không cần đổ chuông để báo trước Ví dụ 6: Hãy viết chương trình ngắt để 8051 nhận liệu từ cổng nối tiếp COM gửi đến cổng P0 Giả thiết tần số XTAL 11.0592MHz tốc độ baud 9600 Lời giải: #include main() //Khai báo thư viện cho 89c51 //Chương trình { TMOD=0x20; //Chọn Timer1, chế độ TH1=0xFD; //Cài đặt tốc độ baud 9600 SCON=0x50; //0101 0000: Chọn chế độ 1, Cho phép nhận TR1=1; //Khởi động Timer1 IE=0x90; //cho phép ngắt truyền thông nối tiếp while(1) //Vòng lặp vô hạn { } } void nhandulieu(void) interrupt //Khai báo ISR truyền thông nối tiếp { if(RI==1) //Kiểm tra có phải ngắt nhận liệu không { P0=SBUF; //Gửi liệu đến cổng P0 RI=0; //Xóa cờ nhận liệu nối tiếp RI } } Hình 15: Mô nhận ký tự 0,1,2,3,4, từ máy tính, gửi đến Port0 Trong ví dụ ta ý đến vai trò cờ RI Trong trình phục vụ ngắt nối tiếp, ta phải kiểm tra cờ TI cờ RI hai gọi ngắt truyền thông nối tiếp, hay nói cách khác có ngắt cho truyền nhận 4.3 Xoá cờ RI TI trước thoát khỏi ngắt truyền thông nối tiếp Để ý lệnh cuối trước trở từ ISR lệnh xoá cờ RI TI.Điều tương phản với ngắt ngắt định thời 8051 xoá cờ Các mức ưu tiên ngắt 8051 5.1 Các mức ưu tiên trình bật lại nguồn Khi 8051 cấp nguồn mức ưu tiên ngắt gán theo Hình 16 Từ hình ta thấy ví dụ ngắt phần cứng kích hoạt lúc ngắt đáp ứng trước Chỉ sau ngắt INT0 phục vụ xong INT1 phục vụ INT1 có mức ưu tiên thấp Trong thực tế sơ đồ mức ưu tiên ngắt bảng quy trình thăm dò, 8051 thăm dò ngắt theo trình tự cho hình 16 đáp ứng chúng cách phù hợp Hình 16: Mức ưu tiên ngắt cấp lại nguồn Hình 17: Thanh ghi mức ưu tiên ngắt IP: Bit ưu tiên = mức ưu tiên cao, Bit ưu tiên = mức ưu tiên thấp - Bit D7 D6 chưa dùng - Bit D5 hay PT2 Bit ưu tiên ngắt Timer2 (dùng cho 8052) - Bit D4 hay PS Bit ưu tiên ngắt cổng nối tiếp - Bit D3 hay PT1 Bit ưu tiên ngắt Timer1 - Bit D2 hay PX1 mức ưu tiên ngắt - Bit D1 hay PT0 mức ưu tiên ngắt Timer - Bit D0 hay PX0 mức ưu tiên ngắt 5.2 Thiết lập mức ưu tiên ngắt với ghi IP Chúng ta thay đổi trình tự hình 16 cách gán mức ưu tiên cao cho ngắt Điều thực cách lập trình ghi gọi ghi mức ưu tiên ngắt IP (Interrupt Priority) Trên hình 17 bit ghi Khi bật lại nguồn thi IP chứa hoàn toàn số để tạo trình tự ưu tiên ngắt theo Hình 16 Để ngắt có mức ưu tiên cao ta thực đưa bit tương ứng lên cao Một điểm khác cần làm sáng tỏ mức ưu tiên ngắt nhiều bit ngắt ghi IP đặt lên cao: Trong trường hợp ngắt có mức ưu tiên cao ngắt khác, chúng phục vụ theo trình tự cho Hình 16 5.3 Ngắt ngắt Điều xảy 8051 thực trình phục vụ ngắt thuộc ngắt lại có ngắt khác kích hoạt? Trong trường hợp ngắt có mức ưu tiên cao ngắt ngắt có mức ưu tiên thấp Đây gọi ngắt ngắt Trong 8051 ngắt ưu tiên thấp bị ngắt ngắt có mức ưu tiên cao không bị ngắt ngắt có mức ưu tiên thấp Mặc dù tất ngắt chốt giữ bên ngắt mức thấp CPU quan tâm tức khắc, 8051 chưa kết thúc phục vụ ngắt mức cao 5.4 Thu chộp ngắt phần mềm (Triggering) Có nhiều lúc ta cần kiểm tra trình phục vụ ngắt đường mô Điều thực lệnh đơn giản để thiết lập ngắt lên cao cách buộc 8051 nhảy đến bảng vector ngắt Ví dụ, bit cho phép ngắtTimer1 ghi IE bật lên lệnh TF1=1; ngắt 8051 ngừng thực công việc làm buộc nhảy đến bảng vector ngắt timer1 Hay nói cách khác, ta không cần đợi cho Timer1 quay trở tạo ngắt Chúng ta gây ngắt lệnh đưa bit ngắt tương ứng lên cao Như qua biết ngắt kiện bên bên gây ngắt vi điều khiển để báo cho biết thiết bị cần phục vụ Mỗi ngắt có chương trình kèm với gọi trình phục vụ ngắt ISR Bộ vi điều khiển 8051 có ngắt, có ngắt người dùng truy cập Đó là: ngắt cho thiết bị phần cứng bên INT0 INT1, ngắt cho định thời TF0 TF1 ngắt dành cho truyền thông nối tiếp [...]... chỉ từng bit Các thanh ghi điều khiển: Các thanh ghi điều khiển đặc biệt như IP, IE, TMOD, TCON, SCON và PCON là các thanh ghi điều khiển và ghi nhận trạng thái của hệ thống ngắt, bộ đếm/định thời, truyền thông nối tiếp Chi tiết của các thanh ghi này sẽ được mô tả sau Bài 2: Các chân, cổng vào/ra Mục tiêu: Kết thúc bài học này, bạn có thể:  Nắm được cấu trúc các chân của 8051  Biết rõ tác dụng của... chuyển sang mã máy Khi sử dụng ngôn ngữ C người lập trình không cần hiểu sâu sắc về cấu trúc của bộ vi điều khiển Có nghĩa là với một người chưa quen với một vi điểu khiển cho trước sẽ xây dựng được chương trình một cách nhanh chóng hơn, do không phải mất thời gian tìm hiểu kiến trúc của vi điều khiển đó Và vi c sử dụng lại các chương trình đã xây dựng trước đó cũng dễ dàng hơn, có thể sử dụng toàn bộ... nhớ DATA Vùng nhớ Ý nghĩa CODE Bộ nhớ mã nguồn chương trình DATA Bộ nhớ dữ liệu gồm 128 Byte thấp của RAM trong vi điều khiển BDATA Bộ nhớ dữ liệu có thê định địa chỉ bit, nằm trong vùng nhớ DATA IDATA Bộ nhớ dữ liệu gồm 128 Byte cao của RAM trong vi điều khiển chỉ có ở một số dòng vi điều khiển sau này PDATA Bố nhớ dữ liệu ngoài gồm 256 Byte, được truy cập bởi địa chỉ đặt trên P0 XDATA Bộ nhớ dữ liệu...Hình 6 mô tả cấu trúc 128 byte thấp của bộ nhớ dữ liệu của họ vi điều khiển 8051 32 byte đầu tiên (00H-1FH) được sử dụng cho 4 bộ 8 thanh ghi R0R7 Hai bit của thanh ghi đặc biệt PSW sẽ lựa chọn 1 trong 4 bộ thanh ghi mà vi điều khiển sẽ dùng trong khi thực thi chương trình Hình 6: Cấu trúc 128 byte thấp của bộ nhớ dữ liệu trong 8051 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong... 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 dó C là ngôn ngữ thông dụng hơn cả trong kỹ thuật vi điều khiển 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à 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... của chúng sau khi Reset Hình 8: Các thanh ghi đặc biệt Thanh ghi chính: Thanh ghi tính toán chính của vi điều khiển 8051 ACC (Accumulator) Là thanh ghi đặc biệt của 8051 dùng để thực hiện các phép toán của CPU, thường kí hiệu là A Thanh ghi phụ: Thanh ghi tính toán phụ của vi điều khiển 8051 là B Thanh ghi B ở địa chỉ F0H được dùng chung với thanh chứa A trong các phép toán nhân, chia Lệnh MUL AB... bit P3.6 và P3.7 để ghi và đọc các bộ nhớ ngoài khi được nối tới các hệ thống 8031 Bài 3: Ngôn Ngữ Lập Trình C [Keil C] Cơ Bản Cho 8051 Nội dung trong bài này:  Giới thiệu ngôn ngữ lập trình C  Cấu trúc một chương trình cơ bản cho 8051  Các câu lệnh cơ bản 1 Giới thiệu ngôn ngữ C Trong kỹ thuật lập trình vi điều khiển nói chung, ngôn ngữ lập trình được sử dụng thường chia làm 2 loại: Ngôn ngữ... của tụ điện được nối xuống đất như được trình bày trên hình 2a 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ộ dao động được nối tới chân XTAL Một bộ vi điều khiển 8051 yêu cầu một tinh thể thạch anh có tần số không lớn hơn 20MHz Khi 8051 được nối tới một bộ dao động tinh thể thạch anh và cấp nguồn thì ta có thể quan sát tần số trên chân XTAL2 bằng... chân mô tả ở trên đều phải được nối mà không cần thành phần nào được sử dụng Còn hai chân dưới đây được sử dụng chủ yếu trong hệ thống vi điều khiển 8031 1.6 Chân PSEN PSEN là chân đầu ra cho phép cất chương trình (Program Store Enable) trong hệ thống Trên vi điều khiển 8031, chương trình được cất ở bộ nhớ ROM ngoài thì chân này được nối tới chân OE của ROM 1.7 Chân ALE Chân cho phép chốt địa chỉ... 8 Sfr16 16 - bit : dùng để khai báo các biến có giá trị 0 hoặc một hay các biến logic trên vùng RAM của vi điều khiển Khi khai báo biến kiểu bit trình dịc Keil C sẽ mặc định vùng nhớ sử dụng là BDATA - sbit, sfr, sfr16: dùng để định nghĩa các cho các thanh ghi chức năng hoặc các cổng trên vi điều khiển dùng để truy nhập các đoạn dữ liệu 1 bit, 8 bit, 16 bit 2.1.3 Mảng Mảng là một tập hợp nhiều phần ... tính 8051 1.2 Bộ vi điều khiển 8051 Bộ vi điều khiển 8051 thành vi n họ 8051 Hãng Intel ký hiệu MCS51 Bảng trình bày đặc tính 8051 1.3 Các thành vi n khác họ 8051 Có hai vi điều khiển thành vi n... Có hai vi điều khiển thành vi n khác họ 8051 8052 8031 a- Bộ vi điều khiển 8052 Bộ vi điều khiển 8052 thành vi n khác họ 8051, 8052 có tất đặc tính chuẩn 8051 có thêm 128 byte RAM định thời Hay... nhìn thấy từ bảng 8051 tập 8052 Do tất chương trình vi t cho 8051 chạy 8052 điều ngược lại không b- Bộ vi điều khiển 8031 Một thành vi n khác 8051 chíp 8031 Chíp thường coi 8051 ROM chíp có OK

Ngày đăng: 05/12/2015, 22:16

Từ khóa liên quan

Mục lục

  • Mã linh kiện

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan