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ộ.
102 trang |
Chia sẻ: linhlinh11 | Lượt xem: 1036 | Lượt tải: 0
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:
- QUANG BAO GIAO TIEP MAY TINH.doc
- SO DO MACH.doc