Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 47 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
47
Dung lượng
2,51 MB
Nội dung
BỘ MƠN ĐIỆN TỬ DEPARTMENT OF ELECTRONICS TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ DÀNH CHO GIẢNG DẠY THEO HÌNH THỨC TRỰC TUYẾN TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ CHƯƠNG VIẾT CHƯƠNG TRÌNH ASSEMBLY VỚI Keil µVision Các hệ thống vi xử lý vi điều khiển cần có phần mềm (chương trình) để điều khiển hoạt động Chương trình giữ nhớ chương trình (program memory) MCU Ở cấp thấp nhất, chương trình hệ thống bit nhị phân thường gọi mã máy Tuy nhiên, người lập trình khó để thao tác với bit nhị phân Trong thực tế, chương trình viết máy tính hợp ngữ (assembly) ngôn ngữ cấp cao khác C/C++, Basic,… Các chương trình cần phải qua bước biên dịch, liên kết để chuyển sang dạng mã máy phù hợp với loại MCU dùng Công cụ để thực bước gọi chương trình dịch hợp ngữ (assembler), chương trình biên dịch (compiler), chương trình liên kết (linker) Mỗi loại MCU thường có chương trình dịch hợp ngữ riêng Trong tài liệu thí nghiệm này, người lập trình sử dụng chương trình Keil µVision 4, với trình biên dịch C51 Bản dùng thử tải www.keil.com, cho phép biên dịch chương trình assembly C với giới hạn kích thước chương trình 2KB Ngồi dùng chương trình biên dịch miễn phí SDCC (tại http://sdcc.sourceforge.net/) Đây cơng cụ hữu ích cho người lập trình 1.1 Tạo project Keil µVision Để tạo project với Keil µVision ta theo bước sau: • • Khởi động chương trình Keil µVision Chọn Project-New Project Chọn thư mục phù hợp gõ tên project vào cửa sổ Create New Project Chọn Save Hình Hình 1: Tạo project với µVision TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MÔN ĐIỆN TỬ Trong cửa sổ Select Device, chọn Atmel-AT89S52 Đây CPU sử dụng kit thí nghiệm Click OK Hình 2: Chọn vi điều khiển cho project Khi chương trình cửa sổ hỏi: “Copy ‘STARTUP.A51’ to project folder and Add File To Project”, chọn NO Chọn File-New để tạo file text Chọn File-Save để lưu file với tên file phù hợp A51 Hình 3: Tạo file với đuôi A51 Click chuột phải vào tab ‘Source Group 1’ chọn Add files to Group ‘Source Group 1’ TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ Hình 4: Thêm file vào project Chọn Files of Type Asm Source file Chọn file vừa tạo click Add Hình 5: Chọn file assembly để thêm vào project Chọn Project-Option for Target ‘Target 1’, chọn Tab Output, chọn Create Hex File TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ Hình 6: Cấu hình chương trình biên dịch để tạo file hex Giả sử chương trình viết có tên main.A51 Để bắt đầu chương trình, người sử dụng phải dùng dẫn xuất ORG địa 0000h sau: ORG 0000h ; phần thân chương trình END TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ Hình 7: Biên soạn biên dịch chương trình Chọn Project-Build Target Nếu chương trình khơng có lỗi, chương trình biên dịch thành cơng với số lỗi (error) 0, đồng thời file kết biên dịch tạo với đuôi hex 1.2 Tính debug (gỡ lỗi) Keil µVision Người lập trình mơ chương trình cách sử dụng simulator có sẵn Keil µVision sau: Chọn Debug -> Start/Stop Debug Session Hình 8: Tính Debug Keil Kết mô hiển thị hình đây: TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ Hình 9: Giao diện tính Debug Màn hình Debug Keil µVision bao gồm thành phần sau: 1.2.1.Cửa sổ Disassembly Hình 10: Cửa sổ Disassemply Cửa sổ Disassembly hiển thị việc thực thi chương trình mã assembly Khi cửa sổ Disassembly hoạt động, tất lệnh gỡ lỗi-bước hoạt động cấp độ assembly (Nếu người lập trình chạy Debug khơng hiển thị cửa sổ Disassembly mở cách nhấn View — Disassembly Window) Như đa số trình IDE khác, Keil hổ trợ người dùng tính Breakpoint Breakpoint kích hoạt điểm chương trình người lập trình để ngừng thi hành thực chức Debug Để đặt điểm Breakpoint, sinh viên nhấp đơi chuột trái vào trước TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ dịng lệnh, trước dịng lệnh xuất vuông màu đỏ để đánh dấu điểm Breakpoint Tương tự, người lập trình xóa điểm breakpoint cách nhấp đơi chuột lần vào dịng lệnh Ngoài bên trái sổ Disassembly biểu thị hành vi dịng lệnh thơng qua số màu sau: - - No code: Các dịng khơng có mã đánh dấu khối màu xám nhạt Unexecuted Code: Các dòng chưa thực (instructions) đánh dấu khối màu xám đậm Executed Code: Các dòng thực đầy đủ (instructions) đánh dấu khối màu xanh Khối màu xanh lệnh rẽ nhánh cho biết điều kiện sai kiểm tra Branch Condition True: Một khối xanh lam điều kiện nhánh ln thực thi Branch Condition False: Một khối màu cam điều kiện nhánh khơng không thực thi 1.2.2 Thanh công cụ Debug - Reset CPU: Đặt CPU trạng thái ban đầu Run: Tiếp tục thực chương trình đạt đến điểm ngắt hoạt động Stop: Dừng chương trình Step Into: thực lệnh nhất, thực dòng lệnh Step Over: Thực bước hàm Step Out: Hoàn tất việc thực thi hàm dừng sau Run to Cursor: Thực thi chương trình đạt đến điểm Breakpoint TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ 1.2.3 Thanh ghi Cửa sổ Thanh ghi hiển thị cho phép sửa đổi nội dung ghi, liệt kê chế độ hoạt động vi điều khiển, trạng thái hệ thống bên Hình 11: Cửa sổ ghi Register: Liệt kê ghi vi điều khiển 8051 Value: Giá trị ghi Sinh viên nhấp đơi chuột vào giá trị ghi để sửa đổi 1.2.4 Bộ nhớ vi điều khiển: - Bảng trình bày lớp nhớ sử dụng để lập trình kiến trúc 8051: Bảng 1: lớp nhớ sử dụng để lập trình kiến trúc 8051 Memory class Tầm địa Mô tả DATA D:00 – D:7F Địa trực tiếp RAM (RAM nội) BIT D:20 – D:2F Địa định vị BIT RAM (RAM nội); truy cập bit instructions TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ Hình 32: Khối LCD Như sơ đồ thiết kế khối LCD Các chân ‘Q0’ -> ‘Q7’ nối từ chân ‘D0’ > ‘D7’ thông qua IC chốt 74LC573 Và tín hiệu chốt tích cực tầm địa truy xuất 6000H-7FFFFH Lưu ý: lập trình ta nên chia mã lệnh ghi vào LCD thành loại: ghi lệnh (command) ghi ký tự (data), ứng với chân RS(P3.5) = RS = - Ghi lệnh (RS =0): lệnh cấu hình LCD ví dụ thiết lập trỏ tắt bật, nhấp nháy hay không,… Ghi ký tự (RS =1): ghi/đọc ký tự từ RAM LCD Để cụ thể hơn, trình tự hoạt động khổi LCD mô tả sau: (ứng với lệnh cho bước thực hiện, sinh viên cần xem lại bảng mô tả câu lệnh LCD để hiểu rõ hơn) - Đầu tiên, người lập trình cần phải khởi động đặt cấu hình cho LCD Việc thực cách gửi số lệnh khởi động đến LCD Lệnh thứ mà ta gửi báo cho LCD biết ta giao tiếp với thơng qua bus liệu 4-bit hay 8-bit Ta chọn font ký tự 5x8 Điều thực cách gửi lệnh 38h đến LCD Lưu ý đường RS phải giữ mức thấp để báo cho LCD biết nhận lệnh TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ - - Tiếp theo ta cần gửi lệnh 0Eh Lệnh dùng để bật LCD tắt trỏ ký tự Byte thứ gửi thêm để cài đặt số tham số hoạt động LCD Ví dụ, ta gửi lệnh 06h để lệnh cho trỏ tự động dịch phải ta gửi ký tự hiển thị cho Lệnh MOVX dùng để truy xuất đến module LCD với DPTR chứa địa thao tác cụ thể Để đảm bảo module LCD hoàn tất thao tác điều khiển, người lập trình dùng hai phương pháp Cách thứ sử dụng chương trình tạo trễ để chờ module hồn thành lệnh thời Thời gian chờ cụ thể module LCD cần phải xem cụ thể mô tả kỹ thuật vi mạch HD44780 Cách thứ hai sau lần truy xuất đến module LCD, người lập trình cần liên tục đọc trạng thái module LCD kiểm tra bit thứ byte trạng thái nhận Nếu bit LCD cịn bận, chương trình cần tiếp tục chờ Nếu bit LCD hồn tất thao tác thời sẵn sàng cho thap tác điều khiển khác MOVX A, @DPTR JB ACC.7, wait … - BỘ MÔN ĐIỆN TỬ ; đọc trạng thái LCD ; busy nhảy đến wait ; khơng tiếp tục Sau hoàn tất việc khởi động LCD, người lập trình sử dụng lệnh ghi câu lệnh ghi ký tự tùy theo mục đich sử dụng Ví dụ: Viết chương trình hiển thị chuỗi lên LCD Bước 1: Xác định tầm địa để tích cực cho tín chốt LCD Như phân tích phần trước, tầm địa truy xuất khối LCD 6000H-7FFFFH Trong ví dụ chọn 6789H làm địa truy xuất cho khối LCD MOV DPTR, #6789H Bước 2: Viết chương trình chờ phản hồi từ LCD Bởi sau lệnh mà người lập trình gửi đến LCD cần phải có thời gian để LCD thực thi lệnh Vì người lập trình cần phải viết chương trình để chờ phản hồi từ LCD Trong ví dụ này, sử dụng cách tạo độ trễ (khuyến khích sinh viên viết chương trình theo cách liên tục đọc trạng thái từ LCD để tối ưu thời gian thực chương trình) WAITLCD: MOV R6,#10 LL: MOV R7,#250 DJNZ R7,$ DJNZ R6,LL TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ RET Bước 3: Viết chương trình ứng với lệnh ghi câu lệnh lệnh ghi ký tự - Chương trình ghi lệnh: Với chương trình ghi lệnh, cần tích cực thấp (mức 0) cho chân RS (P3.5) đồng thời tích cực cao (mức 1) cho chân E (P3.3) phép đọ ghi module LCD Tiếp theo cần truyên giá trị vào cho LCD thông qua chân Q0 -> Q7 Cuối tích cực thấp cho chân E (P3.3) để thực thi lệnh chờ cho LCD hoàn thành WRITECOM: MOV CLR SETB MOVX CLR ACALL RET - DPTR, #6789H P3.5 P3.3 @DPTR, A P3.3 WAITLCD ;RS ;E Chương trình ghi ký tự: Tương tự chương trình ghi lệnh, ta có chương trình sau: WRITETEXT: MOV SETB SETB MOVX CLR ACALL RET DPTR, #6789H P3.5 P3.3 @DPTR, A P3.3 WAITLCD ;E ;RS Bước 4: Viết chương trình khởi động LCD Như phân tích phân trước, chương trình để khởi động LCD sau: INITLCD: MOV A,#38H ACALL WRITECOM MOV A,#0EH ACALL WRITECOM MOV A,#06H ACALL WRITECOM RET Bước 5: hiển thị chuỗi ký tự cần ghi lên LCD Giả sử ta cần ghi chuỗi "BO MON DIEN TU” lên LCD Ta ghi mã ký tự ‘B, ‘O’, ‘ ’, ‘M’, ‘O’, ‘M’, ‘ ’, ‘D’, ‘I’, ‘E’, ‘N’, ‘ ’, ‘T’, ‘U’ đến LCD theo bảng ký tự LCD TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MÔN ĐIỆN TỬ Lưu ý sau lần truy xuất module LCD cần chờ cho thao tác thời hoàn tất trước bắt đầu thao tác khác Để dễ dàng việc lấy ký tự xuất LCD, người lập trình dùng phương pháp tra bảng sau Message: Chương trình hồn chỉnh: DB ORG 0000H ACALL INITLCD MOV R1, #0 LOOP: MOV A,R1 MOV DPTR, #Message MOVC A, @A+DPTR JNZ NEXT AJMP WAIT NEXT: ACALL WRITETEXT INC R1 AJMP LOOP WAITLCD: MOV LL: MOV DJNZ DJNZ RET R6,#10 R7,#250 R7,$ R6,LL WRITECOM: MOV DPTR, #6789H CLR P3.5 SETB P3.3 MOVX @DPTR, A CLR P3.3 ACALL WAITLCD RET WRITETEXT: MOV DPTR, #6789H SETB P3.5 SETB P3.3 MOVX @DPTR, A CLR P3.3 'BO MON DIEN TU' TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ ACALL WAITLCD RET INITLCD: MOV A,#38H ACALL WRITECOM MOV A,#0EH ACALL WRITECOM MOV A,#06H ACALL WRITECOM RET Message: DB WAIT: SJMP $ END 'BO MON DIEN TU',0 2.3.8.ADC Chuyển đổi tín hiệu Analog sang Digital Tín hiệu tương tự tín hiệu liên tục miền thời gian biên độ Trong thực tế, hầu hết tín hiệu vật lý tồn dạng tương tự Muốn xử lý tín hiệu hệ thống số cần phải chuyển đổi tín hiệu tương tự sang dạng số vi mạch ADC (Analog to Digital Converter) thực cơng việc Hình 33: Chuyển đổi tín hiệu Analog sang Digital Vi xử lý 8051 khơng có hỗ trợ chuyển đổi ADC bên trong, để thực chuyển đổi ADC, ta cần dùng IC chức chuyển đổi ADC Cụ thể mạch mô vi xử lý sử dụng IC ADC0808 để thực việc chuyển đổi ADC bit TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ Hình 34: IC chuyển đổi Analog sang Digital ADC0808 Bảng 5: Sơ đồ chân ADC0808 Tên IN0 đến IN7 ADD A, ADD B, ADD C OUT1 đến OUT8 Trạng thái Ngõ vào Ngõ vào Ngõ VREF+ VREF- Ngõ vào CLOCK ALE (Address Latch Enable) Ngõ vào Ngõ vào START Ngõ vào EOC (End of conversation) OE (Output enable) Ngõ Ngõ vào Mô tả kênh ngõ vào Analog cần phân tích chọn chân kênh Analog cần phân tích ngõ song song bit tính hiệu phân tích thành digital Điện áp tham chiếu dương âm Cần đảm bảo điện áp Analog cần phân tích nằm khoản tham chiếu Cấp clock cho IC hoạt động cho phép chốt địa Chọn kênh cách tích cực chân A0 đến A2 tương ứng, sau tích cực chân Xung vào chân (cạnh xuống) bắt đầu q trình chuyển đổi ADC Chân tích cực thấp trình chuyển đổi ADC Đặt chân mức trình chuyển đổi Đặt chân mức đọc liệu TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ Hình 35: Sơ đồ khối ADC0808 Hình 36: Khối 256R RESISTOR LADDER SWITCH TREE Hoạt động IC ADC0809: Sau kích xung START, chuyển đổi hoạt động cạnh xuống xung START, ngõ EOC xuống mức thấp Khối S.A.R quản lý đóng ngắt bit học (các công tắc) SWITCH TREE Đầu tiên bit học có trọng số cao mức bit khác mức 0, tạo điện áp tham chiếu 𝑉𝑉𝑟𝑟𝑟𝑟𝑟𝑟 = 𝑉𝑉𝑉𝑉𝑉𝑉𝑉𝑉(+)−𝑉𝑉𝑉𝑉𝑉𝑉𝑉𝑉(−) nối vào ngõ vào TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ so sánh, 𝑉𝑉𝑖𝑖𝑖𝑖 > 𝑉𝑉𝑟𝑟𝑟𝑟𝑟𝑟 BỘ MƠN ĐIỆN TỬ MSB giữ mức ngược lại, 𝑉𝑉𝑖𝑖𝑖𝑖 < 𝑉𝑉𝑟𝑟𝑟𝑟𝑟𝑟 MSB giữ mức Tiếp S.A.R quản lý đóng bít học tiếp theo, tạo điện áp tham chiếu 3∗𝑉𝑉𝑟𝑟𝑟𝑟𝑟𝑟 𝑉𝑉𝑟𝑟𝑟𝑟𝑟𝑟 tùy vào MSB giữ nào, điện áp tham chiếu so sánh với Vin, Vin lớn điện áp tham chiếu giữ bit 1, Vin nhỏ điện áp tham chiếu bit Quá trình tạo tham chiếu so sánh thực tương tự lập lại xác định bit cuối Lúc chân EOC lên mức báo hiệu trình chuyển đổi kết thúc Hình 37: Khối ADC Để đọc Bit output, cần cho chân OE lên mức cao Thiết kế giao tiếp 8051 IC ADC0808 thực theo chế bus Tính hiệu Analog cần phân tích VREF lấy từ chia áp dùng biến trở nối vào ngõ vào IN0 IC ADC0808, vậy, chân ADDA, ADDB, ADDC phải để chọn kênh IN0, tức phải đảm bảo gán ghi A cho bit ‘A0 A1 A2’ ‘0 0’ Điện áp cần phân tích nằm khoảng 5V (VCC) 0V (GND) nên hai chân VREF(+) VREF(-) nối vào VCC GND Tín hiệu START = nY2 NOR nWR tích cực ta thực lệnh: MOVX @DPTR, A Sau thực xong lệnh này, ta cần chờ chân EOC lên mức báo hiệu việc chuyển đổi hoàn tất, delay đoạn thời gian, thời gian chiếm khoản chu kỳ clock đưa vào ADC0809 Tín hiệu OE = nY2 nor nRD tích cực ta thực lệnh: MOVX A,@DTPR, sau thực xong lệnh này, ghi A giá trị digital bit tín hiệu analog đầu vào Đoạn chương trình chuyển đổi ADC sau TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ MOV MOV MOVX ACALL MOVX BỘ MÔN ĐIỆN TỬ A, #0 DPTR,#4444H @DPTR,A Delay_100us A, @DPTR ;Chọn kênh IN0 ;Địa chốt ADC ;chốt tín hiệu ghi liệu ;chờ cho ADC0808 hoàn tất ;A lưu giá trị ADC bit Công thức chung đoạn mã ngõ số nguyên bit sau: 𝑉𝑉𝑉𝑉𝑉𝑉 − (𝑅𝑅𝑅𝑅𝑅𝑅 −) (𝑅𝑅𝑅𝑅𝑅𝑅 +) − (𝑅𝑅𝑅𝑅𝑅𝑅 −) [1] 𝐴𝐴 (𝑉𝑉 ) 256 [2] 𝐴𝐴 = 256 ∗ Với VREF(+) 5V VREF(-) 0V, ta suy điện áp vào ADC 𝑉𝑉𝑉𝑉𝑉𝑉 = ∗ Ví dụ: Viết chương trình chuyển đổi tín hiệu Analog sang Digital hiển thị lên hình LCD 16x2 Bước 1: Xác định tín hiệu chốt cho khối ADC Theo phần “2.3.4: Khối giải mã địa chỉ”, ta xác định tầm địa truy xuất khối ADC 4000H – 5FFFH cho hai tín hiệu EOC OF Bước 2: Đọc giá trị ADC từ ADC0808 Bước 3: Chuyển đổi giá trị nhận dạng Vin Với công thức [2] khơng thể tính tốn trực tiếp giá trị nhận từ ADC0808 Bởi vi điều khiển 8051 hỗ trợ tính tốn 8bit khơng tính tốn số thập phân Vì để tính giá trị Volt, cần số thao tác biến đổi sau - - Đầu tiên giá trị đọc lưu vào ghi A, nhân giá trị cho (theo công thức [2]) lệnh MUL AB Trong A giá trị đọc B lưu giá trị Kết lệnh bit thấp lưu vào A bit cao lưu vào B Khi ghép 8bit cao 8bit thấp lại ta giá trị 16bit Giá trị phải chia cho 256 để kết Vin Và chia 256 đồng nghĩa giá trị 16bit dịch phải 8bit -> Vì ta hiểu giá trị 16bit chia cho 256 8bit cao giá trị phần nguyên, 8bit thấp giá trị phần dư TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ - BỘ MÔN ĐIỆN TỬ Sau có phần dư, nhân giá trị cho 10 chia cho 256 để thu giá trị phần thập phân thứ (cách chia tương tự trên) Và cách làm tương tự cho phần thập phân Bước 4: Hiển thị giá trị lên LCD (Sinh viên xem lại cách hiển thị LCD phần trước) Lưu ý: Do giá trị nhận không dạng mã ASCII Vì cần phải chuyển giá trị mã ASCII cách cộng cho 30H Chương trình hồn chỉnh: LOOP: ORG 0000H ACALL INITLCD ACALL CLEARLCD ACALL READADC ACALL CALADC ACALL PRINTADC LJMP LOOP READADC: MOV DPTR,#4444H MOVX @DPTR,A ACALL DELAY_100US MOVX A, @DPTR MOV R0,A RET CALADC: MOV B,#5 MUL AB ; Luu phan nguyen vào ô nho 40H MOV 40H, B MOV B,#10 MUL AB ; Luu phan thap phan thu vào ô nho 41H MOV 41H, B MOV B,#10 MUL AB ; Luu phan thap phan thu vào ô nho 41H MOV 42H, B RET PRINTADC: MOV A, 40H ADD A, #30H ACALL WRITETEXT TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ MOV A,#'.' ACALL WRITETEXT MOV A, 41H ADD A, #30H ACALL WRITETEXT MOV A, 42H ADD A, #30H ACALL WRITETEXT RET DELAY_100US: MOV R7,#50 DJNZ R7,$ RET DELAY: MOV R5,#10 LL: MOV R6,#250 DJNZ R6,$ DJNZ R5,LL RET CLEARLCD: MOV A,#01H ACALL WRITECOM RET INITLCD: MOV A,#38H ACALL WRITECOM MOV A,#0EH ACALL WRITECOM MOV A,#06H ACALL WRITECOM RET WRITECOM: MOV DPTR,#6000H CLR P3.5 SETB P3.3 MOVX @DPTR,A CLR P3.3 ACALL DELAY RET WRITETEXT: MOV DPTR,#6000H SETB P3.5 SETB P3.3 MOVX @DPTR,A CLR P3.3 ACALL DELAY BỘ MÔN ĐIỆN TỬ TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ RET END 2.3.9.Giao tiếp nối tiếp Truyền thông nối tiếp phần quan trọng hệ thống xử lý Đối với 8051, việc truyền nối tiếp thực thông qua ngoại vi cổng nối tiếp Ngoại vi cho phép người lập trình giao tiếp với bên ngồi thơng qua giao thức truyền nối tiếp bit liệu, stop bit Tốc độ truyền lập trình phần mềm Khung truyền nối tiếp bất đồng bộ: Khi khơng có liệu gửi đường tín hiệu trì trạng thái cao (trạng thái Mark) Bắt đầu ký tự liệu mức thấp thời gian bit Bit gọi bit bắt đầu (Start bit) Rồi sau bit liệu gửi đường tín hiệu bit (bắt đầu với LSB) Từ liệu 5, 6, 7, bit theo sau bit kiểm tra chẵn lẻ P (Parity bit) Tiếp theo bit liệu P (nếu có sử dụng kiểm tra chẵn lẻ), đường tín hiệu trả mức cao thời gian bit để giúp nhận biết kết thúc ký tự Bit gọi bit dừng (Stop bit), số hệ thống cũ sử dụng bit dừng Thuật ngữ tốc độ baud dùng để tốc độ liệu nối tiếp truyền Tốc độ baud định nghĩa 1/(thời gian chuyển tiếp tín hiệu) Thí dụ: Nếu tín hiệu thay đổi sau 3.33 ms tốc độ baud 1/3.33ms = 300 bd (hay baud) Chú ý tốc độ tổng quát khác với tốc độ định nghĩa theo bps (bits/giây) Các tốc độ baud thông dụng 300, 600, 1200, 2400, 4800, 9600, 19200 baud (hiện số cao nữa, thường giới hạn với truyền bất đồng 100000 baud) Trong thực tế, cổng nối tiếp 8051 giao tiếp với cổng RS-232 máy tính thơng qua vi mạch chuyển đổi từ TTL sang RS-232 MAX232 Việc truyền thông tin cần TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MÔN ĐIỆN TỬ dây TXD, RXD, GND không dùng bắt tay phần cứng Tuy nhiên phần mềm mô Proteus hỗ trợ cho người dùng giao tiếp nối tiếp, bao gồm kết nối lẫn giao diện truyền nhận Khối thiết lập board rate 19200 Người lập trình thay đổi thơng số cách nhấn đôi chuột vào khối Khi chạy mô phỏng, khối hiển thị giao diện truyền gửi để người dùng tương tác • Phần mềm giao tiếp: Để truyền nhận liệu thông qua cổng nối tiếp, người lập trình cần khởi động thao tác: truy xuất ghi SMOD để cài đặt chế độ làm việc; truy xuất Timer để điều khiển tốc độ baud MOV MOV SMOD, #52h TH1, # ; khởi động chế độ ; cài đặt tốc độ Để ghi đọc liệu từ cổng nối tiếp, người lập trình cần truy xuất ghi SBUF chương trình JNB CLR MOV TI, $ TI SBUF, A ; chờ phát xong byte trước ; chuẩn bị phát byte kế ; phát JNB CLR RI, $ RI ; chờ nhận xong byte ; nhận byte kế Hoặc TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ MOV A, SBUF BỘ MƠN ĐIỆN TỬ ; byte kế nằm A Ví dụ: gửi chuỗi kí tự thơng qua giao tiếp nối tiếp Bước 1: thiết lập cấu hình cho Serial (sinh viên xem lại lý thuyết) Bước 2: Truyền chuỗi ký tự thơng qua giao tiếp Serial Chương trình hoàn chỉnh: ORG 0000H MOV SCON,#52H MOV PCON,#80H MOV TMOD,#20H MOV TH1,#-3 SETB TR1 ACALL STRING SJMP $ PHAT: JNB TI,$ CLR TI MOV SBUF,A RET STRING: MOV R0,#0 LAP: MOV A,R0 MOV DPTR,#MESSAGE MOVC A,@A+DPTR JZ KT ACALL PHAT INC R0 AJMP LAP KT: MOV R0,#0 RETMESSAGE: DB "BO MON DIEN TU",0 END TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MÔN ĐIỆN TỬ ...TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ CHƯƠNG VI? ??T CHƯƠNG TRÌNH ASSEMBLY VỚI Keil µVision Các hệ thống vi xử lý vi điều khiển cần có phần mềm (chương trình) để... http://sdcc.sourceforge.net/) Đây cơng cụ hữu ích cho người lập trình 1.1 Tạo project Keil µVision Để tạo project với Keil µVision ta theo bước sau: • • Khởi động chương trình Keil µVision Chọn Project-New Project... project với µVision TÀI LIỆU THÍ NGHIỆM VI XỬ LÝ BỘ MƠN ĐIỆN TỬ Trong cửa sổ Select Device, chọn Atmel-AT89S52 Đây CPU sử dụng kit thí nghiệm Click OK Hình 2: Chọn vi điều khiển cho project Khi