Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC. Gioi thieu vi dieu khien 8051.DOC.
Luận Văn Tốt Nghiệp CHƯƠNG I GIỚI THIỆU VI ĐIỀU KHIỂN 8051 I CẤU TẠO VI ĐIỀU KHIỂN 8051 TÓM TẮT PHẦN CỨNG HỌ MSC-51 (8051) MCS-51 họ IC vi điều khiển hãng Intel sản xuất Các IC tiêu biểu cho họ 8031, 8051, 8951 Những đặc điểm nguyên tắt hoạt động vi điều khiển khác không nhiều Khi sử dụng thành thạo loại vi điều khiển ta nhanh chóng vận dụng kinh nghiệm để làm quen làm chủ ứng dụng vi điều khiển khác Vì để có hiểu biết cụ thể vi điều khiển để phục vụ cho đề tài tốt nghiệp ta bắt đầu tìm hiểu vi điều khiển thông dụn g nhất, họ MCS-51 họ MCS-51 họ điển hình 8051 lại đại diện tiêu biểu Các đặc điểm 8051 tóm tắt sau : √ KB ROM bên √ 128 Byte RAM nội √ Port xuất /nhập I/O bit √ Giao tiếp nối tiếp √ 64 KB vùng nhớ mã √ 64 KB vùng nhớ liệu ngoại √ Xử lý Boolean (hoạt động bit đơn) √ 210 vò trí nhớ đònh vò bit √ µs cho hoạt động nhân chia Bảng mô tả khác IC họ MSC-51 : GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp Loại Bộ Nhớ Mã Trên CHIP Bộ Nhớ Dữ Liệu Trên CHIP Số Timer 8051 4K ROM 128 Byte 8031 0K ROM 128 Byte 8751 4K ROM 128 Byte 8052 K ROM 256Byte 8032 K ROM 256Byte 8752 8K EPROM 256Byte 2 CẤU TRÚC VĐK 8051, CHỨC NĂNG TỪNG CHÂN 40 30pF 19 Vcc XTAL.1 12 MHz 18 30pF 29 PSEN 30 ALE 31 EA RD WR T1 T0 INT1 INT0 TXD RXD XTAL.2 RST 17 16 15 14 13 12 11 10 8051 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 32 AD7 33 AD6 34 AD5 35 AD4 36 AD3 37 AD2 38 AD1 39 AD0 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 28 A15 27 A14 26 A13 25 A12 24 A11 23 A10 22 A9 21 A8 Vss 20 Chức hoạt động chân (pin) tóm tắt sau : √ Từ chân 1÷ Port (P1.0, , P1.7) dùng làm Port xuất nhập I/O để giao tiếp bên GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp √ Chân (RST) chân để RESET cho 8051 Bình thường chân mức thấp Khi ta đưa tín hiệu lên cao (tối thiểu chu kỳ máy) Thì ghi nội 8051 LOAD giá trò thích hợp để khởi động lại hệ thống Từ chân 10÷17 Port3 (P3.0, P3.1, , P3.7) dùng vào hai mục đích : dùng Port xuất / nhập I/O chân giữ chức cá biệt tóm tắt sơ sau : • P3.0 (RXD) : Nhận liệu từ Port nối tiếp • P3.1 (TXD) : Phát liệu từ Port nối tiếp • P3.2 (INT0) : Ngắt bên • P3.3 (INT1) : Ngắt từ bên • P3.4 (T0) : Timer/Counter nhập từ bên • P3.5 (T1) : Timer/Counter nhập từ bên • P3.6 (WR) : Tín hiệu Strobe ghi liệu lên nhớ bên • P3.7 (RD) : Tín hiệu Strobe đọc liệu lên nhớ bên √ Các chân 18,19 (XTAL2 XTAL1) nối với dao động thạch anh 12 MHz để tạo dao động CHIP Hai tụ 30 pF thêm vào để ổn đònh dao động √ Chân 20 (Vss) nối đất (Vss = 0) √ Từ chân 21÷28 Port (P2.0, P2.1, , P2.7) dùng vào hai mục đích: làm Port xuất/nhập I/O dùng làm byte cao bus đòa không tác dụng I/O Bởi ta muốn dùng EPROM RAM nên phải sử dụng Port làm byte cao bus đòa √ Chân 29 (PSEN) tín hiệu điều khiển xuất 8051, cho phép chọn nhớ nối chung với chân OE (Outout Enable) EPROM phép đọc byte chương trình Các xung tín hiệu PSEN hạ thấp suốt thời gian thi hành lệnh Những mã nhò phân chương trình đọc từ EPROM qua bus liệu chốt vào ghi lệnh 8051 mã lệnh Chân 30 (ALE : Adress Latch Enable) tín hiệu điều khiển xuất 8051, cho phép phân kênh bus đòa bus liệu Port √ Chân 31 (EA : Eternal Acess) đưa xuống thấp cho phép chọn nhớ mã ngoàiđối với 8031 Đối với 8051 : GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp • EA = 5V : Chọn ROM nội • EA = 0V : Chọn ROM ngoại • EA = 21V : Lập trình EPROM nội √ Các chân từ 32÷39 Port (P0.0, P0.1, , P0.7) dùng hai mục đích : Vừa làm byte thấp cho bus đòa chỉ, vừa làm bus liệu, Port không chức xuất nhập I/O √ Chân 40 (Vcc) nối lên nguồn 5V TỔ CHỨC BỘ NHỚ Bản đồ nhớ data Chip sau : Đòa byte Đòa byte Đòa bit 7F Đòa bit FF F0 F7 F6 F5 F4 F3 F2 F1 F0 B E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW B8 - - - BC BB BA B9 B8 IP B0 B7 B6 B5 B4 B3 B2 B1 B0 P.3 A8 AF AC AB AA A9 A8 IE A0 A7 A6 A4 A3 A2 A1 A0 P2 99 98 9F không đòa hoá bit 9E 9D 9C 9B 9A 99 98 SBUF SCON 90 97 96 90 P1 RAM đa dụng 30 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21 20 1F 18 17 10 0F 08 07 00 7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F 07 7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 16 0E 06 7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 15 0D 05 7C 7B 74 73 6C 6B 64 63 5C 5B 54 53 4C 4B 44 43 3C 3B 34 33 2C 2B 24 23 1C 1B 14 13 0C 0B 04 03 Bank 7A 72 6A 62 5A 52 4A 42 3A 32 2A 22 1A 12 0A 02 79 71 69 61 59 51 49 41 39 31 29 21 19 11 09 01 Bank Bank Bank ghi (mặc đònh cho R0 -R7) RAM 78 70 68 60 58 50 48 40 38 30 28 20 18 10 08 00 8D 8C 8B 8A 89 88 87 83 82 81 88 8F 87 A5 95 94 93 92 91 không đòa hoá bit không đòa hoá bit không đòa hoá bit không đòa hoá bit không đòa hoá bit 8E 8D 8C 8B 8A 89 không đòa hoá bit không đòa hoá bit không đòa hoá bit không đòa hoá bit 86 85 84 83 82 81 88 80 TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT Tóm tắt nhớ liệu chip GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp 3.1 RAM mục đích chung Trong đồ nhớ trên, 80 byte từ đòa 30H÷7FH RAM mục đích chung Kể 32byte phần từ 00H÷2FH sử dụng giống 80 byte trên, nhiên 32 byte có mục đích khác đề cập sau Bất kỳ vò trí RAM mục đích chung truy xuất tùy ý giống việc sử dụng mode để đònh đòa trực tiếp hay gián tiếp Ví dụ để đọc nội dung RAM nội có đòa 5FH vào ghi tích lũy ta dùng lệnh : MOV A, 5FH RAM nội truy xuất việc dùng đòa gián tiếp qua R0 R1 Hai lệnh sau tương đương lệnh : MOV R0, #5FH MOV A, @R0 Lệnh thứ dùng đònh vò tức thời để đưa giá trò 5FH vào ghi R0, lệnh thứ hai dùng đònh vò gián tiếp để đưa liệu “đã trỏ đến R0” vào ghi tích lũy A 3.2 RAM đònh vò 8051 chứa 210 vò trí đònh vò bit, có 128 bit nằm đòa từ 20H÷2FH phần lại ghi chức đặc biệt 3.3 Các băng ghi (Register Banks) 32 vò trí nhớ cuối nhớ từ đòa byte 00H÷1FH chức dãy ghi Tập hợp lệnh 8051 cung cấp ghi từ R0÷R7 đòa 00H÷07H máy tính chọn để thực thi Những lệnh tương đương dùng đònh vò trực tiếp Những giá trò liệu dùng thường xuyên chắn sử dụng ghi 3.4 Các ghi chức đặc biệt (Special Function Register) Có 21 ghichức đặc biệt SFR đỉnh RAM nội từ đòa ghi chức đặc biệt đònh rõ, phần lại không đònh rõ Mặc dù ghi A truy xuất trực tiếp, hầu hết ghi chức đặc biệt truy xuất cách sử dụng đònh vò đòa trực tiếp Chú ý vài ghi SFR có bit đònh vò byte đònh vò Người thiết kế cẫn thận truy xuất bit mà không truy xuất byte 3.4.1 Từ trạng thái chương trình (PSW : Program Status Word) : Từ trạng thái chương trình đòa D0H tóm tắt sau : GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp BIT SYMBOL ADDRESS DESCRIPTION PSW.7 CY D7H Cary Flag PSW.6 AC D6H Auxiliary Cary Flag PSW.5 F0 D5H Flag PSW4 RS1 D4H Register Bank Select PSW.3 RS0 D3H Register Bank Select 00=Bank 0; address 00H÷07H 01=Bank 1; address 08H÷0FH 10=Bank 2; address 10H÷17H 11=Bank 3; address 18H÷1FH PSW.2 OV D2H Overlow Flag PSW.1 - D1H Reserved PSW.0 P DOH Even Parity Flag Chức bit trạng thái chương trình a) Cờ Carry CY (Carry Flag) : Cờ Carry set lên có tràn bit phép cộng có mượn vào bit phép trừ Cờ Carry “thanh ghi tích lũy luận lý”, dùng ghi bit thực thi bit lệnh luận lý Ví dụ lệnh : ANL C, 25H AND bit 25H với cờ Carryvà cất kết vào cờ Carry b) Cờ Carry phụ AC (Auxiliary Carry Flag) : Khi cộng giá trò BCD (Binary Code Decimal), cờ nhớ phụ AC đượcset có tràn từ bit sang bit thấp nằm phạm vi0AH÷0FH c) Cờ (Flag 0) : Cờ (F0) bit cờ có mục đích tổng hợp cho phép người ứng dụng dùng d) Những bit chọn dãy ghi RS1 RS0 : RS1 RS0 đònh dãy ghi tích cực Chúng xóa sau reset hệ thống thay đổi phần mềm cần thiết e Cờ tràn OV (Over Flag) : GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp Cờ tràn set sau hoạt động cộng trừ có tràn toán học Bit OV bỏ qua cộng trừ không dấu Khi cộng trừ có dấu, kết lớn + 127 hay nhỏ -128 set bit OV f Bit Parity (P) : Bit tự động set hay Clear chu kỳ máy để lập Parity chẳn với ghi A Sự đếm bit ghi A cộng với bit Parity luôn chẳn Ví dụ A chứa 10101101B bit P set lên để tổng số bit A P tạo thành số chẳn Bit Parity thường dùng kết hợp với thủ tục Port nối tiếp để tạo bit Parity trước phát kiểm tra bit Parity sau thu 3.4.2 Thanh ghi B : Thanh ghi B đòa F0H dùng đôi với ghi A cho hoạt động nhân chia Thanh ghi B dùng ghi đệm trung gian đa mục đích Nó bit đònh vò thông qua đòa từ F0H÷F7H 3.4.3 Con trỏ Stack SP (Stack Pointer) : Stack Pointer ghi bit đòa 81H Nó chứa đòa liệu hành đỉnh Stack Các hoạt động Stack bao gồm việc đẩy liệu vào Stack (PUSH) lấy liệu khỏi Stack (POP) √ Việc PUSH vào Stack tăng SP lên trước liệu vào √ Việc POP từ Stack lấy liệu trước giảm SP 3.4.4 Con trỏ liệu DPTR (Data Pointer) : Data Pointer để truy xuất nhớ mà nhớ liệu ngoài, ghi 16 bit mà byte thấp DPL đòa 82H byte cao DPH đòa 83H Để đưa nội dung 55H vào RAM ngoại có đòa 1000H ta dùng lệnh sau : MOV A, #55H MOV DPTR, #1000H MOVX @ DPTR, A Lệnh thứ dùng đònh vò trực tiếp đưa số liệu 55H vào A Lệnh thứ hai tương tự lệnh thứ đưa số liệu 1000H vào GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp DPTR lệnh cuối dùng đònh vò gián tiếp để dòch chuyển giá trò 55H A vào vùng nhớ RAM ngoại 1000H nằm DPTR 3.4.5 Các ghi Port (Port Register) : Các Port 0, Port 1, Port 2, Port có đòa tương ứng 80H, 90H, A0H, B0H Các Port 0, Port 1, Port 2, Port không tác dụng xuất nhập nhớ dùng vài cá tính đặc biệt 8051 dùng (như Interrupt, Port nối tiếp ) Do có Port1 có tác dụng xuất nhập I/O Tất Port có bit đòa chỉ, có khả giao tiếp với bên mạnh mẽ 3.4.6 Các ghi Timer (Timer Register) : 8051 có : Một Timer 16 bit Counter 16 bit, hai dùng để đònh lúc nghỉ chương trình đếm kiện quan trọng Timer có bit thấp TL0 đòa 8AH có bit cao TH0 đòa 8CH Timer có bit thấp đòa 8BH bit cao TH1 đòa 8DH Hoạt động đònh thời cho phép ghi mode đònh thời TMOD (Timer Mode Register) Ở đòa 89H ghi điều khiển đònh thời TCON (Timer Control Register) đòa 88H Chỉ có TCON có bit đònh vò 3.4.7 Các ghi Port nối tiếp (Serial Port Register) : 8051 chứa Port nối tiếp Chip cho việc truyền thông tin với thiết bò nối tiếp thiết bò đầu cuối, modem, để giao tiếp IC khác với biến đổi A/D, ghi di chuyển, RAM ) Thanh ghi đệm liệu nối tiếp SBUF đòa 99H giữ liệu phát lẫn liệu thu Việc ghi lên SBUF để LOAD liệu cho việc truyền đọc SBUF để truy xuất liệu cho việc nhận mode hoạt động khác lập trình thông qua ghi điều khiển Port nối tiếp SCON 3.4.8 Các ghi ngắt (Interrupt Register) : 8051 có hai cấu trúc ngắt ưu tiên, nguồn Những Interrupt bò tác dụng sau hệ thống reset (bò cấm) sau cho phép việc cho phép ghi lên ghi cho phép ngắt IE (Interrup Enable Register) đòa A8H Mức ưu tiên đặt vào ghi ưu tiên ngắt IP (Interrupt Priority Level) đòa B8H Cả ghi có bit đòa 3.4.9 Thanh ghi điều khiển nguồn PCON (Power Control Register) : GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp Thanh ghi PCON bit đònh vò Nó đòa 87H bao gồm bit đòa tổng hợp Các bit PCON tóm tắt sau : √ set reset Bit (SMOD) : Bit có tốc độ Baud mode 1, 2, Port nối tiếp √ Bit 6, 5, : Không có đòa √ Bit (GF1) : Bit cờ đa √ Bit (GF0) : Bit cờ đa √ Bit * (PD) : Set để khởi động mode Power Down thoát để √ Bit * (IDL) : Set để khởi động mode Idle thoát ngắt mạch reset Các bit điều khiển Power Down Idle có tác dụng tất IC họ MSC-51 thi hành biên dòch CMOS II TÓM TẮT TẬP LỆNH CỦA 8051 Các chương trình cấu tạo từ nhiều lệnh, chúng xây dựng logic, nối tiếp lệnh nghó cách hiệu nhanh, kết chương trình khả quan Tập lệnh họ MSC-51 kiểm tra mode đònh vò lệnh chúng có Opcode bit Điều cung cấp khả 8=256 lệnh thi hành lệnh không đònh nghóa Vài lệnh có byte liệu đòa thêm vào Opcode Trong toàn lệnh có 139 lệnh byte, 92 lệnh byte 24 lệnh byte CÁC CHẾ ĐỘ ĐỊNH VỊ (ADDRESSING MODE) Các mode đònh vò phận thống tập lệnh máy tính Chúng cho phép đònh rõ nguồn nơi gởi tới liệu đường khác tùy thuộc vào trạng thái lập trình 8051 có mode đònh vò dùng sau : √ Thanh ghi √ Trực tiếp √ Gián tiếp √ Tức thời √ Tương đối √ Tuyệt đối √ Dài GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp √ Đònh vò 1.1 Sự đònh vò ghi (Register Addressing) Có dãy ghi 32 byte RAM liệu Chip đòa 00H ÷ 1FH, thời điểm có dãy hoạt động bit PSW3, PSW4 từ trạng thái chương trình đònh dãy hoạt động Các lệnh để đònh vò ghi ghi mật mã cách dùng bit trọng số thấp Opcode lệnh để ghi vùng đòa theo logic Như mã chức đòa hoạt động kết hợp để tạo thành lệnh ngắn byte sau : n Opcode n n Register Addressing 1.2 Sự đònh đòa trực tiếp (Direct Addressing) Sự đònh đòa trực tiếp truy xuất giá trò Chip ghi phần cứng Chip Một byte đòa trực tiếp đưa vào Opcode để đònh rỏ vò trí dùng sau : Opcode Direct Addressing Tùy thuộc bit bậc cao đòa trực tiếp mà vùng nhớ chọn Khi bit = 0, đòa trực tiếp khoảng 0÷127 (00H÷7FH) 128 vò trí nhớ thấp RAM Chip chọn 1.3 Sự đònh vò đòa gián tiếp (Indirect Addressing) Sự đònh đòa gián tiếp tượng trưng ký hiệu @ đặt trước R0, R1 hay DPTR R0 R1 hoạt động ghi trỏ mà nội dung cho biết đòa RAM nội nơi mà liệu ghi đọc Bit có trọng số nhỏ Opcode lệnh xác đònh R0 hay R1 dùng trỏ Pointer Opcode GVHD: NGUYỄN ĐÌNH PHÚ i SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp call con_hex ;goi chtr chuyen sang so hex lea dx,buffrr mov cx,256 call display mov cx,256 ;place in transmitter hoding register to send mov dx,card_base lea di,buffrr ;tro toi vung dem ppl: mov al,[di] ;lay byte data out dx,al jmp short $+2 call edelay inc di loop ppl ;display character ; call tty ppexit: mov bx,handle ;lay the file call close ;dong the file jmp monitor ; get_name proc near push ax push dx push di mov ah,9 ;ham hien thi chuoi lea dx,prompt int 21h cld lea di,filename ;DI tro toi ten file mov ah,1 ;ham doc ki tu tu ban phim read_name: int 21h cmp al,0dh ;co phai CR je done ;dung ket thuc stosb ;luu no vao chuoi jmp read_name ;tiep tuc doc vao done: mov al,0 stosb ;luu byte pop di pop dx pop ax ret GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp get_name endp open proc near mov ah,3dh mov al,0 int 21h ret open endp read proc near push cx mov ah,3fh mov cx,512 int 21h pop cx ret read endp display proc near push bx mov ah,40h mov bx,1 int 21h pop bx ret display endp close proc near mov ah,3eh int 21h ret close endp edelay proc near push ax push bx mov ax,06h edel2: mov bx,0ffffh edel1: dec bx jnz edel1 dec ax jnz edel2 pop bx pop ax ret edelay endp GVHD: NGUYỄN ĐÌNH PHÚ ;ham mo file ;chi doc ;ham mo file ;chi doc ;ham ghi file ;the file cho man hinh ;dong file ;ham dong file ;dong file SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp ; con_hex proc near push ax push bx push cx push dx push di push si mov ax,0b800h mov bx,0 cld lea si,buffrr mov cx,260 mov al,0 xxx8: mov [si],al inc si loop xxx8 lea si,buffrr lea di,buffer xxx3: mov al,[di] cmp al,3ah jz xxx2 inc di jmp xxx3 xxx2: call ktra_end cmp ax,0 jnz xxx4 xxx6: pop si pop di pop dx pop cx pop bx pop ax ret xxx4: mov al,[di] mov [si],al call goi_ht inc di inc si ;xu li so byte can goi mov al,[di] sub al,30h GVHD: NGUYỄN ĐÌNH PHÚ ;lay byte data ;so sanh voi ma dau ':' ;nhay neu la dau ':' ;quay lai de tim dau ':' ;goi chuong trinh kiem tra ket thuc ;dung la het data thi lam cho AX=0000 ;lay byte data ;dung la byte 3Ah can luu vao ;lay so can goi MSD ;tru di 30 de so hex SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp call so_lon mov cl,4 rol al,cl mov ah,al inc di mov al,[di] sub al,30h call so_lon or al,ah mov [si],al add al,1 mov dl,al call goi_ht ;xu li phan dia chi can goi inc di inc si mov al,[di] sub al,30h call so_lon mov cl,4 rol al,cl mov ah,al inc di mov al,[di] sub al,30h call so_lon or al,ah mov [si],al call goi_ht inc di inc si mov al,[di] sub al,30h call so_lon mov cl,4 rol al,cl mov ah,al inc di mov al,[di] sub al,30h call so_lon or al,ah GVHD: NGUYỄN ĐÌNH PHÚ ;kiem tra so ABCDEF ;lay so can go LSD ;tru di 30 de so hex ;kiem tra so ABCDEF ;or data lai byte ;cat so HEX ADDR_H ;luu so byte can xu li lai ;lay byte ADDR_L-MSD ;tru di 30 de so hex ;kiem tra so ABCDEF ;lay byte ADDR_L-LSD ;tru di 30 de so hex ;kiem tra so ABCDEF ;or data lai byte ;cat so HEX ADDR_H ;lay byte ADDR_H-MSD ;tru di 30 de so hex ;kiem tra so ABCDEF ;lay byte ADDR_H-LSD ;tru di 30 de so hex ;kiem tra so ABCDEF ;or data lai byte SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp mov [si],al call goi_ht ;xu li cac byte lai inc di inc di xxx1: inc di inc si mov al,[di] sub al,30h call so_lon mov cl,4 rol al,cl mov ah,al inc di mov al,[di] sub al,30h call so_lon or al,ah mov [si],al call goi_ht dec dl cmp dl,0 jnz xxx1 inc di inc di inc di jmp xxx3 con_hex endp ;chuong trinh kiem tra ket thuc ktra_end proc near push di inc di mov al,[di] cmp al,30h jnz kt_exit inc di mov al,[di] cmp al,30h jnz kt_exit inc di mov al,[di] cmp al,30h GVHD: NGUYỄN ĐÌNH PHÚ ;cat so byte can goi dang HEX ;bo byte 00 ;lay so byte thu nhat ;tru di 30 de so hex ;kiem tra so ABCDEF ;lay so byte thu ;tru di 30 de so hex ;kiem tra so ABCDEF ;or data lai byte ;cat so byte can goi dang HEX ;quay lai vi chua ;bo byte cuoi thu nhat ;bo byte thu ;bo ma xuong hang ;het hang data ;lay byte data ;kiem tra byte thu nhat ;nhay den de thoat vi khong phai ;neu dung thi kiem tra byte thu ;lay byte data ;nhay den de thoat vi khong phai ;neu dung thi kiem tra byte thu ;lay byte data SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp jnz kt_exit inc di mov al,[di] cmp al,30h jnz kt_exit inc di mov al,[di] cmp al,30h jnz kt_exit inc di mov al,[di] cmp al,30h jnz kt_exit inc di mov al,[di] cmp al,30h jnz kt_exit inc di mov al,[di] cmp al,31h jnz kt_exit inc di mov al,[di] cmp al,46h jnz kt_exit inc di mov al,[di] cmp al,46h jnz kt_exit mov ax,0 pop di ret kt_exit: mov ax,1111h pop di ret ktra_end endp goi_ht proc near RET push di mov di,bx mov ah,1 GVHD: NGUYỄN ĐÌNH PHÚ ;nhay den de thoat vi khong phai ;neu dung thi kiem tra byte thu ;lay byte data ;nhay den de thoat vi khong phai ;neu dung thi kiem tra byte thu ;lay byte data ;nhay den de thoat vi khong phai ;neu dung thi kiem tra byte thu ;lay byte data ;nhay den de thoat vi khong phai ;neu dung thi kiem tra byte thu ;lay byte data ;nhay den de thoat vi khong phai ;neu dung thi kiem tra byte thu ;lay byte data ;nhay den de thoat vi khong phai ;neu dung thi kiem tra byte F thu ;lay byte data ;nhay den de thoat vi khong phai ;neu dung thi kiem tra byte F thu 10 ;lay byte data ;nhay den de thoat vi khong phai ;nap data cho khac khong la SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp stosw mov bx,di pop di ret goi_ht endp so_lonproc near cmp al,9 jg yyy ret yyy: sub al,7 ret so_lonendp BÊN NHẬN (KIT VĐK 8051): ;chuong trinh cua may nhan du lieu (receiver) dk equ 0c001h ht equ 0c000h org 5200h mov ie,#00h mov tmod,#20h mov th1,#-13 setb tr1 mov scon,#0fch mov 24h,#00 mov 25h,#00 xr1: jnb ri,xr1 ;nhan ma dau ':' clr ri mov a,sbuf cjne a,#3ah,xr1 xr2: jnb ri,xr2 ;nhan so byte can goi clr ri mov r1,sbuf xr3: jnb ri,xr3 clr ri mov dph,sbuf xr4: jnb ri,xr4 clr ri mov dpl,sbuf xr5: jnb ri,xr5 clr ri mov 11h,dph ;chuyen dia chi de giai ma hthi mov 10h,dpl mov a,sbuf GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp movx @dptr,a mov 14h,a ;cat de giai ma hien thi lcall decode inc dptr djnz r1,xr5 sjmp xr1 ;chuong trinh giai ma hien thi decode: push dpl push dph mov dptr,#0200h mov a,11h ;lay byte B_A_H de giai ma hien thi push 0e0h ;cat A swap a ;xu li so thu nhat anl a,#0fh mov dpl,a movx a,@dptr mov 20h,a pop 0e0h ;lay lai A anl a,#0fh ;xu li so thu mov dpl,a movx a,@dptr mov 21h,a mov a,10h ;lay byte B_A_L de giai ma hien thi push 0e0h ;cat A swap a ;xu li so thu nhat anl a,#0fh mov dpl,a movx a,@dptr mov 22h,a pop 0e0h ;lay lai A anl a,#0fh ;xu li so thu mov dpl,a movx a,@dptr mov 23h,a mov a,14h ;lay byte DATA de giai ma hien thi push 0e0h ;cat A swap a ;xu li so thu nhat anl a,#0fh mov dpl,a GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp movx a,@dptr mov 26h,a pop 0e0h ;lay lai A anl a,#0fh ;xu li so thu mov dpl,a movx a,@dptr mov 27h,a lcall display pop dph pop dpl ret display: mov r2,#80h ;tu dieu khien 8279 chong nhap nhay mov r0,#20h ;quan li dia chi ma hien thi dis1: mov dptr,#dk mov a,r2 movx @dptr,a mov dptr,#ht mov a,@r0 movx @dptr,a inc r2 inc r0 mov a,r0 cjne a,#28h,dis1 ret end GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp CHƯƠNG HƯỚNG DẪN SỬ DỤNG KIT VI ĐIỀU KHIỂN 8051 Q G T P K I C D E F R A B S Các phím chức Các phím nhập liệu I GIỚI THIỆU CẤU TRÚC PHẦN CỨNG KIT VI XỬ LÝ: Tần số làm việc: Kít vi điều khiểnsử dụng vi điều khiển 8051 8951 Intel với tần số hoạt động 12MHZ Các chương trình thời gian viết tương ứng với đòa Tổ chức nhớ: Bộ nhớ EPROM: Có dung lượng 16kbyte sử dụng EPROM 2764, chương trình hệ thống chứa EPROM thứ nhất, EPROM thứ chưa sử dụng thiết kế dạng socket EPROM có đòa từ 0000H - 1FFFH EPROM có đòa từ 2000H - 3FFFH Bộ nhớ RAM: Bộ nhớ RAM có dung lượng 16kbyte sử dụng IC 6264 RAM có đòa từ 4000H - 5FFFH RAM có đòa từ 6000H - 7FFFH Chương trình sử dụng toàn vùng nhớ RAM GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp Các IC ngoại vi: hệ thống có sử dụng IC 8255A dùng để giao tiếp với thiết bò ngoại vi Bảng đồ nhớ IC 8255: Đòa port Port A Port B Port C Thanh ghi điều khiển 8255_1 8000H 8001H 8002H 8003H 8255-2 A000H A001H A002H A003H Các ngõ IC 8255A -1, 8255 -2, đưa bên connect 64 chân có sơ đồ chân tra bảng tra Mỗi IC 8255A có port, port có chân điều khiển nên số chân đưa bên để điều khiển 48 Khối giải mã hiển thò – quét phím sử dụng IC 8279: Vùng đòa sử dụng IC 8279 C000H - C001H, đó: Đòa C000H đòa dùng để gởi liệu cần hiển thò đọc mã phím Đòa C001H đòa dùng để gởi từ điều khiển 8279 – đọc ghi trạng thái Phần giải mã hiển thò: Gồm có led với thứ tự Led đến led theo hướng từ phải sang trái hình 2: Hình Led8 Led7 Led6 Led5 Led4 Led3 Led2 Led1 Cấu trúc byte liệu led: p g f e d c b a Hệ thống sử dụng Led loại Anode chung nên muốn đoạn sáng bit liệu tương ứng với đoạn Đoạn tắt bit tương ứng với đoạn Ví dụ muốn sáng số “9” byte liệu gởi led là: GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp 1 1 1 Tương ứng với số hex 6FH Sau mã đoạn số chữ số chữ cái: p g f e d c b a hex Số 0 1 1 1 3F Số 0 0 1 06 Số 1 1 5B Số 0 1 1 4F Số 1 0 1 66 Số 1 1 6D Số 1 1 1 7D Số 0 0 1 07 Số 1 1 1 7F Số 1 1 1 6F Chữ A 1 1 1 77 Chữ b 1 1 0 7C Chữ C 0 1 0 39 Chữ d 1 1 5E Chữ E 1 1 0 79 Chữ F 1 0 71 Chữ P 1 0 1 73 Chữ H 1 1 76 Chữ U 0 1 1 3E Có thể tìm mã tương ứng lại Có cách hiển thò liệu Led: Cách 1: gởi liệu đòa C000H liệu hiển thi led 1, liệu trước led dòch sang trái theo chiều mũi tên hình Riêng byte liệu trước Led8 dòch LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1 Mũi tên nằm ngang chiều nhận liệu từ vi điều khiển đưa đến led Các mũi tên vòng cung chiều dòch chuyển liệu GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp Chú ý: muốn xóa hết hình led gởi byte 00h liên tiếp A000h Cách 2: kiểu gởi liệu cách gọi kiểu dòch chuyển liệu Bên cạnh 8279 cho phép gởi liệu trực tiếp đến led led – tổ chức led thay đổi đòa gởi liệu C000H led có thêm đòa điều khiển hình Đòa điều khiển led phải gởi đòa C001H trước gởi liệu đòa C000H LED8 LED7 LED6 80H 81H 82H LED5 LED4 LED3 83H 84H 85H LED2 86H LED1 87H Phần giải mã bàn phím: Chương trình giải mã bàn phím viết đòa 0223H sử dụng ghi R2, A, DPTR, R6, R7, ô nhớ 41h Khi gọi chương trình 0223H: • Nếu không ấn phím sau thực xong chương trình trở chương trình với nội dung ghi A =FFH • Nếu có ấn phím mã phím ấn chứa A Chương trình có ấn phím không ấn phím trở chương trình sau thực xong phải ý cất liệu ghi gọi chương trình Bảng mã phím số: Phím Mã Phím M Phím Mã Phím Mã ã 00 04 08 C 0C 01 05 09 D 0D 02 06 A 0A E 0E 03 07 B 0B F 0F Bảng mã phím chức năng: Phím Mã Phím M ã T 10 S 14 G 11 15 R 12 P 16 13 K 17 GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp HƯỚNG DẪN SỬ DỤNG KIT VI ĐIỀU KHIỂN 8051 Bàn phím: *1 Kít vi điều khiển có tất 26 phím nhấn hình chia thành nhóm sau: 16 phím nhập liệu chương trình dạng số thập lục phân từ đến F Các phím chức Q Chức phím: *2 Khi cấp điện cho máy Led bên trái thò số 0000, bốn led bên phải tắt *3 Nếu không hiển thò nhấn phím “Q” Phím “Q” có chức Reset mạch khởi động muốn thoát khỏi chương trình vi điều khiển thực (chức phím RESET máy vi tính) S Chức phím: *4 Muốn nhập liệu vào ô nhớ có đòa ví dụ 4000, dùng phím nhập liệu đánh số 4000, đòa xuất led bên phải *5 Nhấn phím “S” đòa 4000 thay cho đòa trước led bên trái *6 led lại có led sáng nội dung ô nhớ tương ứng với đòa led bên trái ↑ Chức phím: *7 Dùng để lưu trữ liệu vào ô nhớ có đòa Led bên trái, ví dụ muốn lưu trữ liệu “3F” vào ô nhớ có đòa 4000, đánh “3F” từ phím liệu, liệu “3F” thay liệu cũ trước *8 Sau nhấn phím “ ↑ “ để lưu trữ liệu vào ô nhớ 4000 Đòa tăng lên 4001 để sẵn sàng nhận liệu led bên trái hiển thò nội dung ô nhớ 4001 *9 Chức phím lưu trữ liệu đồng thời tăng đòa ô nhớ ↓ Chức phím: *10 Có chức giảm đòa ô nhớ xuống đơn vò tương ứng với lần nhấn Ví dụ muốn kiểm tra lại ô nhớ vừa nhập 4000 xem có liệu “3F” không, nhấn phím “ ↓ “ Nếu sai nhập lại, nhấn phím tăng đòa để nạp liệu P Chức phím: *11 Sau nhập liệu chương trình đòa 4000, để vi điều khiển thực chương trình nhấn phím “P” Khi hình GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp Led xuất “PC 4000” Nếu muốn thực chương trình đòa 4000 nhấn phím tăng đòa chỉ, hình xuất thêm dấu “=“ sau: “PC =4000’ Sau nhấn phím “G” Chương trình thi hành *12 Nếu chương trình lưu đòa khác với đòa 4000 trước nhấn phím tăng đòa đánh đòa chương trình vào phím nhập liệu Sau nhấn phím tăng đòa chỉ, ví dụ muốn thực chương trình đòa 5000 hình led hiển thò “PC =5000” Nhấn tiếp phím “G” chương trình thi hành đòa 5000 R Chức phím: *13 Dùng để xem nội dung ghi, trước tiên nhấn phím “R” sau nhấn phím thập phân tương ứng từ “6” “F” Nhấn phím thập phân “A”: xem nội dung ghi A Nhấn phím thập phân “B”: xem nội dung ghi B Nhấn phím thập phân “C”: xem nội dung ghi C Nhấn phím thập phân “D”: xem nội dung ghi D Nhấn phím thập phân “E”: xem nội dung ghi E Nhấn phím thập phân “F”: xem nội dung ghi F Nhấn phím thập phân “8”: xem nội dung ghi H Nhấn phím thập phân “9”: xem nội dung ghi L Nhấn phím thập phân “7”: xem nội dung cặp ghi SP Nhấn phím thập phân “6”: xem nội dung cặp ghi PC I Chức phím: *14 Phím tác động đến ngắt cứng hệ thống vi xử lý Chương trình bò ngừng sau nhấn phím “I”, nhấn “I” thêm lần hệ thống đặt lại trạng thái mặc đònh ban đầu tương đương với reset máy phím Q T Chức phím: *15 Chức phím thực chương trình bước Trình tự nhấn phím giống phím “G” Nếu nhấn phím “G” để thực chương trình đòa chứa cặp ghi PC, ta nhấn phím “T” chương trình thực lệnh đòa chứa PC GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN [...]... để thực hiện một hoạt động như vi c đưa tới 1 tầng các ngõ vào hoặc gởi dữ liệu đếm ngõ ra Các ứng dụng khác có sử dụng vi c ghi giờ đều đều của Timer để đo thời gian đã trôi qua hai trạng thái (ví dụ đo độ rộng xung) Vi c đếm một sự kiện được dùng để xác đònh số lần xuất hiện của sự kiện đó, tức thời gian trôi qua giữa các sự kiện Các Timer của 8051 được truy xuất bởi vi c dùng 6 thanh ghi chức năng... hành của bộ nhớ mã của vi c cung cấp 11 bit thấp để xác đònh đòa chỉ trong trang 2K (A0÷A10 gồm A10÷A8 trong Opcode và A7÷A0 trong ø byte)và 5 bit cao để chọn trang 2K (5 bit cao đang lưu hành trong bộ đếm chương trình là 5 bit Opcode) Opcode Addr 10 ÷ Addr 8 Addr 7 ÷ Addr 0 Sự đònh vò tuyệt đối đem lại thuận lợi cho các lệnh ngắn (2 byte), nhưng bất lợi trong vi c giới hạn phạm vi nơi gởi đến và cung... chương trình PC để tạo thành đòa chỉ một lệnh tiếp theo được thực thi Phạm vi của sự nhảy nằm trong khoảng -128 ÷ 127 Offset tương đối được gắn vào lệnh như một byte thêm vào như sau : Opcode Relative Offset Sự đònh vò tương đối đem lại thuận lợi cho vi c cung cấp mã vò trí độc lập, nhưng bất lợi là chỉ nhảy ngắn trong phạm vi -128÷127 byte 1.6 Sự đònh đòa chỉ tuyệt đối (Absolute Addressing) GVHD:... CPU đọc ký tự 5 SỰ TRUYỀN CỦA BỘ XỬ LÝ ĐA KÊNH Mode 2 và mode 3 có một sự cung cấp đặc biệt cho vi c truyền đa kênh xử lý Ở các mode này, 9 bit data được thu và bit thứ 9 đi vào RB8 Port có thể lập trình như điều mà bit Stop được thu, sự ngắt của Port chỉ được tích cực nếu RB8 =1 Đặc điểm này cho phép bởi vi c set bit MS2 trong thanh ghi SCON Ứng dụng này là một sự cài đặt mạng được dùng bởi nhiều 8051... TR1 : Start Timer 1 Trong SCON có SM0/SM1 để vào mode UART 8 bit, REN = 1 cho phép Port nối tiếp thu các ký tự và TI = 1 cho phép phát ký tự đầu tiên bởi vi c cho biết thanh ghi đếm rỗng TMOD có M1/M0 = 1/0 để đặt Timer 1 vào mode tự động nạp 8 bit Vi c set bit TR1 để mở máy chạy Timer Tốc độ Baud 2400 sẽ cho ta tốc độ tràn Timer 1 là 2400/32 = 76,8 KHz đồng thời Timer 1 được đếm giờ ở tốc độ của tần... lý (Boolean Instruction) : GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGUYỄN NGỌC TOÀN Luận Văn Tốt Nghiệp 8051 chứa một bộ xử lý luận lý đầy đủ cho các hoạt động bit đơn, đây là một điểm mạnh của họ vi điều khiển MSC-51 mà các họ vi xử lý khác không có RAM nội chứa 128 bit đơn vò và các vùng nhớ các thanh ghi chức năng đặc biệt cấp lên đến 128 đơn vò khác Tất cả các đường Port là bit đònh vò, mỗi đường có thể được... điều khiển Port nối tiếp SCON (98H) là thanh ghi được đònh vò bit bao gồm các trạng thái và các bit điều khiển Các bit điểu khiển set mode của Port nối tiếp, còn các bit trạng thái cho biết sự kết thúc vi c thu phát 1 kí tự Các bit trạng thái có thể được kiểm tra trong phần mềm hoặc có thể lập trình để sinh ra sự ngắt Tần số hoạt động của Port nối tiếp hoặc tốc độ BAUD có thể được lấy từ dao động trên... Timer cung cấp 1 tốc độ Baud ghi giờ và phải được lập trình một cách phù hợp 2 THANH GHI ĐIỀU KHIỂN PORT NỐI TIẾP SCON (SERIAL PORT CONTROL REGISTER) Mode hoạt động của Port nối tiếp 8051 được set bởiviệc ghi lên thanh ghi mode của Port nối tiếp SCON ở đòa chỉ 99H Bảng tóm tắt thanh ghi điều khiển Port nối tiếp SCON như sau : Bit Ký hiệu Đòa chỉ Mô tả hoạt động SCON.7 SM0 9FH Bit 0 của mode Port nối... đổi (được đặt bởi Timer) Serial Port Modes Trước khi dùng Port nối tiếp, SCON phải được gán đúng mode Ví dụ để khởi gán Port nối tiếp MODE 1 (SM0/SM1 = 0/1), cho phép thu (REN =1), và set cờ ngắt của vi c phát sẵn sàng hoạt động (TI = 1), ta dùng lệnh sau : MOV SCON, # 01010010H Port nối tiếp của 8051 có 4 mode hoạt động tùy thuộc theo 4 trạng thái của SM0/SM1 Ba trong 4 mode cho phép truyền sự đồng... để phát 8 bit vào thanh ghi A với Parity chẳn được cộng vào bit thứ 9 MOV C, P MOV TB8, C MOV SBUF, A Nếu Parity lẻ được yêu cầu thì các lệnh trên được sửa lại là: MOV C, P CPL C MOV TB8, C MOV SBUF, A Vi c dùng bit Parity không bò giới hạn trong mode 2 hoặc mode 3 8 bit data được phát trong mode 1 có thể bao gồm 7 bit data, và 1 bit Parity Để phát 1 mã ASCII 7 bit với 1 bit Parity chẳn vào 8 bit, các