Đồ án Thiết kế mạch quang báo giao tiếp máy tính

Chương 4. Thực nghiệm. 4.1. Kết quả. Mạch nhận được dữ liệu từ máy tính truyền xuống. Hiện chữ chạy từ phải sang trái. Độ sáng đều, không nháp nháy. Hạn chế: chưa hiện được hình ảnh, cách hiện chữ chưa phong phú. 4.2. Hướng phát triển. Từ modul thiết kế ta có thể ghép nhiều modul lại với nhau để tạo thành một bảng quang báo lớn. Từ đó ta có thể thiết kế thêm một menu để chọn các kỉ xảo như: cho chữ rơi từ trên xuống, trồi từ dưới lên, chạy tứ trái qua phải hay từ phải qua trái, hiển thị giờ, nhiệt dộ.

doc102 trang | Chia sẻ: linhlinh11 | Lượt xem: 1036 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đồ án Thiết kế mạch quang báo giao tiếp máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1 LE OE 1 20 Vcc D0 2 19 Q0 D1 3 18 Q1 D2 4 17 Q2 D3 5 16 Q3 D4 6 15 Q4 D5 7 14 Q5 D6 8 13 Q6 D7 9 12 Q7 GND 10 11 LE OE 1 20 Vcc D0 2 19 Q0 D1 3 18 Q1 D2 4 17 Q2 D3 5 16 Q3 D4 6 15 Q4 D5 7 14 Q5 D6 8 13 Q6 D7 9 12 Q7 GND 10 11 LE là IC chốt 8 bit vào song song ra song song; tốc độ cao; chống nhiễu cao. Chân 1:OE chân vào cho phép Chân 2÷9: các chân tín hiệu vào. Chân 12÷19: các chân tín hiệu ra. Chân 11: LE chân chốt tín hiệu, tích cực mức thấp. Chân 10, 20: chân mass và nguồn. Bảng trạng thái: Output Enable (OC) Latch Enable (LE) D Output (Q) L H H H L H L L L L X Q0 H X X Z Khi chân LE ở mức thấp thì tín hiệu trước đó bị chốt lại. Dữ liệu được đưa ra trên bus khi chân OC ở mức thấp. Khi OC ở mức cao ngõ ra ở trạng thái tổng trở cao. SRAM 6264. 6264 là một loại RAM tĩnh tốc độ cao, tiêu thụ năng lượng thấp. Gồm có 65536 bit tương đương 8K. RAM 6264 được chế tạo bằng công nghệ CMOS. Điện áp tiêu thụ 2V÷5V. Cường độ dòng điện hoạt động tối đa: 70mA. Công suất tiêu thụ ở trạng thái chờ rất thấp, chỉ khoảng 0,01mW so với khi họat động bình thường là 200mW. Tốc độ truy xuất dữ liệu cao: 70ns÷150ns. Dữ liệu vẫn được lưu giữ khi điện áp nguồn xuống mức tối thiểu là 2V. Các ngõ vào/ra tương thích hoàn toàn với họ TTL. Hoàn toàn không cần hoạt động làm tươi. Các chân 6264 được chia thành 4 nhóm: Vcc, GND: chân nguồn và chân mass. D0÷D7 : vào/ra dữ liệu. A0÷A12 : chân input địa chỉ. WE, OE, CS1, CS2: các chân điều khiển. Bảng sự thật: CS1 CS2 WE OE Input/Output Mode H X X X High Z Deselect/Power-Down X L X X High Z Deselect L H H L Data out Read L H L X Data in Write L H H H High Z Deselect IC 74LS138: INPUTS OUTPUTS ENABLE SELECT G1 G2 C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 x H x x x H H H H H H H H L x x x x H H H H H H H H H L L L L L H H H H H H H H L L L H H L H H H H H H H L L H L H H L H H H H H H L L H H H H H L H H H H H L H L L H H H H L H H H H L H L H H H H H H L H H H L H H L H H H H H H L H H L H H H H H H H H H H L A 1 16 Vcc B 2 15 Y0 C 3 14 Y1 G2A 4 13 Y2 G2B 5 12 Y3 G1 6 11 Y4 Y7 7 10 Y5 GND 8 9 Y6 74138 A B C Y0 ...Y7 G2A G2B G1 Sơ đồ chân Bảng trạng thái: Ngõ vào A,B,C là ngỏ vào số nhị phân 3 bit, C là bit có trọng số lớn nhất (MSB), A là bit có trọng số nhỏ nhất (LSB) . Các chân ngõ ra: Y0÷Y7, tích cực mức thấp. Các chân điều khiển: G1, G2A, G2B IC chỉ hoạt động giải mã khi các chân điều khiển được tích cực. G1 tích cực mức cao, G2A, G2B tích cực mức thấp. Khi một trong 3 chân này không tích cực các ngõ ra Y ở mức cao. ULN 2803. Trong ULN 2803 có 8 bộ transistor ghép dalington với nhau nhằm tạo ra một bộ khuếch đại công suất. Ở ngõ ra mỗi bộ còn có một diode để chống quá áp. ULN 2803 có thể đáp ứng được dòng điện cho mức logic thấp của TTL, CMOS hay PMOS/NMOS và những yêu cầu về điện áp cao/tức thời của bóng đèn, rờ le, Hình : (a) sơ đồ chân UNL2803 (b) sơ đồ chi tiết 1 chân Matrix LED. Ma trận LED bao gồm nhiều LED cùng nằm trong một vỏ chia thành nhiều cột và hàng, mỗi giao điểm giữa hàng và cột có thể có 1 LED (ma trận LED một màu) hay nhiều LED (2 LED tại một vị trí tạo thành ma trận LED 3 màu). Để LED tại một vị trí nào đó sáng thì phải cấp hiệu điện thế dương giữa Anode và Cathode. Trên cơ sở cấu trúc như vậy, ta có thể mở rộng hàng và cột của ma trận LED để tạo thành các bảng quang báo. Hiện nay trên thị trường có rất nhiều loại ma trận led có kích cở và kiểu hiển thị khác nhau. Ở đấy em chọn loại led có hai màu xanh và đỏ, anod chung, loại led này có 24 chân chia làm hai hàng. Điện áp chảy qua led là từ 2v÷5V, cường độ dòng từ 10mA÷30mA. Khi sử dụng ma trận led tích hợp sẵn thì ta sẽ khắc phục được các thuyết điểm về thẩm mỹ cũng như kỹ thuật khi dùng led rời. Sơ đồ khối và Hoạt động các khối. Mater: Có nhiệm vụ xử lý tất cả các chương trình: điều khiển xuất, nhập dữ liệu, truy xuất dữ liệu từ RAM ngoại, điều khiển các Slave. Khối giao tiếp có nhiệm vụ tạo sự tương thích giửa máy tính và khối điều khiển, để cho việc truyền/ nhận được thông suốt. Khối điều khiển: trao đổi dữ liệu với máy tính; nhận dữ liệu từ máy tính ghi vào RAM ngoại; đọc dữ liệu từ RAM ngoại ra RAM nội; điều khiển các Slave. Slave: Khối vi xử lý: xử lý thông tin từ master gởi xuống, điều khiển khối công suất hàng và công suất cột. Khối công suất hàng: giải mã hàng và khuếch đại công suất cho led. Khối công suất cột: khuếch đại công suất để làm cho ma trận led sáng bình thường; đưa tín hiệu điều khiển màu; xuất dữ kiệu cột. Khối hiển thị: ghép 8 ma trận led 8x8 để hiển thị thông tin được nhập vào từ máy tính hoặc dữ liệu có sẵn trong RAM nội. PC (máy tính) KHỐI ĐIỀU KHIỂN RAM KHỐI GIAO TIẾP MÁY TÍNH KHỐI GIAO TIẾP KHỐI VI XỬ LÝ KHỐI CÔNG SUẤT HÀNG KHỐI CÔNG SUẤT CỘT KHỐI HIỂN THỊ SLAVE 2 SLAVE 1 MASTER Hình 3.1: Sơ đồ khối Thiết kế và thi công. Giới thiệu. Để quét LED ta có hai cách đó là quét hàng và quét cột, ở đây do số lượng cột lớn (64 cột), nên em chọn quét hàng (8 hàng). Vì dùng phương pháp quét cột thì thời gian trể sẽ lớn, khi đó ta sẽ thấy các LED sáng không đều và bi rung. Về xuất dữ liệu trên cột ta có hai cách: xuất song song và xuất nối tiếp. Ở đây em chọn xuất song song vì: Các IC khuếch đại công xuất cột được nối song song với nhau nên khi có hư thì các IC phía sau không bị ảnh hưởng, nên ta dễ phát hiện và sửa chữa. Khả năng mở rộng cao. Tốc độ xử lý nhanh. Thiết kế. Khối Mater. Mạch giao tiếp PC: Ta có thể giao tiếp máy tính bằng nhiều cách như đã giới thiệu ở mục 2.1. Nhưng chủ yếu là dùng cổng nối tiếp, cổng song song và cổng USB, đặc điểm của các cổng này là: Cổng song song (LPT) tín hiệu truyền đi ngắn nhỏ hơn 2m; dể bị nhiễu tác động; khi muốn gắn thiết bị ngoại vi vào thì máy tính phải ở trạng thái ngắt nguồn. Cổng nối tiếp (COM) tín hiệu truyền đi xa hơn (5m); ít bị nhiễu tác động; ta không cần ngắt nguồn khi muốn gắn thêm thiết bị ngoại vi. Cổng USB tốc độ cao, tín hiệu truyền xa; không bị nhiễu; thiết bị ngoại vi được kết nối nóng. Qua những đặc điểm trên thì cổng USB là tốt nhất, nhưng 89C51 không đáp ứng được tốc độ cao và nếu dùng cổng USB thì ta phải viết Driver cho 89C51 như vậy khá phức tạp. Trong khi yêu cầu về khoảng cách và tốc độ của ta không cao lắm nên việc dùng cổng COM sẽ đơn giản hơn nhiều. Max 232 giao tiếp với máy tính qua cổng DB-9. Mạch có nhiệm vụ là chuyển mức điện áp giữa chuẩn TTL&RS-232 để VĐK và máy tính hiểu nhau. Các tụ C có nhiệm vụ chuyển mức điện áp 0V÷2V (mức thấp TTL) thành 3V÷15V (mức thấp máy tính) và 3V÷5V (mức cao TTL) thành -3V÷-15V (mức cao máy tính). Vì vậy ta có thể chọn giá trị tụ trong khoảng 1µF÷22µF (khuyến cáo nhà sản xuất). Mạch điều khiển: Mạch Reset: Mạch reset có nhiệm vụ khởi động lại hệ thống. Hệ thống được reset lại bằng cách giữ chân reset ở mức cao ít nhất 2 chu kỳ máy, tương đương 2µs ( thạch anh 12MHz ), và trả nó về mức thấp. Điện áp ở chân reset: ;lấy ln 2 vế Để chân reset hiểu được mức cao thì Vrst ≥ 2V Thời gian duy trì mức cao t ≥ 2µs. Ta chọn t=10µs. Chọn R1= 100Ω. Do Vrst có thể lớn hơn, để đảm bảo cho reset, ta chọn C= 10µF. Mà ta có: Ta chọn R2=10KΩ Mạch tạo dao động: Thạch anh ta có thể dùng thạch anh ≤ 30MHz Thực tế ta dùng : 12MHz nếu hệ thống không giao tiếp với máy tính. 11.0592MHz nếu hệ thống giao tiếp với máy tính. Các tụ dùng để ổn định dao động. Thanh ghi dịch: Để chốt dữ liệu 8 bit ta dùng IC chốt vào song song ra song song 74LS373 hay 74LS573, ở đây em chọn 74LS573 vì nguyên tắt họat động của nó không khác so với 74LS373, nhưng cấu tạo chân của IC này thuận lợi hơn cho việc kết nối với 89C51 . 74LS573 có nhiệm vụ chốt 8 bit địa chỉ thấp từ P0. P2.0÷P2.4 xuất các bit địa chỉ cao ra RAM. Bộ nhớ ngoài: Ta có thể dùng RAM hoặc kết hợp RAM&ROM nhưng phải đảm bảo là ≤ 64K vì 89C51 chỉ hổ trợ 64K bộ nhớ ngoài (nếu lớn hơn thì phần lờn hơn sẽ mất đi). Ở đây vì không cần dữ liệu lớn nên em chọn SRAM 6264 (8K). SRAM 6264 chân 20 (CS1) tích cực mức thấp được nối mass. Chân 26 (CS2) tích cực mức cao nên nối lên nguồn. Do đó RAM luôn ở trạng thái sẵn sàng cho đọc và ghi. P3.7 và P3.6 là 2 chân cài đặt trạng thái đọc và ghi dữ liệu được nối đến chân 22 và 27 trên SRAM. Họat động: Dữ liệu được truyền xuống từ PC qua mạch giao tiếp MAX232 đồng bộ mức logic giữa PC và 89C51. Dữ liệu được đọc vào RAM nhờ chân 10 (RxD), lúc này P0 đóng vai trò bus địa chỉ (8 bit) lúc này ta điều khiển chân ALE tích cực mức 1 để chốt dữ liệu trên 74LS573. Còn P2 làm bus địa chỉ của 8 bit cao. Ta điều khiển chân 16 (WR) tích cực mức 0 để ghi dữ liệu lên RAM. Khi muốn đọc dữ liệu từ RAM ta điều khiển chân EA, PSEN, RD tích cực mức 0. Khối Slave: Khối vi xử lý: Nhận tín hiệu từ master, giải mã địa chỉ nếu đúng là địa chỉ của mình thì tiến hành dịch dữ liệu ra cột và quét hàng, con khi giải mã địa chỉ mà không phải của mình thì nó truyền gói dữ liệu đó sang SLAVE 2. Khối công suất hàng: Muốn cho led sáng bình thường thì dòng qua led là 10mA÷20mA, ở đây ta có 5 ma trận led 8x8 vậy trên mỗi hàng có 40x2 led nên ta cần dòng 800mA÷1600mA. Trong mạch em chọn hai transistor C2383 và C828 ghép dalington để khuếch đại dòng. Ic2 Ib1 I c1= Ib2 Ic2 Điện trở cột: dòng qua led 10mA÷20mA thì led sáng bình thường. Vcc=5V ; Vled=2V; Ta chọn: Rcot=220Ω Khối công suất cột: Slave: Lưu đồ giải thuật: Master: Bắt đầu Bắt đầu Thiết lập tốc độ Thiết lập tốc độ Nhận data ? N Nhận data END Y Nhận data Chọn modul Địa chỉ ? Lưu vào RAM tạm N Y Kiểm tra màu Giải mã font Lưu vào RAM tạm Ghi vào RAM ngoại Xuất ra led Truyền xuống modul Quét led N Nhận data ? Y Thực nghiệm. Kết quả. Mạch nhận được dữ liệu từ máy tính truyền xuống. Hiện chữ chạy từ phải sang trái. Độ sáng đều, không nháp nháy. Hạn chế: chưa hiện được hình ảnh, cách hiện chữ chưa phong phú. Hướng phát triển. Từ modul thiết kế ta có thể ghép nhiều modul lại với nhau để tạo thành một bảng quang báo lớn. Từ đó ta có thể thiết kế thêm một menu để chọn các kỉ xảo như: cho chữ rơi từ trên xuống, trồi từ dưới lên, chạy tứ trái qua phải hay từ phải qua trái,hiển thị giờ, nhiệt dộ. TÀI LIỆU THAM KHẢO: 1. Họ Vi Điều Khiển 8051 của Tống Văn On, Hoàng Đức Hải; nhà xuất bản Lao động-Xã Hội. 2. Lập trình ghép nối máy tính trong Windows của Ngô Diên Tập; nhà xuất bản Khoa Học Kỹ Thuật. 3. Luận văn các khóa trước. PHỤ LỤC Phần mềm của Master: ORG 0000H LJMP PROGRAM ORG 0023H LJMP SERIAL_ISR ;------------------------------------------------------------------***--------------------------------------------------------------------- PROGRAM: DPL_N EQU 32H ;Thanh ghi luu tam gia tri DPL cua con tro mang noi dung ky tu DPH_N EQU 33H ;Thanh ghi luu tam gia tri DPH cua con tro mang noi dung ky tu DPL_SF EQU 34H ;Thanh ghi luu tam gia tri DPL cua con tro dung de luu tru font DPH_SF EQU 35H ;Thanh ghi luu tam gia tri DPH cua con tro dung de luu tru font DPL_DF EQU 36H ;Thanh ghi luu tam gia tri DPL cua con tro dung de hien thi font DPH_DF EQU 37H ;Thanh ghi luu tam gia tri DPH cua con tro dung de hien thi font DPL_F EQU 38H ;Thanh ghi luu tam gia tri DPL cua con tro dung de tra bang font DPH_F EQU 39H ;Thanh ghi luu tam gia tri DPH cua con tro dung de tra bang font DPL_T EQU 3AH ;Thanh ghi luu tam gia tri DPL cua con tro dung de tra bang dau DPH_T EQU 3BH ;Thanh ghi luu tam gia tri DPH cua con tro dung de tra bang dau INCHAR EQU 3CH ;Thanh ghi luu tam gia tri ky tu COUNTER EQU 3DH ENDBYTE EQU 3EH DPH_ADD EQU 70H DPL_ADD EQU 71H DPH_COL EQU 72H DPL_COL EQU 73H ;Luu tam dia chi thay đoi mau COLOUR_1 EQU 74H COLOUR_2 EQU 75H COLOUR_3 EQU 76H COLOUR_4 EQU 77H COLOUR_5 EQU 78H ;LUU MAU HIEN THI 5 DPH_H EQU 79H DPL_H EQU 7AH DPTR_RAM EQU 2000H ;Dia chi luu du lieu Ram DPTR_N EQU 2035H ;2035H - 2163H Dia chi luu du lieu bang quang bao (302 Byte = @ + 300 Byte du lieu + #) DPTR_SF EQU 21A0H ;2164H - 3EB0H Dia chi luu du lieu font chu quang bao (7500 Byte=300 Byte*25) ;------------------------------------------------------------------***--------------------------------------------------------------------- START_PRO: SETB 00H MOV TMOD,#21H ;Timer1 auto reload, Timer0 couter 16 bit MOV IE,#10010000B ;Ngat Port noi tiep MOV SCON,#01010000B CLR EA MOV TL1,#00H MOV TH1,# -6 ;Count 9600 baud MOV A,87H SETB ACC.7 MOV 87H,A ;Tang toc do baud gap doi SETB TR1 MOV P1,#0FFH MOV ENDBYTE,#00H MOV DPTR,#DPTR_SF MOV DPL_DF,DPL MOV DPH_DF,DPH MOV P1,#0FFH SETB EA ;------------------------------------------------------------------***--------------------------------------------------------------------- MAIN: CLR EA CLR RI ;Thu data tu may tinh MOV A,SBUF CJNE A,#55H,MAIN_TO_MODUL ;Kiem tra co phai 55H khong CLR TI MOV SBUF,#55H JNB TI,$ CLR TI JNB RI,$ CLR RI MOV A,SBUF CJNE A,#0AAH,MAIN_TO_MODUL CLR TI MOV SBUF,#0AAH JNB TI,$ CLR TI LJMP PC_TO_MAIN MAIN_TO_MODUL: MOV TH1,#-6 ;Count 9600 baud MOV A,87H SETB ACC.7 MOV 87H,A ;Tang toc do baud gap doi CLR EA LCALL TRANS_MODULN MOV DPL,DPL_DF MOV DPH,DPH_DF ;nap gia tri cu INC DPTR INC DPTR ;tang 2 byte MOV DPL_DF,DPL MOV DPH_DF,DPH ;luu lai MOV A,ENDBYTE CJNE A,#0F0H,MAIN MOV DPTR,#DPTR_SF ;gia tri ban dau MOV DPL_DF,DPL MOV DPH_DF,DPH ;luu tam LJMP MAIN PC_TO_MAIN: SETB EA LCALL DELAY1S LCALL DELAY1S LCALL DELAY1S LCALL DELAY1S CLR EA MOV SBUF,#00H MOV DPTR,#DPTR_SF MOV DPL_DF,DPL MOV DPH_DF,DPH LJMP MAIN ;------------------------------------------------------------------***--------------------------------------------------------------------- TRANS_MODULN: CLR EA ;cam ngat chuyen dat den cac modul MOV DPL,DPL_DF ;DUA GIA TRI DIA CHI VAO DPTR ; MOV DPH,DPH_DF ;------------------------------------------------------------------***--------------------------------------------------------------------- MOV COUNTER,#39 ;DEM 39 LAN LOOP_TRANS_MODULN_1: INC DPTR INC DPTR ;TANG 2 BYTE DJNZ COUNTER,LOOP_TRANS_MODULN_1 ;DEM39 LAN INC DPTR ;TANG DEN DIA CHI CUA MODUL 1 NOI LAY DU LIEU MOV DPH_H,DPH MOV DPL_H,DPL ;CAT TAM MOVX A,@DPTR ;LAY DU LIEU DE KIEM TRA BYTE MAU THU NHAT CJNE A,#0F5H,CONT_1 ;NEU KHONG PHAI LA 55H THI QUA LUON INC DPTR ;TANG DEN DIA CHI KE TIEP MOVX A,@DPTR ;NEU CA HAI BYTE DEU LA 55H THI MOV COLOUR_1,A ;LUU LAI CHO COLOUR_5 INC DPTR ;TANG DE CHON DIA CHI KE CLR 00H ;BAO CHEN GIA TRI 0 CONT_1: MOV DPH,DPH_H MOV DPL,DPL_H ;LAY LAI DIA CHI HIEN THI MOV SBUF,#1DH ;DIA CHI JNB TI,$ CLR TI ;CHO PHAT XONG MOV SBUF,COLOUR_1 ;PHAT BYTE MAU JNB TI,$ CLR TI MOVX A,@DPTR ;LAY DU LIEU VA PHAT DI JB 00H,MAU1_1 MOV A,#0H MAU1_1: CPL A MOV SBUF,A JNB TI,$ CLR TI ;PHAT DU LIEU INC DPTR ;TANG DEN DIA CHI KE MOV SBUF,#17H CLR TI ;CHO PHAT XONG MOV SBUF,COLOUR_1 ;PHAT BYTE MAU JNB TI,$ CLR TI MOVX A,@DPTR ;LAY DU LIEU VA PHAT DI JB 00H,MAU1_2 MOV A,#0H MAU1_2: CPL A MOV SBUF,A JNB TI,$ CLR TI ;PHAT DU LIEU SETB 00H ;------------------------------------------------------------------***--------------------------------------------------------------------- MOV COUNTER,#39 LOOP_TRANS_MODULN_2: INC DPTR INC DPTR ;TANG 3 BYTE DJNZ COUNTER,LOOP_TRANS_MODULN_2 ;DEM39 LAN INC DPTR ;TANG DEN DIA CHI CUA MODUL 1 MOV DPH_H,DPH MOV DPL_H,DPL ;CAT TAM MOVX A,@DPTR ;LAY DU LIEU DE KIEM TRA BYTE MAU THU NHAT CJNE A,#0F5H,CONT_2 ;NEU KHONG PHAI LA 55H THI QUA LUON INC DPTR ;TANG DEN DIA CHI KE TIEP MOVX A,@DPTR ;NEU CA HAI BYTE DEU LA 55H THI MOV COLOUR_2,A ;LUU LAI CHO COLOUR_5 INC DPTR ;TANG DE CHON DIA CHI KE CLR 00H CONT_2: MOV DPH,DPH_H MOV DPL,DPL_H ;LAY LAI DIA CHI MOV SBUF,#52H ;DIA CHI JNB TI,$ CLR TI ;CHO PHAT XONG MOV SBUF,COLOUR_2 ;PHAT BYTE MAU JNB TI,$ CLR TI MOVX A,@DPTR ;LAY DU LIEU VA PHAT DI JB 00H,MAU2_1 MOV A,#0 MAU2_1: CPL A MOV SBUF,A JNB TI,$ CLR TI ;PHAT DU LIEU INC DPTR ;TANG DEN DIA CHI KE MOV SBUF,#53H ;DIA CHI JNB TI,$ CLR TI ;CHO PHAT XONG MOV SBUF,COLOUR_2 ;PHAT BYTE MAU JNB TI,$ CLR TI MOVX A,@DPTR ;LAY DU LIEU VA PHAT DI JB 00H,MAU2_2 MOV A,#0 MAU2_2: CPL A MOV SBUF,A JNB TI,$ CLR TI ;PHAT DU LIEU SETB 00H ;------------------------------------------------------------------***------------------------------------------------------------- INC DPTR MOVX A,@DPTR ;DOC VE TU RAM MOV ENDBYTE,A ;DUA GIA TRI VAO ENDBYTE MOV SBUF,#5FH ;MA DONG BO JNB TI,$ ;CHO PHAT XONG CLR TI LCALL DELAY20mS ;DELAY 20MS SETB EA RET ;------------------------------------------------------------------***--------------------------------------------------------------------- SERIAL_ISR: CLR EA CLR RI MOV A,SBUF CHECK_R: CJNE A,#'$',CHECK_N MOV DPTR,#DPTR_R MOVX @DPTR,A INC DPTR LOOP_CHECK_R: JNB RI,$ CLR RI MOV A,SBUF MOVX @DPTR,A ;GHI VAO BO NHO INC DPTR CJNE A,#'#',LOOP_CHECK_R LJMP EXIT_SERIAL_ISR CHECK_N: CJNE A,#'@',EXIT_SERIAL_ISR MOV DPTR,#DPTR_N MOVX @DPTR,A INC DPTR LOOP_CHECK_N: JNB RI,$ CLR RI MOV A,SBUF MOVX @DPTR,A INC DPTR CJNE A,#'#',LOOP_CHECK_N LCALL PROCESS_FONT EXIT_SERIAL_ISR: SETB EA RETI ;------------------------------------------------------------------***--------------------------------------------------------------------- PROCESS_FONT: MOV DPTR,#DPTR_N MOV DPL_N,DPL MOV DPH_N,DPH MOVX A,@DPTR CJNE A,#'@',EXIT_PROCESS_FONT MOV DPTR,#DPTR_SF ;DIA CHI BAT DAU DU LIEU2164 MOV DPL_SF,DPL MOV DPH_SF,DPH MOVX @DPTR,A ;GHI VAO RAM NGOAI LCALL LOAD_SPACE ;LOAD 240 BYTE TRONG BAN DAU LOAD_CHAR: MOV DPL,DPL_N MOV DPH,DPH_N INC DPTR MOV DPL_N,DPL MOV DPH_N,DPH ;LOAD KI TU KE TIEP MOVX A,@DPTR MOV INCHAR,A ;DUA MA KI TU VAO INCHAR LCALL COLOUR ;KIEM TRA MAU TRUOC KHI LOAD FONT CJNE A,#'#',CONT_LOAD_CHAR ;KIEM TRA XEM PHAI # HAY KHONG LCALL LOAD_SPACE ;TAO KHOANG TRONG MOV DPL,DPL_SF MOV DPH,DPH_SF INC DPTR MOV DPL_SF,DPL MOV DPH_SF,DPH MOV A,#0F0H MOVX @DPTR,A LJMP EXIT_PROCESS_FONT CONT_LOAD_CHAR: LCALL CHECK_VOCAL MOV DPTR,#FONT_A MOV DPL_F,DPL MOV DPH_F,DPH CHECK_FONT: MOV A,#00H MOVC A,@A+DPTR CJNE A,INCHAR,NOT_EQUAL_FONT LCALL LOAD_FONT ;SAU KHI LOAD FONT XONG TIEP TUC LOAD KI TU LJMP LOAD_CHAR ;QUAY TRO LAI LOAD KI TU KE TIEP NOT_EQUAL_FONT: MOV DPL,DPL_F MOV DPH,DPH_F INC DPTR MOV DPL_F,DPL MOV DPH_F,DPH MOV A,#00H MOVC A,@A+DPTR CJNE A,#0AAH,NOT_EQUAL_FONT MOV DPL,DPL_F MOV DPH,DPH_F INC DPTR MOV DPL_F,DPL MOV DPH_F,DPH LJMP CHECK_FONT EXIT_PROCESS_FONT: RET COLOUR: CJNE A,#'<',RED ;NHAY SANG MAU DO MOV DPL,DPL_SF MOV DPH,DPH_SF INC DPTR ;NAP DIA CHI SE THAY DOI MOV A,#0F5H ;DUNG DE QUAN LY MAU MOVX @DPTR,A INC DPTR ;NAP DIA CHI SE THAY DOI MOV A,#'X' MOVX @DPTR,A ;MAU XANH MOV DPL_SF,DPL MOV DPH_SF,DPH ;LUU LAI CHO LAN SAU LJMP EXIT_C RED: CJNE A,#'>',VANG MOV DPL,DPL_SF MOV DPH,DPH_SF INC DPTR ;NAP DIA CHI SE THAY DOI MOV A,#0F5H MOVX @DPTR,A INC DPTR ;NAP DIA CHI SE THAY DOI MOV A,#'D' MOVX @DPTR,A ;MAU DO MOV DPL_SF,DPL MOV DPH_SF,DPH ;LUU LAI CHO LAN SAU LJMP EXIT_C VANG: CJNE A,#'^',EXIT_COLOUR MOV DPL,DPL_SF MOV DPH,DPH_SF INC DPTR ;NAP DIA CHI SE THAY DOI MOV A,#0F5H MOVX @DPTR,A INC DPTR ;NAP DIA CHI SE THAY DOI MOV A,#'V' MOVX @DPTR,A ;MAU VANG MOV DPL_SF,DPL MOV DPH_SF,DPH ;LUU LAI CHO LAN SAU LJMP EXIT_C EXIT_COLOUR: RET EXIT_C: MOV DPL,DPL_N ;LOAD KI TU KE TIEP MOV DPH,DPH_N INC DPTR MOV DPL_N,DPL MOV DPH_N,DPH ;LOAD KI TU KE TIEP MOVX A,@DPTR ;LAY MA KI TU RA MOV INCHAR,A ;DUA VAO INCHAR VA THOAT RET ;------------------------------------------------------------------***--------------------------------------------------------------------- CHECK_VOCAL: MOV A,INCHAR CHECK_a: CJNE A,#'a',CHECK_e MOV DPTR,#TABLE_a MOV DPL_T,DPL MOV DPH_T,DPH LCALL CHECK_BYTE_SIGN LJMP EXIT_CHECK_VOCAL CHECK_e: CJNE A,#'e',CHECK_o MOV DPTR,#TABLE_e MOV DPL_T,DPL MOV DPH_T,DPH LCALL CHECK_BYTE_SIGN LJMP EXIT_CHECK_VOCAL CHECK_o: CJNE A,#'o',CHECK_o7 MOV DPTR,#TABLE_o MOV DPL_T,DPL MOV DPH_T,DPH LCALL CHECK_BYTE_SIGN LJMP EXIT_CHECK_VOCAL CHECK_o7: CJNE A,#0F4H,CHECK_u MOV DPTR,#TABLE_o7 MOV DPL_T,DPL MOV DPH_T,DPH LCALL CHECK_BYTE_SIGN LJMP EXIT_CHECK_VOCAL CHECK_u: CJNE A,#'u',CHECK_u7 MOV DPTR,#TABLE_u MOV DPL_T,DPL MOV DPH_T,DPH LCALL CHECK_BYTE_SIGN LJMP EXIT_CHECK_VOCAL CHECK_u7: CJNE A,#0F6H,CHECK_y MOV DPTR,#TABLE_u7 MOV DPL_T,DPL MOV DPH_T,DPH LCALL CHECK_BYTE_SIGN LJMP EXIT_CHECK_VOCAL CHECK_y: CJNE A,#'y',EXIT_CHECK_VOCAL MOV DPTR,#TABLE_y MOV DPL_T,DPL MOV DPH_T,DPH LCALL CHECK_BYTE_SIGN EXIT_CHECK_VOCAL: RET ;------------------------------------------------------------------***--------------------------------------------------------------------- CHECK_BYTE_SIGN: MOV DPL,DPL_N MOV DPH,DPH_N INC DPTR MOVX A,@DPTR PUSH ACC MOV B,#0E0H DIV AB CJNE A,#00H,CONT_CHECK_BYTE_SIGN POP ACC MOV A,INCHAR LJMP EXIT_CHECK_BYTE_SIGN CONT_CHECK_BYTE_SIGN: POP ACC CLR C SUBB A,#0E0H MOV DPL,DPL_T MOV DPH,DPH_T MOVC A,@A+DPTR MOV INCHAR,A MOV DPL,DPL_N MOV DPH,DPH_N INC DPTR MOV DPL_N,DPL MOV DPH_N,DPH EXIT_CHECK_BYTE_SIGN: RET ;-------------------------------------------------------------------***-------------------------------------------------------------------- LOAD_SPACE: MOV R0,#12 ;LOAD 120 BYTE TRONG DE KHI HIEN THI BAN DAU LOOP_LOAD_SPACE: MOV DPTR,#FONT_SPACE MOV DPL_F,DPL MOV DPH_F,DPH LCALL LOAD_FONT DJNZ R0,LOOP_LOAD_SPACE RET ;------------------------------------------------------------------***--------------------------------------------------------------------- LOAD_FONT: MOV DPL,DPL_F MOV DPH,DPH_F INC DPTR MOV DPL_F,DPL MOV DPH_F,DPH MOV A,#00H MOVC A,@A+DPTR CJNE A,#0AAH,CONT_LOAD_FONT LJMP EXIT_LOAD_FONT CONT_LOAD_FONT: MOV DPL,DPL_SF MOV DPH,DPH_SF INC DPTR MOV DPL_SF,DPL MOV DPH_SF,DPH MOVX @DPTR,A ;GHI VAO RAM LJMP LOAD_FONT EXIT_LOAD_FONT: RET ;------------------------------------------------------------------***--------------------------------------------------------------------- DELAY5uS: MOV TL0,#0FBH MOV TH0,#0FBH SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY4mS: MOV TL0,#060H MOV TH0,#0F0H SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY20mS: MOV TL0,#0F0H MOV TH0,#0D8H SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY1S: MOV R7,#250 LOOP_DELAY1S: LCALL DELAY4mS DJNZ R7,LOOP_DELAY1S RET ;------------------------------------------------------------------***--------------------------------------------------------------------- TABLE_NUMBER: DB '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' TABLE_a: DB 87H,86H,85H,89H,8AH,88H,00H,00H,8DH,8CH,8BH,90H,00H,00H,00H,84H DB 00H,00H,00H,00H,00H,83H,00H,00H,81H,80H,8EH,82H,8FH,00H,00H,00H TABLE_e: DB 98H,97H,96H,9AH,9BH,99H,00H,00H,00H,00H,00H,00H,00H,00H,00H,95H DB 00H,00H,00H,00H,00H,94H,00H,00H,92H,91H,00H,93H,00H,00H,00H,00H TABLE_o: DB 0A3H,0A2H,0A1H,0A5H,0A6H,0A4H,00H,00H,00H,00H,00H,00H,00H,00H,00H,0A0H DB 00H,00H,00H,00H,00H,9FH,00H,00H,9DH,9CH,00H,9EH,00H,00H,00H,00H TABLE_o7: DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,0ABH DB 00H,00H,00H,00H,00H,0AAH,00H,00H,0A8H,0A7H,00H,0A9H,00H,00H,00H,00H TABLE_u: DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,0B0H DB 00H,00H,00H,00H,00H,0AFH,00H,00H,0ADH,0ACH,00H,0AEH,00H,00H,00H,00H TABLE_u7: DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,0B5H DB 00H,00H,00H,00H,00H,0B4H,00H,00H,0B2H,0B1H,00H,0B3H,00H,00H,00H,00H TABLE_y: DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H DB 00H,00H,00H,00H,00H,0B9H,00H,00H,0B7H,0B6H,00H,0B8H,00H,00H,00H,00H FONT_As:DB '?',20H,00H, 30H,30H, 3CH,18H, 27H,0CH, 03H,0C6H, 02H,73H, 02H,1BH, 02H,78H, 03H,0E0H, 2FH,80H, 3EH,00H, 30H,00H, 20H,00H,0AAH FONT_A: DB 'A',20H,00H,30H,00H,38H,00H,27H,00H,03H,0C0H,02H,30H,02H,1EH,02H,7CH,03H,0E0H,2FH,80H,3EH,00H,30H,00H,20H,00H,00H,00H,0AAH FONT_B: DB 'B',20H,02H,20H,02H,3FH,0FEH,3FH,0FEH,20H,82H,20H,82H,20H,82H,20H,0C6H,31H,7CH,1FH,38H,0EH,00H,00H,00H,0AAH FONT_C: DB 'C',03H,0E0H,0FH,0F8H,1CH,1CH,30H,04H,20H,02H,20H,02H,20H,02H,20H,02H,20H,06H,10H,0CH,08H,1EH,00H,00H,0AAH FONT_D: DB 'D',20H,02H,20H,02H,3FH,0FEH,3FH,0FEH,20H,02H,20H,02H,20H,02H,20H,02H,30H,06H,10H,0CH,1CH,1CH,0FH,0F8H,03H,0E0H,00H,00H,0AAH FONT_D9: DB 0D9H,20H,02H,20H,82H,3FH,0FEH,3FH,0FEH,20H,82H,20H,82H,20H,82H,20H,82H,30H,06H,10H,0CH,1CH,1CH,0FH,0F8H,03H,0E0H,00H,00H,0AAH FONT_E: DB 'E',20H,00H,20H,02H,3FH,0FEH,3FH,0FEH,20H,82H,20H,82H,20H,82H,20H,82H,21H,0C2H,20H,06H,30H,00H,00H,00H,0AAH FONT_F: DB 'F',20H,00H,20H,02H,3FH,0FEH,3FH,0FEH,20H,82H,20H,82H,00H,82H,00H,82H,03H,0E2H,00H,06H,00H,00H,0AAH FONT_G: DB 'G',03H,0E0H,0FH,0F8H,1CH,1CH,10H,04H,30H,06H,20H,02H,20H,02H,20H,02H,20H,82H,20H,84H,1FH,8CH,1FH,80H,00H,80H,00H,00H,0AAH FONT_H: DB 'H',20H,02H,20H,02H,3FH,0FEH,3FH,0FEH,20H,82H,20H,82H,00H,80H,20H,82H,20H,82H,3FH,0FEH,3FH,0FEH,20H,02H,20H,02H,00H,00H,0AAH FONT_I: DB 'I',20H,02H,20H,02H,3FH,0FEH,3FH,0FEH,20H,02H,20H,02H,00H,00H,0AAH FONT_J: DB 'J',30H,00H,30H,02H,20H,02H,3FH,0FEH,1FH,0FEH,00H,02H,00H,02H,00H,00H,0AAH FONT_K: DB 'K',20H,02H,20H,02H,3FH,0FEH,3FH,0FEH,20H,82H,23H,0C2H,03H,20H,06H,10H,2CH,0AH,38H,06H,30H,02H,20H,02H,20H,00H,00H,00H,0AAH FONT_L: DB 'L',20H,02H,20H,02H,3FH,0FEH,3FH,0FEH,20H,02H,20H,02H,20H,00H,20H,00H,30H,00H,10H,00H,08H,00H,00H,00H,0AAH FONT_M: DB 'M',20H,00H,20H,02H,3FH,0FEH,20H,1EH,00H,7CH,01H,0F0H,0FH,80H,3EH,00H,0CH,00H,03H DB 00H,00H,0C0H,00H,30H,20H,0CH,3FH,0FEH,3FH,0FEH,20H,02H,20H,02H,00H,00H,0AAH FONT_N: DB 'N',20H,02H,20H,06H,3FH,0FEH,20H,0EH,00H,1CH,00H,30H,00H,0E0H,01H,0C0H,03H,00H,0EH,02H,3FH,0FEH,00H,02H,00H,00H,0AAH FONT_O: DB 'O',03H,0E0H,0FH,0F8H,1CH,1CH,10H,04H,20H,02H,20H,02H,20H,02H,20H,02H,10H,04H,1CH,1CH,0FH,0F8H,03H,0E0H,00H,00H,0AAH FONT_P: DB 'P',20H,00H,20H,02H,3FH,0FEH,3FH,0FEH,21H,02H,21H,02H,01H,02H,00H,86H,00H,0FCH,00H,78H,00H,00H,0AAH FONT_Q: DB 'Q',03H,0E0H,0FH,0F8H,1CH,1CH,10H,04H,20H,02H,20H,02H,60H,02H,78H,02H,70H,04H,7CH,1CH,4FH,0F8H,43H,0E0H,40H,00H,00H,00H,0AAH FONT_R: DB 'R',20H,00H,20H,02H,3FH,0FEH,3FH,0FEH,20H,82H,21H,82H,03H,82H,0EH,0C6H,1CH,7CH,38H,38H,20H,00H,20H,00H,00H,00H,0AAH FONT_S: DB 'S',1CH,00H,10H,3CH,30H,7EH,20H,62H,20H,0C2H,21H,82H,33H,84H,1FH,0EH,0EH,00H,00H,00H,0AAH FONT_T: DB 'T',00H,0EH,00H,02H,20H,02H,20H,02H,3FH,0FEH,3FH,0FEH,20H,02H,20H,02H,00H,02H,00H,02H,00H,0EH,00H,00H,0AAH FONT_U: DB 'U',00H,02H,00H,02H,0FH,0FEH,1FH,0FEH,30H,02H,20H,02H,20H,00H,20H,00H,20H,02H,10H,02H,0FH,0FEH,00H,02H,00H,00H,0AAH FONT_V: DB 'V',00H,02H,00H,02H,00H,0EH,00H,3EH,01H,0F2H,07H,0C0H,1FH,00H,3FH,00H,07H,0C0H,01H,0FAH,00H,3AH,00H,0EH,00H,02H,00H,00H,0AAH FONT_W: DB 'W',00H,02H,00H,06H,00H,3EH,00H,0FAH,07H,0C2H,3FH,00H,0CH,02H,03H,86H,00H,7EH,00H,0FAH,03H DB 0E2H,1FH,00H,3CH,00H,03H,80H,00H,0E2H,00H,1EH,00H,02H,00H,02H,00H,00H,0AAH FONT_X: DB 'X',20H,02H,20H,02H,30H,06H,28H,1EH,06H,3EH,03H,72H,01H,0C0H,23H,0C0H,2FH,30H,3CH,1AH,38H,0EH,30H,02H,20H,02H,00H,00H,0AAH FONT_Y: DB 'Y',00H,02H,00H,06H,00H,0EH,00H,3EH,20H,7AH,21H,0E2H,3FH,0C0H,3FH,80H,20H,60H,20H,12H,00H,0EH,00H,06H,00H,02H,00H,00H,0AAH FONT_Z: DB 'Z',20H,00H,30H,06H,3CH,02H,2EH,02H,27H,02H,23H,0C2H,20H,0E2H,20H,7AH,20H,1EH,20H,0EH,30H,06H,00H,00H,0AAH FONT_SPACE: DB ' ',00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,0AAH FONT_a0: DB 'a',18H,0C0H,3CH,0E0H,22H,20H,22H,20H,3FH,0E0H,3FH,0C0H,20H,00H,00H,00H,0AAH FONT_a1: DB 128,18H,0C0H,3CH,0E0H,22H,20H,22H,28H,3FH,0E4H,3FH,0C6H,20H,02H,00H,00H,0AAH FONT_a2: DB 129,18H,0C0H,3CH,0E0H,22H,22H,22H,26H,3FH,0E4H,3FH,0C8H,20H,00H,00H,00H,0AAH FONT_a3: DB 130,18H,0C0H,3CH,0E0H,22H,23H,22H,2BH,3FH,0E7H,3FH,0C3H,20H,00H,00H,00H,0AAH FONT_a4: DB 131,18H,0C0H,3CH,0ECH,22H,22H,22H,26H,3FH,0ECH,3FH,0C8H,20H,04H,00H,00H,0AAH FONT_a5: DB 132,18H,0C0H,3CH,0E0H,0A2H,20H,0A2H,20H,3FH,0E0H,3FH,0C0H,20H,00H,00H,00H,0AAH FONT_a6: DB 133,18H,0C8H,3CH,0E4H,22H,26H,22H,22H,3FH,0E4H,3FH,0C8H,20H,00H,00H,00H,0AAH FONT_a61: DB 134,18H,0C8H,3CH,0E4H,22H,26H,22H,22H,3FH,0E4H,3FH,0C8H,20H,04H,00H,02H,00H,01H,00H,00H,0AAH FONT_a62: DB 135,18H,0C8H,3CH,0E4H,22H,26H,22H,22H,3FH,0E4H,3FH,0C9H,20H,02H,00H,04H,00H,00H,0AAH FONT_a63: DB 136,18H,0C8H,3CH,0E4H,22H,26H,22H,22H,3FH,0E4H,3FH,0C8H,20H,03H,00H,09H,00H,07H,00H,02H,00H,00H,0AAH FONT_a64: DB 137,18H,0C8H,3CH,0E4H,22H,26H,22H,22H,3FH,0E4H,3FH,0C8H,20H,02H,00H,01H,00H,01H,00H,02H,00H,02H,00H,01H,00H,00H,0AAH FONT_a65: DB 138,18H,0C8H,3CH,0E4H,0A2H,26H,0A2H,22H,3FH,0E4H,3FH,0C8H,20H,00H,00H,00H,0AAH FONT_a8: DB 139,18H,0C2H,3CH,0E4H,22H,2CH,22H,28H,3FH,0E4H,3FH,0C2H,20H,00H,00H,00H,0AAH FONT_a81: DB 140,18H,0C2H,3CH,0E4H,22H,2CH,22H,28H,3FH,0E4H,3FH,0C2H,20H,00H,00H,04H,00H,02H,00H,01H,00H,00H,0AAH FONT_a82: DB 141,00H,01H,00H,02H,00H,04H,18H,0C2H,3CH,0E4H,22H,2CH,22H,28H,3FH,0E4H,3FH,0C2H,20H,00H,00H,00H,0AAH FONT_a83: DB 142,18H,0C2H,3CH,0E4H,22H,2CH,22H,28H,3FH,0E4H,3FH,0C2H,20H,00H,00H,03H,00H,09H,00H,07H,00H,02H,00H,00H,0AAH FONT_a84: DB 143,18H,0C2H,3CH,0E4H,22H,2CH,22H,28H,3FH,0E4H,3FH,0C2H,20H,01H,00H,01H,00H,02H,00H,02H,00H,01H,00H,00H,0AAH FONT_a85: DB 144,18H,0C2H,3CH,0E4H,0A2H,2CH,0A2H,28H,3FH,0E4H,3FH,0C2H,20H,00H,00H,00H,0AAH FONT_b0: DB 'b',1FH,0FEH,3FH,0FEH,20H,40H,20H,20H,20H,20H,10H,60H,1FH,0C0H,07H,80H,00H,00H,0AAH FONT_c0: DB 'c',0FH,80H,1FH,0C0H,30H,60H,20H,20H,20H,20H,10H,0E0H,08H,00H,00H,00H,0AAH FONT_d0: DB 'd',0FH,80H,1FH,0C0H,30H,60H,20H,20H,20H,20H,20H,40H,3FH,0FCH,3FH,0FEH,00H,00H,0AAH FONT_d09: DB 241,0FH,80H,1FH,0C0H,30H,60H,20H,20H,20H,20H,20H,48H,3FH,0FCH,3FH,0FEH,00H,08H,00H,00H,0AAH FONT_e0: DB 'e',0FH,80H,1FH,0C0H,31H,60H,21H,20H,21H,20H,21H,60H,11H,0C0H,09H,80H,00H,00H,0AAH FONT_e1: DB 145,0FH,80H,1FH,0C0H,31H,60H,21H,28H,21H,24H,21H,66H,11H,0C2H,09H,80H,00H,00H,0AAH FONT_e2: DB 146,0FH,80H,1FH,0C0H,31H,60H,21H,22H,21H,26H,21H,64H,11H,0C8H,09H,80H,00H,00H,0AAH FONT_e3: DB 147,0FH,80H,1FH,0C0H,31H,60H,21H,20H,21H,23H,21H,6BH,11H,0C7H,09H,83H,00H,00H,0AAH FONT_e4: DB 148,0FH,80H,1FH,0C0H,31H,6CH,21H,22H,21H,26H,21H,6CH,11H,0C8H,09H,84H,00H,00H,0AAH FONT_e5: DB 149,0FH,80H,1FH,0C0H,31H,60H,0A1H,20H,0A1H,20H,21H,60H,11H,0C0H,09H,80H,00H,00H,0AAH FONT_e6: DB 150,0FH,80H,1FH,0C8H,31H,64H,21H,26H,21H,22H,21H,64H,11H,0C8H,09H,80H,00H,00H,0AAH FONT_e61: DB 151,0FH,80H,1FH,0C8H,31H,64H,21H,26H,21H,22H,21H,64H,11H,0C8H,09H,84H,00H,02H,00H,01H,00H,00H,0AAH FONT_e62: DB 152,0FH,80H,1FH,0C8H,31H,64H,21H,26H,21H,22H,21H,64H,11H,0C9H,09H,82H,00H,04H,00H,00H,0AAH FONT_e63: DB 153,0FH,80H,1FH,0C8H,31H,64H,21H,26H,21H,22H,21H,64H,11H,0C8H,09H,83H,00H,09H,00H,07H,00H,02H,00H,00H,0AAH FONT_e64: DB 154,0FH,80H,1FH,0C8H,31H,64H,21H,26H,21H,22H,21H,64H,11H,0C8H,09H,82H,00H,01H,00H,01H,00H,02H,00H,02H,00H,01H,00H,00H,0AAH FONT_e65: DB 155,0FH,80H,1FH,0C8H,31H,64H,0A1H,26H,0A1H,22H,21H,64H,11H,0C8H,09H,80H,00H,00H,0AAH FONT_f0: DB 'f',20H,20H,20H,20H,3FH,0FCH,3FH,0FEH,20H,22H,20H,22H,00H,06H,00H,00H,0AAH FONT_g0: DB 'g',60H,00H,0FEH,0F0H,99H,0F8H,8AH,08H,8AH,18H,8BH,0F8H,48H,0F8H,30H,08H,00H,00H,0AAH FONT_h0: DB 'h',3FH,0FEH,3FH,0FEH,20H,40H,00H,20H,20H,20H,3FH,0E0H,3FH,0C0H,20H,00H,00H,00H,0AAH FONT_i0: DB 'i',20H,00H,20H,40H,3FH,0C6H,3FH,0E6H,20H,00H,00H,00H,0AAH FONT_i1: DB 237,20H,00H,20H,40H,3FH,0C8H,3FH,0E4H,20H,06H,00H,00H,0AAH FONT_i2: DB 236,00H,06H,20H,04H,20H,48H,3FH,0C0H,3FH,0F0H,20H,00H,00H,00H,0AAH FONT_i3: DB 230,20H,00H,20H,43H,3FH,0D3H,3FH,0EBH,20H,06H,00H,00H,0AAH FONT_i4: DB 243,20H,00H,20H,4CH,3FH,0C2H,3FH,0E6H,20H,0CH,00H,08H,00H,04H,00H,00H,0AAH FONT_i5: DB 242,20H,00H,20H,40H,0BFH,0C6H,0BFH,0E6H,20H,00H,00H,00H,0AAH FONT_j0: DB 'j',0C0H,00H,0C0H,00H,80H,10H,0FFH,0F3H,3FH,0FBH,00H,00H,0AAH FONT_k0: DB 'k',3FH,0FEH,3FH,0FEH,23H,00H,07H,80H,3EH,0A0H,3CH,60H,30H,20H,20H,20H,00H,00H,0AAH FONT_l0: DB 'l',20H,00H,3FH,0FEH,3FH,0FEH,20H,00H,00H,00H,0AAH FONT_m0: DB 'm',20H,00H,3FH,0E0H,3FH,0C0H,20H,40H,00H,20H,20H,20H,3FH,0E0H,3FH,0C0H,20H,40H,00H,20H,20H,20H,3FH,0E0H,3FH,0C0H,20H,00H,00H,00H,0AAH FONT_n0: DB 'n',20H,00H,3FH,0E0H,3FH,0E0H,20H,40H,00H,20H,20H,20H,3FH,0E0H,3FH,0C0H,20H,00H,00H,00H,0AAH FONT_o0: DB 'o',0FH,80H,1FH,0C0H,30H,60H,20H,20H,20H,20H,30H,60H,1FH,0C0H,0FH,80H,00H,00H,0AAH FONT_o1: DB 156,0FH,80H,1FH,0C0H,30H,60H,20H,20H,20H,28H,30H,64H,1FH,0C6H,0FH,82H,00H,00H,0AAH FONT_o2: DB 157,0FH,80H,1FH,0C0H,30H,60H,20H,22H,20H,26H,30H,64H,1FH,0C8H,0FH,80H,00H,00H,0AAH FONT_o3: DB 158,0FH,80H,1FH,0C0H,30H,63H,20H,2BH,20H,27H,30H,63H,1FH,0C0H,0FH,80H,00H,00H,0AAH FONT_o4: DB 159,0FH,80H,1FH,0C0H,30H,6CH,20H,22H,20H,26H,30H,6CH,1FH,0C8H,0FH,84H,00H,00H,0AAH FONT_o5: DB 160,0FH,80H,1FH,0C0H,30H,60H,0A0H,20H,0A0H,20H,30H,60H,1FH,0C0H,0FH,80H,00H,00H,0AAH FONT_o6: DB 161,0FH,80H,1FH,0C8H,30H,64H,20H,26H,20H,22H,30H,64H,1FH,0C8H,0FH,80H,00H,00H,0AAH FONT_o61: DB 162,0FH,80H,1FH,0C8H,30H,64H,20H,26H,20H,22H,30H,64H,1FH,0C8H,0FH,84H,00H,02H,00H,01H,00H,00H,0AAH FONT_o62: DB 163,0FH,80H,1FH,0C8H,30H,64H,20H,26H,20H,22H,30H,64H,1FH,0C9H,0FH,82H,00H,04H,00H,00H,0AAH FONT_o63: DB 164,0FH,80H,1FH,0C8H,30H,64H,20H,26H,20H,22H,30H,64H,1FH,0C8H,0FH,83H,00H,09H,00H,07H,00H,02H,00H,00H,0AAH FONT_o64: DB 165,0FH,80H,1FH,0C8H,30H,64H,20H,26H,20H,22H,30H,64H,1FH,0C8H,0FH,82H,00H,01H,00H,01H,00H,02H,00H,02H,00H,01H,00H,00H,0AAH FONT_o65: DB 166,0FH,80H,1FH,0C8H,30H,64H,0A0H,26H,0A0H,22H,30H,64H,1FH,0C8H,0FH,80H,00H,00H,0AAH FONT_o7: DB 31,0FH,80H,1FH,0C0H,30H,60H,20H,20H,20H,20H,30H,60H,1FH,0D8H,0FH,0B8H,00H,18H,00H,00H,0AAH FONT_o71: DB 167,0FH,80H,1FH,0C0H,30H,60H,20H,24H,20H,22H,30H,63H,1FH,0D9H,0FH,0B8H,00H,18H,00H,00H,0AAH FONT_o72: DB 168,0FH,80H,1FH,0C1H,30H,63H,20H,22H,20H,24H,30H,60H,1FH,0D8H,0FH,0B8H,00H,18H,00H,00H,0AAH FONT_o73: DB 169,0FH,80H,1FH,0C0H,30H,63H,20H,2BH,20H,27H,30H,63H,1FH,0D8H,0FH,0B8H,00H,18H,00H,00H,0AAH FONT_o74: DB 170,0FH,86H,1FH,0C1H,30H,63H,20H,26H,20H,20H,30H,62H,1FH,0D8H,0FH,0B8H,00H,18H,00H,00H,0AAH FONT_o75: DB 171,0FH,80H,1FH,0C0H,30H,60H,0A0H,20H,0A0H,20H,30H,60H,1FH,0D8H,0FH,0B8H,00H,18H,00H,00H,0AAH FONT_p0: DB 'p',80H,10H,0FFH,0F0H,0FFH,0F8H,88H,10H,88H,08H,08H,08H,0CH,18H,07H,0F0H,03H,0E0H,00H,00H,0AAH FONT_q0: DB 'q',07H,0C0H,0FH,0F0H,1CH,18H,18H,08H,88H,08H,88H,08H,0FFH,0F0H,0FFH,0F8H,00H,00H,0AAH FONT_r0: DB 'r',00H,40H,3FH,0C0H,3FH,0E0H,20H,40H,20H,20H,00H,60H,00H,00H,0AAH FONT_s0: DB 's',31H,0C0H,21H,0E0H,23H,20H,26H,20H,3CH,60H,1CH,00H,00H,00H,0AAH FONT_t0: DB 't',00H,20H,1FH,0E0H,3FH,0F8H,20H,20H,20H,20H,00H,00H,0AAH FONT_u0: DB 117,00H,20H,1FH,0E0H,3FH,0E0H,20H,00H,20H,00H,20H,00H,3FH,0E0H,3FH,0E0H,00H,00H,0AAH FONT_u1: DB 172,00H,20H,1FH,0E0H,3FH,0E0H,20H,00H,20H,08H,20H,04H,3FH,0E6H,3FH,0E2H,00H,00H,0AAH FONT_u2: DB 173,00H,20H,1FH,0E0H,3FH,0E0H,20H,02H,20H,06H,20H,04H,3FH,0E8H,3FH,0E0H,00H,00H,0AAH FONT_u3: DB 174,00H,20H,1FH,0E0H,3FH,0E0H,20H,00H,20H,03H,20H,0BH,3FH,0E7H,3FH,0E3H,00H,00H,0AAH FONT_u4: DB 175,00H,20H,1FH,0E0H,3FH,0ECH,20H,02H,20H,06H,20H,0cH,3FH,0E8H,3FH,0E4H,00H,00H,0AAH FONT_u5: DB 176,00H,20H,1FH,0E0H,3FH,0E0H,20H,00H,0A0H,00H,0A0H,00H,3FH,0E0H,3FH,0E0H,00H,00H,0AAH FONT_u7: DB 246,00H,20H,1FH,0E0H,3FH,0E0H,20H,00H,20H,00H,20H,00H,3FH,0E0H,3FH,0E0H,00H,78H,00H,38H,00H,00H,0AAH FONT_u71: DB 177,00H,20H,1FH,0E0H,3FH,0E0H,20H,00H,20H,08H,20H,04H,3FH,0E6H,3FH,0E2H,00H,78H,00H,38H,00H,00H,0AAH FONT_u72: DB 178,00H,20H,1FH,0E0H,3FH,0E0H,20H,02H,20H,06H,20H,04H,3FH,0E8H,3FH,0E0H,00H,78H,00H,38H,00H,00H,0AAH FONT_u73: DB 179,00H,20H,1FH,0E0H,3FH,0E0H,20H,00H,20H,03H,20H,0BH,3FH,0E7H,3FH,0E3H,00H,78H,00H,38H,00H,00H,0AAH FONT_u74: DB 180,00H,20H,1FH,0E0H,3FH,0ECH,20H,02H,20H,06H,20H,0CH,3FH,0E8H,3FH,0E4H,00H,78H,00H,38H,00H,00H,0AAH FONT_u75: DB 181,00H,20H,1FH,0E0H,3FH,0E0H,20H,00H,0A0H,00H,0A0H,00H,3FH,0E0H,3FH,0E0H,00H,78H,00H,38H,00H,00H,0AAH FONT_v0: DB 118,00H,20H,00H,60H,03H,0E0H,0FH,20H,38H,00H,0CH,00H,03H,80H,00H,60H,00H,00H,0AAH FONT_w0: DB 119,00H,20H,00H,0E0H,07H,0E0H,1FH,00H,3CH,20H,06H,60H,01H,0E0H,07H,0A0H,3FH,00H,1CH,00H,07H,00H,00H,0E0H,00H,20H,00H,00H,0AAH FONT_x0: DB 120,20H,20H,20H,60H,18H,0E0H,07H,0E0H,0FH,0A0H,1CH,80H,38H,60H,20H,20H,20H,00H,00H,00H,0AAH FONT_y0: DB 121,40H,10H,0C0H,30H,81H,0F0H,47H,0D0H,3FH,10H,0EH,00H,01H,0C0H,00H,70H,00H,10H,00H,00H,0AAH FONT_y1: DB 182,40H,10H,0C0H,30H,81H,0F0H,47H,0D0H,3FH,14H,0EH,02H,01H,0C3H,00H,71H,00H,10H,00H,00H,0AAH FONT_y2: DB 183,40H,10H,0C0H,30H,81H,0F0H,47H,0D1H,3FH,13H,0EH,02H,01H,0C4H,00H,70H,00H,10H,00H,00H,0AAH FONT_y3: DB 184,40H,10H,0C0H,30H,81H,0F0H,47H,0D0H,3FH,10H,0EH,03H,01H,0CBH,00H,77H,00H,13H,00H,00H,0AAH FONT_y4: DB 185,40H,10H,0C0H,30H,81H,0F0H,47H,0D6H,3FH,11H,0EH,03H,01H,0C6H,00H,74H,00H,12H,00H,00H,0AAH FONT_y5: DB 238,40H,10H,0C0H,30H,81H,0F0H,47H,0D0H,3FH,10H,8EH,00H,81H,0C0H,00H,70H,00H,10H,00H,00H,0AAH FONT_z0: DB 122,30H,00H,38H,20H,3CH,20H,2FH,20H,23H,0A0H,21H,0E0H,20H,60H,38H,20H,00H,00H,0AAH FONT_0: DB '0',07H,0E0H,1FH,0F8H,30H,0CH,20H,04H,20H,04H,30H,0CH,1FH,0F8H,07H,0E0H,00H,00H,0AAH FONT_1: DB '1',20H,10H,20H,08H,3FH,0F8H,3FH,0FCH,20H,00H,20H,00H,00H,00H,0AAH FONT_2: DB '2',20H,00H,30H,10H,38H,08H,24H,0CH,23H,1CH,21H,0FCH,20H,78H,10H,00H,00H,00H,0AAH FONT_3: DB '3',18H,10H,38H,08H,30H,04H,20H,0C4H,20H,0FCH,11H,0FCH,1FH,0B8H,07H,00H,00H,00H,0AAH FONT_4: DB '4',0EH,00H,0DH,00H,0CH,0C0H,0CH,60H,0CH,18H,3FH,0FCH,3FH,0FCH,0CH,00H,00H,00H,0AAH FONT_5: DB '5',10H,00H,38H,0F0H,30H,0ECH,20H,0ECH,21H,0ECH,23H,0CCH,1FH,0CCH,0FH,84H,00H,00H,0AAH FONT_6: DB '6',0FH,0C0H,1FH,0E0H,31H,70H,20H,98H,20H,88H,21H,84H,1FH,04H,0EH,04H,00H,00H,0AAH FONT_7: DB '7',00H,10H,00H,0CH,20H,0CH,3CH,0CH,1FH,8CH,03H,0FCH,00H,7CH,00H,0CH,00H,00H,0AAH FONT_8: DB '8',1CH,00H,1EH,78H,23H,0FCH,21H,0C4H,23H,84H,3FH,0FCH,1FH,38H,0EH,00H,00H,00H,0AAH FONT_9: DB '9',00H,70H,20H,0F8H,21H,84H,11H,04H,19H,04H,0DH,0CH,07H,0F8H,03H,0F0H,00H,00H,0AAH FONT_CHAM_THAN: DB '!',39H,0FCH,38H,7CH,00H,00H,0AAH FONT_VA: DB '&',1EH,00H,3FH,00H,38H,0B8H,30H,0FCH,21H,0C4H,27H,0C4H,2FH,4CH,1EH,3CH,3CH,18H,36H,00H,21H,80H,20H,00H,00H,00H,0AAH FONT_PHAN_TRAM: DB 37,00H,0F0H,01H,0F8H,01H,1CH,61H,04H,18H,0C4H,06H,78H,01H,88H,1CH,68H,3EH,18H,27H,04H,21H,00H,11H,00H,0EH,00H,00H,00H,0AAH FONT_MO_NGOAC_TRON: DB '(',03H,0F0H,0FH,0FCH,30H,06H,40H,01H,00H,00H,0AAH FONT_DONG_NGOAC_TRON: DB ')',40H,00H,40H,01H,30H,06H,0FH,0FCH,03H,0F0H,00H,00H,0AAH FONT_TRU: DB '-',06H,00H,06H,00H,06H,00H,06H,00H,00H,00H,0AAH FONT_CONG: DB '+',06H,00H,06H,00H,06H,00H,06H,00H,3FH,0C0H,3FH,0C0H,06H,00H,06H,00H,06H,00H,06H,00H,00H,00H,0AAH FONT_CHIA: DB '/',20H,00H,3CH,00H,1FH,80H,01H,0F0H,00H,3CH,00H,00H,0AAH FONT_DAU_CHAM: DB '.',30H,00H,30H,00H,00H,00H,0AAH FONT_DAU_PHAY: DB ',',0B8H,00H,78H,00H,78H,00H,00H,00H,0AAH FONT_DAU_HOI: DB '?',00H,38H,00H,3CH,38H,04H,3BH,04H,38H,8CH,00H,0FCH,00H,78H,00H,00H,0AAH FONT_DAU_HAI_CHAM: DB ':',39H,0C0H,39H,0C0H,00H,00H,0AAH FONT_DAU_CHAM_PHAY: DB ';',9CH,0E0H,7CH,0E0H,3CH,00H,00H,00H,0AAH FONT_MO_NGOAC_NHON: DB '{',00H,80H,00H,80H,3FH,7EH,7FH,7FH,40H,01H,00H,00H,0AAH FONT_DONG_NGOAC_NHON: DB '}',40H,01H,7FH,7FH,3FH,7EH,00H,80H,00H,80H,00H,00H,0AAH FONT_MO_NGOAC_VUONG: DB '[',7FH,0FFH,7FH,0FFH,40H,01H,40H,01H,00H,00H,0AAH FONT_DONG_NGOAC_VUONG: DB ']',40H,01H,40H,01H,7FH,0FFH,7FH,0FFH,00H,00H,0AAH FONT_NHAN: DB '*',0DH,00H,0DH,00H,06H,00H,1FH,0C0H,06H,00H,0FH,00H,09H,00H,00H,00H,0AAH END Phần mềm của Slave: S_DATA EQU 20H ROW EQU 2FH ;THANH GHI CHUA DU LIEU CHON HANG KHI QUET COLOUR EQU 2EH ;CHUA GIA TRI MAU HIEN THI ADD_X EQU 2DH ;DIA CHI HIEN THI CUA MAU XANH ADD_D EQU 2CH ;DIA CHI HIEN THI CUA MAU DO E_LOAD BIT 09H ;BIT CHO PHEP LOAD DATA BITC BIT 0AH ;LUU GIA TRI CUA CO NHO CARRY ORG 0000H LJMP PROGRAM ORG 000BH LJMP T0ISR ORG 0023H LJMP SERIAL ;NGAT NOI TIEP ORG 0030H ;------------------------------------------------------------------***--------------------------------------------------------------------- PROGRAM: MOV R0,#30H ;NAP GIA TRI BAN DAU DE HIEN THI MOV R1,#40 LOOP_NAP: MOV @R0,#55H INC R0 MOV @R0,#0AAH INC R0 DJNZ R1,LOOP_NAP MOV TMOD,#21H ;T0 CHE DO 16,T1 AUTORELOAD MOV A,87H SETB ACC.7 MOV 87H,A ;TANG TOC DO BAUD GAP DOI MOV TH1,#-6 MOV TL1,#-6 SETB TR1 ;TAO TOC DO BAUD 9600 MOV SCON,#60H SETB REN MOV IE,#90H ;CHO NGAT NOI TIEP HOAT DONG SETB PS ;UU TIEN NGAT CHO PORT NOI TIEP MOV P1,#0FFH ;TAT TOAN BO LED MOV P2,#00H CLR P3.4 CLR P3.5 ;KHONG CHO CHOT CAC COT SETB E_LOAD ;KHONG DICH COT MOV COLOUR,#'X' ;BAN DAU HIEN THI MAU XANH MOV ADD_X,#30H ;DIA CHI BAT DAU CUA MAU XANH MOV ADD_D,#58H ;DIA CHI BAT DAU CUA MAU DO MOV ROW,#7FH ;CHON HANG DAU TIEN MOV R6,#50 MOV R5,#0 ;BAO CHUA THU DUOC DU LIEU NAO SETB ET0 SETB TF0 ;TAO NGAT DAU TIEN WAIT: JB E_LOAD,WAIT ;NHAY NEU KHONG CO LOAD DATA LCALL LOAD_DATA ;NEU CHO PHEP THI LOAD DATA SETB E_LOAD ;CHI LOAD MOT LAN LJMP WAIT ;-----------------------------***CHUONG TRINH CON LOAD DU LIEU KHI NHAN TU MAIN***--------------------- LOAD_DATA: PUSH ACC ;CAT TAM ACC PUSH 00H MOV R0,#7FH ;LUU DIA CHI BYTE CUOI CUNG VAO R0 MOV R3,#1 ;DEM 5 LAN DE NAP GIA TRI 0 SETB BITC ;XOA CO C LOOP_DATA: MOV A,@R0 ;LUU DIA CHI TRO BOI R0 VAO A DJNZ R3,BIT_0 ;SAU 5 LAN NAP GIA TRI 0 MOV R3,#5 ;NAP TRO LAI SETB BITC ;XOA BIT C BIT_0: MOV C,BITC ;DUA GIA TRI BIT NHO TAM VAO CARRY RRC A ;QUAY PHAI VOI CO CARRY MOV BITC,C ;LUU LAI GIA TRI CO C MOV @R0,A ;LUU TRO LAI VAO BO NHO DEC R0 ;GIAM R0 TRO DEN DIA CHI KE TIEP CJNE R0,#2FH,LOOP_DATA ;NEU CHUA PHAI LA CUOI CUNG THI TIEP TUC MOV A,COLOUR ;DUA BYTE MAU VAO A DE KIEM TRA CHECK_GREEN: CJNE A,#'X',EXIT_CHECK_GREEN ;NEU KHONG LA XANH THI NHAY LJMP CONT_CHECK_GREEN EXIT_CHECK_GREEN: LJMP CHECK_RED CONT_CHECK_GREEN: MOV A,34H ;NAP BYTE CUOI CUA MAU XANH VAO A MOV C,07H ;LAY BIT MAU 7 MOV ACC.7,C ;LUU TRO LAI BO NHO MOV 34H,A ;------------------------------------------------------------------***--------------------------------------------------------------------- MOV A,39H ;NAP BYTE CUOI CUA MAU XANH VAO A MOV C,06H ;LAY BIT MAU 6 MOV ACC.7,C ;LUU TRO LAI BO NHO MOV 39H,A ;----------------------------- MOV A,3EH ;NAP BYTE CUOI CUA MAU XANH VAO A MOV C,05H ;LAY BIT MAU 5 MOV ACC.7,C ;LUU TRO LAI BO NHO MOV 3EH,A ;----------------------------- MOV A,43H ;NAP BYTE CUOI CUA MAU XANH VAO A MOV C,04H ;LAY BIT MAU 4 MOV ACC.7,C ;LUU TRO LAI BO NHO MOV 43H,A ;----------------------------- MOV A,48H ;NAP BYTE CUOI CUA MAU XANH VAO A MOV C,03H ;LAY BIT MAU 3 MOV ACC.7,C ;LUU TRO LAI BO NHO MOV 48H,A ;----------------------------- MOV A,4DH ;NAP BYTE CUOI CUA MAU XANH VAO A MOV C,02H ;LAY BIT MAU 2 MOV ACC.7,C ;LUU TRO LAI BO NHO MOV 4DH,A ;----------------------------- MOV A,52H ;NAP BYTE CUOI CUA MAU XANH VAO A MOV C,01H ;LAY BIT MAU 1 MOV ACC.7,C ;LUU TRO LAI BO NHO MOV 52H,A ;----------------------------- MOV A,57H ;NAP BYTE CUOI CUA MAU XANH VAO A MOV C,00H ;LAY BIT MAU 0 MOV ACC.7,C ;LUU TRO LAI BO NHO MOV 57H,A ;----------------------------- MOV A,5CH ;NAP BYTE CUOI CUA MAU XANH VAO A ORL A,#80H ;BO BIT CUOI MOV 5CH,A ;----------------------------- MOV A,61H ;NAP BYTE CUOI CUA MAU XANH VAO A ORL A,#80H ;BO BIT CUOI MOV 61H,A ;----------------------------- MOV A,66H ;NAP BYTE CUOI CUA MAU XANH VAO A ORL A,#80H ;BO BIT CUOI MOV 66H,A ;----------------------------- MOV A,6BH ;NAP BYTE CUOI CUA MAU XANH VAO A ORL A,#80H ;BO BIT CUOI MOV 6BH,A ;----------------------------- MOV A,70H ;NAP BYTE CUOI CUA MAU XANH VAO A ORL A,#80H ;BO BIT CUOI MOV 70H,A ;----------------------------- MOV A,75H ;NAP BYTE CUOI CUA MAU XANH VAO A ORL A,#80H ;BO BIT CUOI MOV 75H,A ;----------------------------- MOV A,7AH ;NAP BYTE CUOI CUA MAU XANH VAO A ORL A,#80H ;BO BIT CUOI MOV 7AH,A ;----------------------------- MOV A,7FH ;NAP BYTE CUOI CUA MAU XANH VAO A ORL A,#80H ;BO BIT CUOI MOV 7FH,A LJMP EXIT_CHECK_DATA ;------------------------------------------------------------------***--------------------------------------------------------------------- CHECK_RED: CJNE A,#'D',EXIT_CHECK_RED ;NEU KHONG LA DO THI NHAY LJMP CONT_CHECK_RED EXIT_CHECK_RED: LJMP CHECK_YELLOW CONT_CHECK_RED: MOV A,34H ;NAP BYTE CUOI CUA MAU DO VAO A ORL A,#80H MOV 34H,A ;----------------------------- MOV A,39H ORL A,#80H MOV 39H,A ;----------------------------- MOV A,3EH ORL A,#80H MOV 3EH,A ;----------------------------- MOV A,43H ORL A,#80H MOV 43H,A ;----------------------------- MOV A,48H ORL A,#80H MOV 48H,A ;----------------------------- MOV A,4DH ORL A,#80H MOV 4DH,A ;----------------------------- MOV A,52H ORL A,#80H MOV 52H,A ;----------------------------- MOV A,57H ORL A,#80H MOV 57H,A ;----------------------------- MOV A,5CH ;NAP BYTE CUOI CUA MAU DO VAO A MOV C,07H ;LAY BIT MAU 7 MOV ACC.7,C ;LUU TRO LAI BO NHO MOV 5CH,A ;----------------------------- MOV A,61H MOV C,06H MOV ACC.7,C ;LUU TRO LAI BO NHO MOV 61H,A ;----------------------------- MOV A,66H MOV C,05H MOV ACC.7,C MOV 66H,A ;----------------------------- MOV A,6BH MOV C,04H MOV ACC.7,C MOV 6BH,A ;----------------------------- MOV A,70H MOV C,03H MOV ACC.7,C MOV 70H,A ;----------------------------- MOV A,75H MOV C,02H MOV ACC.7,C MOV 75H,A ;----------------------------- MOV A,7AH MOV C,01H MOV ACC.7,C MOV 7AH,A ;----------------------------- MOV A,7FH MOV C,00H MOV ACC.7,C MOV 7FH,A LJMP EXIT_CHECK_DATA ;------------------------------------------------------------------***--------------------------------------------------------------------- CHECK_YELLOW: CJNE A,#'V',EXIT_CHECK_YELLOW ;NEU KHONG LA VANG THI NHAY LJMP CONT_CHECK_YELLOW EXIT_CHECK_YELLOW: LJMP EXIT_CHECK_DATA CONT_CHECK_YELLOW: MOV A,34H MOV C,07H MOV ACC.7,C MOV 34H,A ;----------------------------- MOV A,39H MOV C,06H MOV ACC.7,C MOV 39H,A ;----------------------------- MOV A,3EH MOV C,05H MOV ACC.7,C MOV 3EH,A ;----------------------------- MOV A,43H MOV C,04H MOV ACC.7,C MOV 43H,A ;----------------------------- MOV A,48H MOV C,03H MOV ACC.7,C MOV 48H,A ;----------------------------- MOV A,4DH MOV C,02H MOV ACC.7,C MOV 4DH,A ;----------------------------- MOV A,52H MOV C,01H MOV ACC.7,C MOV 52H,A ;----------------------------- MOV A,57H MOV C,00H MOV ACC.7,C MOV 57H,A ;----------------------------- MOV A,5CH MOV C,07H MOV ACC.7,C MOV 5CH,A ;----------------------------- MOV A,61H MOV C,06H MOV ACC.7,C MOV 61H,A ;----------------------------- MOV A,66H MOV C,05H MOV ACC.7,C MOV 66H,A ;----------------------------- MOV A,6BH MOV C,04H MOV ACC.7,C MOV 6BH,A ;----------------------------- MOV A,70H MOV C,03H MOV ACC.7,C MOV 70H,A ;----------------------------- MOV A,75H MOV C,02H MOV ACC.7,C MOV 75H,A ;----------------------------- MOV A,7AH MOV C,01H MOV ACC.7,C MOV 7AH,A ;----------------------------- MOV A,7FH MOV C,00H MOV ACC.7,C MOV 7FH,A EXIT_CHECK_DATA: POP 00H POP ACC RET ;------------------------------------------------------------------***--------------------------------------------------------------------- T0ISR: PUSH ACC CLR TR0 MOV TL0,#0CH ;CHUONG TRINH NGAT T0 LAM NHIEM VU HIEN THI DATA MOV TH0,#0FEH ; -500 THOI GIAN DELAY CHUYEN HANG SETB TR0 ;CHO TR0 TIEP TUC CHAY LCALL DISPLAY ;GOI CHUONG TRINH HIEN THI POP ACC RETI ;------------------------------------------------------------------***--------------------------------------------------------------------- DISPLAY: MOV P1,#0FFH ;TAT TAT CA MOV R1,ADD_X ;NAP DIA CHI MAU XANH MOV P0,#0FFH MOV A,@R1 ;DUA GIA TRI BYTE 1 CUA HANG RA PORT CPL A MOV P0,A SETB P2.0 ;CHOT LAI DU LIEU CLR P2.0 ;KHONG CHO CHOT NUA INC R1 MOV P0,#0FFH MOV A,@R1 ;DUA GIA TRI BYTE 2 CUA HANG RA PORT CPL A MOV P0,A SETB P2.1 CLR P2.1 ;KHONG CHO CHOT NUA INC R1 MOV P0,#0FFH MOV A,@R1 ;DUA GIA TRI BYTE 3 CUA HANG RA PORT CPL A MOV P0,A SETB P2.2 CLR P2.2 ;KHONG CHO CHOT NUA INC R1 MOV P0,#0FFH MOV A,@R1 ;DUA GIA TRI BYTE 4 CUA HANG RA PORT CPL A MOV P0,A SETB P2.3 CLR P2.3 ;KHONG CHO CHOT NUA INC R1 MOV P0,#0FFH MOV A,@R1 ;DUA GIA TRI BYTE 5 CUA HANG RA PORT CPL A MOV P0,A SETB P2.4 CLR P2.4 ;KHONG CHO CHOT NUA INC R1 MOV ADD_X,R1 ;LUU CHO LAN SAU MOV R1,ADD_D ;LAY DIA CHI CUA MAU DO MOV P0,#0FFH MOV A,@R1 ;DUA GIA TRI BYTE 1 CUA HANG RA PORT CPL A MOV P0,A SETB P2.5 CLR P2.5 INC R1 MOV P0,#0FFH MOV A,@R1 ;DUA GIA TRI BYTE 2 CUA HANG RA PORT CPL A MOV P0,A SETB P2.6 CLR P2.6 INC R1 MOV P0,#0FFH MOV A,@R1 ;DUA GIA TRI BYTE 3 CUA HANG RA PORT CPL A MOV P0,A SETB P2.7 CLR P2.7 INC R1 MOV P0,#0FFH MOV A,@R1 ;DUA GIA TRI BYTE 4 CUA HANG RA PORT CPL A MOV P0,A SETB P3.4 CLR P3.4 INC R1 MOV P0,#0FFH MOV A,@R1 ;DUA GIA TRI BYTE 5 CUA HANG RA PORT CPL A MOV P0,A SETB P3.5 CLR P3.5 INC R1 MOV ADD_D,R1 ;LUU DIA CHI MAU DO TRO LAI MOV P1,ROW ;CHO HIEN THI TRO LAI MOV A,ROW ;DUA CHON COT VAO A RR A ;QUAY TRAI A MOV ROW,A ;LUU TRO LAI CHON COT JB ACC.7,RESET_DIS MOV ADD_X,#30H ;DIA CHI BAT DAU CUA MAU XANH MOV ADD_D,#58H ;DIA CHI BAT DAU CUA MAU DO RESET_DIS: RET ;------------------------------------------------------------------***--------------------------------------------------------------------- SERIAL: PUSH ACC ;CAT TAM ACC CLR RI ;XOA CO THU CJNE R5,#0,CHECK_COLOUR ;NEU KHONG PHAI LA R5 = 0 THI KIEM TRA MAU MOV A,SBUF ;DOC DU LIEU THU DUOC CJNE A,#1DH,EXIT_SERIAL ;NEU KHAC THI THOAT MOV R5,#1 ;NAP R5 = 1 LJMP EXIT_SERIAL ;THOAT CHECK_COLOUR: CJNE R5,#1,CHECK_DATA ;KIEM TRA XEM R5 = 1 KHONG MOV COLOUR,SBUF ;NAP MAU HIEN THI MOV R5,#2 ;BAO THU DU LIEU LJMP EXIT_SERIAL ;THOAT CHECK_DATA: CJNE R5,#2,SHIFT_DATA MOV S_DATA,SBUF MOV R5,#3 ;CHO PHEP DICH DATA LJMP EXIT_SERIAL SHIFT_DATA: CJNE R5,#3,SHIFT_DATA MOV A,SBUF CJNE A,#5FH,EXIT_SERIAL CLR E_LOAD ;CHO PHEP LOAD DATA MOV R5,#0 ;RESET TRANG THAI EXIT_SERIAL: POP ACC RETI END

Các file đính kèm theo tài liệu này:

  • docQUANG BAO GIAO TIEP MAY TINH.doc
  • docSO DO MACH.doc