MỤC LỤC
Chương 1: Thuyết minh Thiết kế và vận hành mô hình máy đo và cắt chiều dài. 1
I. Giới thiệu chung 1
II. Nguyên lí làm việc 2
III. Các Lưu đồ điều khiển hệ thống 8
Chương 2: Thiết kế phần cứng 13
1. Mạch Vi Xử Lí 13
2. Khối tạo địa chỉ 15
3. Khối giao tiếp Vi xử lý và RAM(62256) 18
4. Khối đếm xung 19
5. Khối hiển thị 20
6. Khối bàn phím 21
7. Khối Mạch động lực 22
8. Mạch đóng ngắt dao 23
Chương 3: Điều Chỉnh Vị Trí Động Cơ DC 25
I. Khái niệm 25
II. Điều khiển vị trí dùng các vòng phản hồi 25
III. Thuật toán điều khiển PID 26
IV. Điều khiển vị trí dùng logic mờ 39
Chương 4:
A. Động Cơ DC 41
I. Đặc tính cơ của động cơ DC kích từ
độc lập hoặc kích từ kích thích song song 41
II. Đặc tính cơ của động cơ kích từ nối tiếp 49
III. Các phương pháp điều chỉnh tốc
độ động cơ điện một chiều 51
B. Bộ giải mã vị trí 54
I. Encoder số 54
Chương 5: Phụ lục 59
A. Giới Thiệu Vi Xử Lý AT89C52 59
B. Giới Thiệu Các IC Sử Dụng Trong Đề Tài 74
C. Chương trình điều khiển 80
112 trang |
Chia sẻ: banmai | Lượt xem: 2030 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Điều khiển đo và cắt chiều dài dùng vi xử lý, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
gioáng nhö nhieàu loaïi Encoder khaùc, boä giaûi maõ tuyeät ñoái goàm moät ñóa troøn, treân ñoù coù nhöõng khoaûng trong suoát vaø ñuïc. Aùnh saùng coù theå xuyeân qua nhöõng phaàn trong suoát ñeán boä caûm bieán quang ( Photo transistor ), khi ñóa quay thì boä caûm bieá baät leân 1 vaø phaàn aùnh saùng bò chaën bôûi nhöõng phaàn ñuïc laøm caûm bieán quang xuoáng 0. Nhö vaäy caûm bieán quang seõ taïo thaønh nhöõng xung tuaàn töï:
Khi thieát bò maõ hoùa naøy ñöôïc söû duïng vôùi cuøng moät thieát bò khaùc, thì vò trí 0 cuûa truïc xem nhö goùc toïa ñoä. Khi truïc cuûa thieát bò maõ hoùa quay veà toïa ñoä goùc naøy thì goùc quay coù theå ñöôïc hieån thò treân boä chæ thò cuûa maùy. Tín hieäu ñaàu ra cuûa thieát bò maõ hoùa khoâng bò aûnh höôûng bôûi nhieãu cuûa thieát bò ñoùng, ngaét vaø khoâng yeâu caàu ñieàu chænh goùc quay chính xaùc. Hôn nöõa, thaäm chí neáu tín hieäu maõ hoùa ñaàu ra khoâng theå ñoïc vì truïc quay quaù nhanh, thì goùc quay chính xaùc ñöôïc ghi khi toác ñoä quay giaûm xuoáng, hoaëc ngay khi nguoàn cho thieát bò maõ hoùa bò ngaét. Theâm nöõa, maõ hoùa seõ khoâng hoaït ñoäng do söï rung ñoäng cuûa caùc thieát bòsöû duïng noù.
Loaïi thieát bò maõ hoùa tuyeät ñoái, coù ñoä phaân giaûi cao hôn vaø cho ra caùc giaù trò thay ñoåi trong phaïm vi roäng hôn so vôùi thieát bò maõ hoùa taêng daàn ( Incremental Encoder ).
Thieát bò maõ hoùa taêng daàn ( Incremental Encoder )
Laø loaïi thieát bò maõ hoùa coù daõy xung ra phuø hôïp vôùi goùc cuûa truïc quay. Thieát bò maõ hoùa naøy khoâng coù xung ra khi truïc khoâng laøm vieäc. Do ñoù caàn coù moät boä ñeáám ñeå xung ra.
Thieát bò maõ hoùa cho bieát vò trí cuûa truïc quay baèng soá xung ñöôïc ñeám. Daïng thieát bò maõ hoùa naøy chæ coù 1 hay 2 keânh ngoõ ra :
+Loaïi 1 chieàu ( chæ coù ñaàu keânh A ) laø loaïi chæ sinh ra xung khi truïc quay.
+Loaïi 2 chieàu ( coù ñaàu ra keânh A vaø B ) cuõng coù theå cho bieát chieàu cuûa truïc quay, nghóa laø thuaän chieàu kim ñoàng hoà. Ngoaøi ra coøn coù ñaàu daây trung tính ( xung Z ) cho moãi voøng quay, coù nghóa laø neáu quay ñöôïc 1 voøng thì xung Z leân 1.
- khi ñóa quay theo chieàu kim ñoàng hoà
-Khi ñóa quay theo chieàu kim ñoàng hoà thì xung track 1 (B) treã pha hôn xung track 2 (A).
-Ngöôïc laïi, khi ñóa quay ngöôïc chieàu kim ñoàng hoà thì xung track 1 (B) nhanh pha hôn xung track 2 (A).
*Quay thuaän chieàu kim ñoàng hoà :
Ñaàu A vöôït quaù B ( ñoä leäch pha ) = 90 +- 45 (T/4 +- T/8)
*Quay ngöôïc chieàu kim ñoàng hoà :
Moät soá thuaät ngöõ cô baûn ñeå xaùc ñònh Encoder:
*Ñieän aùp nguoàn : Ñieän aùp ñaët treân 2 ñaàu Encoder.
*Doøng tieâu thuï : Doøng ñieän lôùn nhaát coù theå chaïy qua Encoder khi ñaët ñieän aùp nguoàn.
*Taàn soá ñaùp öùng cöïc ñaïi :
-Laø taàn soá lôùn nhaát maø thieát bò maõ hoùa quay coù theå ñaùp öùng. Vôùi daïng maõ hoùa taêng daàn, taàn soá naøy töông öùng vôùi xung ra trong 1 giaây. Vì vaäy thieát bò phaûi thoûa maõn quan heä sau :
( Soá voøng quay + 60 voøng/phuùt ) x ñoä phaân giaûi <= taàn soá ñaùp öùng lôùn nhaát
*Momen quaùn tính :
-Laø moment cuûa quaùn tính truïc quay. Moment quaùn tính caøng nhoû truïc ñöôïc döøng caøng nhanh vaø eâm.
*Ñaàu ra A vaø B:
Ñoái vôùi thieát bò maõ hoùa 2 chieàu thì ngöôøi ta söû duïng 2 ñaàu ra song song ñeå xaùc ñònh truïc quay theo chieàu kim ñoàng hoà(CCW) döïa treân ñoä leäch pha cuûa ñaàu ra A vaø B. Maëc duø ñoä leäch pha lyù töôûng90 +- 0 song sai soá cho pheùp ñeán +-45. Ngoaøi ra coøn coù xung chuaånôû ñaàu ra cho moãi voøng quay cuûa truïc thieát bò, chöùc naêng chæ thò 0 naøy cuøng vôùi thieát bò maõ hoùa daïng soá ñöôïc duøng ñeå ñaët taïi ñieåm 0 cuûa moät boä ñeám noái beân ngoaøi hoaëc traïng thaùi nghæ cuûa boä nhaän bieát vò trí.
*Ñoä phaân giaûi:
Ñoái vôùi loaïi maõ hoùa taêng daàn, thì thuaät ngöõ naøy öùng vôùi soá
xung ñaàu ra cho moãi voøng quay cuûa truïc.
*Taûi troïng truïc:
Laø taûi lôùn nhaát maø truïc coù theå chòu ñöôïc. Taûi troïng coù aûnh höôûng tröïc tieáp ñeán tuoåi thoï cuûa truïc.
*Toác ñoä quay:
Laø toác ñoä quay lôùn nhaát maø theát bò maõ hoùa coù theå chòu ñöïng veà maët cô hoïc.
Moment khôûi ñoäng :
Laø Moment caàn ñeå khôûi ñoäng truïc quay töø traïng thaùi nghæ, Moment khôûi ñoäng caøng nhoû thì truïc quay caøng eâm.
Chöông 5: Phuï luïc.
A. GIÔÙI THIEÄU VI XÖÛ LYÙ AT89C52
&
VI ÑIEÀU KHIEÅN HOÏ MCS-51MCS-51tm
Laø hoï vi ñieàu khieån do haõng intel saûn xuaát vaøo ñaàu nhöõng naêm 80 vaø ngaøy nay ñaõ trôû thaønh moät chuaån trong coâng nghieäp. baét ñaàu töø ic tieâu bieåu laø 8051 ñaõ cho thaáy khaû naêng thích hôïp vôùi nhöõng öùng duïng mang tính ñieàu khieån. vieäc xöû lí treân byte vaø caùc pheùp toaùn soá hoïc ôû caáu truùc döõ lieäu nhoû ñöôïc thöïc hieän baèng nhieàu cheá ñoä truy xuaát döõ lieäu nhanh treân ram noäi. taäp leänh cung caáp moät baûn tieän duïng cuûa nhöõng leänh soá hoïc 8 bit goàm caû leänh nhaân vaø leänh chia. noù cung caáp nhöõng hoã trôï môû roäng on-chip duøng cho nhöõng bieán 1 bit nhö laø kieåu döõ lieäu rieâng cho pheùp quaûn lí vaø kieåm tra bit tröïc tieáp trong ñieàu khieån vaø nhöõng heä thoáng logic ñoøi hoûi xöû lí luaän lí.
Sau ñaây laø baûng so saùnh caùc IC trong hoï MCS-51TM :
TEÂN LINH KIEÄN
BOÄ NHÔÙ CHÖÔNGù TRÌNH ON CHIP
BOÄ NHÔÙ DÖÕ LIEÄU ON CHIP
TIMER
8051
4 KB MROM
128 Bytes
2
8031
0 KB
128 Bytes
2
8751
4 KB EPROM
128 Bytes
2
8951
4 KB Flash ROM
128 bytes
2
8052
8 KB MROM
256 Bytes
3
8032
0 KB
256 Bytes
3
8752
8 KB EPROM
256 Bytes
3
8952
8 KB Flash ROM
256 Bytes
3
2. VI ÑIEÀU KHIEÅN AT89C52
Do hoï MCS-51TM ñaõ trôû thaønh chuaån coâng nghieäp neân coù raát nhieàu haõng saûn xuaát ra noù, ñieån hình laø ATMEL Corporation. Haõng naøy ñaõ keát hôïp raát nhieàu tính naêng döïa treân neàn taûng kyõ thuaät cuûa mình ñeå taïo ra caùc vi ñieàu khieån töông thích vôùi MCS-51TM nhöng maïnh meõ hôn.
AT89C52 laø moät vi ñieàu khieån 8 bit do ATMEL saûn xuaát, cheá taïo theo coâng ngheä CMOS, coù chaát löôïng cao, coâng suaát thaáp vôùi 8 KB Flash (flash programmable and erasable read only memory). Thieát bò naøy ñöôïc cheá taïo baèng caùch söû duïng kyõ thuaät boä nhôù khoâng boác hôi maät ñoä cao cuûa ATMEL vaø töông thích vôùi chuaån coâng nghieäp MCS-51TM veà taäp leänh vaø caùc chaân ra. Flash on-chip cho pheùp boä nhôù laäp trình ñöôïc laäp trình trong heä thoáng bôûi moät laäp trình vieân bình thöôøng. Baèng caùch noái 1 CPU 8 bit vôùi moät Flash treân moät chip ñôn, AT89C52 laø moät vi ñieàu khieån maïnh (coù coâng suaát lôùn), cung caáp moät söï linh ñoäng cao vaø giaûi phaùp veà giaù caû ñoái vôùi nhieàu öùng duïng vi ñieàu khieån.
Caùc ñaëc ñieåm chuû yeáu cuûa AT89C52 :
Töông thích hoaøn toaøn vôùi hoï MCS-51TM cuûa Intel.
Boä nhôù chöông trình 8K Byte thuoäc loaïi Flash Memory.Ñoä beàn : 1000 laàn ghi/xoùa.
Taàn soá hoaït ñoäng : 0 Hz ñeán 24 MHz.3 cheá ñoä khoùa boä nhôù.
256 x 8-Bit RAM noäi.32 ñöôøng I/O laäp trình ñöôïc (4 port).
3 timer/counter 16-bit.8 nguoàn ngaét.
Cheá ñoä haï nguoàn vaø cheá ñoä löôøi tieâu toán coâng suaát thaáp.
2.1. Caáu taïo chaân
Tuøy theo khaû naêng (veà kinh teá, kyõ thuaät, …) maø caùc nhaø saûn xuaát caùc saûn phaåm öùng duïng coù theå choïn moät trong 3 kieåu chaân do ATMEL ñöa ra.
2.2. Sô ñoà khoái
2.3. Moâ taû chöùc naêng cuûa caùc chaân
Vcc : aùp nguoàn.
GND : ñaát.
Port 0 : laø moät port I/O 8-bit hai chieàu, cöïc maùng hôû. Khi xuaát ra, moãi chaân port coù theå laùi 8 ñaàu vaøo TTL. Neáu ghi caùc möùc 1 ra caùc chaân port thì caùc chaân naøy coù theå duøng nhö caùc ñaàu vaøo trôû khaùng cao.
Port 0 cuõng coù theå ñöôïc caáu hình thaønh moät bus multiplex giöõa ñòa chæ thaáp vaø döõ lieäu khi truy caäp chöông trình hay döõ lieäu töø beân ngoaøi. Trong cheá ñoä naøy, port 0 coù ñieän trôû pullup noäi.
Port 0 cuõng nhaän caùc byte maõ chöông trình khi laäp trình Flash vaø xuaát ra maõ chöông trình khi kieåm tra, khi ñoù caàn coù ñieän trôû pullup beân ngoaøi.
Port 1 : laø moät port I/O 8-bit hai chieàu coù pullup noäi. Ñaàu ra port 1 coù theå laùi 4 ñaàu vaøo TTL. Khi vieát caùc möùc 1 ra caùc chaân port thì chuùng ñöôïc keùo leân do coù ñieän trôû noäi vaø coù theå duøng laøm ñaàu vaøo. Khi vai troø laø coång nhaäp, nhöõng chaân cuûa port 1 bò keùo xuoáng thaáp seõ ñoå doøng vì coù noäi trôû keùo leân.
Hôn nöõa, P1.0 vaø P1.1 coù theå ñöôïc duøng nhö laø ñaàu vaøo boä ñeám timer/counter 2 beân ngoaøi (P1.0/T2) vaø xung kích (P1.1/T2EX).
Port 1 cuõng nhaän nhöõng byte ñòa chæ thaáp trong khi laäp trình Flash vaø trong khi kieåm tra Flash .
Port 2 : laø moät port I/O 8-bit hai chieàu coù pullup noäi. Ñaàu ra port 2 coù theå laùi 4 ñaàu vaøo TTL. Khi vieát caùc möùc 1 ra caùc chaân port thì chuùng ñöôïc keùo leân do coù ñieän trôû noäi vaø coù theå duøng laøm ñaàu vaøo. Khi vai troø laø coång nhaäp, nhöõng chaân cuûa port 2 bò keùo xuoáng thaáp seõ ñoå doøng vì coù noäi trôû keùo leân.
Port 2 phaùt byte ñòa chæ cao trong khi nhaän leänh töø boä nhôù chöông trình ngoaøi vaø trong luùc truy xuaát ñeán boä nhôù döõ lieäu ngoaøi maø coù söû duïng ñòa chæ 16 bit (MOVX A, @DPTR). Trong öùng duïng naøy noù duøng ñieän trôû noäi keùo leân maïnh khi xuaát 1. Khi truy xuaát boä nhôù döõ lieäu ngoaøi duøng ñòa chæ 8 bit, port 2 seõ phaùt noäi dung cuûa thanh ghi P2
Port 2 cuõng nhaän byte ñòa chæ cao trong luùc laäp trình Flash vaø trong luùc kieåm tra Flash.
Port 3 : laø moät port I/O 8-bit hai chieàu coù pullup noäi. Ñaàu ra port 3 coù theå laùi 4 ñaàu vaøo TTL. Khi vieát caùc möùc 1 ra caùc chaân port thì chuùng ñöôïc keùo leân do coù ñieän trôû noäi vaø coù theå duøng laøm ñaàu vaøo. Khi vai troø laø coång nhaäp, nhöõng chaân cuûa port 3 bò keùo xuoáng thaáp seõ ñoå doøng vì coù noäi trôû keùo leân.
Port 3 cuõng coù nhöõng chöùc naêng cuûa hoï MSC-51 ñöôïc ieät keâ ôû baûng sau:
BIT
TEÂN
ÑÒA CHÆ BIT
CHÖÙC NAÊNG THAY THEÁ
P3.0
RXD
B0H
Nhaän döø lieäu cho port noái tieáp
P3.1
TXD
B1H
Truyeàn döø lieäu cho port noái tieáp
P3.2
INT0
B2H
Ngaét ngoaøi 0
P3.3
INT1
B3H
Ngaét ngoaøi 1
P3.4
T0
B4H
Ngoõ vaøo töø beân ngoaøi cho timer/counter 0
P3.5
T1
B5H
Ngoõ vaøo töø beân ngoaøi cho timer/counter 1
P3.6
WR
B6H
Xung ghi boä nhôù döõ lieäu ngoaøi
P3.7
RD
B7H
Xung ñoïc boä nhôù döõ lieäu ngoaøi
Port 3 cuõng nhaän vaøi tín hieäu ñieàu khieån trong luùc laäp trình Flash vaø trong luùc kieåm tra Flash.
RST : laø ngoõ vaøo Reset. Khi ngoõ naøy ñöôïc ñöa leân cao (trong ít nhaát hai chu kì maùy), caùc thanh ghi beân trong AT89C51 ñöôïc taûi nhöõng giaù trò thích hôïp ñeå khôûi ñoäng heä thoáng.
ALE/PROG (Address Latch Enable) : ALE laø xung xuaát cho pheùp choát byte ñòa chæ thaáp khi truy caäp boä nhôù ngoaøi. Chaân naøy coøn laø ngoõ vaøo cuûa xung laäp trình (PROG) khi laäp trình Flash.
Trong hoaït ñoäng bình thöôøng, ALE ñöôïc phaùt xung vôùi taàn soá 1/6 taàn soá dao ñoäng on-chip vaø coù theå ñöôïc duøng nhö xung thôøi gian chuaån beân ngoaøi. Tuy nhieân, caàn chuù yù laø moät xung ALE seõ bò maát khi truy caäp boä nhôù ngoaøi.
Coù theå huûy boû chöùc naêng cuûa ALE baèng caùch set bit 0 cuûa thanh ghi ôû vò trí 8EH. Moät khi bit naøy ñöôïc set, ALE chæ tích cöïc khi coù leänh MOVX hoaëc MOVC. Neáu khoâng coù caùc leänh naøy thì ALE ôû möùc cao. Vieäc set bit 0 cuûa thanh ghi ôû vò trí 8EH khoâng laøm aûnh höôûng ñeán vi ñieàu khieån khi truy caäp boä nhôù ngoaøi.
PSEN (Program Store Enable) : PSEN laø xung strobe baùo hieäu vieäc ñoïc boä nhôù chöông trình ngoaøi, PSEN tích cöïc hai laàn (möùc thaáp) moãi chu kì maùy, ngoaïi tröø hai xung PSEN bò maát khi truy xuaát döõ lieäu ngoaøi. Khi thi haønh chöông trình trong RAM noäi, PSEN seõ ôû möùc thuï ñoäng (möùc cao).
EA/VPP (External Access) : EA laø ngoõ vaøo ñeå cho pheùp truy xuaát boä nhôù chöông trình töø beân ngoaøi khi ñöôïc noái vôùi GND. Khi EA ñöôïc treo leân nguoàn VCC, chöông trình seõ ñöôïc thöïc thi trong ROM noäi. Chaân naøy cuõng nhaän ñieän aùp 12v (VPP) trong khi laäp trình Flash.
XTAL1 : Ñaàu vaøo cuûa boä khueách ñaïi dao ñoäng ñaûo vaø cuõng laø ñaàu vaøo ñeán maïch taïo xung clock noäi.
XTAL2 : Ñaàu ra cuûa boä khueách ñaïi dao ñoäng ñaûo.
2.4. Caùc thanh ghi chöùc naêng (SFR-Special Funtion Reisters)
AT89C52 coù 26 thanh ghi chöùc naêng ñöôïc thieát keá nhö laø moät thaønh phaàn cuûa RAM on-chip. Do ñoù moãi thanh ghi coù moät ñòa chæ cuûa noù, naèm trong vuøng töø 80H ñeán FFH. Tuy nhieân, vuøng naøy cuõng laø vuøng boä nhôù neân vieäc truy caäp caùc thanh ghi naøy thoâng qua caùc leänh duøng ñònh vò tröïc tieáp khaùc vôùi vieäc truy caäp vuøng nhôù duøng ñònh vò giaùn tieáp.
Baûng vò trí caùc thanh ghi chöùc naêng :
Chuù yù laø khoâng phaûi taát caû caùc ñòa chæ ñeàu coù caùc thanh ghi, nhöõng ñòa chæ khoâng coù thanh ghi naøy coù theå khoâng coù treân chip. Ñoïc nhöõng ñòa chæ naøy seõ coù nhöõng giaù trò ngaãu nhieân vaø ghi nhöõng giaù triï naøy coù nhöõng taùc ñoäng khoâng xaùc ñònh tröôùc.
Phaàn meàm cuûa ngöôøi duøng khoâng neân ghi nhöõng giaù trò 1 ñeán caùc vò trí naøy, bôûi vì chuùng coù theå ñöôïc duøng trong töông lai. Trong tröôøng hôïp ñoù, giaù trò cuûa caùc bit luoân laø 0.
Ngoaøi nhöõng thanh ghi töông töï 8051, AT89C52 coù theâm :
Caùc thanh ghi Timer 2 caùc bit ñieàu khieån vaø traïng thaùi chöùa trong thanh ghi T2CON vaø T2MOD cho Timer 2. Caëp thanh ghi RCAP2H vaø RCAP2L laø nhöõng thanh ghi Capture/Reload trong cheá ñoä capture 16 bit hay cheá ñoä auto-reload 16 bit.
Kyù hieäu
Chöùc naêng
TF2
Côø traøn Timer 2, set khi Timer 2 traøn vaø phaûi ñöôïc clear baèng phaàn meàm. TF2 seõ khoâng set khi RCLK = 1 hoaëc TCLK = 1.
EXF2
Côø ngoaøi cuûa Timer 2, set khi xaûy ra capture hoaëc reload do T2EX xuoáng thaáp vaø EXEN2 = 1. Neáu ngaét Timer 2 ñöôïc kích hoaït, EXF2 = 1 seõ laøm CPU troû ñeán ISR cuûa Timer 2. EXF2 phaûi ñöôïc xoùa baèng phaàn meàm. EXF2 khoâng gaây neân ngaét trong cheá ñoä ñeám leân/xuoáng (DCEN = 1).
RCLK
Kích hoaït xung clock boä thu. Khi set, caùc xung traøn Timer 2 seõ laø xung clock cho boä thu port noái tieáp trong mode 1 vaø 3. RCLK = 0 thì boä thu port noái tieáp seõ duøng caùc xung traøn cuûa Timer 1.
TCLK
Kích hoaït xung clock boä phaùt. Khi set, caùc xung traøn Timer 2 seõ laø xung clock cho boä phaùt port noái tieáp trong mode 1 vaø 3. TCLK = 0 thì boä phaùt port noái tieáp seõ duøng caùc xung traøn cuûa Timer 1.
EXEN2
Kích hoaït beân ngoaøi. Khi set, cho pheùp capture hay reload khi T2EX xuoáng thaáp (neáu Timer 2 khoâng söû duïng cho port noái tieáp). EXEN2 = 0 laøm cho Timer 2 boû qua caùc söï kieän treân T2EX.
TR2
Khôûi ñoäng/Döøng Timer 2. TR2 = 1 laøm khôûi ñoäng Timer 2.
C/T2
Bit löïa choïn timer hay counter. C/T2 = 0 : timer. C/T2 = 1 : counter ñeám söï kieän beân ngoaøi (kích caïnh xuoáng).
CP/RL2
Löïa choïn capture hay reload. CP/RL2 = 1: capture xaûy ra khi T2EX xuoáng thaáp neáu EXEN2 = 1. CP/RL2 = 0 : reload xaûy ra khi Timer 2 traøn hoaëc khi T2EX xuoáng thaáp neáu EXEN2 = 1. Neáu TCLK hay RCLK = 1, bit naøy bò boû qua vaø timer bò eùp vaøo cheá ñoä reload khi Timer 2 traøn.
Caùc thanh ghi ngaét taäp caùc bit rieâng leû cho pheùp ngaét chöùa trong thanh ghi IE. Thieát laäp hai möùc öu tieân cho 6 nguoàn ngaét baèng caùch set caùc bit thanh ghi IP.
2.5. Boä nhôù döõ lieäu
AT89C52 coù 256 byte boä nhôù RAM on-chip. Trong ñoù, 128 byte treân coù cuøng ñòa chæ vôùi vuøng thanh ghi chöùc naêng nhöng coù caáu taïo vaät lyù rieâng bieät.
Khi moät leänh truy caäp moät vò trí noäi coù ñòa chæ treân 7FH, cheá ñoä ñòa chæ noù söû duïng seõ baùo cho CPU bieát vuøng ñòa chæ naøo noù caàn truy caäp : RAM hay SFR. Caùc leänh duøng ñòa chæ tröïc tieáp seõ truy caäp vuøng SFR. Ví duï nhö leänh sau ñaây seõ truy caäp SFR ôû ñòa chæ 0A0H (port 2)
MOV 0A0H,#data
Leänh duøng ñòa chæ giaùn tieáp seõ truy caäp 128 byte treân cuûa RAM. Ví duï nhö cuõng truy caäp ñòa chæ 0A0H nhöng giaùn tieáp thoâng qua R0.
MOV R0,#0A0H
MOV @R0,#data
Chuù yù raèng caùc taùc vuï cuûa stack voán ñaõ söû duïng ñòa chæ giaùn tieáp neân vuøng 128 byte treân cuûa RAM raát tieän duïng ñeå laøm vuøng stack.
2.6. Ñaëc tính boä dao ñoäng
XTAL1 laø ñaàu vaøo vaø ñaàu ra töông öùng cuûa boä khueách ñaïi ñaûo ñöôïc duøng laøm boä dao ñoäng noäi on-chip. Coù theå duøng thaïch anh hay boä coäng höôûng ceramic ñeàu ñöôïc.
Ñeå laùi vi ñieàu khieån töø nguoàn xung clock beân ngoaøi, XTAL2 phaûi ñöôïc ñeå troáng trong khi XTAL1 noái ñeán nguoàn laùi. Khoâng coù yeâu caàu gì veà duty cycle nhöng phaûi chuù yù ñeán thôøi gian toái ña vaø toái thieåu cuûa möùc ñieän aùp cao cuõng nhö möùc ñieän aùp thaáp.
2.7. Cheá ñoä löôøi
Trong cheá ñoä löôøi, CPU rôi vaøo traïng thaùi “nguû” trong khi taát caû thieát bò ngoaïi vi vaãn coøn tích cöïc. Cheá ñoä naøy ñöôïc taïo ra baèng phaàn meàm. Noäi dung cuûa RAM on-chip vaø giaù trò cuûa caùc SFR vaãn ñöôïc giöõ nguyeân. Keát thuùc cheá ñoä löôøi baèng caùch kích hoaït moät ngaét hoaëc reset phaàn cöùng.
Chuù raèng khi keát thuùc cheá ñoä löôøi baèng caùch reset phaàn cöùng thì thoâng thöôøng vi ñieàu khieån seõ goïi laïi chöông trình maø noù vöøa thoaùt, cho ñeán hai chu kyø maùy tröôùc khi thuaät toaùn reset chieám quyeàn ñieàu khieån. Phaàn cöùng caám truy caäp RAM noäi trong tröôøng hôïp naøy nhöng khoâng caám truy caäp ñeán caùc chaân port, do ñoù coù theå xaûy ra nhöõng tröôøng hôïp khoâng mong muoán. Ñeå loaïi boû tröôøng hôïp naøy, leänh ngay sau leänh goïi cheá ñoä löôøi khoâng neân laø leänh ghi port hay ghi boä nhôù ngoaøi.
2.8. Cheá ñoä haï nguoàn
Trong cheá ñoä haï nguoàn, boä dao ñoäng ngöøng, vaø leänh goïi haï nguoàn laø leänh cuoái cuøng ñöôïc thöïc thi. RAM on-chip vaø SFR duy trì giaù trò cuûa noù cho ñeán khi keát thuùc cheá ñoä haï nguoàn.
Keát thuùc cheá ñoä haï nguoàn chæ baèng moät caùch duy nhaát : reset phaàn cöùng. Reset seõ taïo laïi giaù trò cho SFR nhöng khoâng thay ñoåi noäi dung cuûa RAM on-chip. Khoâng neân reset tröôùc khi Vcc phuïc hoài möùc ñieän aùp thoâng thöôøng cuûa noù vaø phaûi giöõ ñuû laâu ñeå boä dao ñoäng phuïc hoài vaø oån ñònh.
2.9. Traïng thaùi cuûa moät soá chaân trong cheá ñoä löôøi vaø cheá ñoä haï nguoàn
IX. TAÄP LEÄNH CUÛA 89C51:
AT89C51 coù 255 leänh chia thaønh caùc nhoùm leänh:
+ Nhoùm leänh chuyeån dôøi
+ Nhoùm leänh soá hoïc
+ Nhoùm leänh logic
+ Nhoùm leänh chuyeån ñieàu khieån
Sau ñaây laø taäp leänh cô baûn cuûa vi xöû lyù AT89C51:
Caùc chæ daån thieát laäp leänh
Rn : Thanh ghi R0 ñeán R7
Data : 8 bit ñòa chæ vuøng döõ lieäu beân trong
@Ri : Ñònh chæ giaùn tieáp qua R0 hay R1
#data : Haèng soá 8 bit
#data16 : Haèng soá 16 bit
addr 16 : 16 bit ñòa chæ ñích
addr 11 : 11 bit ñòa chæ ñích
rel : Ofset 8 bit coù daáu
bit : Bit ñöôïc ñònh ñòa chæ tröïc tieáp
a) Nhoùm leänh xöû lyù soá hoïc :
ADD A,Rn (1 byte,1chu kyø maùy): (A) = (A)+(Rn)
ADD A,data (2;1) : (A) = (A) + (data)
ADD A,@Ri (1;1) : (A) = (A) + ((Ri))
ADD A,#data (2;1) : (A) = ( A) + #data
ADDC A,Rn (1;1) : (A) = ( A) + (C) +(Rn)
ADDC A,data ( 2;1) : (A) = (A) + (C) + (data)
ADDC A,@Ri (1;1) : (A) = (A) + ((Ri)) + (C)
ADDC A,#data ( 2;1) : (A) = (A) + (C) + #data
SUBB A,Rn (1;1) : (A) = (A) - (C)- (Rn)
SUBB A,data (2;1) : (A) = (A) - (C) -( data)
SUBB A,@Ri (1;1) : (A) =(A) -(C) -((Ri))
SUBB A,#data (2;1) : (A) = (A) - (C) - #data
INC A (1;1) : (A) = (A) +1
INC Rn (1;1) : (Rn) = (Rn) +1
INC data (2;1) : (data) = (data) +1
INC @Ri (1;1) : ((Ri)) =((Ri))+1
DEC A (1;1) : (A) =(A) – 1
DEC Rn (1;1) : (Rn) =(Rn) -1
DEC data (2;1) : (data) =(data) –1
DEC @Ri (1;1) : ((Ri)) =((Ri)) –1
INC DPTR (1;2) : (DPTR) =(DPTR) +1
MUL AB (1;4) : (A) = byte cao cuûa (A) * (B)
(B) = byte thaáp cuûa (A)* (B)
DIV AB (1;4) : chia (A) cho (B) ,keát quaû:
( A) = thöông soá
(B) = soá dö
DA A (1;1) : hieäu chænh thaäp phaân thanh ghi A
b) Nhoùm leänh luaän lyù:
ANL A,Rn (1;1) : (A) =(A) and (Rn)
ANL A,data (2;1) : (A) =(A) and (data)
ANL A,@Ri (1;1) : (A) = (A) and ((Ri))
ANL A,#data (2;1) : (A) = (A) and #data
ANL data,A (2;1) : (data) = (data) and (A)
ANL data,#data (3;2) : (data) =(data) and #data
ANL C,bit (2;2) : (C) =(C) and (bit)
ANL C, bit (2;2) : (C) =(C) and not (bit)
ORL A,Rn (1;1) : (A) = (A) or (Rn)
ORL A,data (2;1) : (A) = (A) or data
ORL A,@Ri (1;1) : (A) = (A) or ((Ri))
ORL A,#data (2;1) : (A) = (A) or #data
ORL data,A (2;1) : (data) = (data) or (A)
ORL data,#data (3;2) : (data ) = (data) or # data
ORL C,bit (2;2) : (C) = (C) or bit
ORL C,/bit (2;2) : (C) = (C) or not bit
XRL A,Rn (1;1) : (A) =(A) xor (Rn)
XRL A,data (2;1) : (A) = (A) xor (data)
XRL A,@Ri (1;1) : (A) = (A) xor ((Ri))
XRL A,#data (2;1) : (A) = (A) xor #data
XRL data,A (2;1) : (data) = (data) xor (A)
XRL data,#data (3;2) : (data) = (data) xor #data
SETB C (1;1) : (C) =1
SET bit (2;1) : (bit) = 1
CLR A (1;1) : (A) = 0
CLR bit (2;1) : (bit) =0
CLR C (1;1) : (C) = 0
CPL A (1;1) : (A) = not (A)
CPL C (1;1) : (C) = not (C)
CPL bit (2;1) : (bit) = not (bit)
RL A (1;1) : quay traùi noäi dung thanh ghi A
RLC A (1;1) : quay traùi noäi dung thanh ghi A
RR A (1;1) : quay phaûi noäi dung thanh ghi A
RRC A (1;1) : quay phaûi noäi dung thanh ghi A
qua côø nhôù
SWAP A (1;1) : quay traùi noäi dung thanh ghi A
moät nibble
c) Nhoùm leänh chuyeån döõ lieäu :
MOV A,Rn (1;1) : (A) =(Rn)
MOV A,data (2;1) : (A) = (data)
MOV A,@Ri (1;1) : (A) = ((Ri))
MOV A,#data (2;1) : (A) = #data
MOV Rn,A (1;1) : (Rn) = (A)
MOV Rn,data (2;2) : (Rn) = (data)
MOV Rn,#data (2;1) : (Rn) = #data
MOV data,A (2;1) :(data) = (A)
MOV data,Rn (2;2) : (data) = (Rn)
MOV data,data (3;2) : (data) = (data)
MOV data,@Ri (2;2) : (data) = ((Ri))
MOV data,#data (3;2) : (data) = #data
MOV @Ri,A (1;1) : ((Ri)) = (A)
MOV @Ri,data (2;2) : ((Ri)) = (data)
MOV @Ri,#data (2;1) : ((Ri)) = #data
MOV DPTR,#data16 (3;2) : (DPTR) = #data16
MOV C,bit (2;1) : (C) = (bit)
MOV bit,C (2;2) : (bit) = (C)
MOVC A,@A+DPTR (1;2) : (A) = ((A)+(DPTR))
MOVC A,@A+PC (1;2) : (A) = ((A)+(PC))
MOVX A,@Ri (1;2) : chuyeån döõ lieäu ngoaøi 8 bít
vaøo thanh ghi A .
MOVX A,@DPTR (1;2) : chuyeån döõ kieäu ngoaøi 16 bit vaøo
thanh ghi A.
MOVX @Ri,A (1;2) : chuyeån noäi dung thanh ghi A ra döõ
lieäu ngoaøi 8 bit ñòa chæ.
MOVX @DPTR,A (1;2) : chuyeån noäi dung thanh ghi A ra döõ
lieäu ngoaøi 16 bit ñòa chæ.
PUSH data (2;2) : (SP) =(SP) +1
((SP)) = (data)
POP data (2;2) : (data) = ((SP))
(SP) = (SP) -1
XCH A,Rn (1;1) : trao ñoåi döõ lieäu giöõa thanh ghi Rn
vaø thanh ghi A.
XCH A,data (2;1) : trao ñoåi giöûa thanh ghi A vaø data.
XCH A,@Ri (1;1) : trao ñoåi giöõa thanh ghi A vaø moät
döõ lieäu giaùn tieáp.
XCHD A,@Ri (1;1) : trao ñoåi giöõa nibble thaáp
cuûa thanh ghi A vaø nibble thaáp cuûa byte döõ lieäu giaùn tieáp.
d) Nhoùm leänh chuyeån ñieàu khieån :
ACALL addr11 (2;2) : Goïi chöông trình con duøng ñòa
chæ tuyeät ñoái.
LCALL addr16 (3;2) : Goïi chöônhg trình con duøng ñòa chæ daøi.
RET (1;2) : Trôû veà töø leänh goïi chöông trình
con
RETI (1;2) :Trôû veà töø leänh goïi ngaét
AJMP addr11 (2;2) : Nhaûy tuyeät ñoái
LJMP addr16 (3;2) : Nhaûy daøi
SJMP rel (2;2) : Nhaûy ngaén
JMP @A+DPTR (1;2) : Nhaûy giaùn tieáp töø con troû döõ lieäu
JZ rel (2;2) : Nhaûy neáu A baèng 0
JNZ rel (2;2) : Nhaûy neáu A khoâng baèng khoâng
JC rel (2;2) : Nhaûy neáu côø nhôù ñöôïc ñaët
JNC rel (2;2) : Nhaûy neáucôø nhôù khoâng ñöôïc ñaët
JB bit,rel (3;2) : Nhaûy töông ñoái neáu bit tröïc tieáp ñöôïc ñaët
JNB bit,rel (3;2) : Nhaûy neáu bit khoâng ñöôïc ñaët
JBC bit, rel (3;2) : Nhaûy töông ñoái neáu bit tröïc tieáp ñöôïc
ñaët roài xoùa bit
CJNE A,data,rel (3;2) : So saùnh döõ lieäu tröïc tieáp vôùi A
vaø nhaûy neáu khoâng baèng
CJNE A,#data,rel (3;2) : So saùnh döõ lieäu öùc thôøi vôùi Avaø nhaûy neáu
khoâng baèng
CJNE Rn,#data,rel (3;2) : So saùnh döõ lieäu töùc thôøi vôùi (Rn) vaø nhaûy
neáu khoâng baèng
CJNE @Ri,#data,rel (3;2) : So saùnh döõ lieäu töùc thôøi vôùi
döõ lieäu giaùn tieáp vaø nhaûy neáu khoâng baèng
DJNZ Rn,rel (2;2) : Giaûm thanh ghi Rn vaø nhaûy neáu
khoâng baèng khoâng
DJNZ data,rel (3;2) : Giaûm döõ lieäu tröïc tieáp vaø nhaûy
neáu khoâng baèng
B. GIÔÙI THIEÄU CAÙC IC SÖÛ DUÏNG TRONG ÑEÀ TAØI
&
PPI 8255 ( Programing Peripheral Interface ):
Caáu truùc toång quaùt:
Ñeäm data
Kieåm soaùt ñoïc ghi
Ñieàu khieån nhoùm B
Ñieàu khieån nhoùm A
Nhoùm A
Port A
Nhoùm A
½ port C
Nhoùm B
½ port C
Nhoùm B
Port B
RD
WR
CS
RST
A1
A2 WR CS PB0¸P B7 RTS A0
A 1 RD WR CS PB0¸P B7 RTS A0
A 1 WR CS PB0¸P B7 RTS A0
A 1
PC0¸PC3
PA0¸PA7
PC4¸P C7
PB0¸PB7
Bus data
D0¸D7
Boä ñeäm truyeàn data : Boä ñeäm 8 bit , hai chieàu , ba traïng thaùi duøng ñeå giao tieáp bus data 8255 vôùi bus data CPU.
Boä kieåm soaùt ñoïc ghi : kieåm soaùt taát caû söï truyeàn ñaït beân trong vaø ngoaøi cuûa töø ñieàu khieån vaø data nhaän tín hieäu A0,A1 töø bus ñòa chæ , caùc tín hieäu RD ,WR, CS, RST töø bus ñòa chæ phaùt ra caùc leänh cho hai nhoùm A vaø B
Khoái töø ñieàu khieån : Ñeå ñieàu khieån hoaït ñoäng hai nhoùm A vaø B ta phaûi xuaát töø ñieàu khieån ñeán thanh ghi ñieàu khieån 8255 , töø ñieàu khieån bao goàm caùc thoâng tin veà choïn mode , set bit ,reset bit… Noù seõ khoûi ñoäng caáu hình hoaït ñoäng cho 8255, thanh ghi ñieàu khieån chæ ghi vaøo chöù khoâng ñoïc ra ñöôïc.
Caùc port : 8255 goàm 3 port , kyù hieäu A,B,C, moãi port goàm 8 bit coù theå laäp trình ñöôïc ñeå xaùc ñònh cheá ñoä hoaït ñoäng thích hôïp, caùc port A vaø B goàm boä ñeäm choát ngoõ ra 8 bit vaø choát ngoõ vaøo 8 bit. Port C coù choát ngoõ ra 8bit vaø ñeäm khoâng choát ngoõ vaøo 8 bit , port C ñöôïc phaân ra laøm hai phaàn : 4 bit cao PC4¸PC7 cuøng vôùi port A hình thaønh nhoùm A, boán bit thaáp PC0¸PC4 cuøng port B hình thaønh nhoùm B .
Caùc tín hieäu ñieàu khieån :
+ CS :choïn chip , tích cöïc möùc 0
+ RD :ñoïc data , tích cöïc möùc 0
+ WR : ghi data, tích cöïc möùc 0
+ RST : Reset, xoùa caùc thanh ghi ñieàu ñieàu khieån vaø caùc port A, B ,C veà mode nhaäp , tích cöïc möùc 1.
+ Choïn mode:
A1 A0 port
0 0 A
0 1 B
1 0 C
1 1 töø ñieàu khieån
- Nguoàn cung caáp : 5V
l 8255 coù nhieàu mode laøm vieäc , tuy nhieân mode laø mode ñöôïc söû duïng phoå bieán trong caùc öùng duïng cuûa noù, ñaây laø mode xuaát nhaäp ñôn giaûn : caùc port coù theå ñöôïc laäp trình laø ngoõ vaøo hay ngoõ ra.
PC¸PC3
0:out put, 1: input
Port B
0:output, 1: input
Mode nhoùm A
00:mode0,01:mode 1
Mode nhoùm B:
O:mode 0, 1:mode 1
PC4¸PC7
0:output,1 : input
Port A
0:output, 1: input
Choïn mode
0: BSR mode
1: I/O mode
D7 D6 D5 D4 D3 D2 D1 D0
l Khôûi ñoäng 8255:
Ñeå hoaït ñoäng ñaàu tieân ta phaûi khôûi ñoäng 8255: khôûi ñoäng 8255 laø ghivaøo töø ñieàu khieån moät giaù trò thích hôïp ñeå choïn mode laøm vieäc , qui ñònh ngoõ vaøo , ngoõ ra cho caùc port.
lTöø ñieàu khieån : ( hình veõ treân )
II. RAM 62256:
Boä nhôù Ram thöôøng ñöôïc duøng trong caùc thieát bò tính ñeå caát giöõ caùc keát quaû trung gian hay keát quaû taïm thôøi trong khi thöïc hieän caùc chöông trình ñieàu khieån.
- Dung löôïng :32kbyte.
Töø D0® D7 :Data
Töø A0®A14 : Ñòa chæ
Chaân /CE: cho pheùp RAM xuaát nhaäp data .
Chaân /WE =0 : cho pheùp RAM ghi data
Chaân /OE = 0 : cho pheùp RAM xuaát data.
Sô ñoà chaân linh kieän :
III. IC 75176:
Laø IC chuyeån ñoåi tín hieäu ñieän aùp so vôùi mass thaønh tín hieäu ñieän aùp vi sai .
Sô ñoà chaân linh kieän :
IV. MAX 232:
Laø vi maïch chuyeån ñoåi tín hieäu theo chuaån RS232 sang chuaån TTL vaø ngöôïc laïi.
Trong thöïc teá coù raát nhieàu vi maïch chuyeån ñoåi töø RS_232 sang TTL vaø ngöôïc laïi. Theá nhöng MAX232 coù öö ñieåm hôn caùc vi maïch khaùc vaø raát phoå bieán hieän nay, öu ñieåm cuûa MAX 232 laø chæ söû duïng nguoàn ñôn cöïc +5V.
Beân trong MAX 232 coù moät boä nhaân ñoâi ñieän aùp ñeå taïo ra ñieän aùp +10V vaø moät boä taïo ra ñieän aùp aâm. Nhö vaäy noù taïo ra boä nguoàn +/-10V,ñaùp öùng ñöôïc möùc ñieän aùp cho RS_232.
Sô ñoà chaân linh kieän :
Giaûi thích tín hieäu :
R2IN: ngoõ vaøo RS_232 ®R2OUT: ngoõ ra TTL
T2OUT: ngoõ ra RS_232¬T2IN: ngoõ vaøo TTL
R1IN: ngoõ vaøoRS_232®R1OUT: ngoõ ra TTL
T1OUT : ngoõ ra RS_232®T1 IN :ngoõ vaøo TTL
C1+, C1-: tuï C1= 10mF beân ngoaøi
C2+, C2-: tuï C2= 10mF beân ngoaøi
+V: nguoàn +10V
-V: nguoàn -10V
VCC,GND: nguoàn cung caáp ñôn cöïc +5V
IC 74573 :
Laø IC choát coù ngoõ ra 3 traïng thaùi.
sô ñoà chaân vaø baûng söï thaät :
OC
C
Input (D)
Output (Q)
L
H
H
H
L
H
L
L
L
L
X
Q1
H
X
X
Z
IC 74138 :
Laø IC giaûi maõ 3 sang 8. Coù ngoõ ra tích cöïc möùc thaáp
Sô ñoà chaân vaø baûng söï thaät :
INPUTS
OUTPUTS
ENABLE
SELECT
G1 G2
C B A
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
X H
X X X
H
H
H
H
H
H
H
H
L X
X X X
H
H
H
H
H
H
H
H
H L
L L L
L
H
H
H
H
H
H
H
H L
L L H
H
L
H
H
H
H
H
H
H L
L H L
H
H
L
H
H
H
H
H
H L
L H H
H
H
H
L
H
H
H
H
H L
H L L
H
H
H
H
L
H
H
H
H L
H L H
H
H
H
H
H
L
H
H
H L
H H L
H
H
H
H
H
H
L
H
H L
H H L
H
H
H
H
H
H
H
L
VII . IC74LS393.
IC naøy coù 2 keânh 1, moãi keânh laø 1 boä ñeám 4 bit, ñöôïc duøng laøm boä ñeám, chia taàn soá, caùc öùng duïng khaùc. Moãi boä ñeám chöùa 4 Fiplop beân trong. Caùc Fiplop naøy ñöôïc kích caïnh xuoáng vaøo ngoõ A.
Chöông trình ñieàu khieån
PORTA1 EQU 4000H
PORTB1 EQU 4001H
PORTC1 EQU 4002H
CTRWL1 EQU 4003H
AL EQU 30H
AH EQU 31H
BL EQU 32H
BH EQU 33H
XL EQU 34H
XH EQU 35H
YL EQU 36H
YH EQU 37H
ZL EQU 38H
ZH EQU 39H
TEMP EQU 40H
KPL EQU 41H
KPH EQU 42H
EORL EQU 43H
EORH EQU 44H
DUTY_CYCLE EQU 45H
PULSL EQU 46H
PULSH EQU 47H
PULFL EQU 48H
PULFH EQU 49H
CONSTN EQU 50H
CONSTD EQU 51H
TEMP2L EQU 52H
TEMP2H EQU 53H
TEMP3L EQU 54H
TEMP3H EQU 55H
CL EQU 56H
CH EQU 57H
CBC EQU 58H
DU EQU 59H
TEMP4L EQU 60H
SCKP1 EQU 61H
SCKP2 EQU 62H
LD1L EQU 63H
LD1H EQU 64H
CDAIT EQU 65H
CDAIC EQU 66H
SLCATT EQU 67H
SLCATC EQU 68H
TGCATT EQU 69H
TGCATC EQU 6AH
ORG 0000H
JMP MAIN
ORG 001BH
LJMP ISR_TOKP
ORG 0030H
MAIN: CALL NAP_DULIEU
CALL INIT
SETB TF1
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;DIEU KHIENDONG CO, DAO CAT
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
AGAIN: CALL PWM
CALL DISPLAY
JNB 03H,AGAIN
CLR ET1
MOV A,#80H
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; NGAT DAO CAT
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MOV DPTR,#CTRWL1
MOVX @DPTR,A
INC 3EH
MOV A,3EH
CJNE A,SLCATT,AGAIN4
AGAIN4: JNC AGAIN3
MOV A,3EH
MOV B,#10
DIV AB
SWAPA
ORL A,B
MOV 3CH,A
MOV 6EH,#100
AGAIN1: CALL PWM
CALL DISPLAY
MOV 6FH,#100
DJNZ 6FH,$
DJNZ 6EH,AGAIN1
MOV DPTR,#CTRWL1
MOV A,#02H
MOVX @DPTR,A
MOV A,#03H
MOVX @DPTR,A
MOV A,#02H
MOVX @DPTR,A
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; DONG DAO CAT
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MOV A,#90H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
CLR 03H
SETB ET1
JMP AGAIN
AGAIN3: MOV A,#80H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
CALL PWM
CALL DISPLAY
SJMP AGAIN3
RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
INIT: MOV TMOD,#11H
MOV TH1,#HIGH(-10000)
MOV TL1,#LOW(-10000)
SETB TR1
MOV IE,#88H
MOV A,#100
MOV B,#24
DIV AB
CLR 00H
CLR 01H
CLR 02H
CLR 03H
CLR 10H
CLR 11H
CLR 12H
CLR 13H
CLR 14H
CLR 15H
SETB 30H
CLR 31H
CALL DKD
MOV 5AH,#1
MOV 5BH,#0
MOV 5CH,#0
MOV 5DH,#0
MOV 5EH,#0
MOV 5FH,#0
MOV 7CH,#0
MOV 7DH,#2 ;VI TRI LED TRUY XUAT
MOV 7EH,#0
MOV 7FH,#0
MOV 3CH,#0
MOV 3EH,#0
MOV DUTY_CYCLE,#0
MOV 3DH,#1
MOV 4AH,#40H
MOV 4BH,#30H
MOV 4CH,#20H
MOV 4DH,#10H
MOV 4EH,#60H
MOV 4FH,#50H
MOV R0,#3AH
MOV R1,#4AH
MOV R3,#0
MOV CONSTN,A
MOV CONSTD,B
MOV PULSL,CDAIT
MOV PULSH,CDAIC
MOV PULFL,#00H
MOV PULFH,#00H
MOV KPL,#1
MOV KPH,#0
MOV A,#92H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
MOV A,#05H
MOVX @DPTR,A
MOV A,#07H
MOVX @DPTR,A
MOV A,#02H
MOVX @DPTR,A
MOV A,#03H
MOVX @DPTR,A
MOV A,#02H
MOVX @DPTR,A
MOV A,#90H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; CT NGAT ISR_TOKP
;DOC XUNG,TINH TOAN DUTY_CYCLE
;CHU KI NGAT 10mS
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ISR_TOKP: CLR TR1
MOV TL1,#LOW(-10000)
MOV TH1,#HIGH(-10000)
SETB TR1
CALL DOC_XUNG
MOV PULFL,R6
MOV PULFH,R7
MOV XL,PULSL
MOV XH,PULSH
MOV YL,PULFL
MOV YH,PULFH
CALL SUBB16
MOV EORL,ZL
MOV EORH,ZH
MOV AL,EORL
MOV AH,EORH
MOV BL,#0
MOV BH,#0
CALL COMPAB
JNB 01H,EXIT7
JMP LABEL
EXIT7: LJMP EXIT2
;LENH THUC HIEN KHI A>B
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;TEMP2:=TEMP2H:TEMP2L:=E[N]*KP
LABEL: MOV XL,EORL
MOV XH,EORH
MOV YL,KPL
MOV YH,KPH
CALL MUL_16
MOV TEMP2L,ZL
MOV TEMP2H,ZH
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;(CONST:=CONSTD:CONSTN:=100/(Umax=24))*TEMP2
MOV XL,ZL
MOV XH,ZH
MOV YL,CONSTN
MOV YH,#0
CALL MUL_16
MOV TEMP3L,ZL
MOV TEMP3H,ZH
MOV XL,TEMP2L
MOV XH,TEMP2H
MOV YL,CONSTD
MOV YH,#0
CALL MUL_16
MOV R6,ZL
MOV R7,ZH
MOV B,#24
CALL DIV_16_8
MOV XL,R6
MOV XH,R7
MOV YL,TEMP3L
MOV YH,TEMP3H
CALL ADD16
;TRUONG HOP TREN TINH VOI KP=(1....9)
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;DUOI DAY SE TINH THEM CHO SO CHIA CUA KP
MOV CL,#1
MOV CH,#0
MOV XL,ZL
MOV XH,ZH
MOV CBC,SCKP1
CALL TG_DUNG
MOV CL,#1
MOV CH,#0
MOV XL,ZL
MOV XH,ZH
MOV CBC,SCKP2
CALL TG_DUNG
MOV DUTY_CYCLE,ZL
MOV AL,DUTY_CYCLE
MOV AH,#0
MOV BL,#50
MOV BH,#0
CLR 01H
CALL COMPAB
CLR 00H
CLR 02H
JNB 01H,LABEL2
MOV DUTY_CYCLE,LD1T
CLR 01H
LABEL2: MOV R5,DUTY_CYCLE
CJNE R5,#7,STOP
STOP: JNC EXIT2
MOV DUTY_CYCLE,#0
CLR ET1
SETB 03H
JMP EXIT4
CLR 01H
EXIT2: JNB 02H,EXIT3
;LENH THUC HIEN KHI A<B
MOV DUTY_CYCLE,#0
CLR 02H
EXIT3: JNB 00H,EXIT4
;LENH THUC HIEN KHI A=B
MOV DUTY_CYCLE,#0
CLR 00H
EXIT4: MOV R7,#0
MOV R6,DUTY_CYCLE
ACALL BINTOBCD
CALL CDL
RETI
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;CT CON DOC_XUNG
;DOC XUNG TU PORTA,B CUA 8255
; NGO RA PC1,PC2,PC3 DIEU KHIEN XOA,CHOT XUNG KHI LAY XUNG
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
DOC_XUNG: MOV A,#04H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
MOV A,#06H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
MOV DPTR,#PORTA1
MOVX A,@DPTR
MOV R6,A
MOV A,#05H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
MOV DPTR,#PORTB1
MOVX A,@DPTR
MOV R7,A
MOV A,#07H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
RET
;*****************************************************************
;CHUONG TRINH CON DIEU RONG XUNG
; CHU KI DIEU RONG T= 200*R3uS
; T1\T*100= DUTY_CYCLE
;THOI GIAN THUC THI LA 1324uS
;*****************************************************************
PWM: MOV R2, DUTY_CYCLE
CJNE R2,#01H,MAIN_L2
MAIN_L2: JC MAIN_L3
MOV A,#01H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
ACALL DELAY
MAIN_L3: MOV A,#100
SUBB A,DUTY_CYCLE
MOV R2,A
CJNE R2,#01H,MAIN_L4
MAIN_L4: JC MAIN_L5
MOV A,#00H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
ACALL DELAY
MAIN_L5: RET
;*****************************************************************
DELAY: MOV R3,#5
DELAY_L1: DJNZ R3,DELAY_L1
DJNZ R2,DELAY
RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;Chuong trinh so sanh 2 so 16 bit
; A=AHAL B=BHBL
; IF A>B THEN 00 =1
; IF A<B THEN 01 =1
; IF A=B THEN 02 =1
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
COMPAB: MOV A,AH
CJNE A,BH,BIGGER
MOV A,AL
CJNE A,BL,BIGGER
SETB 00H ; A=B
JMP EXIT
BIGGER: JC SMALLER
SETB 01H
JMP EXIT
SMALLER: JNC EXIT
SETB 02H
EXIT: RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;Chuong trinh cong 2 so 16 bit
;INPUT X=XH_XL
; Y=YH_YL
;OUT PUT Z=X+Y
; Z=ZH_ZL
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ADD16: MOV A,XL
ADD A,YL
MOV ZL,A
MOV A,XH
ADDC A,YH
MOV ZH,A
RET
;*****************************************************************
;CHUONG TRINH TRU HAI SO NGUYEN 16 BIT
;INPUT X=XH_XL
; Y=YH_YL
;OUT PUT Z=X-Y
; Z=ZH_ZL
;*****************************************************************
SUBB16: MOV A,XL
SUBB A,YL
MOV ZL,A
MOV A,XH
SUBB A,YH
MOV ZH,A
RET
;*****************************************************************
;CHUONG TRINH NHAN HAI SO NGUYEN 16 BIT
;INPUT X=XH_XL
; Y=YH_YL
;OUT PUT Z=X*Y
; Z=ZH_ZL
;*****************************************************************
MUL_16: MOV A,XL
MOV TEMP,A
MOV B,YL
MUL AB
MOV ZL,A
MOV A,YL
XCH A,B
XCH A,XH
MUL AB
ADD A,XH
MOV XH,A
MOV A,XH
MOV A,YH
MOV B,TEMP
MUL AB
ADD A,XH
MOV ZH,A
RET
;*****************************************************************
;CHUONG TRINH CHIA 1 S0 16 BIT CHO 1 SO 8 BIT
;INPUT SO(16BIT) BI CHIA R7:R6 SO CHIA 8 BIT THANH GHI B
;OUT PUT R7:R6=KET QUA CAN CHIA B: SO DU
;*****************************************************************
DIV_16_8: PUSH 02H
PUSH ACC
MOV R2,#16
CLR A
DIVIDE: XCH A,R6
CLR C
RLC A
XCH A,R6
XCH A,R7
RLC A
XCH A,R7
RLC A
CJNE A,B,NOT_EQUAL
SJMP A_GREATER_EQ_B
NOT_EQUAL: JC BELOW
A_GREATER_EQ_B:
SUBB A,B
XCH A,R6
ORL A,#1
XCH A,R6
BELOW: DJNZ R2,DIVIDE
XCH A,B
POP ACC
POP 02H
RET
;** *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** ***
;CT CON DELAY 1000US, DUNG TIMER 0
;** *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** ***
DELAY1: MOV TH0,#HIGH(-1000)
MOV TL0,#LOW(-1000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
; *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** *** **
; CTC BINTOBCD
; CHUYEN DOI TU SO NHI PHAN 16 BIT (<9999) SANG SO BCD
;INPUT : R7:R6 = SO NHI PHAN 16 BIT
;OUTPUT: R7:R6 = SO BCD, R7:R6=NGHIN,TRAM ,CHUC ,DON VI
; *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** *** **
BINTOBCD:
PUSH ACC
PUSH B
MOV B,#10
ACALL DIV_16_8
PUSH B
MOV B,#10
ACALL DIV_16_8
PUSH B
MOV B,#10
MOV A,R6
DIV AB
PUSH B
SWAP A
POP B
ORL A,B
MOV R7,A
POP ACC
SWAP A
POP B
ORL A,B
MOV R6,A
POP B
POP ACC
RET
;*****************************************************************
;CT CON CDT,CDC,XUAT PHUC VU XUAT LED
;*****************************************************************
CDT: MOV A,@R0
ANL A,#0FH
RET
CDC: MOV A,@R0
SWAP A
ANL A,#0FH
RET
XUAT: ORL A,@R1
MOV P1,A
RET
;*****************************************************************
;CHUONG TRINH CHIA 1 S0 16 BIT CHO 1 SO 8 BIT
;INPUT SO(16BIT) BI CHIA R7:R6 SO CHIA 8 BIT THANH GHI B
;OUT PUT R7:R6=KET QUA CAN CHIA B: SO DU
;KET QUA SAI SO(O SO DU B) DOI VOI SO LE LON HON 128
;*****************************************************************
DIV_16_81: PUSH ACC
MOV A,B
JNB ACC.7,NH128
JNB ACC.0,EVEN
INC A
CJNE A,#0,EVEN
MOV A,#0FEH
EVEN: MOV B,#2
DIV AB
MOV B,A
MOV TEMP4L,A
CALL DIV_16_8
MOV DU,B
MOV B,#2
CALL DIV_16_8
MOV A,B
JZ LAMT1
MOV A,TEMP4L
ADD A,DU
MOV B,A
LAMT1: POP ACC
JMP EXIT5
NH128: CALL DIV_16_8
POP ACC
EXIT5: RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;CT CON TG_DUNG
;Chuong trinh tinh (A/B)*C=A1*C+B1*C/B=A1*C+A2*C+E(sai so) (C<B)
;INPUT: A=XL:XH, B=B, C:YL:YH
;OUTPUT: PHAN NGUYEN:ZL:ZH, PHAN DU B
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TG_DUNG: MOV R6,XL
MOV R7,XH
MOV B,CBC
CALL DIV_16_81
MOV XL,R6
MOV XH,R7
MOV TEMP3L,B
MOV YL,CL
MOV YH,CH
CALL MUL_16
MOV TEMP2L,ZL
MOV TEMP2H,ZH
MOV XL,TEMP3L
MOV XH,#0
MOV YL,CL
MOV YH,CH
CALL MUL_16
MOV R6,ZL
MOV R7,ZH
MOV B,CBC
CALL DIV_16_81
MOV XL,R6
MOV XH,R7
MOV TEMP3H,B
MOV YL,TEMP2L
MOV YH,TEMP2H
CALL ADD16
MOV B,TEMP3H
RET
CDL: MOV 3AH,R6
MOV 3BH,R7
RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;CT CON HIEN THI CHIEU DAI KHI CAT
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
DISPLAY: MOV A,3DH
MOV B,#2
DIV AB
MOV A,B
CJNE A,#0,ELSE
CALL CDC
CALL XUAT
INC R0
JMP BQ1
ELSE: CALL CDT
CALL XUAT
BQ1: INC R1
INC 3DH
MOV A,3DH
CJNE A,#7,ELSE1
MOV 3DH,#1
MOV R0,#3AH
MOV R1,#4AH
ELSE1: RET
DKD: CLR 26H
CLR 25H
CLR 24H
CLR 23H
CLR 22H
CLR 21H
MOV 7AH,#200
MOV 7BH,#200
RET
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
CHUONG TRINH CON NAP XUAT DU LIEU
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
NAP_DULIEU: NOP
QUETPHIM: MOV R2,#100
BACK0: JB P2.2,PHIM_1
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
; TANG GIA TRI CAC LED(3->6) : 0 ->9->0
;TANG GIA TRI CAC LED(2) : 0 ->4->0
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
DJNZ R2,BACK0
MOV A,7DH
ADD A,#59H
MOV R0,A
INC @R0
MOV A,@R0
CJNE A,#10,$+7
JC $+4
MOV @R0,#0
CJNE R0,#5BH,$+10
CJNE A,#5,$+7
JC $+4
MOV @R0,#0
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED 6 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_1: JNB 26H,QLED6ON
MOV A,5FH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED6OFF
CLR 26H
MOV 7BH,#200
QLED6ON: MOV A,5FH
ORL A,#40H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#6,QLED6OFF
DJNZ 7AH,QLED6OFF
MOV 7AH,#200
SETB 26H
QLED6OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;GIAM GIA TRI CAC LED(3->6) : 9 ->0->9
;GIAM GIA TRI CAC LED(2) : 4 ->0->4
;XUAT LAI DATA DA NHAP THEO THU TU GIAM DAN THEO TUNG CHE ;DO
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK1: JB P2.3,PHIM_2
DJNZ R2,BACK1
MOV A,7DH
ADD A,#59H
MOV R0,A
DEC @R0
MOV A,@R0
CJNE A,#255,$+5
MOV @R0,#9
CJNE R0,#5BH,$+8
CJNE A,#255,$+5
MOV @R0,#4
MOV A,7DH
CJNE A,#2,$+7
JNB 30H,$+4
CALL XUATDATA
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED 5 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_2: JNB 25H,QLED5ON
MOV A,5EH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED5OFF
CLR 25H
MOV 7BH,#200
QLED5ON: MOV A,5EH
ORL A,#30H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#5,QLED5OFF
DJNZ 7AH,QLED5OFF
MOV 7AH,#200
SETB 25H
QLED5OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CHON LED TU PHAI SANG TRAI : 6->2->6
;LED DUOC CHON NHAP NHAY
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK2: JB P2.4,PHIM_3
DJNZ R2,BACK2
DEC 7DH
CALL DKD
MOV A,7DH
CJNE A,#2,$+8
MOV 5AH,#1
SETB 30H
JMP $+5
MOV 5AH,#0
CLR 30H
MOV A,7DH
CJNE A,#1,$+5
MOV 7DH,#6
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED 4 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_3: JNB 24H,QLED4ON
MOV A,5DH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED4OFF
CLR 24H
MOV 7BH,#200
QLED4ON: MOV A,5DH
ORL A,#20H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#4,QLED4OFF
DJNZ 7AH,QLED4OFF
MOV 7AH,#200
SETB 24H
QLED4OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CHON LED TU TRAI SANGPHAI : 2->6->2
;LED DUOC CHON NHAP NHAY
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK3: JB P2.5,PHIM_4
DJNZ R2,BACK3
INC 7DH
CALL DKD
MOV A,7DH
CJNE A,#2,ST11
MOV 5AH,#1
SETB 30H
ST11: MOV 5AH,#0
CLR 30H
MOV A,7DH
CJNE A,#7,ST
MOV 7DH,#2
ST: NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED3 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_4: JNB 23H,QLED3ON
MOV A,5CH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED3OFF
CLR 23H
MOV 7BH,#200
QLED3ON: MOV A,5CH
ORL A,#10H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#3,QLED3OFF
DJNZ 7AH,QLED3OFF
MOV 7AH,#200
SETB 23H
QLED3OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;LUU GIA TRI CAN NAP THEO TUNG CHE DO
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK4: JB P2.6,PHIM_5
DJNZ R2,BACK4
INC 5AH
MOV A,5AH
MOV B,#2
DIV AB
MOV A,B
CJNE A,#0,$+8
MOV 5AH,#0
CLR 30H
JMP $+7
MOV 5AH,#1
SETB 30H
CALL NAPDATA
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED2 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
; CHI DINH CHE DO TU : 0->4
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_5: JNB 22H,QLED2ON
MOV A,5BH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED2OFF
CLR 22H
MOV 7BH,#200
QLED2ON: MOV A,5BH
ORL A,#60H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#2,QLED2OFF
DJNZ 7AH,QLED2OFF
MOV 7AH,#200
SETB 22H
QLED2OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
; KET HOP VOI LED1=1 THOAT KHOI CHUONG TRINH NHAP DATA
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK5: JB P2.7,THOAT
DJNZ R2,BACK5
INC 7FH
MOV A,7FH
MOV B,#2
DIV AB
MOV A,B
CJNE A,#0,$+8
MOV 7FH,#0
CLR 31H
JMP $+5
MOV 7FH,#1
SETB 31H
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED1 : GOM 2 GIA TRI (0,1)
; 0: NAP GIA TRI ,0->1 :LUU GIA TRI
; 1:KET HOP VOI PHIM 5 XEM DATA DA NHAP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
THOAT: JNB 21H,QLED1ON
MOV A,5AH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED1OFF
CLR 21H
MOV 7BH,#200
QLED1ON: MOV A,5AH
ORL A,#50H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#1,QLED1OFF
DJNZ 7AH,QLED1OFF
MOV 7AH,#200
SETB 21H
QLED1OFF: JNB 30H,$+3
JMP $+4
JMP QUETPHIM
JNB 31H,TTQP1
CLR 30H
CLR 31H
MOV 7EH,#0
MOV 7FH,#0
JMP $+3
TTQP1: JMP QUETPHIM
RET
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CHUONG TRINH CON NHAP DATA
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
NAPDATA: MOV A,5BH
CJNE A,#0,NAPDATA0
MOV A,5EH
SWAP A
ORL A,5FH
MOV LENGTHL,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV LENGTHH,A
NAPDATA0: MOV A,5BH
CJNE A,#1,NAPDATA1
MOV A,5EH
SWAP A
ORL A,5FH
MOV TGCCL,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV TGCCH,A
NAPDATA1: MOV A,5BH
CJNE A,#2,NAPDATA2
MOV A,5EH
SWAP A
ORL A,5FH
MOV SLCCL,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV SLCCH,A
NAPDATA2: MOV A,5BH
CJNE A,#3,NAPDATA3
MOV A,5EH
SWAP A
ORL A,5FH
MOV SCKP1,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV SCKP2,A
NAPDATA3: MOV A,5BH
CJNE A,#4,NAPDATA4
MOV A,5EH
SWAP A
ORL A,5FH
MOV LD1L,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV LD1H,A
NAPDATA4: NOP
RET
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CHUONG TRINH CON XUAT DATA DA NHAP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
XUATDATA: MOV A,5BH
CJNE A,#0,XUATDATA0
MOV A,LENGTHL
ANL A,#0FH
MOV 5FH,A
MOV A,LENGTHL
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,LENGTHH
ANL A,#0FH
MOV 5DH,A
MOV A,LENGTHH
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA0: MOV A,5BH
CJNE A,#1,XUATDATA1
MOV A,TGCCL
ANL A,#0FH
MOV 5FH,A
MOV A,TGCCL
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,TGCCH
ANL A,#0FH
MOV 5DH,A
MOV A,TGCCH
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA1: MOV A,5BH
CJNE A,#2,XUATDATA2
MOV A,SLCCL
ANL A,#0FH
MOV 5FH,A
MOV A,SLCCL
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,SLCCH
ANL A,#0FH
MOV 5DH,A
MOV A,SLCCH
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA2: MOV A,5BH
CJNE A,#3,XUATDATA3
MOV A,SCKP1
ANL A,#0FH
MOV 5FH,A
MOV A,SCKP1
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,SCKP2
ANL A,#0FH
MOV 5DH,A
MOV A,SCKP2
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA3: MOV A,5BH
CJNE A,#4,XUATDATA4
MOV A,LD1L
ANL A,#0FH
MOV 5FH,A
MOV A,LD1L
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,LD1H
ANL A,#0FH
MOV 5DH,A
MOV A,LD1H
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA4: NOP
RET
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CT CON KIEM TRA 2 NUT STOP/START,PAUSE KHI CT DANG CHAY
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
Q1P: MOV R3,#100
BACK7: JB P2.7,EXITQ2P
DJNZ 2,BACK7
SETB 31H
EXITQ2P: NOP
RET
END