Giới thiệu họ vi điều khiển 8051

134 386 0
Giới thiệu họ vi điều khiển 8051

Đ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

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 này. 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 nào. Đặc tính ROM chíp RAM Bộ định thời Các chân vào - Số lượng 4K byte 128 byte 32 Cổng nối tiếp Nguồn ngắt Bảng 1: Các đặc tính 8051. 1.2 Bộ ví đ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 nữa. 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 đú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 nó. ROM phải chứa chương trình mà 8031 nạp thực hiện. 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 nhau. 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 nhau. 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 nó. 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 UVRAM 8051. Ngoài có nhiều phiên với tốc độ khác 8751 từ nhiều hãng khác nhau. 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 nó. 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 Đóng vỏ 4K 128 32 5V 40 4K 128 32 3V 40 1K 64 15 3V 20 2K 128 15 3V 20 8K 128 32 5V 40 8K 128 32 3V 40 Bảng 3: Các phiên 8051 từ Atmel (Flash ROM). AT89C51 AT89LV51 AT89C1051 AT89C2051 AT89C52 AT89LV52 RAM Timer Chân I/O Ngắt Vcc Chữ C ký hiệu AT89C51 CMOS. Cũng có phiên đóng vỏ tốc độ khác sản phẩm đây. 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 AT89C51-12PC 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 DS5000-8 DS5000-32 DS5000T-8 DS5000T-8 ROM RAM Chân I/O Timer Ngắt Vcc Đóng vỏ 8K 128 32 5V 40 32K 128 32 5V 40 8K 128 32 5V 40 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 nhau. 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 này. 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 trên. 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 ngoài. 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 ngoài. 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 ngoài. 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ớ Hình mô tả cấu trúc 128 byte thấp nhớ liệu họ vi điều khiển 8051. 32 byte (00H-1FH) sử dụng cho ghi R0-R7. Hai bit ghi đặc biệt PSW lựa chọn ghi mà vi điều khiển dùng thực thi chương trình. Hình 6: Cấu trúc 128 byte thấp nhớ liệu 8051 chứa 210 vị trí bit định địa 128 bit chứa byte địa từ 20H đến 2FH (16 byte x bit = 128 bit) phần lại chứa ghi đặc biệt. Ngoài 8051 có port xuất/nhập định địa bit, điều làm đơn giản việc giao tiếp phần mềm với thiết bị xuất/nhập đơn bit. Vùng RAM đa mục đích có 80 byte đặt địa từ 30H đến 7FH, bên vùng từ địa 00H đến 2FH vùng nhớ sử dụng tương tự. Bất kỳ vị trí nhớ vùng RAM đa mục đích truy xuất tự cách sử dụng kiểu định địa trực tiếp gián tiếp. Bất kỳ vị trí nhớ vùng RAM đa mục đích truy xuất tự cách sử dụng kiểu định địa trực tiếp gián tiếp. Cũng ghi từ R0 đến R7, ta có 21 ghi chức đặc biệt SFR chiếm phần Ram nội từ địa 80H đến FFH. Cần lưu ý tất 128 địa từ 80H đến FFH định nghĩa mà có 21 địa định nghĩa. } void songvuong(void) interrupt //Khai báo trình phục vụ ngắt timer1 { TR1=0; //Dừng timer1 if(a==0) //Nếu Xung vuông mức thấp { P2_1=1; //Bật xung vuông lên cao a=1; //Đặt lại bit kiểm tra TL1=0x18; //Nạp lại TL1: Ứng với mức trễ phần cao TH1=0xFC; //Nạp lại TH1 } Else //Nếu Xung vuông mức cao { TH1=0xFF; P2_1=0; //Lật xung xuống thấp a=0; //Đặt lại bit kiểm tra TL1=0xF2; //Nạp lại TL1: Ứng với mức trễ phần thấp //Nạp lại TH1 } TR1=1; //Khởi động lại timer1 //Không cần xóa cờ TF1, 8051 tự động xóa } Hình 6: Sóng vuông hiển thị Oscilloscope Lưu ý: Các xung tạo ví dụ không thật xác, chưa tính đến hao phí lệnh cài đặt. Lập trình ngắt phần cứng bên Bộ vi điều khiển 8051 có ngắt phần cứng bên chân 12 (P3.2) chân 13 (P3.3) gọi ngắt INT0 INT1. Như nói chúng phép bị cấm việc sử dụng ghi IE. Nhưng cấu hình cho ngắt có phần phức tạp hơn.Có hai mức kích hoạt cho ngắt phần cứng ngoài: Ngắt theo mức ngắt theo sườn. Hình 7: Ngắt INT0 INT1 Dưới mô tả hoạt động loại. 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ụ 4. 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 //Khai báo thư viện cho VĐK 89x51 main() //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 chí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ở về. 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 nữa. • 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 hiện. • 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 nào.  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 INT0 vàINT1 ghi IE không kích hoạt. Sau ngắt phần cứng giIE 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ân INTx phải đảm bảo thời gian tồn tín hiệu mức thấp khoảng chu trình máy không bé hơn, không đủ lâu ngắt không thực hiện. 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ứckhô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 ngắt theo mức ta thấy trên. cho Để kích hoạt chế độ ngắt theo sườn phải viết chương trình cài đặt 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 để 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 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ân INT0 (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 (hay INT1) để 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 này.  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ụ 5. 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 INT1vẫn mức thấp. Nhưng ví dụ để bật lại đèn LED xung chân INT1phả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 main() { //Khai báo thư viện cho VĐK 89x51 //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 ra.  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 nữađể đả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 bitTCON.1 (IE0) TCON.3 (IE1) giữ sườn chốt chân INT0 INT1 tươ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 IE1của 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 kế tiếp. 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ả.  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 hiện. 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 nó. 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 //Khai báo thư viện cho 89c51 main() //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ờ. 5. 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 hơn. 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 nào. Đ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 này. 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 hơn. Đâ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 hơn. 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ô phỏng. Đ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ắt Timer1trong 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 được. Đó là: ngắt cho thiết bị phần cứng bên INT0 INT1, ngắt cho định thời TF0 vàTF1 ngắt dành cho truyền thông nối tiếp. 8051 lập trình cho phép cấm ngắt thiết lập mức ưu tiên cho theo yêu cầu thuật toán ứng dụng. Tài Liệu Vi Điều Khiển [...]... và hoàn thiện, vi c còn lại ta chỉ cần nạp file Hex vào cho Vi điều khiển 6 6 Nạp chương trình cho Vi điều khiển Tùy từng mạch nạp chuyên dụng mà ta cần cài đặt Driver, và phần mềm nạp Chip khác nhau Chúng ta sẽ tìm hiểu trong bài sau nhé! 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... 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 - Hướng Dẫn Sử Dụng Keil C Lập Trình 8051 Nội dung trong bài này: Phần I- Download, cài đặt Keil C uVision3 Full cho 8051 Phần II - Hướng... 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... 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... biên dịch và nạp chương trình cho 8051 I – Cài đặt Keil C uVision3 Tải file hướng dẫn cài đặt, crack Keil C uVision3 ở dưới và làm theo hướng dẫn Keil C uVision3 8.05 Full II – Các bước tạo Project Ta thực hiện 6 bước: 1.Tạo mới 1 project 2.Tạo File.C 3.Add File.C vào Project 4.Biên dịch và tạo File Hex 5.Gỡ lỗi chương trình (nếu có) 6.Nạp chương trình cho Vi điều khiển 1 1 Tạo mới 1 Project Chạy... chương trình Keil C: Vào Project->New Project: Chọn đường dẫn để lưu và đặt tên cho project: Sau đó ấn Save Tiếp theo ta chọn loại Chip: ở đây ta lựa chọn Atmel->chọn AT89C51 Ấn Yes và ta đã hoàn thành bước 1 – tạo 1 project mới 2 2 Tạo File.C Tiếp theo ta cần tạo 1 File.C để vi t chương trình cho Chip lên file đó Vào File->New: Sau đó chọn Save: Chọn đường dẫn vào cùng thư mục với Project vừa tạo... 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ữ bậc thấp và Ngôn ngữ bậc cao 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... 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 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... Sau đó đặt tên, với phần đuôi mở rộng là C: Chọn Save, và ta đã hoàn thành xong bước 2 – Tạo File.C 3 3 Add File.C vào Project Ta cần phải liên kết File.C với Project vừa tạo với nhau: Trong giao diện Keil C, ở không gian làm vi c của Project: Chuột phải vào phần “Source Group 1” -> Add files to Group “Source Group 1”: Chọn đường dẫn đến thư mục Project -> chọn file.C vừa tạo ở bước 2 -> Add: Và ta đã . thành vi n khác của họ 8051 Có hai bộ vi điều khiển thành vi n khác của họ 8051 là 8052 và 8031. a- Bộ vi điều khiển 8052 Bộ vi điều khiển 8052 là một thành vi n khác của họ 8051, 8052 có tất. của họ có trên thị trường. Phần II: Giới thiệu Kiến trúc Vi điều khiển 8051. I - Tổng quan về họ 8051 1.1 Tóm tắt về lịch sử của 8051 Vào năm 1981. Hãng Intel giới thiệu một số bộ vi điều khiển. bản của 8051. 1.2 Bộ ví điều khiển 8051 Bộ vi điều khiển 8051 là thành vi n đầu tiên của họ 8051. Hãng Intel ký hiệu nó như là MCS51. Bảng 1 trình bày các đặc tính của 8051. 1.3 Các thành vi n

Ngày đăng: 27/09/2015, 16:06

Từ khóa liên quan

Mục lục

  • Mã linh kiện

  • Bài 4: Các chân, cổng vào/ra

  • Bài 5: Bộ đếm-Bộ định thời trong 8051

  • [Học lập trình 8051] Bài 6: Truyền thông nối tiếp với 8051

  •   Bài 7: Ngắt trong 8051

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

Tài liệu liên quan