LỜI NÓI ĐẦU
Ngày nay với sự phát triển của xã hội cùng với sự phát triển của khoa học kỹ
thuật, cho nên nhu cầu về thông tin trở nên thiết yếu đối với con người trong cuộc sống cũng như trong hoạt động sản xuất kinh doanh. Để đáp ứng nhu cầu trên, quang báo là hình thức cung cấp thông tin hữu ích không thể thiếu trong cuộc sống hằng ngày. Do đó quang báo ngày càng phát triển tinh vi hơn, đa dạng hơn, từ việc thiết kế quang báo với văn bản được ghi chết trong ROM, đến việc thiết kế một KIT vi xử lý để điều khiển.
Quang báo là hình thức thông báo trên bảng đèn. Bảng đèn quang báo gồm nhiều Ma Trận LED ghép lại, mỗi một Ma Trận biểu diễn một kí tự. Tùy chiều dài của bảng đèn mà có thể hiển thị những bản tin có độ dài khác nhau. Các từ trong văn bản sẽ lần lượt xuất hiện và chạy dần từ phải sang trái. Khi văn bản đã hiển thị đến từ cuối cùng thì từ đầu tiên lại bắt đầu xuất hiện trở lại. Quá trình đó cứ tiếp tục lại mãi.
Bên cạnh đó, với sự ra đời của máy tính điện tử đặc biệt là máy vi tính, chúng có những tính năng ưu việt như khả năng xử lý dữ liệu nhanh chóng, độ tin cậy cao, lưu trữ lượng thông tin lớn và quan trọng hơn cả là máy tính có thể kết hợp với nhiều thiết bị ngoại vi tùy theo mục đích ứng dụng cụ thể, mà việc trao đổi và điều khiển trở nên đơn giản, chúng phụ thuộc vào phần mềm điều khiển. Dựa vào tính đa dạng và mềm dẻo của máy tính người ta tìm cách ứng dụng nó vào mục đích quảng cáo, chẳng hạn như dùng trong quang báo. Nhờ vậy, việc thiết kế phần cứng cho quang báo trở thành ít phức tạp hơn, nhưng độ tin cậy cao hơn. Trong thực tế để hiển thị các văn bản, người ta dùng các kiểu chữ là các Ma Trận LED 5x7, 5x8, 8x12 hoặc 8x14 tuỳ thuộc vào mục đích sử dụng và độ phân giải.
Theo cách nghĩ đó việc thiết kế mạch quang báo kết hợp giữa KIT vi xử lý và máy tính được chúng em trình bày trong luận văn này. Phần mềm điều khiển viết bằng ngôn ngữ PASCAL. Ở đây máy tính đóng vai trò truyền dữ liệu và điều khiển còn KIT vi xử lý có nhiệm vụ lưu trữ và thực hiện chương trình quang báo. Việc kết hợp giữa hai thiết bị làm cho quang báo trở nên đa dạng, phong phú, độ tin cậy cao và dễ dàng sử dụng. Ngoài ra Kit vi xử lý còn có thể thực hiện chương trình quang báo độc lập với máy tính nếu như điều kiện thực tế không cho phép.
Mặt dù đã dành nhiều thời gian để thực hiện đề tài nhưng do kiến thức và tay nghề có hạn nên không tránh khỏi thiếu sót, chúng em rất mong sự góp ý của quí thầy cô và các bạn để luận văn được hoàn hảo hơn.
Chúng em chân thành cảm ơn thầy Nguyễn Xuân Đông, cùng tất cả quí thầy cô đã trao dồi cho chúng em lượng kiến vô cùng quí báu để hoàn thành tốt luận văn đã được giao.
Cám ơn các bạn sinh viên đã có những góp ý quí báu trong việc thực hiện
luận văn này.
131 trang |
Chia sẻ: banmai | Lượt xem: 1838 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Thiết kế mạch quang báo giao tiếp máy tính qua cổng máy in, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
u treân 80 coät.
a.Chöông trình quang baùo toång quaùt.
Start
FFH A
HIEÅN THÒ DAÁU NHAÉC HEÄ THOÁNG
HIEÅN THÒ CHÖÕ
COÙ PHÍM NHAÁN HAY KHOÂNG
LAÁY MAÕ PHÍM AÁN
CAÁT MAÕ CHÖÛ VAØO DUØNG NHÔÙ 2000HNAÏP MAÕ CHÖÕ VUØNG HIEÅN THÒ
RESET 164 XOÙA ÑEØN
PHÍM RESET ÑÖÔÏCNHAÁN
END
N Y
b.Löu ñoà khoái nhaäp chöõõ quang baùo.
B. THIEÁT KEÁ PHAÀM MEÀM PASCAL:
IV.3.Giôùi thieäu ngoân ngöõ PASCAL:
IV.3.1.Xuaát xöù:
Pascal laø moät ngoân ngöõ laäp trình caáp cao do giaùo sö NIKLAUS WIRTH ôû tröôøng ñaïi hoïc kyõ thuaät ZURICH Thuïy Só saùng taïo vaøo naêm 1970, vaø ñaët taân laø PASCAL ñeå töôûng nhôù ñeán BLAISE PASCAL, nhaø toaùn hoïc, nhaø trieát hoïc PHAÙP ôû theá kyû 17. Ngöôøi ñaõ cheá taïo ra kieåu maùy tính cô khí.
PASCAL ñöôïc coi laø moät ngoân ngöõ ñeïp nhaát trong hoï coå ñieån, laø moät trong nhöõng ngoân ngöõ maïnh, phoå bieán nhaát laø neàn taûng cho caùc moân laäp trình khaùc, coù nhieàu tính öu vieät.
Ngöôøi ta ñaõ nhaän thaáy raèng coù theå laäp trình moät caùch khoa hoïc, logic cho moät chöông trình cuï theå naøo ñoù döïa treân phaân tích caùc thuaät toaùn vaø suy dieãn toaùn hoïc.
IV.3.2.caùc öö ñieåmcuûa ngoân ngöõ PASCAL:
PASCAL coù theå thöïc hieän moät caùch chính xaùc caùc caáu truùc döõ lieäu phöùc taïp vaø caùc thuaät toaùn phöùc taïp.
PASCAL coù tính meàm deõo vaø tieän lôïi trong vieäc chia nhoû vaán ñeà ra giaûi quyeát ñoäc laäp. Coù ñuû caùc pheùp toaùn soá hoïc, logic,…Caùc kieåu döõ lieäu trong PASCAL phong phuù, theå hieän ñöôïc nhieàu kieåu döõ lieäu töø ñôn giaûn ñeán phöùc taïp.
Ngoân ngöõ PASCAL trôû thaønh ngoân ngöõ chính thoáng, ngoân ngöõ phoå bieán, ñöôïc duøng nhieàu trong tröôøng hoïc vaø caùc lónh vöïc khaùc.
IV.3.3.Turbo pascal:
Töø ngoân ngöõ PASCAL do giaùo sö WIRTH saùng taùc, caùc haõng phaàn meàn ñaõ phaùt trieån theâm vaø taïo ra caùc chöông trình dòch ngoân ngöõ PASCAL nhö:
OS PASCAL:Ñöôïc goïi laø PASCAL chuaån.
IBM PASCAL : Cuûa haõng Microsoft.
TURBO PASCAL : Cuûa haõng BORLAND.
Öu ñieåm cuûa TURBO PASCAL:
Tieän cho vieäc dòch lieân hoaøn vôùi vieäc soaïn thaûo, söûa chöõa .
Toác ñoä dòch nhanh.
Chöông trình dòch goïn, ñoøi hoûi ít boä nhôù, coù nhieàu haøm,nhieàu coâng cuï hoã trôï.
Laøm vieäc thoaûi maùi, coù hieäu quaû. Tính ñoái thoaïi ngöôøi vaø maùy phong phuù.
Giaûi quyeát haàu heát caùc baøi toaùn trong kyõ thuaät, thieát keá ñoà hoïa, quaûn lyù, xaây döïng caùc phaàn meàm heä thoáng.
Deã daïy vaø hoïc.
Luoân caûi tieán môû roäng vaø phaùt trieån khoâng ngöøng.
IV.4.Löu ñoå toång quaùt maïch quang baùo giao tieáp vôùi maùy tính:
Begin
NHAÄP CHUOÃI
ÑOÏC CHUOÃI
MAÕ HOAÙ
XUAÁT DÖÕ LIEÄU
KIT NHAÄN DÖÕ LIEÄU
KIT THI HAØNH CHÖÔNG TRÌNH QUANG BAÙO
End
IV.4.1.Löu ñoà ñoïc chuoãi vaø maõ hoaù:
A
B
A
B
St[i+1]
Begin
i:=1
Nhaän daïng
Maõ hoùa
i:=i+2
Kieåmtra
chuoåi
End.
St[i+1]
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
MAÕ HOÙA
i:=i+2
Kieåm tra keát thuùc chuoåi
End
1
2
3
4
a,e,u,o
6,7,8
A
A
A
St[i+1]
Begin
i:=1
Nhaän daïng
Maõ hoùa
i:=i+2
Kieåmtra
chuoåi
End.
St[i+1]
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
MAÕ HOÙA
i:=i+2
Kieåm tra keát thuùc chuoåi
End
1
2
3
4
a,e,u,o
6,7,8
A
A
St[i+1]
Begin
i:=1
Nhaän daïng
Maõ hoùa
i:=i+2
Kieåmtra
chuoåi
End.
St[i+1]
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
MAÕ HOÙA
i:=i+2
Kieåm tra keát thuùc chuoåi
End
1
2
3
4
a,e,u,o
6,7,8
A
A
¹5
5
Kieåmtra
Chuoãi
Kieåm tra keát thuùc chuoãi
C
D
1
Maõ hoùa
i:=i+2
End.
St[i+1]
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoãi
End
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoãi
End
MAÕ HOÙA
i:=i+2
End
Khoâng daáu
A
C
A
A
A
9
Y,I
1-5
Khoâng daáu
Kieåm tra keát thuùc chuoåi
d
D
2
Maõ hoùa
i:=i+2
End.
St[i+1]
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
Maõ hoùa
i:=i+1
Kieåm tra keát thuùc chuoåi
End
MAÕ HOÙA
i:=i+2
End
1-4
A
d
A
A
A
M,N,O,P,C,T,Y,I,U
$
1-9
Kieåm tra keát thuùc chuoåi
Löu ñoà gôûi döõ lieäu cuûa maùy tính
.Z80
;--------------------------------;
; RESET MAY VA DUA RA DAU NHAC ;
;--------------------------------;
ORG 0000H
LD A,8BH
LD (KEY_IO),A ; KHOI TAO 8255 I PORT A RA PORT C VAO
LD A,81H
LD (DIS_IO),A ; KHOI TAO 8255 II CA 3 PORT RA
;--------------------------------;
; HIEN THI DAU NHAC CUA HE THONG ;
;--------------------------------;
RESET: LD HL,SYS_SP
LD SP,HL
LD A,01
LD (ROLPAS),A
LD A,00H
LD (KEYFLG),A
CALL RS164
LD B,03H
LD IX,DISBUF
LD A,38H
LP11: LD (IX),A
INC IX
DJNZ LP11
LD A,7CH
LD (IX),A
INC IX
LD A,38H
LD (IX),A
INC IX
LD A,10H
LD (IX),A
LD A,3EH
;---------------------------------------------------;
; D7,D6,D5(6),D4(5),D3(4),D2(3),D1(DEN 2),D0(DEN 1) ;
;---------------------------------------------------;
CALL CLRSCR
LD IX,FUNSEL
LD (MNPTR),IX
LD HL,DISBUF
LD (DISPTR),HL
MIT: LD A,(VAO)
CP 00H
JR Z,PUT
CP 01H
JR Z,PUT
CP 03H
JP NDL
CP 09H
JP Z,PHAI
CP 0AH
JP Z,TRAI
JR MIT
;--------------------------------;
; CHUONG TRINH RESET IC 74164 ;
;--------------------------------;
RS164: LD B,81
LPRS: LD A,00H
LD (CKOUT),A ; CANH XUONG XUNG CK
LD (DATAOUT),A
CALL DLPUT
LD A,01H ; CANH LEN XUNG CK
LD (CKOUT),A
DJNZ LPRS
RET
;--------------------------------;
; CHUONG TRINH HIEN THI DU LIEU;
; RA MA TRAN LED. CHUONG TRINH ;
; NAY CO THE THUC HIEN DOC LAP ;
; VUNG NHO DEM CHO DEN TU ;
; DISBUF DEN DISBUF + 80 ;
;--------------------------------;
PUT: LD A,00H
LD (CKOUT),A ; CANH XUONG XUNG CK
LD A,02H ; DU LIEU DE DICH VAO IC 74164
LD (CKOUT),A
LD A,03H ; CANH LEN XUNG CK
LD (CKOUT),A
LD D,80 ; SO COT BANG QUANG BAO LA 80
LD HL,(DISPTR)
MUX: LD A,(HL)
LD (DATAOUT),A
CALL DLPUT
PUSH DE
PUSH HL
LD A,00H
LD (KEY_OUT),A
LD A,(KEY_IN)
AND 01FH
CP 01FH
JR Z,LP002
LD D,A
LD A,00H
LD (DATAOUT),A
LD A,D
CALL GET
LP002: LD HL,LP_1
PUSH HL
LD A,00
LD (DATAOUT),A
LD IX,(MNPTR) ; GOI CHUONG TRINH XU LY PHIM
JP (IX)
LP_1: POP HL
POP DE
DEC D
JR Z,PUT
INC HL
LD A,00H
LD (CKOUT),A ; CANH XUONG XUNG CK
CALL DLPUT0
LD A,01H
LD (CKOUT),A ; CANH LEN XUNG CK
JR MUX
;--------------------------------;
; CHUONG TRINH LAY MA PHIM AN ;
;--------------------------------;
GET: LD A,(KEY_IN)
AND 1FH
CP 1FH
JR Z,DIDDLE
LD B,00H ; B CHUA THU TU HANG CUA PHIM BI NHAN
LPROW: SRA A
JR NC,ROWCOD
INC B
JR LPROW
ROWCOD: SLA B
SLA B
SLA B
LD A,B
AND 38H
LD IX,KEY
LD(IX),A ;CHUA MA HANG VAO O NHO KEY
LD A,07FH ;DO TIM COT CUA PHIM BI NHAN
LPCOL: LD D,A
LD (KEY_OUT),A
LD A,(KEY_IN)
AND 1FH
CP 1FH
JR NZ,COLFD
LD A,D
RRCA
JR NC,DIDDLE
JR LPCOL
COLFD: LD B,00H
LD A,D
COLCOD: RRCA
JR NC,ROWCOL
INC B
JR COLCOD
ROWCOL: LD A,B
AND 07H
LD B,A
LD A,(KEY)
OR B
LD D,A ; D CHUA MA HANG - COT CUA PHIM NHAN
LPFD: LD A,(KEY_IN) ; CHO BUONG PHIM MOI XU LY
AND 01FH
CP 01FH
JR NZ,LPFD
CALL DLKP ; CHONG DOI LUC NHA PHIM
LD A,D
LD IX,KEYTBL
PUSH BC
LD B,00H
LD C,A
ADD IX,BC
LD A,(IX)
LD (KEY),A ; KEY CHUA MA HECXA CUA PHIM BI NHAN
LD A,01H ; SET CO BAO CO PHIM BANG 01
LD (KEYFLG),A
POP BC
DIDDLE: RET
;--------------------------------;
; BANG TRA MA LED ;
;--------------------------------;
KEYTBL: DEFB 22H
DEFB 25H
DEFB 21H
DEFB 26H
DEFB 0AH
DEFB 0BH
DEFB 0CH
DEFB 0DH
DEFB 13H
DEFB 15H
DEFB 14H
DEFB 12H
DEFB 11H
DEFB 10H
DEFB 0FH
DEFB 0EH
DEFB 16H
DEFB 17H
DEFB 18H
DEFB 00H
DEFB 01H
DEFB 02H
DEFB 03H
DEFB 23H
DEFB 1CH
DEFB 1BH
DEFB 1AH
DEFB 19H
DEFB 04H
DEFB 05H
DEFB 06H
DEFB 81H
DEFB 1DH
DEFB 1EH
DEFB 1FH
DEFB 20H
DEFB 07H
DEFB 08H
DEFB 09H
DEFB 80H
;--------------------------------;
; THI HANH CHUC NANG CUA PHIM ;
;--------------------------------;
FUNSEL: LD A,(KEYFLG) ; BAO CO PHIM BI NHAN
CP 01H
JR Z,KEYNOW
RET
KEYNOW: CALL RDKEY
LD D,A
AND 80H
CP 80H
JR Z,FUNKEY
LD A,D
AND 30H
CP 00H
JR NZ,DIDDLE
LD A,D
CALL ROLL4
CALL DISCOD
LD A,30H
JP CLRSCR
FUNKEY: LD A,D
CP 81H
JP Z,GO
CP 80H
JP Z,MEM
;--------------------------------;
; CHUONG TRINH ROLL4 ;
;--------------------------------;
ROLL4: PUSH BC
PUSH HL
LD HL,HEXBUF+1
LD B,A
LD A,(ROLPAS) ; KIEM TRA CO ROLPAS
CP 01H
JR NZ,R4TPAS ; LAN DAU TIEN KHONG ROLL
LD A,00H
LD (ROLPAS),A
DEC HL
LD (HL),A
INC HL
LD (HL),B
JR R4OUT
R4TPAS: LD A,B
RLD
DEC HL
RLD
R4OUT: POP HL
POP BC
RET
;--------------------------------;
; CHUONG TRINH ROLL2 ;
;--------------------------------;
ROLL2: PUSH BC
LD B,A
LD A,(ROLPAS)
CP 01H
JR NZ,LPP2
LD A,00H
LD (ROLPAS),A
LD A,B
LD (HL),A
JR R2OUT
LPP2: LD A,B
RLD
R2OUT: POP BC
RET
;---------------------------------;
; GIAI MA SO HEX RA MA TRAN CHU ;
;---------------------------------;
DISCOD: PUSH BC
PUSH IX
PUSH HL
PUSH IY
LD B,03 ; DOI 3 BYTE SO HECXA
LD IX,HEXBUF+2
LP01: LD L,(IX)
LD H,L
SRL H
SRL H
SRL H
SRL H
LD A,L
AND 0FH
LD L,A
PUSH HL ; H CHUA NIPPLE CAO L CHUA NIPPLE THAP
DEC IX
DEC B
JR NZ,LP01
LD IY,DISBUF
LD B,03
LP02: POP HL
CALL SUBDIS
LD H,L
CALL SUBDIS
DJNZ LP02
POP IY
POP HL
POP IX
POP BC
RET
SUBDIS: LD A,H
LD IX,DISTBL
CALL ADDAX
PUSH BC
LD B,06
LP1_0: LD A,(IX)
LD (IY),A
INC IY
INC IX
DJNZ LP1_0
POP BC
RET
;--------------------------------;
; BANG TRA MA TRAN CHU ;
;--------------------------------;
DISTBL: DEFB 38H ;CHU 0
DEFB 44H
DEFB 44H
DEFB 44H
DEFB 38H
DEFB 00H
DEFB 40H ;SO 1
DEFB 48H
DEFB 7CH
DEFB 40H
DEFB 40H
DEFB 00H
DEFB 48H ;SO 2
DEFB 64H
DEFB 54H
DEFB 4CH
DEFB 40H
DEFB 00H
DEFB 44H ;SO 3
DEFB 44H
DEFB 54H
DEFB 54H
DEFB 28H
DEFB 00H
DEFB 20H ;SO 4
DEFB 30H
DEFB 28H
DEFB 24H
DEFB 7CH
DEFB 00H
DEFB 5CH ;SO 5
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 74H
DEFB 00H
DEFB 7CH ;SO 6
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 74H
DEFB 00H
DEFB 04H ;SO 7
DEFB 44H
DEFB 24H
DEFB 14H
DEFB 0CH
DEFB 00H
DEFB 7CH ;SO 8
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 7CH
DEFB 00H
DEFB 5CH ;SO 9
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 7CH
DEFB 00H
DEFB 70H ;CHU A
DEFB 28H
DEFB 24H
DEFB 28H
DEFB 70H
DEFB 00H
DEFB 7CH ;CHU B
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 6CH
DEFB 00H
DEFB 38H ;CHU C
DEFB 44H
DEFB 44H
DEFB 44H
DEFB 28H
DEFB 00H
DEFB 7CH ;CHU D
DEFB 44H
DEFB 44H
DEFB 44H
DEFB 38H
DEFB 00H
DEFB 7CH ;CHU E
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 44H
DEFB 00H
DEFB 7CH ;CHU F
DEFB 14H
DEFB 14H
DEFB 14H
DEFB 04H
DEFB 00H
;--------------------------------;
; CHUONG TRINH TANG IX AX6 LAN ;
;--------------------------------;
ADDAX: PUSH BC
LD C,A
LP0_2: CP 00H
JR Z,FINISH
LD B,06H
LP0_1: INC IX
DJNZ LP0_1
DEC A
JR LP0_2
FINISH: LD A,C
POP BC
RET
;--------------------------------;
; CHUONG TRINH XOA DEN ;
; CHUONG TRINH NAY KHI GOI PHAI ;
; DAT VAO THANH GHI A GIA TRI ;
; TUONG UNG VOI DEN CAN XOA ;
;--------------------------------;
CLRSCR: PUSH IX
PUSH DE
PUSH BC
LD D,06 ; XOA NHIEU NHAT LA 6 DEN
LD IX,DISBUF
SCF ; SET CO CARRY BANG 1
CCF ; DAT CO CARRY BANG 0
CLR01: LD B,06 ; MOT KY TU CO 6 COT
SRA A
JR NC,CLR02
LD E,00H
CLR03: LD (IX),E
INC IX
DJNZ CLR03
DEC D
JR NZ,CLR01
JR CLR05
CLR02: INC IX
DJNZ CLR02
DEC D
JR NZ,CLR01
CLR05: LD B,46
CLR04: LD (IX),E
INC IX
DJNZ CLR04
POP BC
POP DE
POP IX
RET
;--------------------------------;
; CHUONG TRINH DOC PHIM ;
;--------------------------------;
RDKEY: LD A,00
LD (KEYFLG),A
LD A,(KEY)
RET
;--------------------------------;
; CAC CHUONG TRINH DELAY ;
;--------------------------------;
DLKP: PUSH HL
LD HL,160FH
JR LPDL
DLPUT:PUSH HL
LD HL,0FH ;08H
JR LPDL
DLPUT0: PUSH HL
LD HL,01H ;03H
LPDL: DEC HL
LD A,H
CP 00H
JR NZ,LPDL
LD A,L
CP 00H
JR NZ,LPDL
POP HL
RET
;--------------------------------;
; THAY DOI NOI DUNG O NHO ;
; XU LY PHIM MEM, LAN 1 LAY NOI ;
; DUNG O NHO, LAN 2 GIAM DIA CHI ;
; NHAN PHIM GO TANG DIA CHI ;
;--------------------------------;
MEM: LD IX,MEMCH
LD (MNPTR),IX
LD IX,HEXBUF
LD H,(IX)
LD L,(IX+1)
JR NEWMEM
MEMCH: LD A,(KEYFLG)
CP 01H
JR Z,MEMNOW
RET
MEMNOW: CALL RDKEY
LD D,A
LD IX,HEXBUF
LD H,(IX)
LD L,(IX+1)
AND 80H
CP 80H
JR NZ,NUM
LD A,D
CP 80H
JR NZ,NXM1
DEC HL
JR NEWMEM
NXM1: LD A,D
CP 81H
JR NZ,MEMOUT
INC HL
JR NEWMEM
NUM: LD A,D
CALL ROLL2
JR MEMOUT
NEWMEM: LD A,01
LD (ROLPAS),A
MEMOUT: LD A,(HL)
LD (IX+2),A
LD (IX),H
LD (IX+1),L
JP DISCOD
;--------------------------------;
; THI HANH CHUONG TRINH UNG DUNG ;
;--------------------------------;
GO: LD IX,HEXBUF
LD H,(IX)
LD L,(IX+1)
PUSH HL
RET
ORG 0400H
;----------------------------------;
; NHAP CHUOI CAN QUANG BAO ;
; CHUOI NAY CHUA TAI DIA CHI 2000H ;
;----------------------------------;
CALL RS164
LD A,01
LD (ROLQB),A
LD (CH_FLG),A
LD A,0FFH
CALL CLRSCR
LD B,03H
LD IX,DISBUF+79
LD A,38H
LP011: LD (IX),A
DEC IX
DJNZ LP011
LD A,7CH
LD (IX),A
DEC IX
LD A,38H
LD (IX),A
DEC IX
LD A,10H
LD (IX),A
LD A,55H
LD (2000H),A
LD (2001H),A
LD HL,2002H
LD (ADISBUF),HL
PUTQB: LD A,00H
LD (CKOUT),A ; CANH XUONG XUNG CK
LD A,02H ; DU LIEU DE DICH VAO IC 74164
LD (CKOUT),A
LD A,03H ; CANH LEN XUNG CK
LD (CKOUT),A
LD D,80 ; SO COT BANG QUANG BAO LA 80
LD HL,(DISPTR)
MUXQB: LD A,(HL)
LD (DATAOUT),A
CALL DLPUT
PUSH DE
PUSH HL
LD A,00H
LD (DATAOUT),A ; TAT DEN DO PHIM
LD (KEY_OUT),A
LD A,(KEY_IN)
AND 01FH
CP 01FH
JR Z,LPQB002
CALL GET0
LPQB002:LD HL,LPQB_1
PUSH HL
LD IX,CH_QB ; GOI CHUONG TRINH XU LY PHIM
JP (IX)
LPQB_1: POP HL
POP DE
DEC D
JR Z,PUTQB
INC HL
LD A,00H
LD (CKOUT),A ; CANH XUONG XUNG CK
CALL DLPUT0
LD A,01H
LD (CKOUT),A ; CANH LEN XUNG CK
JR MUXQB
;------------------------------------------;
; CHUONG TRINH LAY MA PHIM AN QUANG BAO ;
;------------------------------------------;
GET0: LD A,(KEY_IN)
AND 1FH
CP 1FH
JR Z,NOKEY
LD B,00H ; B CHUA THU TU HANG CUA PHIM BI NHAN
LPW0: SRA A
JR NC,RWD0
INC B
JR LPW0
RWD0: SLA B
SLA B
SLA B
LD A,B
AND 38H
LD IX,KEY
LD (IX),A ; CHUA MA HANG VAO O NHO KEY
LD A,07FH ; DO TIM COT CUA PHIM BI NHAN
LPC0: LD D,A
LD (KEY_OUT),A
LD A,(KEY_IN)
AND 1FH
CP 1FH
JR NZ,CLFD0
LD A,D
RRCA
JR NC,NOKEY
JR LPC0
CLFD0: LD B,00H
LD A,D
CLCD0: RRCA
JR NC,RWCL0
INC B
JR CLCD0
RWCL0: LD A,B
AND 07H
LD B,A
LD A,(KEY)
OR B
LD D,A ; D CHUA MA HANG - COT CUA PHIM NHAN
LPFD0: LD A,(KEY_IN) ; CHO BUONG PHIM MOI XU LY
AND 01FH
CP 01FH
JR NZ,LPFD0
CALL DLKP ; CHONG DOI LUC NHA PHIM
LD A,D
LD (KEY),A ; KEY CHUA MA CUA PHIM BI NHAN
LD A,01H ; SET CO BAO CO PHIM BANG 01
LD (KEYFLG),A
NOKEY: RET
;--------------------------------;
; NHAP CHU CAN QUANG BAO ;
;--------------------------------;
CH_QB: LD A,(KEYFLG) ; BAO CO PHIM BI NHAN
CP 01H
JR Z,KEYQB
RET
KEYQB: CALL RDKEY
CP 00H
JR Z,SHIFT ;PHIM CHUYEN
CP 01
JR Z,BACKSPACE ;PHIM KHOANG TRONG
PUSH AF
LD A,(CH_FLG)
CP 00H
JR Z,BAN1
LD IX,DTBLH ; BAN MA CHU HOA
JR BAN2
BAN1: LD IX,DTBLT ; BAN MA CHU CO DAU
BAN2: POP AF
LD IY,DISBUF+74
PUSH HL
PUSH BC
CALL ADDAX
CALL ROLL80
LD HL,(ADISBUF)
LD B,06H
LOOP2: LD A,(IX)
LD (IY),A
LD (HL),A
INC IX
INC HL
INC IY
DJNZ LOOP2
LD (ADISBUF),HL
LD A,55H ; MA NHAN DANG KET THUC CHUOI
LD (HL),A
DEC HL
LD (DATAAD),HL
POP BC
POP HL
RET
SHIFT: PUSH AF ;NUMLOCK
LD A,(CH_FLG)
CP 00H
JR NZ,SH10
LD A,01H
LD (CH_FLG),A
JR SH11
SH10: LD A,00H
LD (CH_FLG),A
SH11: POP AF
RET
BACKSPACE: LD HL,(ADISBUF) ;ENTER
LD B,06
BK0: DEC HL
DJNZ BK0
LD A,55H
LD (HL),A
LD (ADISBUF),HL
LD B,06
BK1: CALL ROLPQB
DJNZ BK1
RET
;---------------------------------------;
; CHUONG TRINH ROLL DU LIEU QUA 80 COT ;
;---------------------------------------;
ROLL80: PUSH BC
PUSH IX
LD A,(ROLQB)
CP 01
JR Z,LP80
LD B,160
LD IX,DISBUF-80
LOOP80: LD A,(IX+6)
LD (IX),A
INC IX
DJNZ LOOP80
LP80: LD A,00
LD (ROLQB),A
POP IX
POP BC
RET
;--------------------------------;
; BANG TRA MA TRAN CHU HOA ;
;--------------------------------;
DTBLH:DEFB 08H ;DAU CHAM HOI
DEFB 04H
DEFB 54H
DEFB 0CH
DEFB 00H
DEFB 00H
DEFB 00H ;CHU J
DEFB 46H
DEFB 3CH
DEFB 04H
DEFB 00H
DEFB 00H
DEFB 7CH ;CHU W
DEFB 20H
DEFB 10H
DEFB 20H
DEFB 7CH
DEFB 00H
DEFB 44H ;CHU Z
DEFB 64H
DEFB 54H
DEFB 4CH
DEFB 44H
DEFB 00H
DEFB 70H ;CHU A
DEFB 28H
DEFB 24H
DEFB 28H
DEFB 70H
DEFB 00H
DEFB 7CH ;CHU B
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 6CH
DEFB 00H
DEFB 38H ;CHU C
DEFB 44H
DEFB 44H
DEFB 44H
DEFB 28H
DEFB 00H
DEFB 7CH ;CHU D
DEFB 44H
DEFB 44H
DEFB 44H
DEFB 38H
DEFB 00H
DEFB 00H ;DAU CHAM THAN
DEFB 00H
DEFB 5CH
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 7CH ;CHU L
DEFB 40H
DEFB 40H
DEFB 40H
DEFB 40H
DEFB 00H
DEFB 7CH ;CHU K
DEFB 10H
DEFB 28H
DEFB 44H
DEFB 00H
DEFB 00H
DEFB 44H ;CHU I
DEFB 44H
DEFB 7CH
DEFB 44H
DEFB 44H
DEFB 00H
DEFB 7CH ;CHU H
DEFB 10H
DEFB 10H
DEFB 10H
DEFB 7CH
DEFB 00H
DEFB 38H ;CHU G
DEFB 44H
DEFB 54H
DEFB 54H
DEFB 30H
DEFB 00H
DEFB 7CH ;CHU F
DEFB 14H
DEFB 14H
DEFB 14H
DEFB 04H
DEFB 00H
DEFB 7CH ;CHU E
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 44H
DEFB 00H
DEFB 7CH ;CHU M
DEFB 04H
DEFB 18H
DEFB 04H
DEFB 7CH
DEFB 00H
DEFB 7CH ;CHU N
DEFB 08H
DEFB 10H
DEFB 20H
DEFB 7CH
DEFB 00H
DEFB 7CH ;CHU P
DEFB 24H
DEFB 24H
DEFB 24H
DEFB 18H
DEFB 00H
DEFB 38H ;CHU 0
DEFB 44H
DEFB 44H
DEFB 44H
DEFB 38H
DEFB 00H
DEFB 40H ;SO 1
DEFB 48H
DEFB 7CH
DEFB 40H
DEFB 40H
DEFB 00H
DEFB 48H ;SO 2
DEFB 64H
DEFB 54H
DEFB 4CH
DEFB 00H
DEFB 40H
DEFB 00H
DEFB 44H ;SO 3
DEFB 44H
DEFB 54H
DEFB 54H
DEFB 28H
DEFB 00H
DEFB 00H ;KHOANG TRONG
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 04H ;CHU T
DEFB 04H
DEFB 7CH
DEFB 04H
DEFB 04H
DEFB 00H
DEFB 48H ;CHU S
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 24H
DEFB 00H
DEFB 7CH ;CHU R
DEFB 14H
DEFB 34H
DEFB 54H
DEFB 1CH
DEFB 00H
DEFB 38H ;CHU Q
DEFB 44H
DEFB 44H
DEFB 64H
DEFB 78H
DEFB 00H
DEFB 20H ;SO 4
DEFB 30H
DEFB 28H
DEFB 24H
DEFB 7CH
DEFB 00H
DEFB 5CH ;SO 5
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 74H
DEFB 00H
DEFB 7CH ;SO 6
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 74H
DEFB 00H
DEFB 40H ;DAU CHAM
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 3CH ;CHU U
DEFB 40H
DEFB 40H
DEFB 40H
DEFB 3CH
DEFB 00H
DEFB 1CH ;CHU V
DEFB 20H
DEFB 40H
DEFB 20H
DEFB 1CH
DEFB 00H
DEFB 44H ;CHU X
DEFB 28H
DEFB 10H
DEFB 28H
DEFB 44H
DEFB 00H
DEFB 04H ;CHU Y
DEFB 08H
DEFB 70H
DEFB 08H
DEFB 04H
DEFB 00H
DEFB 04H ;SO 7
DEFB 44H
DEFB 24H
DEFB 14H
DEFB 0CH
DEFB 00H
DEFB 7CH ;SO 8
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 7CH
DEFB 00H
DEFB 5CH ;SO 9
DEFB 54H
DEFB 54H
DEFB 54H
DEFB 7CH
DEFB 00H
DEFB 10H ;DAU -
DEFB 10H
DEFB 10H
DEFB 10H
DEFB 10H
DEFB 00H
;---------------------------------------;
; BANG TRA MA TRAN CHU CO DAU ;
;---------------------------------------;
DTBLT: DEFB 00H ;CHUYEN CHU HOA CO DAU
DEFB 00H
DEFB 44H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H ;PHIM XOA KY TU
DEFB 20H
DEFB 40H
DEFB 3AH
DEFB 00H
DEFB 00H
DEFB 70H ;CHÖÛ AÙ
DEFB 28H
DEFB 24H
DEFB 26H
DEFB 71H
DEFB 00H
DEFB 70H ; CHÖÛ AØ
DEFB 28H
DEFB 24H
DEFB 29H
DEFB 72H
DEFB 00H
DEFB 70H ;CHÖÛ AÂ
DEFB 2AH
DEFB 25H
DEFB 2AH
DEFB 70H
DEFB 00H
DEFB 70H ;CHÖÛ AÊ
DEFB 29H
DEFB 26H
DEFB 29H
DEFB 70H
DEFB 00H
DEFB 7EH ;CHÖÛ M SAÉT
DEFB 05H
DEFB 18H
DEFB 04H
DEFB 7CH
DEFB 00H
DEFB 7CH ;CHÖÛ Ñ
DEFB 54H
DEFB 44H
DEFB 44H
DEFB 38H
DEFB 00H
DEFB 00H ;DAÁU CHAÁM THANG
DEFB 00H
DEFB 5CH
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 7DH ;CHÖÛ N HOÛI
DEFB 0BH
DEFB 10H
DEFB 20H
DEFB 7CH
DEFB 00H
DEFB 7DH ;CHÖÛ N HUYEÀN
DEFB 0AH
DEFB 10H
DEFB 20H
DEFB 7CH
DEFB 00H
DEFB 7EH ;CHÖÛ N SAÉT
DEFB 09H
DEFB 10H
DEFB 20H
DEFB 7CH
DEFB 00H
DEFB 7EH ;CHÖÛ M NGAÕ
DEFB 05H
DEFB 1AH
DEFB 05H
DEFB 7CH
DEFB 00H
DEFB 7DH ;CHÖÛ M HOÛI
DEFB 07H
DEFB 18H
DEFB 04H
DEFB 7CH
DEFB 00H
DEFB 7DH ;CHÖÛ M HUYEÀN
DEFB 06H
DEFB 18H
DEFB 04H
DEFB 7CH
DEFB 00H
DEFB 7CH ;CHÖÛ EÂ
DEFB 56H
DEFB 55H
DEFB 56H
DEFB 44H
DEFB 00H
DEFB 7EH ;CHÖÛ N NGAÕ
DEFB 09H
DEFB 12H
DEFB 21H
DEFB 7CH
DEFB 00H
DEFB 38H ;CHÖÛ Ô
DEFB 44H
DEFB 44H
DEFB 45H
DEFB 3BH
DEFB 00H
DEFB 38H ;CHÖÛ OÙ
DEFB 44H
DEFB 44H
DEFB 46H
DEFB 39H
DEFB 00H
DEFB 38H ;CHÖÛ OÂ
DEFB 46H
DEFB 45H
DEFB 46H
DEFB 38H
DEFB 00H
DEFB 02H ;DAÁU SAÉT
DEFB 01H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 01H ;DAÁU HUYEÀN
DEFB 02H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 01H ;DAÁU HOÛI
DEFB 03H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H ;KHOAÛNG TROÁNG
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 3CH ;CHÖÛ UÙ
DEFB 40H
DEFB 40H
DEFB 42H
DEFB 3DH
DEFB 00H
DEFB 38H ;CHÖÛ OÕ
DEFB 46H
DEFB 45H
DEFB 46H
DEFB 39H
DEFB 00H
DEFB 38H ;CHÖÛ OÛ
DEFB 45H
DEFB 47H
DEFB 44H
DEFB 38H
DEFB 00H
DEFB 38H ;CHÖÛ OØ
DEFB 44H
DEFB 44H
DEFB 45H
DEFB 3AH
DEFB 00H
DEFB 02H ;DAÁU NGAÕ
DEFB 01H
DEFB 02H
DEFB 01H
DEFB 00H
DEFB 00H
DEFB 80H ;DAÁU NAËNG
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 06H ;CHÖÛ YÙ
DEFB 09H
DEFB 70H
DEFB 08H
DEFB 04H
DEFB 00H
DEFB 0C0H ;DAÁU CHAÁM
DEFB 0C0H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 00H
DEFB 3CH ;CHÖÛ Ö
DEFB 40H
DEFB 40H
DEFB 41H
DEFB 3FH
DEFB 00H
DEFB 3CH ;CHÖÛ UØ
DEFB 40H
DEFB 41H
DEFB 42H
DEFB 3CH
DEFB 00H
DEFB 3CH ;CHÖÛ UÛ
DEFB 40H
DEFB 41H
DEFB 43H
DEFB 3CH
DEFB 00H
DEFB 3CH ;CHÖÛ UÕ
DEFB 42H
DEFB 41H
DEFB 42H
DEFB 3DH
DEFB 00H
DEFB 05H ;CHÖÛ YØ
DEFB 0AH
DEFB 70H
DEFB 08H
DEFB 04H
DEFB 00H
DEFB 05H ;CHÖÛ YÛ
DEFB 0BH
DEFB 70H
DEFB 08H
DEFB 04H
DEFB 00H
DEFB 06H ;CHÖÛ YÕ
DEFB 09H
DEFB 72H
DEFB 09H
DEFB 04H
DEFB 00H
DEFB 10H ;DAÁU -
DEFB 10H
DEFB 10H
DEFB 10H
DEFB 10H
DEFB 00H
ORG 0800H
;------------------------------------;
; CHUONG TRINH QUANG BAO ;
; CHO CHU CHAY XUOI TU TRAI QUA PHAI ;
;------------------------------------;
PHAI: CALL RS164
LD A,0FFH
CALL CLRSCR
LD A,80H
LD (VAO),A
LD HL,(DATAAD)
LD (ADATA),HL
LD HL,QU_BAO
LD (MNPTR),HL
LD HL,DELAYVAL
LD (DELAYMEM),HL
LD A,00
LD (ZEROPAS),A
JP PUT
QU_BAO: LD HL,(DELAYMEM)
DEC HL
LD (DELAYMEM),HL
LD A,H
OR L
CP 00H
JP NZ,RETURN
LD HL,DELAYVAL
LD (DELAYMEM),HL
CALL ROLPQB
LD A,(ZEROPAS)
CP 01
JP Z,ZERODATA
CALL DATAP
RETURN: RET
DATAP: LD IX,DISBUF
LD IY,(ADATA)
LD A,(IY)
CP 55H
JR Z,QBPRS
LD (IX),A
DEC IY
LD (ADATA),IY
RET
QBPRS: LD A,01H
LD (ZEROPAS),A
LD (ZEROTIME),A
LD IX,DISBUF
LD A,00
LD (IX),A
RET
ZERODATA: LD A,(ZEROTIME)
INC A
CP 81
JR Z,DATARESET
LD (ZEROTIME),A
LD IX,DISBUF
LD A,00
LD (IX),A
RET
DATARESET: LD HL,(DATAAD)
LD (ADATA),HL
LD HL,DELAYVAL
LD (DELAYMEM),HL
LD A,00
LD (ZEROPAS),A
LD A,0FFH
CALL CLRSCR
LD A,00H
LD (VAO),A
RET
ORG 0A00H
;------------------------------------;
; CHUONG TRINH QUANG BAO ;
; CHO CHU CHAY XUOI TU PHAI QUA TRAI ;
;------------------------------------;
TRAI: CALL RS164
LD A,0FFH
CALL CLRSCR
LD A,40H
LD (VAO),A
LD HL,2002H
LD (ADATA),HL
LD HL,Q_BAO
LD (MNPTR),HL
LD HL,DELAYVAL
LD (DELAYMEM),HL
LD A,00H
LD (ZEROPAS),A
JP PUT
Q_BAO: LD HL,(DELAYMEM)
DEC HL
LD (DELAYMEM),HL
LD A,H
OR L
CP 00H
JP NZ,RETURN
LD HL,DELAYVAL
LD (DELAYMEM),HL
CALL ROLTQB
LD A,(ZEROPAS)
CP 01
JP Z,TZERODATA
CALL DATAT
RET
DATAT: LD IX,DISBUF+79
LD IY,(ADATA)
LD A,(IY)
CP 55H
JP Z,QBPRS
LD (IX),A
INC IY
LD (ADATA),IY
RET
TZERODATA: LD A,(ZEROTIME)
INC A
CP 81
JR Z,TDATARESET
LD (ZEROTIME),A
LD A,00
LD (IX),A
RET
TDATARESET: LD HL,2002H
LD (ADATA),HL
LD HL,DELAYVAL
LD (DELAYMEM),HL
LD A,00
LD (ZEROPAS),A
LD A,0FFH
CALL CLRSCR
LD A,00H
LD (VAO),A
RET
;---------------------------------------;
; CHUONG TRINH ROLL DU LIEU QUA 80 COT ;
; CHUONG TRINH NAY DUNG CHO QUANG BAO ;
;---------------------------------------;
ROLPQB: PUSH BC ; ROLL PHAI QUANG BAO
PUSH IX
LD B,160
LD IX,DISBUF
LQBP80: LD A,(IX+78)
LD (IX+79),A
DEC IX
DJNZ LQBP80
POP IX
POP BC
RET
;---------------------------------------;
; CHUONG TRINH ROLL DU LIEU QUA 80 COT ;
; CHUONG TRINH NAY DUNG CHO QUANG BAO ;
;---------------------------------------;
ROLTQB: PUSH BC ; ROLL TRAI QUANG BAO
PUSH IX
LD B,80
LD IX,DISBUF
LQBT80: LD A,(IX+1)
LD (IX),A
INC IX
DJNZ LQBT80
POP IX
POP BC
RET
ORG 0C00H
;------------------------;
;CHUONG TRINH DONG HO SO ;
;------------------------;
LD HL,CLOCK
LD (MNPTR),HL
LD A,00
LD (MINUTE),A
LD (SECOND),A
LD (HOUR),A
LD HL,DELAYVAL
LD (DELAYMEN),HL
JP PUT
CLOCK: LD HL,(DELAYMEN)
DEC HL
LD (DELAYMEN),HL
LD A,H
OR L
JP NZ,RETDH
LD HL,DELAYVAL+0F00H
LD (DELAYMEN),HL
LD A,(SECOND)
CALL TANG
LD (SECOND),A
CP 60H
JP NZ,RETCK
LD A,00H
LD (SECOND),A
LD A,(MINUTE)
CALL TANG
LD (MINUTE),A
CP 60H
JP NZ,RETCK
LD A,00H
LD (MINUTE),A
LD A,(HOUR)
CALL TANG
LD (HOUR),A
CP 24H
JP NZ,RETCK
LD A,00H
LD (HOUR),A
RETCK: LD A,(HOUR)
LD (HEXBUF),A
LD A,(MINUTE)
LD (HEXBUF + 1),A
LD A,(SECOND)
LD (HEXBUF + 2),A
CALL DISCODE
RETDH: RET
TANG: INC A
LD B,A
AND 0FH
CP 0AH
JP NZ,NO
LD A,B
ADD A,06H
LD B,A
NO: LD A,B
RET
;--------------------------------;
;CHUONG TRINH NHAN DU LIEU ;
;--------------------------------;
NDL: LD A,81H
LD (DIS_IO),A
LD A,55H
LD (2000H),A
LD (2001H),A
LD HL,2002H
LD A,10H
LD (VAO),A
LD A,00H
LD (VAO),A
TUAN: LD A,20H
LD (VAO),A
TUAN1: LD A,(VAO)
AND 01H
JR NZ,TUAN1
LD A,00H
LD (VAO),A
LD A,10H
LD (VAO),A
LD A,(DATAIN)
LD (HL),A
LD A,00H
LD (VAO),A
LD A,(HL)
CP 55H
JR NZ,TUAN2
LD A,20H
LD (VAO),A
LD A,00H
LD (VAO),A
CALL RESET
RET
TUAN2: INC HL
JR TUAN
;--------------------------------;
; VUNG NHO HUU DUNG 2000H-3C00H ;
;--------------------------------;
; CAC NHAN SU DUNG ;
;--------------------------------;
KEY_IO EQU 6003H
DATAIN EQU 6001H
DATAOUT EQU 8000H
KEY_IN EQU 6002H
KEY_OUT EQU 6000H
DIS_IO EQU 8003H
CKOUT EQU 8001H
SYS_SP EQU 3C02H
MNPTR EQU 3CF2H
ZEROPAS EQU 3CF9H
ZEROTIME EQU 3CFCH
KEY EQU 3D00H
DISBUF EQU 3E00H
HEXBUF EQU 3FD0H
ADISBUF EQU 3FDFH
ROLPAS EQU 3FE2H
DATAAD EQU 3FE5H
ROLQB EQU 3FE8H
KEYFLG EQU 3FEBH
CH_FLG EQU 3FEEH
DISPTR EQU 3FF1H
DELAYMEM EQU 3FF4H
ADATA EQU 3FF7H
HOUR EQU 3FFAH
MINUTE EQU 3FFCH
SECOND EQU 3FFEH
DELAYVAL EQU 0309H
VAO EQU 8002H
;--------------------------------;
; KET THUC ;
;--------------------------------;
END
program vd;
uses crt;
const
chu: array[1..111,1..6] of byte =
(($70,$28,$24,$28,$70,$00), {A} {1}
($70,$28,$24,$2A,$71,$00), {A1} {2}
($70,$28,$24,$29,$72,$00), {A2} {3}
($70,$28,$24,$29,$73,$00), {A3} {4}
($70,$2A,$25,$2A,$71,$00), {A4} {5}
($70,$28,$A4,$28,$70,$00), {A5} {6}
($70,$2A,$25,$2A,$70,$00), {A6} {7}
($70,$2A,$A5,$2A,$70,$00), {A65} {8}
($70,$29,$26,$29,$70,$00), {A8} {9}
($70,$29,$A6,$29,$70,$00), {A85} {10}
($72,$29,$24,$28,$70,$00), {1A} {11}
($71,$2A,$24,$28,$70,$00), {2A} {12}
($71,$2B,$2A,$28,$70,$00), {3A} {13}
($72,$29,$26,$29,$70,$00), {4A} {14}
($7c,$54,$54,$58,$20,$00), {B} {15}
($38,$44,$44,$44,$28,$00), {C} {16}
($3A,$45,$44,$44,$28,$00), {1C} {17}
($7c,$44,$44,$44,$38,$00), {D} {18}
($7C,$54,$54,$44,$38,$00), {D9} {19}
($7c,$54,$54,$54,$44,$00), {E} {20}
($7C,$56,$45,$46,$44,$00), {E6} {21}
($7C,$56,$D5,$56,$44,$00), {E65} {22}
($7c,$14,$14,$14,$04,$00), {F} {23}
($38,$44,$54,$54,$30,$00), {G} {24}
($7c,$10,$10,$10,$7c,$00), {H} {25}
($44,$44,$7c,$44,$44,$00), {I} {26}
($44,$44,$7C,$46,$45,$00), {I1} {27}
($44,$45,$7E,$44,$44,$00), {I2} {28}
($44,$45,$7F,$44,$44,$00), {I3} {29}
($46,$45,$7E,$45,$44,$00), {I4} {30}
($44,$44,$FC,$44,$44,$00), {I5} {31}
($46,$45,$7C,$44,$44,$00), {1I} {32}
($45,$46,$7C,$44,$44,$00), {2I} {33}
($45,$47,$7C,$44,$44,$00), {3I} {34}
($46,$45,$7E,$45,$44,$00), {4I} {35}
($44,$44,$3C,$04,$04,$00), {J} {36}
($7c,$10,$28,$44,$00,$00), {K} {37}
($7c,$40,$40,$40,$40,$00), {L} {38}
($7c,$04,$18,$04,$7c,$00), {M} {39}
($7E,$05,$18,$04,$7C,$00), {1M} {40}
($7D,$06,$18,$04,$7c,$00), {2M} {41}
($7D,$07,$18,$04,$7C,$00), {3M} {42}
($7E,$05,$1A,$05,$7c,$00), {4M} {43}
($7c,$08,$10,$20,$7c,$00), {N} {44}
($7E,$09,$10,$20,$7C,$00), {1N} {45}
($7D,$0A,$10,$20,$7c,$00), {2N} {46}
($7D,$0B,$10,$20,$7C,$00), {3N} {47}
($7E,$09,$12,$21,$7C,$00), {4N} {48}
($38,$44,$44,$44,$38,$00), {O} {49}
($38,$44,$44,$46,$39,$00), {O1} {50}
($38,$44,$44,$45,$3A,$00), {O2} {51}
($38,$44,$44,$45,$3B,$00), {O3} {52}
($38,$46,$45,$46,$39,$00), {O4} {53}
($38,$44,$C4,$44,$38,$00), {O5} {54}
($38,$46,$45,$46,$38,$00), {O6} {55}
($38,$46,$C5,$46,$38,$00), {O65} {56}
($38,$45,$47,$44,$38,$00), {O7} {57}
($38,$45,$c7,$44,$38,$00), {O75} {58}
($7c,$24,$24,$24,$18,$00), {P} {59}
($7E,$45,$44,$44,$18,$00), {1P} {60}
($7D,$46,$44,$44,$18,$00), {2P} {61}
($38,$44,$54,$64,$78,$00), {Q} {62}
($7c,$14,$34,$54,$5C,$00), {R} {63}
($08,$54,$54,$54,$20,$00), {S} {64}
($04,$04,$7c,$04,$04,$00), {T} {65}
($06,$05,$7C,$04,$04,$00), {1T} {66}
($3c,$40,$40,$40,$3c,$00), {U} {67}
($3C,$40,$40,$42,$3D,$00), {U1} {68}
($3C,$40,$41,$42,$3C,$00), {U2} {69}
($3C,$40,$41,$43,$3C,$00), {U3} {70}
($3C,$42,$41,$42,$3D,$00), {U4} {71}
($3C,$40,$c0,$40,$3C,$00), {U5} {72}
($3C,$40,$40,$41,$3F,$00), {U7} {73}
($3C,$40,$C0,$41,$3F,$00), {U75} {74}
($3E,$41,$40,$40,$3C,$00), {1U} {75}
($3D,$42,$40,$40,$3C,$00), {2U} {76}
($3D,$43,$40,$40,$3C,$00), {3U} {77}
($3E,$41,$42,$41,$3C,$00), {4U} {78}
($1c,$20,$40,$20,$1c,$00), {V} {79}
($7C,$20,$10,$20,$7C,$00), {W} {80}
($44,$28,$10,$28,$44,$00), {X} {81}
($04,$08,$70,$08,$04,$00), {Y} {82}
($06,$09,$70,$08,$04,$00), {1Y} {83}
($05,$0A,$70,$08,$04,$00), {2Y} {84}
($05,$0B,$70,$08,$04,$00), {3Y} {85}
($06,$09,$72,$09,$04,$00), {4Y} {86}
($44,$64,$54,$4C,$44,$00), {Z} {87}
($38,$44,$44,$44,$38,$00), {0} {88}
($50,$48,$7C,$40,$40,$00), {1} {89}
($48,$64,$54,$4C,$00,$00), {2} {90}
($44,$44,$54,$54,$28,$00), {3} {91}
($20,$30,$28,$24,$7C,$00), {4} {92}
($5C,$54,$54,$54,$74,$00), {5} {93}
($7C,$54,$54,$54,$74,$00), {6} {94}
($04,$44,$24,$14,$0C,$00), {7} {95}
($7C,$54,$54,$54,$7C,$00), {8} {96}
($5C,$54,$54,$54,$7C,$00), {9} {97}
($00,$00,$00,$00,$00,$00), { } {98}
($40,$00,$00,$00,$00,$00), {.} {99}
($00,$10,$10,$10,$00,$00), {-} {100}
($08,$04,$54,$0C,$00,$00), {?} {101}
($00,$00,$5C,$00,$00,$00), {!} {102}
($00,$00,$28,$00,$00,$00), {:} {103}
($02,$01,$00,$00,$00,$00), {/} {104}
($01,$02,$00,$00,$00,$00), {\} {105}
($01,$03,$00,$00,$00,$00), {'} {106}
($02,$01,$02,$01,$00,$00), {~} {107}
($04,$08,$70,$0A,$05,$00), {y1} {108}
($04,$08,$71,$0A,$04,$00), {y2} {109}
($04,$08,$71,$0B,$04,$00), {y3} {110}
($04,$0A,$71,$0A,$05,$00)); {y4} {111}
var i,n,k:integer;x,h:byte;ch:char;st:string;
{--------------------------}
procedure cua_so;
var x,y,rong,cao:word;origmode,lastrow:word;done:boolean;
Begin
rong :=20;
cao := 44;
X:=5;
Y:=4;
begin
textbackground(white);
textcolor(black);
clrscr;
gotoxy(35,6);
window (X,Y,x+rong,y+caO);
textbackground(BLUE);
textcolor(white);
end;
readln;
end;
{-------------------------------}
procedure test;
var x,t:integer;ch:char;
begin
clrscr;
repeat
t:= port[$379] and $40;
if t=$40 then
begin
gotoxy(25,2);
textcolor(yellow);
writeln('CHUA CAM DAY CONG MAY IN & KIT Z80');
delay(65);
clrscr;
end;
if t$40 then
begin
gotoxy(25,2);
writeln('DA NOI DAY CONG MAY IN & KIT Z80');
delay(65);
gotoxy(25,3);
writeln('NHAN PHIM ">" DE NHAP NOI DUNG QUANG BAO');
delay(65);
end;
until keypressed;
end;
{------------------------------}
procedure bat_tay1;
begin
repeat
x:=port[$379] and $40;
until x=$00;
repeat
x:=port[$379]and $80;
until x=$00;
end;
{--------------------------------}
procedure bat_tay2;
begin
port[$37A]:=$0B;
repeat
x:=port[$379]and $40;
until x=$40;
port[$37A]:=$0A;
repeat
x:=port[$379] and $40;
until x=$00;
n:=n+1;
end;
{--------------------------------}
procedure xuat( var h:byte);
var x:integer;
begin
i:=1;
n:=0;
repeat
case upcase(st[i]) of
'$':case upcase(st[i+1]) of
'0':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[88,k];
bat_tay2;
end;
i:=i+2;
end;
'1':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[89,k];
bat_tay2;
end;
i:=i+2;
end;
'2':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[90,k];
bat_tay2;
end;
i:=i+2;
end;
'3':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[91,k];
bat_tay2;
end;
i:=i+2;
end;
'4':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[92,k];
bat_tay2;
end;
i:=i+2;
end;
'5':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[93,k];
bat_tay2;
end;
i:=i+2;
end;
'6':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[94,k];
bat_tay2;
end;
i:=i+2;
end;
'7':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[95,k];
bat_tay2;
end;
i:=i+2;
end;
'8':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[96,k];
bat_tay2;
end;
i:=i+2;
end;
'9':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[97,k];
bat_tay2;
end;
i:=i+2;
end;
else
i:=i+1;
end;
'A':case upcase(st[i+1]) of
'1':
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[2,k];
bat_tay2;
end;
i:=i+2;
end;
'2':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[3,k];
bat_tay2;
end;
i:=i+2;
end;
'3':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[4,k];
bat_tay2;
end;
i:=i+2;
end;
'4':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[5,k];
bat_tay2;
end;
i:=i+2;
end;
'5':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[6,k];
bat_tay2;
end;
i:=i+2;
end;
'6': case upcase(st[i+2]) of
'5':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[8,k];
bat_tay2;
end;
i:=i+3;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[7,k];
bat_tay2;
end;
i:=i+2;
end;
end;
'8': case upcase(st[i+2]) of
'5':
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[10,k];
bat_tay2;
end;
i:=i+3;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[9,k];
bat_tay2;
end;
i:=i+2;
end;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[1,k];
bat_tay2;
end;
i:=i+1;
end;
end;
'B': begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[15,k];
bat_tay2;
end;
i:=i+1;
end;
'C': begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[16,k];
bat_tay2;
end;
i:=i+1;
end;
'D':case upcase(st[i+1]) of
'9': begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[19,k];
bat_tay2;
end;
i:=i+2;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[18,k];
bat_tay2;
end;
i:=i+1;
end;
end;
'E':case upcase(st[i+1]) of
'6':case upcase(st[i+2]) of
'5': begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[22,k];
bat_tay2;
end;
i:=i+3;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[21,k];
bat_tay2;
end;
i:=i+2;
end;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[20,k];
bat_tay2;
end;
i:=i+1;
end;
end;
'F':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[23,k];
bat_tay2;
end;
i:=i+1;
end;
'G':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[24,k];
bat_tay2;
end;
i:=i+1;
end;
'H':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[25,k];
bat_tay2;
end;
i:=i+1;
end;
'I':case upcase(st[i+1]) of
'1':
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[27,k];
bat_tay2;
end;
i:=i+2;
end;
'2':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[28,k];
bat_tay2;
end;
i:=i+2;
end;
'3':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[29,k];
bat_tay2;
end;
i:=i+2;
end;
'4':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[30,k];
bat_tay2;
end;
i:=i+2;
end;
'5':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[31,k];
bat_tay2;
end;
i:=i+2;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[26,k];
bat_tay2;
end;
i:=i+1;
end;
end;
'J':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[36,k];
bat_tay2;
end;
i:=i+1;
end;
'K':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[37,k];
bat_tay2;
end;
i:=i+1;
end;
'L':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[38,k];
bat_tay2;
end;
i:=i+1;
end;
'M':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[39,k];
bat_tay2;
end;
i:=i+1;
end;
'N':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[44,k];
bat_tay2;
end;
i:=i+1;
end;
'O':case upcase(st[i+1]) of
'1':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[50,k];
bat_tay2;
end;
i:=i+2;
end;
'2':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[51,k];
bat_tay2;
end;
i:=i+2;
end;
'3':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[52,k];
bat_tay2;
end;
i:=i+2;
end;
'4':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[53,k];
bat_tay2;
end;
i:=i+2;
end;
'5':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[54,k];
bat_tay2;
end;
i:=i+2;
end;
'6': case upcase(st[i+2]) of
'5':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[56,k];
bat_tay2;
end;
i:=i+3;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[55,k];
bat_tay2;
end;
i:=i+2;
end;
end;
'7': case upcase(st[i+2]) of
'5':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[58,k];
bat_tay2;
end;
i:=i+3;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[57,k];
bat_tay2;
end;
i:=i+2;
end;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[49,k];
bat_tay2;
end;
i:=i+1;
end;
end;
'P':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[59,k];
bat_tay2;
end;
i:=i+1;
end;
'Q':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[62,k];
bat_tay2;
end;
i:=i+1;
end;
'R':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[63,k];
bat_tay2;
end;
i:=i+1;
end;
'S':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[64,k];
bat_tay2;
end;
i:=i+1;
end;
'T':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[65,k];
bat_tay2;
end;
i:=i+1;
end;
'U':case upcase(st[i+1]) of
'1':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[68,k];
bat_tay2;
end;
i:=i+2;
end;
'2':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[69,k];
bat_tay2;
end;
i:=i+2;
end;
'3':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[70,k];
bat_tay2;
end;
i:=i+2;
end;
'4':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[71,k];
bat_tay2;
end;
i:=i+2;
end;
'5':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[72,k];
bat_tay2;
end;
i:=i+2;
end;
'7': case upcase(st[i+2]) of
'5':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[74,k];
bat_tay2;
end;
i:=i+3;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[73,k];
bat_tay2;
end;
i:=i+2;
end;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[67,k];
bat_tay2;
end;
i:=i+1;
end;
end;
'V':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[79,k];
bat_tay2;
end;
i:=i+1;
end;
'W':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[80,k];
bat_tay2;
end;
i:=i+1;
end;
'X':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[81,k];
bat_tay2;
end;
i:=i+1;
end;
'Y':begin
case upcase(st[i+1]) of
'1':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[108,k];
bat_tay2;
end;
i:=i+2;
end;
'2':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[109,k];
bat_tay2;
end;
i:=i+2;
end;
'3':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[110,k];
bat_tay2;
end;
i:=i+2;
end;
'4':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[111,k];
bat_tay2;
end;
i:=i+2;
end;
else
begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[82,k];
bat_tay2;
end;
i:=i+1;
end;
end;
end;
'Z':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[87,k];
bat_tay2;
end;
i:=i+1;
end;
'1':case upcase(st[i+1]) of
'A':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[11,k];
bat_tay2;
end;
i:=i+2;
end;
'C':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[17,k];
bat_tay2;
end;
i:=i+2;
end;
'I':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[32,k];
bat_tay2;
end;
i:=i+2;
end;
'M':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[40,k];
bat_tay2;
end;
i:=i+2;
end;
'N':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[45,k];
bat_tay2;
end;
i:=i+2;
end;
'P':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[60,k];
bat_tay2;
end;
i:=i+2;
end;
'T':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[66,k];
bat_tay2;
end;
i:=i+2;
end;
'U':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[75,k];
bat_tay2;
end;
i:=i+2;
end;
'Y':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[83,k];
bat_tay2;
end;
i:=i+2;
end;
else;
i:=i+1;
end;
'2':case upcase(st[i+1]) of
'A':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[12,k];
bat_tay2;
end;
i:=i+2;
end;
'I':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[33,k];
bat_tay2;
end;
i:=i+2;
end;
'M':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[41,k];
bat_tay2;
end;
i:=i+2;
end;
'P':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[61,k];
bat_tay2;
end;
i:=i+2;
end;
'N':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[46,k];
bat_tay2;
end;
i:=i+2
end;
'U':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[76,k];
bat_tay2;
end;
i:=i+2;
end;
'Y':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[84,k];
bat_tay2;
end;
i:=i+2;
end;
else;
i:=i+1;
end;
'3':case upcase(st[i+1]) of
'A':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[13,k];
bat_tay2;
end;
i:=i+2;
end;
'I':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[34,k];
bat_tay2;
end;
i:=i+2;
end;
'M':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[42,k];
bat_tay2;
end;
i:=i+2;
end;
'N':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[47,k];
bat_tay2;
end;
i:=i+2;
end;
'U':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[77,k];
bat_tay2;
end;
i:=i+2;
end;
'Y':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[85,k];
bat_tay2;
end;
i:=i+2;
end;
else
i:=i+1;
end;
'4':case upcase(st[i+1]) of
'A':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[14,k];
bat_tay2;
end;
i:=i+2;
end;
'I':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[35,k];
bat_tay2;
end;
i:=i+2;
end;
'M':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[43,k];
bat_tay2;
end;
i:=i+2;
end;
'N':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[48,k];
bat_tay2;
end;
i:=i+2;
end;
'U':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[78,k];
bat_tay2;
end;
i:=i+2;
end;
'Y':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[86,k];
bat_tay2;
end;
i:=i+2;
end;
else
i:=i+1;
end;
' ':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[98,k];
bat_tay2;
end;
i:=i+1;
end;
'.':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[99,k];
bat_tay2;
end;
i:=i+1;
end;
':':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[103,k];
bat_tay2;
end;
i:=i+1;
end;
'-':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[100,k];
bat_tay2;
end;
i:=i+1;
end;
'?':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[101,k];
bat_tay2;
end;
i:=i+1;
end;
'!':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[102,k];
bat_tay2;
end;
i:=i+1;
end;
'/':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[104,k];
bat_tay2;
end;
i:=i+1;
end;
'\':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[105,k];
bat_tay2;
end;
i:=i+1;
end;
'"':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[106,k];
bat_tay2;
end;
i:=i+1;
end;
'~':begin
for k:=1 to 6 do
begin
bat_tay1;
port[$378]:=chu[107,k];
bat_tay2;
end;
i:=i+1;
end;
else
halt;
end;
until (i=length(st)+1) or(keypressed) ;
repeat
x:=port[$379]and $80;
until x=$00;
port[$378]:=$55;
port[$37A]:=$0B;
repeat
x:=port[$379]and $80;
until x=$80;
repeat
x:=port[$379] and $C0;
until x=$C0;
port[$37A]:=$0A;
repeat
x:=port[$379] and $80;
until x=$80;
repeat
x:=port[$379]and $80;
until x=$00;
port[$378]:=$00;
end;
{--------------------------------------}
PROCEDURE NHAP;
begin
CLRSCR;
test;
cua_so;
repeat
x:=port[$379] and $40;
until x=$00;
gotoxy(25,2);
writeln('********************************');
gotoxy(25,3);
writeln('* NHAP CHU HIEN THI QUANG BAO *');
gotoxy(25,4);
writeln('*===============*==============*');
gotoxy(25,5);
writeln('*NHAP CHU CO DAU THEO FONT VNI *');
gotoxy(25,6);
writeln('*===============*==============*');
gotoxy(25,7);
writeln('********************************');
gotoxy(25,9);
readln(st);
xuat(h);
repeat
x:=port[$379] and $80;
until x=$00;
gotoxy(25,11);
clrscr;
gotoxy(25,7);
writeln('NHAN FIM > KIT Z80 ');
gotoxy(25,8);
writeln('NHAN FIM > CHON TIEP');
end;
{--------------------------------------}
procedure chay_phai;
begin
clrscr;
gotoxy(25,4);
writeln('CHUONG TRINH CHAY PHAI XONG');
end;
{--------------------------------------}
procedure chay_trai;
begin
clrscr;
repeat
x:= port[$379] and $20;
until x=$20;
repeat
x:=port[$379] and $80;
until x=$80;
gotoxy(25,4);
writeln('CHUONG TRINH CHAY TRAI XONG');
end;
{--------------------------------------}
procedure xem_so_byte_truyen;
begin
clrscr;
gotoxy(25,3);
writeln('SO BYTE TRUYEN DUOC:',n:3,'BYTE');
gotoxy(25,4);
writeln('DU LIEU DA XONG > CHON TIEP');
end;
{--------------------------------------}
procedure thoat;
begin
clrscr;
gotoxy(25,2);
writeln('BAN CO CHAC LA THOAT KHONG "<<(c,C)/(k,K))"?:');
gotoxy(25,3);
writeln('CO: NHAN ">" ');
gotoxy(25,4);
writeln('KHONG: NHAN ">" ' );
end;
{---------chuong trinh chinh-----------}
Begin
repeat
clrscr;
port[$37A]:=$0A;
gotoxy(25,5);
writeln('BAN LAM VIEC THEO CAU CHI DAN');
gotoxy(25,7);
writeln('1.GOI CHUONG TRINH DON NHAN DU LIEU');
gotoxy(25,8);
writeln('2.GOI CHUONG TRINH CHAY CHU QUANG BAO QUA PHAI ');
gotoxy(25,9);
writeln('3.GOI CHUONG TRINH CHAY CHU QUANG BAO QUA TRAI ');
gotoxy(25,10);
writeln('4.XEM SO BYTE DA XUAT');
gotoxy(25,11);
writeln('5.THOAT');
gotoxy(25,13);
writeln('NHAP VAO SO TUONG UNG NEU CAN CHON MUC GHI CHU TREN');
gotoxy(25,14);
readln(ch);
case upcase(ch) of
'1':begin
port[$37A]:=$08;
nhap;
port[$37A]:=$0A;
end;
'2':begin
port[$37A]:=$0E;
chay_phai;
port[$37A]:=$0A;
end;
'3':begin
port[$37A]:=$06;
chay_trai;
port[$37A]:=$0A;
end;
'4':xem_so_byte_truyen;
'5':thoat;
else
gotoxy(25,15);
writeln('BAN NHAP SAI YEU CAU NHAP LAI');
sound(350);
repeat until keypressed;
nosound;
end;
until readkey= 'c';
end.
Các file đính kèm theo tài liệu này:
- LUANVAN.DOC
- TTRINH.DOC