(NB) Giáo trình Vi điều khiển cung cấp cho người học những kiến thức như: Sơ lược về lịch sử và hướng phát triển của vi điều khiển; Cấu trúc họ vi điều khiển 8051; Tập lệnh 8051; Bộ định thời; Cổng nối tiếp. Mời các bạn cùng tham khảo nội dung giáo trình phần 2 dưới đây.
Bài Cởng nới tiếp (serial port) Mục tiêu Trình bày cấu tạo chế độ làm việc của cổng truyền thông nối nội dung học Thực cổng truyền thông nối tiếp yêu cầu kỹ thuật Thực thu phát liệu nối tiếp bằng 8051 đạt yêu cầu kỹ thuật 5.1.Mở đầu Cổng nối tiếp 8051 chủ yếu dùng ứng dụng có u cầu truyền thơng với máy tính, với vi điều khiển khác Liên quan đến cổng nối tiếp chủ yếu có ghi: SCON SBUF Ngoài ra, ghi khác ghi PCON (khơng đánh địa bit) có bit tên SMOD quy định tốc độ truyền của cổng nối tiếp có gấp đơi lên (SMOD = 1) hay không (SMOD = 0) Dữ liệu truyền nhận nối tiếp thông qua hai chân cổng P3.0(RxD) P3.1(TxD) Port nối tiếp hoạt động song công (full duplex), nghĩa có khả thu phát đồng thời Sử dụng ghi chức đặc biệt SBUF (địa byte 99H) SCON (địa byte 98H) để truy xuất port nối tiếp) Việc ghi lên SBUF nạp liệu để phát, việc đọc SBUF truy xuất liệu nhận thực có SBUF riêng rẽ SCON chứa bit trạng thái điều khiển, định địa bit Tần số hoạt động của port nối tiếp hay cịn gọi tốc độ baud (baud rate) cố định thay đổi Cổng nối tiếp 8051 có khả hoạt động chế độ đồng bất đồng dùng chân TxD (P3.1) RxD (P3.0) Chức của port nối tiếp thực chuyển đổi song song sang nối tiếp liệu xuất, chuyển đổi nối tiếp sang song song liệu nhập Khi hoạt động chế độ truyền/nhận bất đồng (UART – Universal Asynchronous Receiver / Transmiter), cổng nối tiếp có chế độ song cơng (1, 3) Q trình đọc/ghi cổng nối tiếp dùng ghi SBUF(Serial Buffer), thực chất ghi khác nhau: ghi truyền ghi nhận 108 8051 có cổng UART làm việc chuẩn TTL, mặc định sau khởi động tất cổng của 8051 dều làm việc chế độ vào số, để sử dụng UART cần phải cấu hình cho cổng làm việc thông qua ghi điều khiển ghép nối tương thích với chuẩn RS232 (hình 5.1) Hình 5.1 Ghép nối RS232 với 8051 Hai ghi chức đặc biệt phục vụ cho truyền liệu ghi đệm SBUF ghi điều khiển SCON Thanh ghi đệm SBUF nằm địa 99H có chức năng: vi điều khiển ghi liệu lên ghi sbuf liệu truyền đi, hệ thống khác gởi liệu đến lưu vào ghi đệm sbuf (hình 5.2) Thanh ghi điều khiển truyền liệu SCON nằm địa 98H ghi cho phép truy suất bit bao gồm bit trạng thái bit điều khiển Các bit 109 điều khiển dùng để thiết lập nhiều kiểu hoạt động truyền liệu khác nhau, bit trạng thái cho biết thời điểm kết thúc truyền xong kí tự nhận xong kí tự Các bit trạng thái kiểm tra chương trình lập trình để sinh ngắt Tần số hoạt động của truyền liệu nối tiếp gọi tốc độ BAUD (số lượng bit liệu truyền giây) hoạt động cố định (sử dụng dao động chip) thay đổi Khi cần tốc độ Baud thay đổi phải sử dụng Timer để tạo tốc độ baud Hình 5.2 Sơ đồ khối truyền liệu nối tiếp 110 5.2 Thanh ghi điều khiển 5.2.1 Thanh ghi SCON (Serial port controller) Bảng 5.1 Nội dung ghi SCON FE/SM0 Bit Ký hiệu SCON.7 FE SM1 REN Địa chỉ 9Fh SM0 SCON.6 SM1 SM2 9Eh TB8 RB8 TI RI Mô tả Framing Error – kiểm tra lỗi khung Được đặt lên phát lỗi bit stop phải xóa bằng phần mềm Bit FE truy xuất bit SMOD = = (trong ghi PCON) Serial port Mode bit – Xác định chế độ cho cổng nối tiếp Serial port Mode bit SM0 SM1 Mô tả Tốc độ baud 0 Thanh ghi dịch fOSC/12 1 UART bit UART bit Thay đổi fOSC/32 hay fOSC/64 1 UART bit Thay đổi SCON.5 SM2 9Dh Serial port Mode bit – Chế độ đa xử lý = 0: bình thường = 1: cho phép truyền thơng đa xử lý chế độ SCON.4 REN 9Ch Reception Enable bit – Cho phép thu = 0: cấm thu = 1: cho phép thu cổng nối tiếp SCON.3 TB8 9Bh Transmitter Bit – Bit truyền thứ chế độ SCON.2 RB8 9Ah Receiver Bit – Bit nhận thứ chế độ Trong chế độ 1, SM2 = RB8 = stop bit SCON.1 TI 99h Transmit Interrupt flag – Cờ ngắt phát Được đặt bằng kết thúc q trình truyền xóa bằng phần mềm SCON.0 RI 99h Receive Interrupt flag – Cờ ngắt thu Được đặt bằng nhận xong liệu xóa bằng phần mềm Giá trị reset: 00h, cho phép định địa bit 111 5.2.2 Thanh ghi BDRCON (Baud Rate Control Register) Bảng 5.2 Nội dung ghi BDRCON - - Bit Ký hiệu - - - BRR - BRR TBCK RBCK SPD SRC Mô tả Baud Rate Run control bit – Cho phép hoạt động = 0: cấm tạo tốc độ baud nội (internal baud rate generator) hoạt động = 1: cho phép tạo tốc độ baud nội (internal baud rate generator) hoạt động TBCK Transmission Baud rate generator selection bit for UART – Chọn tạo tốc độ baud truyền tạo tốc độ nội (= 1) hay bằng timer (= 0) RBCK Reception Baud rate generator selection bit for UART – Chọn tạo tốc độ baud nhận tạo tốc độ nội (= 1) hay bằng timer (= 0) SPD Baud Rate Speed control bit for UART – Chọn tốc độ baud nhanh (= 1) hay chậm (= 0) SRC Baud Rate Source select bit in Mode for UART – Chọn tốc độ baud chế độ từ dao động thạch anh (= 0) hay từ tạo tốc độ baud nội (= 1) Giá trị reset: 00h, khơng cho phép định địa bit Ngồi cịncó ghi SBUF (Serial Buffer), BRL (Baud Rate Reload), SADEN (Slave Address Mark), SADDR (Slave Address) Lưu ý rằng ghi BDRCON, BRL, SADEN SADDR có phiên của MCS-51 112 5.3 Chế độ làm việc Port nối tiếp của 8051 có chế độ hoạt động, chế độ chọn bằng cách ghi cho bit SM0 SM1 ghi SCON Trước truyền liệu ghi SCON phải khởi tạo kiểu Ba số chế độ hoạt động cho phép truyền khơng đồng (asynchronous), ký tự thu phát với bit start bit stop tạo thành khung (frame) Ví dụ: để khởi tạo truyền liệu kiểu bit: SM0 SM1 = 01, bit cho phép thu: REN =1, cờ ngắt truyền TI = để sẵn sàng truyền, ta dùng lệnh sau: MOV SCON, #01010010b SM0 SM1 Chế độ Mô tả Tốc độ baud 0 Thanh ghi dịch Cố định ( tần số dao động/12) 1 UART bit Thay đổi ( thiết lập địnhthời ) UART bit Cố định ( tần số dao động/12 hoặc/64) 1 UART bit Thay đổi ( thiết lập địnhthời ) Truyền liệu nối tiếp của MCS51 có kiểu hoạt động tùy thuộc theo trạng thái của bit SM0, SM1 liệt kê sau: Thanh ghi scon thiết lập kiểu hoạt động truyền liệu khác cho MCS51 Cấu trúc của ghi Scon sau (bảng 5.3): Bảng 5.3 Các bit ghi điều khiển truyền dữ liệu SM0 SM1 SM2 REN TB8 RB8 TI RI Bit Ký hiệu Địa Mô tả hoạt động SM0 9FH Bit chọn kiểu truyền nối tiếp: bit thứ SM1 9EH Bit chọn kiểu truyền nối tiếp: bit thứ SM2 9DH Bit cho phép truyền kết nối nhiều vi xử lý mode 3; RI khơng tích cực bit thứ thu vào REN 9CH Bit cho phép nhận kí tự, REN = cho phép nhận kí tự TB8 9BH Dùng để lưu bit thứ để truyền hoạt động mode 3, TB8 bằng người lập trình thiết lập RB8 9AH Dùng để lưu bit nhận hoạt động mode 113 TI 99H Cờ báo hiệu lên mức truyền xong kí tự xóa người lập trình để sẵn sàng truyền kí tự RI 98H Cờ báo hiệu lên mức nhận xong kí tự xóa người lập trình để sẵn sàng nhận kí tự liệu 5.3.1 Thanh ghi dịch bit (chế độ 0) Để định cấu hình cho truyền liệu nối tiếp kiểu bit SM1 SM0 = 00 Dữ liệu nối tiếp nhận vào liệu truyền thông qua chân RxD, cịn chân TxD dùng để dịch chuyển xung clock bit liệu để truyền nhận ln bắt đầu với bit có trọng số nhỏ LSB Tốc độ Baud thiết lập cố định tần số bằng 112 tần số dao động thạch anh Chip Khi thực lệnh ghi liệu lên ghi sbuf trình truyền liệu bắt đầu Dữ liệu dịch ngồi thơng qua chân RxD với xung nhịp gởi ngồi thơng qua chân TxD Mỗi bit truyền có xuất chân RxD khoảng thời gian chu kỳ máy Trong khoảng thời gian của chu kỳ máy, tín hiệu xung clock xuống mức thấp thời điểm S3P1 lên mức cao thời điểm S6P1 giản đồ thời gian hình 5.3 Hình 5.3 Giản đồ thời gian 114 Biểu đồ thời gian của liệu nối tiếp truyền vào vi điều khiển kiểu sau ( hình 5.4): Hình 5.4 Biểu đồ thời gian truyền liệu mod Quá trình nhận khởi động bit cho phép nhận REN = cờ nhận RI = Nguyên tắc chung khởi tạo bit REN = đầu chương trình để khởi động truyền liệu, xóa bit RI để sẵn sàng nhận liệu vào Khi bit RI bị xóa, xung clock xuất bên ngồi thơng qua chân TxD, bắt đầu chu kỳ máy liệu từ bên dịch vào bên thông qua chân RxD Một ứng dụng cụ thể sử dụng mode dùng để mở rộng thêm số lượng ngõ cho MCS51 với cách thức thực sau: ghi dịch từ nối tiếp thành song song nối đến đường TxD RxD của MCS51 để mở rộng thêm đường hình 5.5 Nếu dùng thêm nhiều ghi dịch mắc nối tiếp vào ghi dịch mở rộng nhiều ngõ Hình 5.5 Một ứng dụng kiểu để tăng thêm ngõ ghi dịch 115 5.3.2 Chế độ UART bit có tốc độ baud thay đổi ( chế độ 1) Trong mode này, truyền liệu nối tiếp hoạt động bất đồng UART bit có tốc độ Baud thay đổi UART thu phát liệu nối tiếp với ký tự liệu bắt đầu bằng bit Start (ở mức 0) kết thúc bằng bit Stop (ở mức 1), bit parity ghép vào bit liệu sau bit Stop Trong kiểu này, 10 bit liệu phát chân TxD nhận nhận chân RxD 10 bit bao gồm: bit start, bit data (LSB bit đầu tiên), bit stop Đối với hoạt động nhận liệu bit Stop đưa vào bit RB8 ghi SCON Trong MCS51, tốc độ Baud thiết lập tốc độ tràn của Timer T1 Đối với họ 52 có timer tốc độ baud thiết lập tốc độ tràn của timer T1 timer T2 timer T1 T2: timer cho máy phát timer cho máy thu Nguồn cung cấp xung clock để đồng ghi truyền liệu nối tiếp hoạt động kiểu 1, 2, thiết lập đếm 16 hình 5.6, ngõ của đếm xung clock tạo tốc độ baud Xung ngõ vào của đếm lập trình bằng phần mềm Hình 5.6 Cung cấp xung cho truyền liệu nối tiếp Khi có lệnh ghi liệu lên ghi sbuf trình truyền liệu bắt đầu chưa truyền mà chờ chia 16 (cung cấp tốc độ Baud cho truyền liệu nối tiếp) bị tràn Dữ liệu xuất chân TxD bắt đầu với bit start theo sau bit data sau bit stop Các cờ phát TI nâng lên mức lúc với thời điểm xuất bit Stop chân TxD hình 5.7 Quá trình nhận liệu khởi động có chuyển đổi từ mức sang mức ngõ vào RxD Bộ đếm bit reset để xếp bit liệu đến từ ngõ vào RxD Mỗi bit liệu đến lấy mẫu trạng thái đếm thứ chu kỳ 16 trạng thái của đếm bit 116 Khi có chuyển trạng thái từ xuống ngõ vào RxD của thu trạng thái phải tồn trạng thái liên tục của đếm bit Nếu trường hợp khơng thu xem bị tác động tín hiệu nhiễu Bộ thu reset trở trạng thái nghỉ chờ chuyển trạng thái Hình 5.7 Cờ báo phát xong liệu TI Giả sử việc kiểm tra bit Start hợp lệ bit Start bỏ qua bit data nhận vào ghi dịch nối tiếp Khi tất bit ghi vào ghi dịch cơng việc sau thực tiếp theo: Bit thứ (bit Stop) dịch vào bit RB8 SCON bit data nạp vào ghi SBUF Cờ ngắt nhận RI =1 Tuy nhiên, công việc xảy hai điều kiện sau tồn tại: RI = SM2 = bit Stop nhận = SM2 = 5.3.3 Chế độ 2: UART bit với tốc độ Baud cố định Khi SM1 SM0 = 10 truyền liệu hoạt động kiểu có tốc độ Baud cố định Khi phát thìTruyền / nhận 11 bit: bit start, bit liệu, bit thứ bit stop Khi truyền, bit bit TB8 nhận, bit bit RB8 ghi SCON Tốc độ baud cố định 1/32 hay 1/64 tần số dao động Chip 5.3.4 Chế độ 3: UART bit với tốc độ Baud thay đổi Khi SM1 SM0 = 11 truyền liệu hoạt động kiểu kiểu UART bit có tốc độ Baud thay đổi Kiểu tương tự kiểu ngoại trừ tốc độ Baud lập trình cung cấp Timer Các kiểu 1, kiểu kiểu giống nhau, điểm khác tốc độ Baud (kiểu cố định, kiểu kiểu thay đổi) số bit liệu (kiểu có bit, kiểu kiểu có bit data) 117 MOV 75H,65H LJMP MAIN NHAP_LAI_PASS_CU: MOV A,@R0 CJNE A,60H,LOI_DOI_PASS INC R0 MOV A,@R0 CJNE A,61H,LOI_DOI_PASS INC R0 MOV A,@R0 CJNE A,62H,LOI_DOI_PASS INC R0 MOV A,@R0 CJNE A,63H,LOI_DOI_PASS INC R0 MOV A,@R0 CJNE A,64H,LOI_DOI_PASS INC R0 MOV A,@R0 CJNE A,65H,LOI_DOI_PASS ; HIEN THI NHAP PASS MOI ;******************** MOV DATABUS,#01H ACALL ;clear lcd GUI_LENH MOV DATABUS,#81H ; First following character will appear on first LCALL GUI_LENH PUSH 04H PUSH ACC MOV R4,#0 209 MOV DPTR,#DATACODE2 PINGMOI: MOV A,R4 MOVC A,@A+DPTR LCALL GUI_DATA INC R4 CJNE R4,#15,PINGMOI POP ACC POP 04H MOV DATABUS,#0C0H appear on second ACALL ; First following character will GUI_LENH MOV A,#11111110B LCALL GUI_DATA ; KHOANG TRANG MOV A,#11111110B LCALL GUI_DATA MOV A,#00110110B LCALL GUI_DATA MOV A,#11111110B LCALL GUI_DATA MOV A,#01010011B LCALL GUI_DATA MOV A,#01101111B LCALL GUI_DATA MOV A,#11111110B LCALL GUI_DATA MOV A,#01111110B LCALL GUI_DATA ; DAU EXIT_DUNG: INC R5 210 -> LJMP DOI_PASS LOI_DOI_PASS: INC R3 CJNE R3,#3,HOMESET_1 LCALL ; HIEN CAU NHAP PASS CU ALARM MOV R3,#00H LJMP CHANGE_PASS HOMESET_1: MOV DATABUS,#2 ACALL GUI_LENH MOV DATABUS,#1 ACALL GUI_LENH MOV DATABUS,#0CH ACALL ;CHO PHEP LCD HIEN THI GUI_LENH PUSH 04H PUSH ACC MOV R4,#15 MOV DPTR,#STRINGCODE ;HIEN THI PASS SAI ROI STINGSET: MOV A,R4 MOVC A,@A+DPTR ACALL GUI_DATA INC R4 CJNE R4,#30,STINGSET POP ACC POP 4H LCALL DELAY LCALL DELAY LCALL DELAY 211 LCALL DELAY LJMP CHANGE_PASS ;******************* ; LAP TRINH QUET BAN PHIM NAY QUA HAY KHONG CHE VAO DAU DUOC QUET_PHIM: PUSH 07H ; R7 DUOC DUNG DE LUU TRU CAC GIA TRI COT SCAN: MOV A,#0EFH ;QUET COLUMN0 MOV R7,#0 ;R7 = i CONT: MOV P0,A ;PORT2 NOI VOI BAN PHIM MOV A,P0 ;read row JNB ACC.0,ROW_0 JNB ACC.1,ROW_1 JNB ACC.2,ROW_2 JNB ACC.3,ROW_3 RL A ;prepare to conect next col to ground INC R7 CJNE R7,#4,CONT ;4 col is conected to ground one after another SJMP SCAN ROW_0: ;row = 0,col = MOV A,R7 ADD A,#0 ;A = 0+R7 SJMP EXIT ROW_1: ;row = 1,col = R7 MOV A,R7 ADD A,#4 ;A = 4+R7 SJMP EXIT ROW_2: 212 MOV A,R7 ;row = 2,col = R7 ADD A,#8 ;A = 8+R7 SJMP EXIT ROW_3: MOV A,R7 ;row = 3,col = R7 ADD A,#12 ;A = 12+R7 SJMP EXIT EXIT: MOV PASS,A LOVE3: MOV A,P0 ANL A,#0FH CJNE A,#0FH,LOVE3 MOV A,PASS ;MOV A,#00101010B POP 07H RET ;*****************************DELAY********************* DELAY: PUSH 4H PUSH 2H MOV R2,#0FFH LOOPDE1: MOV R4,#0FFH DJNZ R4,$ DJNZ R2,LOOPDE1 POP 2H POP 4H RET DELAY50MS: 213 PUSH 00H MOV R0,#50 MOV TMOD,#01H STINGA: MOV TH0,#0ECH MOV TL0,#78H SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 DJNZ R0,STINGA POP 00H RET CHAY_CHU: ACALL LCDINIT ACALL DISP_SLINE MP1: DONG ;KHOI TAO LCD ;HIEN THI DONG ;XU LY DICH CHUYEN DU LIEU HIEN THI CHO MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG CUA LCD SHIFT: ACALL DISP_FLINE MOV R1,#10 ;HIEN THI DONG ;DELAY 500MS DEL500: MOV TH0,#HIGH(-10000) MOV TL0,#LOW(-10000) ACALL DELAYA DJNZ R1,DEL500 THAI MAN HINH LCD ;THOI GIAN DUNG YEN CUA MOT TRANG INC DPTR DONG CHU ;TANG GIA TRI DPTR DE DICH CHUYEN 214 MOV A,DPL CHU RA MAN HINH LCD ;KIEM TRA DA DICH XONG DONG CJNE A,#LOW(FLINE_DATA+80),SHIFT MOV A,DPH CJNE A,#HIGH(FLINE_DATA+80),SHIFT LJMP MAIN1 ;*************************************************** LCDINIT: ;CTC KHOI TAO LCD CLR RS ;RS = - GUI LENH CLR RW ;RW = - WRITE LCD MODE SETB EN ;E = - ENABLE MOV DATABUS,#38H ;CODE = 38H - BIT, 16 CHAR/LINE, MATRIX 5x7 ACALL SENDCOMMAND ;GUI LENH RA LCD MOV TH0,#HIGH(-4100) MOV TL0,#LOW(-4100) ACALL DELAYA ;DELAY 4.1MS MOV DATABUS,#38H ;CODE = 38H - BIT, 16 CHAR/LINE, MATRIX 5x7 ACALL SENDCOMMAND ;GUI LENH RA LCD MOV TH0,#HIGH(-100) MOV TL0,#LOW(-100) ACALL DELAYA ;DELAY 100US MOV DATABUS,#38H ;CODE = 38H - BIT, 16 CHAR/LINE, MATRIX 5x7 ACALL SENDCOMMAND ;GUI LENH RA LCD MOV DATABUS,#0CH ;CODE = 0CH - CHO PHEP LCD HIEN THI ACALL SENDCOMMAND ;GUI LENH RA LCD MOV DATABUS,#01H ;CODE = 01H - XOA LCD ACALL SENDCOMMAND 215 ;GUI LENH RA LCD MOV DATABUS,#06H ;CODE = 06H - TU TANG DIA CHI HIEN THI, TAT DICH CHUYEN HIEN THI ACALL SENDCOMMAND ;GUI LENH RA LCD RET ;*************************************************** SENDCOMMAND: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU LIEU (SENDDATA) RA LCD CLR RS ;RS = - GUI LENH SJMP PULSE_ENA SENDDATA: SETB RS ;RS = - GUI DU LIEU NOP PULSE_ENA: ;TAO XUNG CHUYEN THONG TIN (COMMAND/DATA) VAO LCD CLR RW ;RW = - WRITE LCD MODE CLR EN ;EN = ENABLE DE NOP SETB EN ;EN = - XUNG ENABLE NOP ;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC LCD GHI NHAN THONG TIN GUI DEN ;*********************************************************** ** MOV TH0,#HIGH(-1000) ;LENH NAY DUOC THAY THE CHO DOAN MA KIEM TRA DUOI DAY KHI MOV TL0,#LOW(-1000) ACALL DELAYA RET ;*************************************************** DISP_FLINE: 216 MOV DATABUS,#80H ACALL SENDCOMMAND ACALL WRITE RET ;*************************************************** DISP_SLINE: MOV DATABUS,#0C0H ACALL SENDCOMMAND MOV DPTR,#SLINE_DATA ACALL WRITE RET ;*************************************************** WRITE: MOV R0,#0 WR1: MOV A,R0 MOVC A,@A+DPTR MOV DATABUS,A ACALL SENDDATA INC R0 CJNE R0,#16,WR1 RET ;*************************************************** DELAYA: MOV TMOD,#01H SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET 217 FLINE_DATA: DB ' ' DB 'CHAO MUNG BAN DEN VOI HE THONG KHOA SO BANG PASSWORD CUA NHOM ' DB ' ' SLINE_DATA: DB ' Welcome ' THONG_BAO: ACALL LCDINIT1 ACALL DISP_SLINE1 MP11: MOV DPTR,#FLINE_DATA1 SHIFT1: ACALL DISP_FLINE1 MOV R1,#5 DEL5001: MOV TH0,#HIGH(-10000) MOV TL0,#LOW(-10000) ACALL DELAY1 DJNZ R1,DEL5001 INC DPTR MOV A,DPL CJNE A,#LOW(FLINE_DATA1+102),SHIFT1 MOV A,DPH CJNE A,#HIGH(FLINE_DATA1+102),SHIFT1 RET ;*************************************************** LCDINIT1: ;CTC KHOI TAO LCD CLR RS CLR RW 218 SETB EN MOV DATABUS,#38H ACALL SENDCOMMAND1 MOV TH0,#HIGH(-4100) MOV TL0,#LOW(-4100) ACALL DELAY1 ;DELAY 4.1MS MOV DATABUS,#38H ACALL SENDCOMMAND1 ;GUI LENH RA LCD MOV TH0,#HIGH(-100) MOV TL0,#LOW(-100) ACALL DELAY1 ;DELAY 100US MOV DATABUS,#38H ACALL SENDCOMMAND1 ;GUI LENH RA LCD MOV DATABUS,#0CH ACALL SENDCOMMAND1 ;GUI LENH RA LCD MOV DATABUS,#01H ACALL SENDCOMMAND1 ;GUI LENH RA LCD MOV DATABUS,#06H ACALL SENDCOMMAND1 ;GUI LENH RA LCD RET ;*************************************************** SENDCOMMAND1: CLR RS ;RS = - GUI LENH SJMP PULSE_EN1 SENDDATA1: SETB RS ;RS = - GUI DU LIEU NOP PULSE_EN1: CLR RW ;RW = - WRITE LCD MODE CLR EN ;EN = 219 NOP SETB EN ;EN = - XUNG ENABLE NOP ;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC LCD GHI NHAN THONG TIN GUI DEN ;*********************************************************** ** MOV TH0,#HIGH(-1000) MOV TL0,#LOW(-1000) ACALL DELAY1 RET ;*************************************************** DISP_FLINE1: MOV DATABUS,#80H ACALL SENDCOMMAND1 ACALL WRITE1 ;GUI LENH RA LCD ;GUI VUNG DU LIEU SANG LCD RET ;*************************************************** DISP_SLINE1: MOV DATABUS,#0C0H ACALL SENDCOMMAND1 ;GUI LENH RA LCD MOV DPTR,#SLINE_DATA1 ACALL WRITE1 RET ;*************************************************** WRITE1: MOV R0,#0 WR11: MOV A,R0 ;NAP OFFSET 220 MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU MOV DATABUS,A ACALL SENDDATA1 INC R0 ;GUI DU LIEU RA LCD ;CHUYEN SANG DU LIEU KE TIEP CJNE R0,#16,WR11 RET ;*************************************************** DELAY1: MOV TMOD,#01H SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET ;*************************************************** FLINE_DATA1: DB ' ;DU LIEU HIEN THI DONG ' DB ' Ban Da Quen Pass Vui Long Dung Ngoai Cho Neu La Trom Thi Vui Long Pha Khoa Hi' DB ' SLINE_DATA1: DB ' ;DU LIEU HIEN THI DONG ' Keypad Locked ' AAAA: MOV DATABUS,#0C0H LCALL GUI_LENH MOV A,#11111110B ;HIEN THI DAU CACH LCALL GUI_DATA MOV A,#11111110B LCALL GUI_DATA MOV A,#11111110B 221 LCALL GUI_DATA MOV A,#11111110B LCALL GUI_DATA MOV A,#01010111B LCALL GUI_DATA MOV A,#01100101B LCALL GUI_DATA MOV A,#01101100B LCALL GUI_DATA MOV A,#01100011B LCALL GUI_DATA MOV A,#01101111B LCALL GUI_DATA MOV A,#01101101B LCALL GUI_DATA MOV A,#01100101B LCALL GUI_DATA RET STRINGCODE: DB ' Nhap Password ' DB ' Pass Sai Rui ' DB ' Keypad Locked ' DB 'Open The Door ' DB ' Correct ' DATACODE1: DB ' Nhap Pass Cu ' DATACODE2: DB ' Nhap Pass Moi ' END 222 TÀI LIỆU THAM KHẢO [1] Thiết kế chương trình ứng dụng dựa ngơn ngữ C , Yoon, Kun Su KorPolytechnics [2] Đề cương môđun/môn học nghề Sửa chữa thiết bị điện tử công nghiệp”, Dự án Giáo dục kỹ thuật Dạy nghề (VTEP), Tổng cục Dạy Nghề, Hà Nội, 2003 [3] Microprocessor and IC families - Walter H Buchbaum Sc.D [4] Mikrocompute Lehrbuch - HPI Fachbuchreihen Pflaum Verlag Munchen [5] 8051 Development Boad, Rev - Paul Stoffregen [6] Họ vi điều khiển - Tống văn On - Đại học Bách khoa TP.HCM - 2005 223 ... theo nội dung học Thực vi? ??t chương trình tổ chức lớn bằng cách phân chia thành mơ đun chương trình qui trình kỹ thuật Vi? ??t chương trình điều khiển theo yêu cầu 7.1 Mở đầu 7.1.1 Khái niệm - Vì... chương trình vi? ??t chương trình cho vi điều khiển bằng ngơn ngữ lập trình cấp cao, sau vi? ??c vi? ??t chương trình hồn tất, trình biên dịch chuyển câu lệnh cấp cao thành mã máy cách tự động Các mã máy... q trình thực chương trình trường hợp có ngắt khơng có ngắt hình 6.1 Hình 6.1 Vi điều khiển thực chương trình trường hợp khơng có ngắt Trong : Ký hiệu * cho biết vi điều khiển ngừng chương trình