Luận văn tốt nghiệp
Mục lục
Chương I : Dẫn nhập
I. Đặt vấn đề:
II. Mục đích yêu cầu:
1. Mục đích
2. Yêu cầu :
Chương II: Khảo sát vi điều khiển 8951
I. Cấu tạo vi điều khiển họ MSC-51
1. Giới thiệu cấu trúc phần cứng họ MSC-51 (8951):
2. Khảo sát sơ đồ chân 8951 và chức năng từng chân :
3. Cấu trúc bên trong vi điều khiển
II. Tóm tắt tập lệnh của 8951 :
1. Các mode định vị (Addressing Mode) :
2. Các kiểu lệnh (Instruction Types):
III. Chương trình ngôn ngữ Assembly của 8951:
1. Giới thiệu :
2. Hoạt động của trình biên dịch (Assembler Operation)
3. Sự sắp đặt chương trình ngôn ngữ Assmebly :
4. Sự tính toán biểu thức của Assemble Time (Assemble Time Expression Evaluation):
5. Các chỉ thị biên dịch :
Chương III: Khảo sát vi mạch 8279
I. Cấu trúc phần cứng IC 8279
II. Cấu trúc phần mềm của 8279
Chương IV: Giới thiệu kit vi điều khiển 8951
I. Sơ đồ khối kit vi điều khiển 8951:
1. Đơn vị xử lý trung tâm :
2. Bộ nhớ :
Chương V: Thiết kế phần mềm
I. Giới thiệu :
II. Sơ đồ kết nối mạch nạp EPROM nội :
III. Khởi tạo cổng giao tiếp 8255 :
IV. Chương trình đọc dữ liệu từ EPROM nội :
V. Chương trình nạp EPROM nội :
VI. Chương trình xoá EPROM nội :
Thi công mạch
Hướng phát triển đề tài
Kết luận
Tài liệu tham khảo
Phụ lục
100 trang |
Chia sẻ: banmai | Lượt xem: 1915 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Khảo sát vi điều khiển 8951, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
(C) - (Rn)
SUBB A, direct : (A) (A) - (C) - (direct)
SUBB A, @ Ri : (A) (A) - (C) - ((Ri))
SUBB A, # data : (A) (A) - (C) - # data
INC
INC A : (A) (A) + 1
INC direct : (direct) (direct) + 1
INC Ri : ((Ri)) ((Ri)) + 1
INC Rn : (Rn) (Rn) + 1
INC DPTR : (DPTR) (DPTR) + 1
DEC
DEC A : (A) (A) - 1
DEC direct : (direct) (direct) - 1
DEC @Ri : ((Ri)) ((Ri)) - 1
DEC Rn : (Rn) (Rn) - 1
MULL AB : (A) LOW [(A) x (B)];coù aûnh höôûng côø OV
: (B) HIGH [(A) x (B)];côø Cary ñöôïc xoùa.
DIV AB : (A) Integer Result of [(A)/(B)]; côø OV
: (B) Remainder of [(A)/(B)]; côø Carry xoùa
DA A :Ñieàu chænh thanh ghi A thaønh soá BCD ñuùng trong pheùp coäng BCD (thöôøng DA A ñi keøm vôùi ADD, ADDC)
Neáu [(A3-A0)>9] vaø [(AC)=1] (A3A0) (A3A0) + 6.
Neáu [(A7-A4)>9] vaø [(C)=1] (A7A4) (A7A4) + 6.
2.2 Caùc hoaït ñoäng logic (Logic Operation):
Taát caû caùc leänh logic söû duïng thanh ghi A nhö laø moät trong nhöõng toaùn haïng thöïc thi moät chu kyø maùy, ngoaøi A ra maát 2 chu kyø maùy. Nhöõng hoaït ñoäng logic coù theå ñöôïc thöïc hieän treân baát kyø byte naøo trong vò trí nhôù döõ lieäu noäi maø khoâng qua thanh ghi A.
Caùc hoaït ñoäng logic ñöôïc toùm taét nhö sau:
ANL
ANL A, Rn : (A) (A) AND (Rn).
ANL A, direct : (A) (A) AND (direct).
ANL A,@ Ri : (A) (A) AND ((Ri)).
ANL A, # data : (A) (A) AND (# data).
ANL direct, A : (direct) (direct) AND (A).
ANL direct, # data : (direct) (direct) AND # data.
ORL
ORL A, Rn : (A) (A) OR (Rn).
ORL A, direct : (A) (A) OR (direct).
ORL A,@ Ri : (A) (A) OR ((Ri)).
ORL A, # data : (A) (A) OR # data.
ORL direct, A : (direct) (direct) OR (A).
ORL direct, # data : (direct) (direct) OR # data.
XRL
XRL A, Rn : (A) (A) (Rn).
XRL A, direct : (A) (A) (direct).
XRL A,@ Ri : (A) (A) ((Ri)).
XRL A, # data : (A) (A) # data.
XRL direct, A : (direct) (direct) (A).
XRL direct, # data : (direct) (direct) # data.
CLR A : (A) 0
CLR C : (C) 0
CLR Bit : (Bit) 0
RL A : Quay voøng thanh ghi A qua traùi 1 bit
(An + 1) (An); n = 06
(A0) (A7)
RLC A : Quay voøng thanh ghi A qua traùi 1 bit coù côø Carry
(An + 1) (An); n = 06
(C) (A7)
(A0) (C)
RR A : Quay voøng thanh ghi A qua phaûi 1 bit
(An + 1) (An); n = 06
(A0) (A7)
RRC A : Quay voøng thanh ghi A qua phaûi 1 bit coù côø Carry
(An + 1) (An); n = 06
(C) (A7)
(A0) (C)
SWAP A : Ñoåi choå 4 bit thaáp vaø 4 bit cao cuûa A cho nhau (A3A0)(A7A4).
2.3 Caùc leänh reõ nhaùnh:
Coù nhieàu leänh ñeå ñieàu khieån leân chöông trình bao goàm vieäc goïi hoaëc traû laïi töø chöông trình con hoaëc chia nhaùnh coù ñieàu kieän hay khoâng coù ñieàu kieän.
Taát caû caùc leänh reõ nhaùnh ñeàu khoâng aûnh höôûng ñeán côø. Ta coù theå ñònh nhaûn caàn nhaûy tôùi maø khoâng caàn roõ ñòa chæ, trình bieân dòch seõ ñaët ñòa chæ nôi caàn nhaûy tôùi vaøo ñuùng khaåu leänh ñaõ ñöa ra.
Sau ñaây laø söï toùm taét töøng hoaït ñoäng cuûa leänh nhaûy.
JC rel : Nhaûy ñeán “rel” neáu côø Carry C = 1.
JNC rel : Nhaûy ñeán “rel” neáu côø Carry C = 0.
JB bit, rel : Nhaûy ñeán “rel” neáu (bit) = 1.
JNB bit, rel : Nhaûy ñeán “rel” neáu (bit) = 0.
JBC bit, rel : Nhaûy ñeán “rel” neáu bit = 1 vaø xoùa bit.
ACALL addr11: Leänh goïi tuyeät ñoái trong page 2K.
(PC) (PC) + 2
(SP) (SP) + 1
((SP)) (PC7PC0)
(SP) (SP) + 1
((SP)) (PC15PC8)
(PC10PC0) page Address.
LCALL addr16: Leänh goïi daøi chöông trình con trong 64K.
(PC) (PC) + 3
(SP) (SP) + 1
((SP)) (PC7PC0)
(SP) (SP) + 1
((SP)) (PC15PC8)
(PC) Addr15Addr0.
RET : Keát thuùc chöông trình con trôû veà chöông trình chính.
(PC15PC8) (SP)
(SP) (SP) - 1
(PC7PC0) ((SP))
(SP) (SP) -1.
RETI : Keát thuùc thuû tuïc phuïc vuï ngaét quay veà chöông trình chính hoaït ñoäng töông töï nhö RET.
AJMP Addr11 : Nhaûy tuyeät ñoái khoâng ñieàu kieän trong 2K.
(PC) (PC) + 2
(PC10PC0) page Address.
LJMP Addr16 : Nhaûy daøi khoâng ñieàu kieän trong 64K
Hoaït ñoäng töông töï leänh LCALL.
SJMP rel :Nhaûy ngaén khoâng ñieàu kieän trong (-128127) byte
(PC) (PC) + 2
(PC) (PC) + byte 2
JMP @ A + DPTR:Nhaûy khoâng ñieàu kieän ñeán ñòa chæ (A) + (DPTR)
(PC) (A) + (DPTR)
JZ rel : Nhaûy ñeán A = 0. Thöïc haønh leänh keá neáu A 0.
(PC) (PC) + 2
(A) = 0 (PC) (PC) + byte 2
JNZ rel : Nhaûy ñeán A 0. Thöïc haønh leänh keá neáu A = 0.
(PC) (PC) + 2
(A) 0 (PC) (PC) + byte 2
CJNE A, direct, rel : So saùnh vaø nhaûy ñeán A direct
(PC) (PC) + 3
(A) (direct) (PC) (PC) + Relative Address.
(A) < (direct) C = 1
(A) > (direct) C = 0
(A) = (direct). Thöïc haønh leänh keá tieáp
CJNE A, # data, rel : Töông töï leänh CJNE A, direct, rel.
CJNE Rn, # data, rel : Töông töï leänh CJNE A, direct, rel.
CJNE @ Ri, # data, rel : Töông töï leänh CJNE A, direct, rel.
DJNE Rn, rel : Giaûm Rn vaø nhaûy neáu Rn 0.
(PC) (PC) + 2
(Rn) (Rn) -1
(Rn) 0 (PC) (PC) + byte 2.
DJNZ direct, rel : Töông töï leänh DJNZ Rn, rel.
2.4 Caùc leänh dòch chuyeån döõ lieäu:
Caùc leänh dòch chuyeån döõ lieäu trong nhöõng vuøng nhôù noäi thöïc thi 1 hoaëc 2 chu kyø maùy. Maãu leänh MOV , cho pheùp di chuyeån döõ lieäu baát kyø 2 vuøng nhôù naøo cuûa RAM noäi hoaëc caùc vuøng nhôù cuûa caùc thanh ghi chöùc naêng ñaëc bieät maø khoâng thoâng qua thanh ghi A.
Vuøng Ngaên xeáp cuûa 8951 chæ chöùa 128 byte RAM noäi, neáu con troû Ngaên xeáp SP ñöôïc taêng quaù ñòa chæ 7FH thì caùc byte ñöôïc PUSH vaøo seõ maát ñi vaø caùc byte POP ra thì khoâng bieát roõ.
Caùc leänh dòch chuyeån boä nhôù noäi vaø boä nhôù ngoaïi duøng söï ñònh vò giaùn tieáp. Ñòa chæ giaùn tieáp coù theå duøng ñòa chæ 1 byte (@ Ri) hoaëc ñòa chæ 2 byte (@ DPTR). Taát caû caùc leänh dòch chuyeån hoaït ñoäng treân toaøn boä nhôù ngoaøi thöïc thi trong 2 chu kyø maùy vaø duøng thanh ghi A laøm toaùn haïng DESTINATION.
Vieäc ñoïc vaø ghi RAM ngoaøi (RD vaø WR) chæ tích cöïc trong suoát quaù trình thöïc thi cuûa leänh MOVX, coøn bình thöôøng RD vaø WR khoâng tích cöïc (möùc 1).
Taát caû caùc leänh dòch chuyeån ñeàu khoâng aûnh höôûng ñeán côø. Hoaït ñoäng cuûa töøng leänh ñöôïc toùm taét nhö sau:
MOV A,Rn : (A) (Rn)
MOV A, direct : (A) (direct)
MOV A, @ Ri : (A) ((Ri))
MOV A, # data : (A) # data
MOV Rn, A : (Rn) (A)
MOV Rn, direct : (Rn) (direct)
MOV Rn, # data : (Rn) # data
MOV direct, A : (direct) (A)
MOV direct, Rn : (direct) (Rn)
MOV direct, direct : (direct) (direct)
MOV direct, @ Ri : (direct) ((Ri))
MOV direct, # data : (direct) data
MOV @ Ri, A : ((Ri)) (A)
MOV @ Ri, direct : ((Ri)) (direct)
MOV @ Ri, # data : ((Ri)) # data
MOV DPTR, # data16 : (DPTR) # data16
MOV A, @ A + DPTR : (A) (A) + (DPTR)
MOV @ A + PC : (PC) (PC) + 1
(A) (A) + (PC)
MOVX A, @ Ri : (A) ((Ri))
MOVX A, @ DPTR : (A) ((DPTR))
MOVX @ Ri, A : ((Ri)) (A)
MOVX @ DPTR, A : ((DPTR)) (A)
PUSH direct : Caát döõ lieäu vaøo Ngaên xeáp
(SP) (SP) + 1
(SP) (Drirect)
POP direct : Laáy töø Ngaên xeáp ra direct
(direct) ((SP))
(SP) (SP) - 1
XCH A, Rn : Ñoåi choå noäi dung cuûa A vôùi Rn
(A) (Rn)
XCH A, direct : (A) (direct)
XCH A, @ Ri : (A) ((Ri))
XCHD A, @ Ri : Ñoåi choå 4 bit thaáp cuûa (A) vôùi ((Ri))
(A3A0) ((Ri3Ri0))
2.5 Caùc leänh luaän lyù (Boolean Instruction):
8951 chöùa moät boä xöû lí luaän lyù ñaày ñuû cho caùc hoaït ñoäng bit ñôn, ñaây laø moät ñieåm maïnh cuûa hoï vi ñieàu khieån MSC-51 maø caùc hoï vi ñieàu khieån khaùc khoâng coù.
RAM noäi chöùa 128 bit ñôn vò vaø caùc vuøng nhôù caùc thanh ghi chöùc naêng ñaëc bieät caáp leân ñeán 128 ñôn vò khaùc. Taát caû caùc ñöôøng Port laø bit ñònh vò, moãi ñöôøng coù theå ñöôïc xöû lí nhö Port ñôn vò rieâng bieät. Caùch truy xuaát caùc bit naøy khoâng chæ caùc leänh reõ nhaùnh khoâng, maø laø moät danh muïc ñaày ñuû caùc leänh MOVE, SET, CLEAR, COMPLEMENT, OR, AND.
Toaøn boä söï truy xuaát cuûa bit duøng söï ñònh vò tröïc tieáp vôùi nhöõng ñòa chæ töø 00H - 7FH trong 128 vuøng nhôù thaáp vaø 80H - FFH ôû caùc vuøng thanh ghi chöùc naêng ñaëc bieät.
Bit Carry C trong thanh ghi PSW\ cuûa töø traïng thaùi chöông trình vaø ñöôïc duøng nhö moät söï tích luõy ñôn cuûa boä xöû lí luaän lyù. Bit Carry cuõng laø bit ñònh vò vaø coù ñòa chæ tröïc tieáp vì noù naèm trong PSW. Hai leänh CLR C vaø CLR CY ñeàu coù cuøng taùc duïng laø xoùa bit côø Carry nhöng leänh naøy maát 1 byte coøn leänh sau maát 2 byte.
Hoaït ñoäng cuûa caùc leänh luaän lyù ñöôïc toùm taét nhö sau:
CLR C : Xoùa côø Carry xuoáng 0. Coù aûnh höôûng côø Carry.
CLR BIT : Xoùa bit xuoáng 0. Khoâng aûnh höôûng côø Carry
SET C : Set côø Carry leân 1. Coù aûnh höôûng côø Carry.
SET BIT : Set bit leân 1. Khoâng aûnh höôûng côø Carry.
CPL C : Ñaûo bit côø Carry. Coù aûnh höôûng côø Carry.
CPL BIT : Ñaûo bit. Khoâng aûnh höôûng côø Carry.
ANL C, BIT : (C) (C) AND (BIT) : Coù aûnh höôûng côø Carry.
ANL C, /BIT : (C) (C) AND NOT (BIT):Khoâng aûnh höôûng côø Carry.
ORL C, BIT : (C) (C) OR (BIT) : Taùc ñoäng côø Carry.
ORL C, /BIT : (C) (C) OR NOT (BIT) : Taùc ñoäng côø Carry.
MOV C, BIT : (C) (BIT) : Côø Carry bò taùc ñoäng.
MOV BIT, C : (BIT) (C) : Khoâng aûnh höôûng côø Carry.
2.6 Caùc leänh xen vaøo (Miscellamous Intstruction):
NOP : Khoâng hoaït ñoäng gì caû, chæ toán 1 byte vaø 1 chu kyø maùy. Ta duøng ñeå delay nhöõng khoaûng thôøi gian nhoû.
III. Chöông trình ngoân ngöõ Assembly cuûa 8951:
1. Giôùi thieäu :
Ngoân ngöõ assembly giöõa ngoân ngöõ maùy vaø ngoân ngöõ caáp cao. Ngoân ngöõ caáp cao ñöôïc ñaëc tröng nhö: Pascal, C ... Coøn chöông trình ngoân ngöõ maùy laø moät chuoãi caùc byte nhò phaân ñöôïc ñaëc tröng bôûi caùc leänh maø maùy tính coù theå thöïc thi.
Ngoân ngöõ assembly thay theá caùc maõ nhò phaân cuûa ngoân ngöõ maùy ñeå söû duïng caùc “thuaät nhôù“ deã daøng trong quaù trình laäp trình. Ví duï leänh coäng trong ngoân ngöõ maùy ñöôïc ñaëc tröng bôûi maõ nhò phaân “10110011” trong khi ngoân ngöõ assembly laø “ADD“.
Moät chöông trình ngoân ngöõ assembly khoâng theå thöïc thi bôûi maùy tính maø noù phaûi ñöôïc dòch sang maõ nhò phaân ngoân ngöõ maùy.
Moät linker laø moät chöông trình maø noù keát hôïp caùc chöông trình ñaëc tröng Relocatable (modul) vaø thieát keá moät chöông trình ñaëc tröng tuyeät ñoái thöïc thi baèng maùy tính.
Segment laø moät phaàn cuûa boä nhôù maõ hoaëc döõ lieäu, noù coù theå taùi ñònh vò ñöôïc (Relocatable) hoaëc tuyeät ñoái (Absolute ). Segment Relocatable coù teân, kieåu vaø coù theå ñöôïc keát noái vôùi Segment cuïc boä khaùc. Segment Absolute khoâng coù teân vaø khoâng theå ñöïôc keát noái Segment khaùc.
Modul chöùa 1 hoaëc nhieàu segment hay caùc segment cuïc boä . Moät modul coù theå laø moät “file” ôû nhieàu tröôøng hôïp caù bieät .
Moät chöông trình Modul Absolute ñôn ñöôïc hoøa vaøo toaøn boä caùc Segment Absolute vaø Segment Relocatable töø taát caû caùc mode nhaäp.
Chöông trình chæ chöùa caùc maõ nhò phaân thay cho caùc leänh (vôùi caùc ñòa chæ vaø caùc haèng döõ lieäu ) ñöôïc hieåu bôûi maùy tính.
2. Hoaït ñoäng cuûa trình bieân dòch (Assembler Operation)
Coù nhieàu trình bieân dòch vôùi muïc ñích khaùc nhau coù taùc duïng laø deã hieåu caùc öùng duïng vi ñieàu khieån. ASM51 laø tieâu bieåu chuaån bieân dòch cuûa hoï MSC-51. ASM51 laø trình bieân dòch maïnh coù taùc duïng höõu hieäu treân heä thoáng phaùt trieån INTEL vaø hoï IBM PC cuûa maùy vi tính.
ASM51 ñöôïc goïi hieän leân töø söï chæ daãn cuûa heä thoáng bôûi:
ASM51 Source file (Assembly Control).
Trình bieân dòch nhaän moät file nguoàn vôùi tö caùch laø ngoõ nhaäp (PROGRAM.SCR) vaø hoï phaùt ra moät file ñoái töôïng (PROGRAM.OBJ) vaø file listing (PROGRAM.LST).
Vì haàu heát caùc bieân dòch xem xeùt chöông trình nguoàn 2 laàn trong luùc thi haønh söï dòch ngoân ngöõ maùy, neân chuùng ñöôïc moâ taû qua 2 Pass bieân dòch laø Pass1 vaø Pass2.
Trong pass1, file nguoàn ñöôïc xem xeùt töøng doøng vaø baûng kyù hieäu xaây döïng.
Boä ñeám Location maëc nhieân choïn 0 hoaëc ñöôïc ñaët bôûi chæ thò ORG (ñaët Origin).
Cuõng nhö file ñöôïc xem xeùt, boä ñeám Location ñöôïc taêng leân baèng ñoä daøi moãi leänh.
Chæ thò data ñònh nghóa (ñaëc bieät hoaëc DW) taêng boä ñeám Location baèng vôùi soá byte ñònh roõ, caùc chæ thò nhôù löu tröõ (DSO taêng boä ñeám Location bôûi soá byte döï tröõ). Moãi laàn moät nhaõn ñöôïc tìm thaáy ôû söï baét ñaàu cuûa moät ñöôøng, thì noù ñöôïc ñaëc trong baûng kyù hieäu theo giaù trò hieän haønh cuûa boä ñeám Location. Caùc kyù hieäu ñöôïc ñònh nghóa bôûi duøng caùc chæ thò töông ñöông (EQU) ñöôïc ñaëc trong baûng kyù hieäu, ñöôïc caát giöõ vaø sau ñoù duøng trong pass2.
Trong Pass2, file Object vaø file Listing ñöôïc taïo ra, caùc thuaät nhôù ñöôïc bieán ñoåi thaønh Opcode vaø ñaët trong caùc file output. Caùc toaùn haïng ñöôïc xaùc ñònh giaù trò vaø ñaët phía sau Opcode leänh. ÔÛ nôi caùc kyù hieäu xuaát hieän trong toaùn haïng, caùc kyù hieäu cuûa chuùng seõ ñöôïc laáy laïi töø baûng kyù hieäu (ñöôïc taïo ra trong suoát Pass1 vaø duøng trong söï saép xeáp döõ lieäu ñuùng hoaëc ñuùng ñòa chæ bôûi caùc leänh).
Bôûi vì Pass2 ñöôïc thöïc thi neân chöông trình nguoàn coù theå duøng “söï tham khaûo tröôùc “ laø duøng kyù hieäu tröôùc khi ñònh nghóa.
File Object neáu tuyeät ñoái thì chæ chöùa caùc byte nhò phaân (00H - FFH) cuûa chöông trình ngoân ngöõ maùy. File Object Relocatable chöùa moät baûng kyù hieäu vaø thoâng tin khaùc ñöôïc yeâu caàu bôûi söï keát hôïp vaø xaùc ñònh ñuùng vò trí. File Listing chöùa maõ nguyeân baûng ASCII (20H – 7FH) cho caû hai chöông trình nguoàn vaø caùc byte Hexadecimal trong chöông trình ngoân ngöõ maùy.
3. Söï saép ñaët chöông trình ngoân ngöõ Assmebly:
Chöông trình ngoân ngöõ Asembly bao goàm: Caùc leänh maùy, lôøi chæ chò cuûa trình bieân dòch, söï ñieàu khieån bieân dòch vaø caùc chuù thích.
Caùc leänh maùy laø caùc kyõ xaûo cuûa leänh coù theå thöïc thi (ví duï nhö ANL). Caùc chæ thò cuûa trình bieân dòch laø caùc leänh ñeå trình bieân dòch ñònh caáu truùc chöông trình, caùc döõ lieäu, kyù hieäu, haèng, … (ví duï Org ). Caùc söï ñieàu khieån trình bieân dòch set caùc mode cuûa trình bieân dòch vaø ñieàu khieån söï chaïy chöông trình Assembly (ví duï STILLE ).
Caùc chuù thích hoaït ñoäng cuûa leänh.
Caùc leänh phaûi ghi theo nguyeân taéc roõ raøng ñeå ñöôïc trình bieân dòch hieåu.
Söï saép xeáp cuûa chuùng nhö sau:
(Label:) mnemonic [operand][:operand][...][:comment]
3.1 Vuøng nhaõn (label Field ):
Moät nhaõn töôïng tröng cho ñòa chæ cuûa leänh (hoaëc döõ lieäu ) theo sau nhaõn. Khi caùc reõ nhaùnh ñeán leänh naøy, nhaõn ñöôïc duøng trong vuøng toaùn haïng cuûa nhaùnh (hoaëc leänh nhaûy).
Caùc “nhaõn“ laø moät kieåu kyù hieäu, sau nhaõn phaûi coù daáu hai chaám (:) coøn sau kyù hieäu thì khoâng.
Caùc kieåu kyù hieäu ñöôïc quy cho caùc giaù trò hoaëc quy cho vieäc duøng caùc chæ thò nhö: EQU, SEGMENT, BIT, DATA, … Caùc kyù hieäu coù theå laø ñòa chæ, haèng, data, teân caùc segment hoaëc söï xaây döïng khaùc ñöôïc hieåu bôûi ngöôøi laäp trình. Sau ñaây laø moät ví duï ñeå phaân bieät nhaõn vaø kyù hieäu:
PRA EQU 500 : PRA laø kyù hieäu töôïng tröng giaù trò 500
START :MOV A , #0FFH :START laø nhaõn töông tröng ñòa chæ leänh MOV
Moät kyù hieäu hoaëc moät nhaõn phaûi baét ñaàu moät chöõ caùi daáu “?”, hoaëc daáu “-“; phaûi ñöôïc theo sau baèng moät chöõ caùi, caùc soá, daáu “?” hay “-“, vaø coù theå chöùa tôùi 31 kyù töï.
3.2 Vuøng thuaät nhôù (Mnemonic Field ):
Caùc thuaät nhôù hay caùc chæ chò bieân dòch ñi vaøo vuøng thuaät nhôù theo sau vuøng nhaõn. Ví duï caùc thuaät nhôù leänh nhö: ADD, MOV, DIV, INC, … ; caùc chæ thò bieân dòch nhö : ORG , EQU.
3.3 Vuøng toaùn haïng (Operand Field):
Vuøng toaùn haïng theo sau vuøng thuaät nhôù. Vuøng naøy chöùa ñòa chæ hay döõ lieäu ñöôïc duøng bôûi leänh. Moät nhaõn coù theå duøng ñeå töôïng tröng cho haèng döõ lieäu. Caùc khaû naêng cho pheùp vuøng toaùn haïng phuï thuoäc lôùn vaøo caùc hoaït ñoäng. Moät vaøi hoaït ñoäng khoâng coù toaùn haïng nhö : RET, NOP trong khi caùc hoaït ñoäng khaùc cho pheùp nhieàu toaùn haïng ñöôïc phaân ra baèng daáu phaåy.
3.4 Vuøng chuù thích (Comment Field ):
Caùc chuù thích phaûi deã hieåu ñaët ñeå giaûi thích leänh, vaø coù daáu chaám phaåy ôû ñaàu. Khoái chuù thích trong khung ñeå giaûi thích tính chaát chung cuûa phaàn chöông trình ñöôïc caét ra beân döôùi.
3.5 Caùc kyù hieäu bieân dòch ñaëc bieät (Special Assembler Symbol ):
Caùc kyù hieäu bieân dòch ñaëc bieät ñöôïc duøng trong caùc mode ñònh vò thanh ghi cuï theå chuùng bao goàm caùc thanh ghi A, Ro – R7, DPTR, PC,C, AB, hay caùc kyù hieäu $ ñöôïc duøng ñeå quy vaøo giaù trò hieän haønh cuûa boä ñeám Location.
Ví duï : leänh JNZ T1 , $ töông ñöông vôùi leänh sau : HERE : JNZ T1, HERE
3.6 Ñòa chæ giaùn tieáp (Indirect Address):
Ñoái vôùi moät soá leänh duøng toaùn haïng coù theå xaùc ñònh thanh ghi maø noù chöùa ñòa chæ giaùn tieáp vaø noù chæ coù theå duøng vôùi R0, R1 , DPTR. Ví duï leänh MOV A, @R0 khoâi phuïc laïi byte döõ lieäu töø RAM noäi taïi ñòa chæ ñöôïc ñònh roõ trong R0.
Leänh MOVC, @A + PC khoâi phuïc laïi byte döõ lieäu töø boä nhôù döõ lieäu ngoaøi taïi ñòa chæ ñöôïc taïo thaønh bôûi vieäc coäng noäi dung thanh ghi tích luõy A vaø boä ñeám chöông trình.
3.7 Döõ lieäu töùc thôøi (Immediate Data ):
Caùc leänh duøng söï ñònh vò töùc thôøi cung caáp döõ lieäu vaøo vuøng toaùn haïng, kyù hieäu # ñaët tröôùc döõ lieäu töùc thôøi. Ví duï:
CONSTANT EQU 100
MOV A, 0FFH
ORL 40H, # CONSTANT
3.8 Ñòa chæ döõ lieäu (Data Address):
Nhieàu leänh truy xuaát caùc vuøng nhôù duøng söï ñònh vò tröïc tieáp vaø ñoøi hoûi moät ñòa chæ nhôù döõ lieäu treân chip (00 – FFH) hay moät ñòa chæ SFR (80H – FFH) treân vuøng toaùn haïng. Caùc kyù hieäu ñaõ ñöôïc ñònh nghóa coù theå ñöôïc duøng cho caùc ñòa chæ SFR. Ví duï:
MOV A, 45H hay MOV A, SBUF.
3.9 Ñòa chæ Bit (Bit Address):
Moät trong nhöõng ñieåm maïnh cuûa 8951 laø khaû naêng truy xuaát caùc bit rieâng leû, khoâng caàn caùc hoaït ñoäng trang bò treân byte. Caùc leänh truy xuaát caùc bit ñònh vò phaûi cung caáp moät ñòa chæ trong boä nhôù döõ lieäu noäi (00H – 7FH) hoaëc ñòa chæ bit trong caùc SFR (80H - FFH).
Coù 3 caùch ñeå xaùc ñònh ñòa chæ bit trong oâ nhôù döõ lieäu: Duøng ñòa chæ bit tröïc tieáp, duøng hoaït ñoäng ñieåm giöõa ñòa chæ byte vaø ñòa chæ bit, duøng kyù hieäu bieân dòch ñaõ ñöôïc ñònh nghóa.
Ví duï:
SETB 0E7H : Duøng ñòa chæ tröïc tieáp.
SETB ACC, 7 :Duøng hoaït ñoäng ñieåm.
JNZ T1 ,$ : Duøng kyù hieäu ñöôïc ñònh nghóa “TT”.
3.10 Ñòa chæ maõ (Code Address):
Ñòa chæ maõ ñöôïc duøng trong toaùn haïng cho caùc leänh nhaûy, bao goàm caùc söï nhaûy töông ñoái (nhö SJMP vaø caùc leänh nhaûy coù ñieàu kieän), caùc söï nhaûy vaø caùc söï goïi tuyeät ñoái (ACALL , AJMP). Ñòa chæ maõ thöôøng ñöôïc cho ôû daïng nhaõn sau:
HERE:
_
_
_
SJMP HERE
ASM51 seõ xaùc ñònh ñòa chæ maõ ñuùng vaø loàng vaøo Offset ñuùng ñöôïc kyù hieäu 8 bit leänh, ñòa chæ trang 11 bit hoaëc ñòa chæ daøi 16 bit cho thích hôïp.
3.11 Caùc söï nhaûy vaø goïi chung ( generic Jump and Calls):
ASM51 cho pheùp ngöôøi laäp trình duøng thuaät nhôù JMP chung hay CALL chung. Leänh “JMP “coù theå ñöôïc duøng thay cho “SJMP, AJMP, LJMP“ vaø “CALL” coù theå thay cho ACALL hay LCALL. Söï bieân dòch bieán ñoåi thuaät nhôù chung ñeám moät leänh “thöïc teá“ sau vaøi qui luaät ñôn giaûn, thuaät nhôù chung bieán ñoåi thaønh daïng tuyeät ñoái neáu nhaûy hay goïi trong trang 2k. Neáu caùc daïng ngaén vaø tuyeät ñoái khoâng duøng thì seõ ñöôïc chuyeån thaønh daïng daøi.
4. Söï tính toaùn bieåu thöùc cuûa Assemble Time (Assemble Time Expression Evaluation):
Khi moät bieåu thöùc ñöôïc duøng, söï bieân dòch tính toaùn giaù trò loàng vaøo leänh ñoù.
4.1 Caùc cô sôû soá (Number Basses):
Cô sôû caùc haèng soá phaûi ñöôïc theo sau caùc soá nhò phaân “B”, theo sau soá Octal “O”, hoaëc “Q”, theo sau soá thaäp phaân “D” hay khoâng coù gì , theo soá Hexa “H”. Ví duï:
MOV A, # 15 : Thaäp phaân
MOV A , 1111B : Nhò phaân
MOV A , 30H : Hex
MOV A , 315D : Thaäp phaân
MOV A , 317Q : Octal
4.2 Caùc chuoãi kyù töï (Character String):
Chuoåi duøng moät hay 2 kyù töï coù theå duøng nhö caùc toaùn haïng trong caùc bieåu thöùc. Caùc maõ ASSCII ñöôïc bieán ñoåi thaønh nhò phaân töông ñöông bôûi söï bieân dòch.
Caùc haèng ñöôïc ñi keøm theo sau 1 daáu ngoaëc keùp (‘).
Ví duï : CJNZ A , # ‘Q’, AGAIN
4.3 Caùc kyù hieäu soá hoïc (Arithmetic Operations):
+ : Coäng
_ : Tröø
. : Nhaân
/ : Chia
MOD :Pheùp laáy dö
Ví duï leänh MOV A, # 10 + 10H vaø leänh MOV A, # 1AH töông töï 2 leänh MOV A, # 25 MOD 7 vaø MOV A, # 4 cuõng gioáng nhau.
4.4 Caùc hoaït ñoäng logic (Logic Operations):
Caùc hoaït ñoäng logic laø OR, AND, XOR, NOT. Hoaït ñoäng ñöôïc aùp duïng treân caùc bit töông öùng trong moãi toaùn haïng. Söï hoaït ñoäng phaûi ñöôïc phaân ra töø caùc toaùn haïng bôûi moät khoaûng caùch kyù töï hoaëc nhieàu khoaûng kyù töï.
Ví duï 3 leänh MOV sau ñaây gioáng nhau:
THERE EQU
MINUS – THERE EQU- 3
MOV A, #(NOT THERE) + 1
MOV A, MINUS – THERE
MOV A, #11111101B
4.5 Caùc hoaït ñoäng ñaëc bieät (special Operation):
Caùc hoaït ñoäng ñaëc bieät laø: SHR (dòch phaûi), SHL (dòch traùi), HIGH (byte cao), LOW (byte thaáp).
Ví duï: leänh MOV A, # HIGH 1234H vaø leänh MOV A, 12H töông ñöông.
4.6 Caùc hoaït ñoäng lieân quan:
Khi moät hoaït ñoäng coù lieân quan ñöôïc duøng giöõa hai toaùn haïng thì keát quûa hoaëc sai (0000h) hoaëc ñuùng (FFFFH). Caùc hoaït ñoäng laø:
EQ = : Equals (baèng)
NE : Not equals (khoâng baèng)
LT < : Less than (nhoû hôn)
LE <= : Less than or equal (nhoû hôn hoaëc baèng)
GT > : Greater than (lôùn hôn)
GE >= : Greater than or equal (lôùn hôn hoaëc baèng)
Ví duï:
MOV A, #5
MOV A, 100 GE 50
MOV A, 5 NE 4
Caû ba leänh treân ñeàu ñuùng neân caû ba töông ñöông vôùi leänh sau: MOV A,# 0FFH
5. Caùc chæ thò bieân dòch:
ASM51 cung caáp caùc chæ thò sau:
Söï ñieàu khieån traïng thaùi bieân dòch (ORG, AND, USING)
Söï xaùc ñònh kyù hieäu (SEGMENT, EQU, SET, DATA, NDATA, BIT, CODE)
Söï khôûi gaùn löu tröõ hay ñeå daønh tröôùc söï löu tröõ (DS, DBIT, DB, DW)
Söï keát noái chöông trình (PUBLIC, EXTRN, NAME)
Söï choïn segment (PSEG, CSEG, DSEG, ISEG, BSEG, XSEG)
5.1 Söï ñieàu khieån traïng thaùi bieân dòch:
Chæ thò ORG thay ñoåi boä ñeám vuøng nhôù ñeå ñaët söï khôûi ñaàu moät chöông trình môùi bôûi traïng thaùi theo sau ñoù, daïng cuûa chæ thò ORG laø: ORG Expression
Chæ thò END ñaët ôû cuoái cuøng trong file nguoàn. Daïng cuûa noù laø END.
Chæ thò USING cung caáp cho ASM51 daõy thanh ghi tích cöïc hieän haønh. Daïng chæ thò cuûa noù laø USING Expression
Vieäc duøng ñòa chæ caùc thanh ghi kyù hieäu ñöôïc ñònh nghóa tröôùc AR0-AR7 seõ bieán thaønh ñòa chæ tröïc tieáp phuø hôïp cuûa daõy thanh ghi tích cöïc.
Ví duï : USING 3 : Duøng Bank 3 trong daõy thanh ghi.
PUSH AR7 : Push R7 (R7=1FH)
PUSH AR7 : Push R7 (R7=0FH)
5.2 Ñònh nghóa kyù hieäu (Symbol Definition):
Daïng chæ thò cuûa segment nhö sau: symbol SEGMENT segmenttype
Trong ñoù symbol laø teân cuûa segment coù theå ñoåi choã ñöôïc. Caùc kieåu segment coù theå CODE (segment maõ), XDATA (vuøng döõ lieäu ngoaøi), DATA (vuøng döõ lieäu noäi) coù theå truy xuaát baèng söï ñònh vò tröïc tieáp töø (00H-7FH), IDATA (toaøn boä vuøng döõ lieäu noäi), BIT (vuøng BIT töø 20H-2FH döõ lieäu noäi).
Ví duï : EPROM SEGMENT CODE cho bieát EPROM cuûa moät segment kieåu code.
Daïng chæ thò EQU : symbol EQU Expression
Daïng chæ thò BIT : symbol BITExpression
Löu yù raèng neáu ta duøng chæ thò BIT nhö FLAGS BIT 05H thì ta coù theå SETB FLAGS maø khoâng ñöôïc duøng leänh MOV.
5.3 Söï khôûi gaùn/daønh löu tröõ tröôùc (Storage Initilization/Reservation)
Caùc chæ thò cuûa Storage Initilization khôûi gaùn vaø Storage Reservation ñeå daønh moät vuøng nhôù trong töø, byte hoaëc caùc ñôn vò bit. Vuøng ñöôïc daønh tröôùc khi baét ñaàu taïi vuøng nhôù ñöôïc chæ roõ bôûi giaù trò hieän haønh cuûa boä ñeám vuøng nhôù trong segment tích cöïc ñang hieän haønh. Caùc chæ thò naøy coù theå ñöùng tröôùc moät nhaõn.
5.3.1 Khai baùo löu tröõ DS (Define Storage)
Daïng phaùt bieåu DS laø : [label:]DS Expression
Phaùt bieåu DS daønh moät vuøng nhôù trong ñôn vò byte. Noù coù theå ñöôïc duøng trong baát kyø phaùt bieåu segment naøo ngoaïi tröø BIT. Khi phaùt bieåu DS ñöôïc baét gaëp trong chöông trình thì boä ñeám vò trí location cuûa segment hieän haønh ñöôïc taêng leân moät khoaûng baèng giaù trò cuûa bieåu thöùc. Toång cuûa boä ñeám location vaø bieåu thöùc ñaõ ñöôïc ñònh roõ seõ khoâng vöôïc quaù söï haïn cheá cuûa vuøng hieän haønh.
Phaùt bieåu sau taïo ra moät vuøng ñeäm 40 byte trong segment döõ lieäu noäi.
DSEG AT 30 : Ñaët vaøo segment data noäi.
LENGTH EQU 40
BEFFER : DS LENGTH : 40 byte ñöôïc daønh tröôùc
Nhaõn BUFFER töôïng tröng cho ñòa chæ cuûa location ñaàu tieân cuûa vuøng nhôù ñöôïc löu tröõ. Trong ví duï treân buffer ñaét ñaàu ôû ñòa chæ 30H bôûi töø “AT 30” ñöôïc ñònh roõ bôûi DSEG. Vuøng ñeäm naøy coù theå xoaù nhö sau:
MOV R7,#LENGTH : R7 chöùa con soá LENGTH laø 40
MOV R0,#BUFFER : R0 chöùa ñòa chæ taïi buffer laø 30H
LOOP : MOV @R0,#0 : Laàn löôït xoaù
DJNZ,R7,LOOP
(continue)
Ñeå taïo ra vuøng ñeäm 1000 byte trong RAM ngoaïi baét ñaàu taïi ñòa chæ 4000H, caùc chæ thò sau ñaây coù theå ñöôïc duøng:
XSTART EQU 4000H
XLENGTH EQU 1000H
XSEG AT XSTART : Phaân ñoaïn data ngoaøi baét ñaàu ôû 4000H
XBUFFER: DS XLENGTH : Taïo ra moät vuøng ñeäm coù ñoä daøi 1000byte
Caùc leänh sau ñaây coù theå duøng ñeå xoaù vuøng ñeäm treân :
MOV DPTR,#BUFFER: Ñöa ñòa chæ 4000H vaø DPTR
LOOP : CLR A
MOVX @DPTR : Xoaù noäi duïng töø ñòa chæ 4000H trôû ñi
INC DPTR : Taêng theâm 1 ( tröôøng hôïp ñaàu trôû thaønh 4001H)
MOV A,DPL
CJNZ A,#LOW (XBUFFER=LENGTH+1),LOOP
MOV A,DPH
CJNZ A,HIGH (XBUFFER=XLENGTH+1),LOOP
(Continue)
Neáu so saùnh hai caùch duøng treân daønh cho byte thaáp vaø byte cao DPTR, Vì leänh CJNZ chæ laøm nhieäm vuï ñoái vôùi thanh ghi A hoaëc thanh ghi Rn, do ñoù byte thaáp hoaëc byte cao cuûa boä ñeám döõ lieäu phaûi ñöôïc MOV vaøo A tröôùc khi ñeán leänh CJNZ. Voøng laëp chæ keát thuùc khi boä ñeám döõ lieäu ñaõ ñöôïc ñoïc ñòa chæ XBUFFER+XLENGTH+1
5.3.2 Khai baùo DBIT (Define Bit)
Söï thaønh laäp : [label:] DBIT expression
Chæ thò DBIT daønh tröôùc vuøng nhôù caùc ñôn vò bit, noù coù theå ñöôïc duøng trong 1 segment bit. Khi phaùt bieåu naøy ñöôïc baét gaëp trong chöông trình thì boä ñeám vò trí cuûa segment hieän haønh ñöôïc coäng theâm giaù trò cuûa bieåu thöùc.
5.3.3 Khai baùo byte DB (Define Byte)
Söï thaønh laäp chæ thò ÑAËC BIEÄT : [label:] ÑAËC BIEÄT Expression [,Expression][...]
Chæ thò DB khôûi gaùn boä maõ neân segment CODE phaûi tích cöïc. Danh saùch bieåu thöùc laø moät chuoãi cuûa moät hay nhieàu giaù trò byte (moãi caùch coù theå laø moät bieåu thöùc) ñöôïc phaân ra bôûi daáu phaåy.
Chæ thò DB cho pheùp caùc chuoãi kyù töï (ñöôïc keøm trong daáu ngoaëc keùp ñôn) daøi hôn 2 kyù töï. Moãi kyù töï trong chuoãi ñöôïc bieán thaønh maõ ASCII töông öùng. Neáu moät nhaõn ñöôïc duøng thì nhaõn ñoù ñaõ ñöôïc aán ñònh ñòa chæ cuûa byte ñaàu tieân.
Ví duï : CSEG AT 0100H
DSQUARES : DB 0,1,4,9,16,25 :Bình phöông töø 0-5
Keát quaû cuûa söï phaân chia boä nhôù hexa cuûa boä nhôù maõ ngoaøi nhö sau :
Address
Content
Note
0100H
00H
Cöûa soá 0
0101H
01H
Cöûa soá 1
0102H
04H
Cöûa soá 4
0103H
9H
Cöûa soá 9
0104H
10H
Cöûa soá 16
0105H
19H
Cöûa soá 25
5.3.4 Khai baùo töø DW (Define Word)
Söï thaønh laäp : [label:]DW Expression [,Expression][...]
Chæ thò gioáng chæ thò DB ngoaïi tröø hai vò trí nhôù 16 bit ñöôïc chia laøm moãi khoaûng döõ lieäu.
Ví duï :
CSEG AT 200H
DW 1234H,2
Address
Content
Note
0200H
12H
Byte cao 1234H
0201H
34H
Byte thaáp 1234H
0202H
00H
Byte cao cuûa 2
0203H
02H
Byte thaáp cuûa 2
I. Caáu truùc phaàn cöùng IC 8279
Sô ñoà chaân vaø sô ñoà logic
Teân caùc chaân vaø chöùc naêng:
Teân
I/O
Chöùc naêng
DB7 - DB0
I/O
Data bus (Bi-Direction)
CLK
I
Clock input
RESET
I
Reset input
CS\
I
Chip select
RD\
I
Read input
WR\
I
Write input
A0
I
Address
IRQ
0
Interrupt Request input
SL0 - SL3
0
Scan Lines
RL0 - RL7
I
Return Lines
SHIFT
I
Shift input
CNTL/STB
I
Control/Strobe input
OUT A3-0
0
Display (A) output
OUT B3-0
0
Display (B) output
BD\
0
Blank Display Output
8279 keát noái vôùi vi ñieàu khieån thoâng qua 3 bus goàm bus döõ lieäu D7-D0, bus ñòa chæ coù moät ñöôøng A0, bus ñieàu khieån RD\, WR\, CS\, Reset, CLK.
Tín hieäu choïn CS\ ñöôïc keát noái ñeán moät ngoõ ra cuûa IC giaûi maõ ñòa chæ. Neáu xem boä nhôù thì boä nhôù naøy coù 2 oâ nhôù.
II. Caáu truùc phaàn meàm cuûa 8279
IC 8279 coù 1 ñöôøng ñòa chæ A0 coù chöùc naêng löïa choïn nhö sau:
A0 =0 : 8279 xem döõ lieäu töø vi ñieàu khieån gôûi ñeán laø döõ lieäu ñeå hieån thò.
A0 =1 : 8279 xem döõ lieäu töø vi ñieàu khieån gôûi ñeán laø döõ lieäu cuûa leänh ñieàu khieån 8279.
Caùc leänh ñieàu khieån cuûa 8279:
1. Keyboard/ Display Mode Set:
+ Maõ:
O
O
O
D
D
K
K
K
+ Trong ñoù 2 bit DD duøng ñeå thieát laäp mode hieån thò, 3 bit KKK duøng ñeå thieát laäp mode queùt baøn phím.
+ Hai bit DD:
DD=00 : hieån thò 8 kyù töï - loái vaøo traùi.
DD=01 : hieån thò 16 kyù töï - loái vaøo traùi.
DD=10 : hieån thò 8 kyù töï - loái vaøo phaûi.
DD=11 : hieån thò 16 kyù töï - loái vaøo phaûi.
+ Ba bit KKK :
000 encode scan keyboard - 2 key lockout.
001 decode scan keyboard - 2 key lockout.
010 encode scan keyboard - N key rollover.
011 decode scan keyboard - N key rollover.
100 encode scan sensor matrix.
101 decode scan sensor matrix.
110 strobe input, encode display scan.
111 strobe input, decode display scan .
2. Program Clock:
+ Maõ
O
O
1
P
P
P
P
P
+ Leänh naøy coù chöùc naêng chia taàn soá xung clock ôû ngoõ vaøo clk ôû chaân soá 3, caùc bit PPPPP duøng ñeå xaùc ñònh soá chia naèm trong khoaûng töø 2 ñeán 30, taàn soá hoaït ñoäng cuûa maïch queùt hieån thò vaø choùng doäi cuûa 8279 thöôøng laø 100 Khz, neáu taàn soá ôû ngoõ vaøo laø 2Mhz thì phaûi chia cho 20 ñeå ñöôïc 100 Khz, khi ñoù caùc bit PPPPP coù giaù trò laø 10100.
3. Read FIFO / sensor RAM:
+Maõ
O
1
1
AI
X
A
A
A
8279 coù 8 byte RAM beân trong ñeå chöùa maõ cuûa phím aán hay maõ cuûa caùc sensor, ñeå truy xuaát ñeán töøng byte döõ lieäu maõ cuûa phím aán hay cuûa sensor ta coù theå ñieàu chænh caùc bit AAA töông öùng. Boä nhôù naøy thuoäc kieåu FIFO.
+ Al ( automatically increment): ôû möùc 1 coù chöùc naêng laøm con troû töï ñoäng taêng leân byte keá ñeå saün saøng cho vieäc ñoïc döõ lieäu. Neáu Al= 0 con troû seõ khoâng thay ñoåi.
4. Read Display RAM:
+ Maõ
O
1
1
Al
A
A
A
A
+ 8279 coù 16 byte RAM beân trong do con troû 4 bit AAAA quaûn lyù, 16 byte RAM naøy duøng ñeå chöùa döõ lieäu caàn hieån thò do vi ñieàu khieån gôûi ñeán, ñeå ñoïc döõ lieäu oâ nhôù naøo trong vuøng nhôù RAM naøy ta coù theå ñieàu chænh caùc bit AAA töông öùng. Boä nhôù hieån thò naøy thuoäc kieåu FIFO.
+ Al (Automatically Increment): ôû möùc 1 chöùc naêng laøm con troû töï ñoäng taêng leân byte keá ñeå saün saøng cho vieäc ñoïc byte döõ lieäu. Neáu Al=0 con troû seõ khoâng thay ñoåi.
5. End Interrupt:
+ Maõ
1
1
1
E
0
0
0
0
+ Bit E baèng 1 seõ xoùa ngaét IRQ veà möùc logic 0.
6. Leänh Write Display Ram:
+ Maõ
1
0
0
Al
A
A
A
A
+ 8279 coù 16 byte RAM beân trong con troû 4 bit AAAA quaûn lyù, 16 oâ nhôù RAM naøy duøng ñeå chöùa döõ lieäu caàn hieån thò do vi ñieàu khieån gôûi ñeán, ñeå gôûi döõ lieäu ñeán 8279 taïi byte Ram thöù maáy trong 16 byte RAM ta coù theå ñieàu chænh caùc bit AAAA töông öùng.
+ Al (automatically increment): ôû möùc moät chöùc naêng laøm con troû töï ñoäng taêng leân byte keá ñeå saün saøng nhaän döõ lieäu. Neáu Al=0 con troû seõ khoâng thay ñoåi do ñoù byte döõ lieäu sau seõ ghi ñeø leân byte döõ lieäu tröôùc ñoù.
7. Leänh Clear:
+ Maõ
1
1
0
CD
CD
CF
CA
+ Nhöõng bit CD trong leänh naøy duøng ñeå xoùa taát caû caùc haøng cuûa Ram hieån thò ñeán moät maõ xoùa ñöôïc choïn loïc nhö sau:
CD CD
0 X Taát caû laø 0 (X : khoâng quan taâm)
1 0 AB = Hex 20 (0010 0000)
1 1 Taát caû laø 1
Cho pheùp xoùa hieån thò khi =1 (hoaëc bôûi CA=1)
+ Trong suoát thôøi gian Ram hieån thò ñang xoùa (160 s) noù khoâng ñöôïc vieát vaøo, bit lôùn nhaát cuûa töø traïng thaùi FIFO ñöôïc ñaët leân 1 trong suoát thôøi gian naøy. Khi Ram hieån thò ñöôïc söû duïng laïi thì bit naøy ñöôïc reset veà 0.
+ Neáu nhö bit CF tích cöïc (CF =1), töø traïng thaùi FIFO seõ bò xoùa vaø ngoõ ra Interrupt bò reset.
+ Bit CA coù chöùc naêng xoùa taát caû caùc bit, noù coøn aûnh höôûng bôûi bit CD vaø CF. Noù duøng bit CD ñeå xoùa maõ treân Ram hieån thò vaø noù cuõng xoùa luoân traïng thaùi FIFO.
I. Sô ñoà khoái kit vi ñieàu khieån 8951:
Caáu taïo cuûa kit vi ñieàu khieån 8951 goàm 4 phaàn chuû yeáu: Ñôn vò xöû lí trung taâm CPU. Boä nhôù (bao goàm RAM vaø EPROM) khoái I/0 vôùi ñaàu giao tieáp laø 8255. Khoái queùt baøn phím vaø hieån thò duøng IC queùt 8279.
1. Ñôn vò xöû lyù trung taâm:
Phaàn töû trung taâm laø vi ñieàu khieån 8951 ñaõ ñöôïc giôùi thieäu phaàn treân goàm caùc chaân nhö sau:
16 ñöôøng ñòa chæ : A0 – A15.
8 ñöôøng döõ lieäu :D0 – D7.
Caùc ñöôøng ñieàu khieån : /RD , /WR , /PSEN
4 KB EPROM noäi ñöôïc ñieàu khieån chaân /EA: /EA=1 choïn EPROM noäi. /EA = 0 choïn EPROM ngoaøi.
526 byte RAM noäi töø ñòa chæ töø 00 – FF, trong ñoù coù 216 vò trí oâ nhôù coù theå truy xuaát bit coù ñòa chæ töø 20H – 2FH. 80 byte RAM muïc ñích chung ñòa chæ töø 30H – 7FH.
2. Boä nhôù:
2.1 Boä nhôù coá ñònh EPROM:
EPROM 1: Coù ñòa chæ töø 0000H – 1FFFH (8KB), chöùa chöông trình heä thoáng ñieàu khieån taát caû caùc quaù trình hoaït ñoäng cuûa maùy.
EPROM 2: Coù ñòa chæ töø 2000H – 3FFFH (8KB), chöùa chöông trình öùng duïng cho maïch ghi ñoïc EPROM.
2.2 Boä nhôù truy xuaát baát kyø (RAM):
Chöùa caùc chöông trình coøn söõa ñoåi hoaëc chöùa döõ lieäu vaø keát quaû taïm thôøi trong quaù trình tính toaùn. Ñaëc ñieåm cuûa loaïi naøy laø döõ lieäu seõ maát khi heä thoáng maát ñieän.
Trong KIT vi ñieàu khieån duøng hai RAM, loaïi 2764 coù ñòa chæ toång coäng töø 4000H – 7FFFH (16KB).
2.3 Khoái I/O:
Khoái I/O coù nhieäm vuï giao tieáp giöõa kit vi ñieàu khieån vôùi nhöõng heä thoáng öùng duïng beân ngoaøi, ñoù laø 2 vi maïch 8255, ñòa chæ cuûa port, thanh ghi ñieàu khieån nhö sau:
5255-1 : Ñòa chæ port A : 8000H
: Ñòa chæ port B : 8001H
: Ñòa chæ port C : 8002H
: Ñòa chæ thanh ghi töø ñieàu khieån (CW ): 8003H
8255-2 : Ñòa chæ port A : A000H
: Ñòa chæ port B: A001H
: Ñòa chæ port C: A002H
: Ñòa chæ thanh ghi töø ñieàu khieån (CW ): A003H
2.4 Khoái queùt baøn phím vaø hieån thò:
Goàm coù IC queùt phím 8279, baøn phím vaø boä hieån thò 8 led 7 ñoaïn:
IC 8279 ñaõ ñöôïc giôùi thieäu ôû treân.
Baøn phím goàm 26 phím, 16 phím soá thaäp luïc phaân töø 0 – F duøng ñeå nhaäp caùc leänh vaø caùc döõ lieäu, coøn laïi laø caùc phím chöùc naêng.
Boä hieån thò : laø thieát bò xuaát duøng ñeå quan saùt vieäc thöïc hieän chöông trình, kieåm tra döõ lieäu … goàm 8 led 7 ñoaïn ñöôïc ñieàu khieån bôûi IC queùt 8279 thoâng qua caùc BJT SWITCH vaø IC ñeäm.
Quan heä giöõa ñôn vò xöû lí trung taâm vaø caùc khoái treân lieân heä nhau döïa vaøo caùc bus.
Bus döõ lieäu: duøng ñeå chuyeån soá lieäu qua laïi giöõa caùc khoái, dung löôïng cuûa khoái phuï thuoäc vaøo khaû naêng cuûa ñôn vò xöû tí trung taâm.
Bus ñòa chæ: Ñöôïc truyeàn töø ñôn vò xöû lí trung taâm ñeáùn caùc khoái, ñòa chæ naøy seõ xaùc ñònh khoái ñöôïc choïn laøm vieäc vôùi CPU. Coù toång coäng 16 ñöôøng ñòa chæ, soá oâ nhôù coù ñöôïc seõ laø: 216= 56536.
Bus ñieàu khieån : Goàm caùc tín hieäu ñieàu khieån ñeå ñaûm baûo söï hoaït ñoäng ñoàng boä nhau giöõa caùc khoái .
Vuøng ñòa chæ: EPROM1 : 0000H – 1FFFH
EPROM2 : 2000H – 3FFFH
RAM1 : 4000H – 5FFFH
RAM2 : 6000H – 7FFFH
8255-1: 8000H
8255-2: A000H
I. Giôùi thieäu:
Ñeå laäp trình cho EPROM noäi cuûa vi ñieàu khieån 8951 coù nhieàu phöông phaùp khaùc nhau nhö: duøng kit vi xöû lí, maùy tính … ÔÛ ñaây em duøng kit vi ñieàu khieån 8951 laäp trình cho EPROM noäi thoâng qua 2 IC giao tieáp 8255.
Vì moãi phöông phaùp coù nhöõng öu ñieåm vaø khuyeát ñieåm rieâng neân tuøy töøng tröôøng hôïp cuï theå maø ta löïa choïn phöông phaùp phuø hôïp.
Veà phaàn cöùng maïch naïp EPROM noäi do em thieát keá coù theå laäp trình ñöôïc hai caáp ñieän aùp Vpp=5v hoaëc Vpp=12v.
II. Sô ñoà keát noái maïch naïp EPROM noäi:
Caùch keát noái maïch nhö sau:
A0 – A7 (P1.0 – P1.7) cuûa 8951 keát noái vôùi portA cuûa 8255-1.
A8 – A11 (P2.0 – P2.3) cuûa 8951 keát noái vôùi portB-L cuûa 8255-1.
P2.6, P2.7, P3.6, P3.7 cuûa 8951 laàn löôït keát noái vôùi portC-L cuûa 8255-1.
Do – D7 (P0.0 – P0.7) cuûa 8951 keát noái vôùi port A cuûa 8255-2.
PROG\ALE, Vpp\EA laàn löôït keát noái vôùi PC0, PC1 (portC cuûa 8255-2)
Chaân RST ñöôïc noái leân Vcc.
Chaân PSEN\ ñöôïc noái mass.
Caùc chaân XTAL1, XTAL2 ñöôïc noái vôùi thaïch anh 12M.
Nguoàn 12v ñöôïc ñieàu khieån caáp cho Vpp nhö sau:
Khi PC1=L thì Q ngaét laøm cho D2 phaân cöïc thuaän neân Vpp=12v.
Khi PC1=H, Q daãn laøm cho D1 phaân cöïc thuaän neân Vpp=5v.
III. Khôûi taïo coång giao tieáp 8255:
Coång giao tieáp duøng ñeå giao tieáp giöõa kit vi ñieàu khieån vôùi maïch naïp EPROM noäi. Coång naøy laøm vieäc theo phöông phaùp giao tieáp song song vaø laøm vieäc ôû cheá ñoä xuaát nhaäp I/0.
Ñeå thieát laäp töø ñieàu khieån 8255 ta thieát laäp ñoaïn chöông trình sau:
MOV A , Haèng soá.
MOV DPTR , Ñòa chæ töø ñieàu khieån.
MOVX @DPTR ,A
ÔÛ ñaây giaù trò cuûa töø ñieàu khieån nhaäp vaøo laø haèng soá thaäp luïc phaân, noäi dung cuûa töø ñieàu khieån seõ quyeát ñònh caùc coång xuaát hay nhaäp theo yeâu caàu thieát keá. Caùc coång naøy phaûi ñöôïc ñieàu khieån tröôùc khi xuaát hay nhaäp döõ lieäu qua coång.
IV. Chöông trình ñoïc döõ lieäu töø EPROM noäi:
Giaûi thuaät laäp trình:
Khôûi taïo 8255.
Xuaát caùc tín hieäu ñieàu khieån.
Xuaát ñòa chæ caàn ñoïc.
Nhaän döõ lieäu töø bus döõ lieäu.
Giaûi maõ hieån thò.
Keát thuùc.
Khi chöa naïp döõ lieäu vaøo hoaëc sau khi chaïy chöông trình xoùa, neáu chöông trình ñuùng thì döõ lieäu ñoïc ra laø FFH.
Khi ñaõ chaïy chöông trình naïp roài thì döõ lieäu ñoïc ra laødöõ lieäu maø ta caàn naïp.
Taïi caùc ñòa chæ 030H, 031H, 032H ñoïc ra coù noäi dung laø:1EH, 51H, FFH (read-signature) ñoái vôùi loaïi AT89C51, ñaây laø loaïi IC maø ta thöïc hieän vieäc laäp trình.
Ñoái vôùi caùc loaïi khaùc thuoäc hoï AT89 thì signature theo baûng sau:
Signature
Moâtaû
1E 51 FF
AT89C51
1E 51 05
AT89C51
1E 61 FF
AT89VL51
1E 61 05
AT89VL51
1E 52 FF
AT89C52
1E 52 05
AT89C52
1E 62 FF
AT89VL52
1E 62 05
AT89VL52
1E 11
AT89C1051
1E 21
AT89C2051
V. Chöông trình naïp EPROM noäi:
Vi ñieàu khieån AT89C51 ñöôïc tung ra thò tröôøng vôùi maûng boä nhôù beân trong roãng (nghóa laø noäi dung =FFH) vaø saün saøng ñöôïc laäp trình. Chöông trình naïp EPROM noäi seõ ñöôïc laäp trình moät trong hai möùc ñieän aùp 12v hoaëc 5v.
Vaäy ñeå xaùc ñònh möùc ñieän aùp laäp trình ta ñoïc signature taïi caùc ñòa chæ: 030H, 031H, 032H nhö sau:
Adress
Vpp=5v
Vpp=12v
030H
1EH
1EH
031H
51H
51H
032H
05H
FFH
Maët khaùc ta coù theå xem top -side - mark (nhaõn) nhö sau:
Vpp=12v
Vpp=5v
AT8951
AT8951
XXXX
XXXX-5
YYWW
YYWW
ÔÛ ñaây loaïi IC maø em laäp trình laø 12v.
Giaûi thuaät laäp trình:
Khôûi taïo 8255.
Troû ñòa chæ ñeán vuøng nhôù caàn naïp.
Xuaát döõ lieäu ra bus döõ lieäu.
Xuaát caùc tín hieäu ñieàu khieån.
Naâng ñieän aùp Vpp leân 12v.
Taïo xung laäp trình ALE/PROG.
Keát thuùc.
Chuù yù: Chu kyø vieát 1byte khoâng quaù 1,5ms.
Khi naïp döõ lieäu cho vi ñieàu khieån thì chöông trình naïp phaûi naïp töøng byte, ñoàng thôøi phaûi chaïy chöông trình xoùa tröôùc khi laäp trình cho EPROM noäi.
Giaûn ñoà thôøi gian laäp trình cho EPROM noäi:
VI. Chöông trình xoaù EPROM noäi:
Chöông trình xoaù phaûi ñöôïc thöïc hieän tröôùc khi laäp trình. Khi xoaù thì xoaù toaøn boä vuøng nhôù beân trong.
Giaûi thuaät laäp trình:
Khôûi taïo 8255.
Xuaát caùc tín hieäu ñieàu khieån.
Ñieàu khieån ñieän aùp Vpp=12v.
Ñieàu khieån xung ALE /PROG.
Keát thuùc.
Chuù yù: Ñeå xoaù ñöôïc noäi dung beân trong ñoøi hoûi xung laäp trình PROG\ phaûi ôû möùc thaáp khoaûng 10ms.
THI COÂNG MAÏCH
Ñöôïc söï giuùp ñôõ cuûa thaày Nguyeãn Ñình Phuù, trong thôøi gian thi coâng em thöïc hieän ñöôïc moät soá phaàn vaø traûi qua caùc böôùc sau:
Tieán haønh laøm maïch in (öùng duïng phaàn meàm veõ maïch in EAGLE).
Kieåm tra maïch in.
Raùp vaø haøn linh kieän.
Keát noái board maïch vôùi kit vi ñieàu khieån thoâng qua connector.
Kieåm tra maïch.
Naïp chöông trình.
HÖÔÙNG PHAÙT TRIEÅN ÑEÀ TAØI
Sau thôøi gian thöïc hieän em thaáy raèng ñeà taøi coøn nhieàu haïn cheá veà khaû naêng söû duïng roäng raõi trong thöïc teá. Neáu coù ñieàu kieän thì ñeà taøi neân phaùt trieån theo höôùng sau ñaây:
Maïch coù theå môû roäng ghi ñoïc cho caùc loaïi vi ñieàu khieån thuoäc hoï AT89 nhö: AT89C51, AT89VL51, AT89C52, AT89VL52, AT89C1051, AT89C2051.
Maïch coù theå ghi ñoïc cho loaïi vi ñieàu khieån nhoû (loaïi 20 chaân).
Neáu chæ ñôn thuaàn laø ghi ñoïc thì keát noái tröïc tieáp vi ñieàu khieån vôùi vi ñieàu khieån khaùc maø khoâng caàn thoâng qua 8255 ñeå maïch coù tính kinh teá hôn.
Neáu khoâng duøng kit vi ñieàu khieån thì coù theå duøng card naïp töø maùy vi tính thoâng qua coång COM. Khi ñoù ngoân ngöõ laäp trình coù theå laø ngoân ngöõ Pascal, ngoân ngöõ C…
KEÁT LUAÄN
Sau 7 tuaàn laøm vieäc khaån tröông cuøng vôùi söï nhieät tình cuûa thaày höôùng daãn Nguyeãn Ñình Phuù. Ñeà taøi: “MAÏCH GHI ÑOÏC EPROM CHO VI ÑIEÀU KHIEÅN 8951” ñaõ hoaøn thaønh ñuùng thôøi gian qui ñònh. Ñaây laø ñeà taøi mang tính toång hôïp, keát hôïp giöõa kyõ thuaät ñieän töû vaø kyõ thuaät laäp trình.
Vôùi söï quyeát taâm vaø noã löïc khoâng ngöøng, taäp luaän vaên naøy ñaõ giuùp cho em böôùc ñaàu laøm quen vôùi ñeà taøi khoa hoïc vaø em ñaõ thaät söï tích luõy moät soá kieán thöùc cô baûn veà vi ñieàu khieån, thieát keá maïch vaø kyõ thuaät laäp trình.
Maët duø thôøi gian haïn heïp, taøi lieäu tham khaûo quaù ít, vaø coù nhieàu vaán ñeà naûy sinh trong quaù trình thieát keá phaàn meàm, nhöng em ñaõ coá gaéng heát söùc mình cuõng nhö söï taän taâm giuùp ñôõ cuûa thaày höôùng daãn neân ñaõ ñaït ñöôïc nhöõng yeâu caàu ñaët ra.
Qua quaù trình thöïc hieän luaän vaên, em ñaõ töï ñaùnh giaù ñöôïc phaàn naøo coøn haïn cheá vaø ít nhieàu boå xung caùc kieán thöùc coøn haïn heïp trong thôøi gian hoïc taïi tröôøng nhaát laø moân kyõ thuaät vi xöû lí.
Em xin chaân thaønh caûm ôn moïi söï giuùp ñôõ taän tình, quùy baùu cuûa caùc thaày - coâ trong tröôøng vaø thaày höôùng daãn, ñaõ taïo nhieàu ñieàu kieän giuùp chuùng em hoaøn thaønh toát nhieäm vuï ñöôïc giao ñuùng thôøi gian qui ñònh.
Moät laàn nöõa, em raát mong söï ñoùng goùp yù kieán cuûa quí thaày - coâ cuøng vôùi caùc baïn sinh vieân tham khaûo ñeå taäp luaän vaên ñöôïc hoaøn haûo hôn.
Thaønh Phoá Hoà Chí Minh. Ngaøy 28-02-2000
Sinh vieân thöïc hieän
BUØI VAÊN TRÍ
PHUÏ LUÏC
Noäi dung chöông trình
porta1 equ 8000h ;quan li dia chi thap a7-a0
portb1 equ 8001h ;quan li dia chi cao a11-a8
portc1 equ 8002h
cw1 equ 8003h
porta2 equ 0a000h
portb2 equ 0a001h
portc2 equ 0a002h
cw2 equ 0a003h
ht equ 0c000h
dk equ 0c001h
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh kiem tra - hien thi
org 5200h
mov dptr,#cw1 ; khoi tao 8255
mov a,#80h
movx @dptr,a
mov dptr,#cw2
mov a,#90h
movx @dptr,a
mov dptr,#portc2 ;pc0=prog\=H
mov a,#03h ;pc1=Vpp=H
movx @dptr,a
mov dptr,#portc1 ;P2.6=PC0=L; P2.7=PC1=L; P3.6= PC2=H
mov a,#0ch ;P3.7=PC3=H
movx @dptr,a
;chuyen dia chi bat dau doc va dia chi ket thuc vao cac o nho ben trong
mov dptr,#4f00h ;nap dia chi luu Begin_Addr can doc
movx a,@dptr
mov 10h,a ;cat tam byte B_A_L vao o nho 10h
inc dptr
movx a,@dptr
mov 11h,a ;cat tam byte B_A_H vao o nho 11h
inc dptr
movx a,@dptr
mov 12h,a ;cat tam byte E_A_L vao o nho 12h
inc dptr
movx a,@dptr
mov 13h,a ;cat tam byte E_A_H vao o nho 13h
;goi dia chi can doc ra 8255 de dieu khien Addr cua EPROM trong 8951
rd2: mov dptr,#porta1
mov a,10h ;chuyen byte B_A_L vao dpl
movx @dptr,a
mov dptr,#portb1
mov a,#11h ;chuyen byte B_A_H vao dph
movx @dptr,a
mov dptr,#porta2
movx a,@dptr ;xuat data ra thanh ghi a
mov 14h,a ;cat byte data vua doc vao o nho 14h
lcall decode ;goi chtr con giai ma hien thi
lcall display ;goi chtr con hien thi
rd5: lcall key ;goi chtr quet phim cho nhan phim de doc byte ke
cjne a,#0ffh,rd4
sjmp rd5 ;quay lai cho
rd4: mov a,11h ;chuyen dia chi byte H vao a de so sanh
cjne a,13h,rd1 ;so sanh dia chi byte H neu chua bang thi tang len 1
mov a,10h ;chuyen dia chi byte L vao a de so sanh
cjne a,12h,rd1 ;so sanh dia chi byte L neu chua bang thi tang len 1
;hien thi chu END de bao ket thuc
mov 25h,#79h ;ma chu E
mov 26h,#37h ;ma chu N
mov 27h,#5eh ;ma chu d
lcall display
sjmp $ ;ngung
rd1: inc 10h ;tang B_A_L len 1
mov a,10h ;kiem tra xem co bang 0 hay khong
cjne a,#00,rd2 ;nhay ve vi chua bang 0
inc 11h ;tang B_A_H len 1
sjmp rd2
;chuong trinh con giai ma hien thi
org 5280h
decode: mov dptr,#0200h
mov a,11h ;lay byte B_A_H de giai ma hien thi
push 0e0h ;cat A
swap a ;xu li so thu nhat
anl a,#0fh
mov dpl,a
movx a,@dptr
mov 20h,a
pop 0e0h ;lay lai A
anl a,#0fh ;xu li so thu 2
mov dpl,a
movx a,@dptr
mov 21h,a
mov a,10h ;lay byte B_A_L de giai ma hien thi
push 0e0h ;cat A
swap a ;xu li so thu nhat
anl a,#0fh
mov dpl,a
movx a,@dptr
mov 22h,a
pop 0e0h ;lay lai A
anl a,#0fh ;xu li so thu 2
mov dpl,a
movx a,@dptr
mov 23h,a
mov a,14h ;lay byte DATA de giai ma hien thi
push 0e0h ;cat A
swap a ;xu li so thu nhat
anl a,#0fh
mov dpl,a
movx a,@dptr
mov 26h,a
pop 0e0h ;lay lai A
anl a,#0fh ;xu li so thu 2
mov dpl,a
movx a,@dptr
mov 27h,a
mov 24h,#00
mov 25h,#00
ret
org 52d5h
display:
mov r1,#80h ;tu dieu khien 8279 chong nhap nhay
mov r0,#20h ;quan li dia chi ma hien thi
dis1: mov dptr,#dk
mov a,r1
movx @dptr,a
mov dptr,#ht
mov a,@r0
movx @dptr,a
inc r1
inc r0
mov a,r0
cjne a,#28h,dis1
ret
org 0223h
key:
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh nap EPROM trong 8951 co hien thi dia chi va du lieu
org 5300h
mov dptr,#cw1 ; khoi tao 8255
mov a,#80h
movx @dptr,a
mov dptr,#cw2
mov a,#80h
movx @dptr,a
;dieu khien Vpp = 5V
mov dptr,#portc2 ;pc0=prog\=H
mov a,#00000011b ;pc1=Vpp=H=5v
movx @dptr,a
;chuyen dia chi bat dau Write cho EPROM vao cac o nho noi
;dia chi bat dau DATA va dia chi ket thuc DATA vao cac o nho ben trong
mov dptr,#4f10h ;nap dia chi luu Begin_Addr can doc
movx a,@dptr
mov 16h,a ;cat tam byte B_A_E_L vao o nho 16h
inc dptr
movx a,@dptr
mov 17h,a ;cat tam byte B_A_E_H vao o nho 17h
inc dptr
movx a,@dptr
mov 18h,a ;cat tam byte B_D_L vao o nho 18h
inc dptr
movx a,@dptr
mov 19h,a ;cat tam byte B_D_H vao o nho 19h
inc dptr
movx a,@dptr
mov 1Ah,a ;cat tam byte E_A_H vao o nho 1Ah
inc dptr
movx a,@dptr
mov 1Bh,a ;cat tam byte E_A_H vao o nho 1Bh
;goi ADDR can write ra 8255 de dieu khien Addr cua EPROM trong 8951
wr4: mov dptr,#porta1
mov a,16h ;chuyen byte B_A_E_L vao dpl
movx @dptr,a
mov dptr,#portb1
mov a,#17h ;chuyen byte B_A_E_H vao dph
movx @dptr,a
;goi DATA ra data bus de nap cho EPROM
mov dpl,18h ;lay Addr_L quan li vung data
mov dph,19h ;lay Addr_H quan li vung data
movx a,@dptr ;lay DATA can nap tu RAM ngoai
mov dptr,#porta2 ;nap dia chi dieu khien DATA vao dptr
movx @dptr,a ;xuat DATA ra bus data
;chuyen dia chi va data can nap de hien thi
mov 10h,16h ;chuyen dia chi cua EPROM
mov 11h,17h
mov 14h,a ;cat tam vao o nho 14H de giai ma hien thi
lcall decode ;goi chtr con giai ma
lcall display ;goi chtr con hien thi
;tao xung Vpp va PROG\
mov dptr,#portc1 ;P2.6=PC0=L; P2.7=PC1=H; P3.6= PC2=H
mov a,#00001110b ;P3.7=PC3=H
movx @dptr,a
mov dptr,#portc2 ;pc0=prog\=H
mov a,#01h ;pc1=Vpp=L tuong duong 12V
movx @dptr,a ;pc0=prog\=L
mov a,#00h ;pc1=Vpp=L
movx @dptr,a
mov 1fh,#10 ;delay
wr1: djnz 1fh,wr1
mov a,#01h ;pc1=Vpp=L tuong duong 12V
movx @dptr,a ;pc0=prog\=H
mov a,#03h ;pc1=Vpp=H tuong duong 5V
movx @dptr,a ;pc0=prog\=H
;ket thuc doan chtr tao xung nap cham dut qua trinh nap 1 BYTE
inc 16h ;tang ADDR_L cua EPROM len 1
mov a,16h
cjne a,#00h,wr2
inc 17h ;tang ADDR_H cua EPROM len 1 khi byte L ve 00h
wr2: mov a,19h ;chuyen dia chi byte H vao a de so sanh
cjne a,1bh,wr3 ;so sanh dia chi byte H neu chua bang thi tang len 1
mov a,18h ;chuyen dia chi byte L vao a de so sanh
cjne a,1ah,wr3 ;so sanh dia chi byte L neu chua bang thi tang len 1
;hien thi chu END de bao ket thuc
mov 25h,#79h ;ma chu E
mov 26h,#37h ;ma chu N
mov 27h,#5eh ;ma chu d
lcall display
sjmp $ ;ngung
wr3: inc 18h ;tang B_A_L len 1
mov a,18h ;kiem tra xem co bang 0 hay khong
cjne a,#00,wr4 ;nhay ve vi chua bang 0
inc 19h ;tang B_A_H len 1
sjmp wr4
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh xoa eprom
org 5400h ; dia chi xoa
mov dptr ,# cw1 ; tu dieu khien 8255-1
mov a, #80h ; A,B,C: xuat
movx @dptr,a
mov dptr, #cw2 ; tu dieu khien 8255-2
mov a ,#80h ; A,B,C:xuat
movx @dptr ,a
;xuat cac tin hieu dieu khien xoa eprom
mov dptr,#portc1
mov a,#01h ;p2.6=h , p2.7=p3.6=p3.7=l
movx @dptr,a
mov dptr,#portc2 ;tao xung prog\ =h
movx @dptr ,a
mov a,#00h ;tao xung prog\ =l
movx @dptr ,a
;toa xung delay 10ms
push #06h
push #07h
mov r6,#28h
y2: mov r7,#FFh
y1: djnz r7 ,y1 ;nhay neu r7 chua bang ffh
djnz r6 ,y2 ;nhay neu r6 chua bang 28h
pop #07h
pop #06h
mov a,#01h
movx @dptr ,a
;ket thuc hien thi chu END
mov 25h ,79h ;ma chu E
mov 26h ,37h ;ma chu N
mov 27h ,5eh ;ma chu D
lcall display ; goi chuong trinh hien thi
sjmp $ ; ngung
end.
Muïc luïc
Trang
Chöông I : Daãn nhaäp
Thi coâng maïch 62
Höôùng phaùt trieån ñeà taøi 63
Keát luaän 64
Taøi lieäu tham khaûo
Phuï luïc 65
Các file đính kèm theo tài liệu này:
- LUANVAN.DOC