logo

Chương 3: Khảo sát timer-counter của vi điều khiển

Trong vi điều khiển MCS51 có 2 timer-counter T0 va T1, còn MSC52 có 3 timer-counter. Các counter hay timerchi3 là 1 và chính là bộ đếm có chúc năng đếm xung.
Chöông 5 KHAÛO SAÙT TIMER – COUNTER CUÛA VI ÑIEÀU KHIEÅN I. Giôùi thieäu. II. Thanh ghi choïn kieåu laøm vieäc cho timer. III. Thanh ghi ñieàu khieån timer. IV. Caùc kieåu hoaït ñoäng cuûa timer vaø côø traøn. V. Caùc nguoàn xung ñeám. VI. Ñieàu khieån caùc timer: ñeám, ngöøng ñeám. VII. Khôûi taïo vaø truy xuaát caùc thanh ghi cuûa timer/counter. VIII. Timer /counter T2 cuûa hoï MCS52. Chöông 5: Khaûo saùt Timer/counter cuûa vi ñieàu khieån MCS51-52 GIÔÙI THIEÄU: I. Trong vi ñieàu khieån MCS51 coù 2 timer/counter T0 vaø T1, coøn MCS52 thì coù 3 timer / counter. Caùc timer hay counter chæ laø moät vaø chính laø boä ñeám coù chöùc naêng ñeám xung. Neáu ta söû duïng ôû cheá ñoä timer thì thôøi gian ñònh thôøi nhaân vôùi chu kyø cuûa moãi xung seõ taïo ra löôïng thôøi gian caàn thieát – ôû cheá ñoä timer vi ñieàu khieån thöôøng ñeám xung noäi laáy töø maïch dao ñoäng beân trong vi ñieàu khieån coù chu kyø oån ñònh. Cheá ñoä timer duøng ñeå ñònh thôøi gian chính xaùc ñeå ñieàu khieån caùc thieát bò theo thôøi gian. Neáu chuùng ta söû duïng ôû cheá ñoä counter thì ta chæ caàn quan taâm ñeán soá löôïng xung ñeám ñöôïc – khoâng caàn quan taâm ñeán chu kyø cuûa xung ñeám. Cheá ñoä counter thöôøng thì ñeám xung nhaän töø beân ngoaøi ñöa ñeán ngoõ vaøo T0 ñoái vôùi timer/counter thöù 0 vaø ngoõ vaøo T1 ñoái vôùi timer/counter thöù 1. Ñeám xung töø beân ngoaøi coøn goïi laø ñeám söï kieän. Moät öùng duïng cho cheá ñoä counter laø coù theå söû duïng vi ñieàu khieån laøm caùc maïch ñeám saûn phaåm. Ñeán ñaây ta coù theå xem timer hay counter laø 1 vaø chuù yù raèng taïi moãi moät thôøi ñieåm ta chæ söû duïng moät trong 2 hoaëc laø timer hoaëc laø counter. Caùc timer / counter cuûa vi ñieàu khieån söû duïng 16 flip flop neân ta goïi laø timer/ counter 16 bit vaø soá löôïng xung maø timer/ counter coù theå ñeám ñöôïc tính theo soá nhò phaân baét ñaàu töø 0000 0000 0000 00002 ñeán 1111 1111 1111 11112 , neáu vieát theo soá thaäp luïc phaân thì baét ñaàu töø 0000H ñeán FFFFH vaø neáu tính theo giaù trò thaäp phaân thì baét ñaàu töø 0 ñeán 65535. Khi ñaït ñeán giaù trò cöïc ñaïi vaø neáu coù theâm 1 xung nöõa thì boä ñeám seõ bò traøn, khi bò traøn thì giaù trò ñeám seõ töï ñoäng veà 0 (gioáng nhö maïch ñeám nhò phaân 4 bit khi ñeám leân 1111 vaø neáu coù 1 xung nöõa thì giaù trò ñeám veà 0000) vaø côø traøn cuûa timer/counter leân 1 ñeå baùo hieäu timer/counter ñaõ bò traøn (tröôùc khi ñeám thì phaûi xoaù côø traøn). Ngöôøi laäp trình söû duïng traïng thaùi côø traøn leân 1 ñeå reõ nhaùnh hoaït chaám döùt thôøi gian caàn thieát ñaõ ñònh ñeå chuyeån sang laøm moät coâng vieäc khaùc. Vaø khi côø traøn leân 1 seõ taïo ra ngaét cuõng ñeå reõ nhaùnh chöông trình ñeå thöïc hieän moät chöông trình khaùc – baïn seõ naém roõ ôû phaàn öùng duïng. Caùc giaù trò ñeám ñöôïc cuûa timer/counter T0 thì löu trong 2 thanh ghi TH0 vaø TL0 – moãi thanh ghi 8 bit keát hôïp laïi thaønh 16 bit. Töông töï, caùc giaù trò ñeám ñöôïc cuûa timer/counter T1 thì löu trong 2 thanh ghi TH1 vaø TL1 – moãi thanh ghi 8 bit keát hôïp laïi thaønh 16 bit. Ngoaøi caùc thanh ghi löu tröõ soá xung ñeám vöøa giôùi thieäu thì coøn coù 2 thanh ghi hoå trôï keøm theo: thanh ghi TMOD vaø thanh ghi TCON duøng ñeå thieát laäp nhieàu cheá ñoä hoaït ñoäng khaùc nhau cho timer ñeå ñaùp öùng ñöôïc söï ña daïng caùc yeâu caàu öùng duïng trong thöïc teá. Baûng sau ñaây seõ lieät keâ teân, chöùc naêng, ñòa chæ cuûa caùc thanh ghi lieân quan ñeán caùc timer/counter cuûa vi ñieàu khieån 89C51. Teân Chöùc naêng Ñòa chæ Cho pheùp truy xuaát bit TCON Control 88H YES TMOD Mode 89H NO TL0 Timer 0 low-byte 8AH NO 90 Lyù thuyeát & thöïc haønh. Nguyeãn Ñình Phuù Chöông 5: Khaûo saùt Timer/counter cuûa vi ñieàu khieån MCS51-52 TL1 Timer 1 low-byte 8BH NO TH0 Timer 0 high-byte 8CH NO TH1 Timer 1 high-byte 8DH NO THANH GHI CHOÏN KIEÅU LAØM VIEÄC CHO TIMER/COUNTER: II. Thanh ghi tmod goàm hai nhoùm 4 bit: 4 bit thaáp duøng ñeå thieát laäp caùc cheá ñoä hoaït ñoäng cho Timer 0 vaø 4 bit cao thieát laäp caùc cheá ñoä hoaït ñoäng cho Timer 1. Caùc bit cuûa thanh ghi TMOD ñöôïc toùm taét nhö sau : Bit Teân Timer Chöùc naêng 7 GATE 1 Neáu GATE = 1 thì Timer 1 chæ laøm vieäc khi INT1= 1. 6 C/T 1 Bit löïa choïn counter hay timer: C/T = 1 : ñeám xung töø beân ngoaøi ñöa ñeán ngoõ vaøo T1. C/T = 0 : ñònh thôøi ñeám xung noäi beân trong. 5 M1 1 Bit choïn mode cuûa Timer 1. 4 M0 1 Bit choïn mode cuûa Timer 1. 3 GATE 0 Neáu GATE = 1 thì Timer 0 chæ laøm vieäc khi INT1= 1. 2 C/T 0 Bit löïa choïn counter hay timer: gioáng nhö treân. 1 M1 0 Bit choïn mode cuûa Timer 0. 0 M0 0 Bit choïn mode cuûa Timer 0. Hai bit M0 vaø M1 taïo ra 4 traïng thaùi töông öùng vôùi 4 kieåu laøm vieäc khaùc nhau cuûa Timer 0 hoaëc cuûa Timer 1. M1 M0 Kieåu Chöùc naêng 0 0 0 Mode Timer 13 bit (mode 8048) 0 1 1 Mode Timer 16 bit 1 0 2 Mode töï ñoäng naïp 8 bit Mode taùch Timer ra : 1 1 3 Timer0 : ñöôïc taùch ra laøm 2 timer 8 bit goàm coù: Timer 8 bit TL0 ñöôïc ñieàu khieån bôûi caùc bit cuûa mode Timer0. Timer 8 bit TH0 ñöôïc ñieàu khieån bôûi caùc bit cuûa mode Timer1. Timer1 : khoâng ñöôïc hoaït ñoäng ôû mode 3. THANH GHI ÑIEÀU KHIEÅN TIMER/COUNTER: III. Thanh ghi ñieàu khieån tcon chöùa caùc bit traïng thaùi vaø caùc bit ñieàu khieån cho Timer0 vaø Timer1. Hoaït ñoäng cuûa töøng bit cuûa thanh ghi tcon ñöôïc toùm taét nhö sau : Bit Kí hieäu Ñòa chæ Chöùc naêng 7 TF1 8FH Côø traøn Timer 1: TF1 = 1 khi timer 1 bò traøn vaø coù theå xoùa baèng phaàn meàm hoaëc khi vi ñieàu khieån thöïc hieän chöông trình con phuïc vuï ngaét timer1 thì töï ñoäng xoùa luoân côø traøn TF1. 6 TR1 8EH Bit ñieàu khieån Timer 1 ñeám / ngöøng ñeám: TR1 = 1 thì timer 1 ñöôïc pheùp ñeám xung. 91 Lyù thuyeát & thöïc haønh. Nguyeãn Ñình Phuù Chöông 5: Khaûo saùt Timer/counter cuûa vi ñieàu khieån MCS51-52 TR1 = 0 thì timer 1 khoâng ñöôïc pheùp ñeám xung (ngöøng). 5 TF0 8DH Côø traøn Timer 0 (hoaït ñoäng töông töï TF1) 4 TR0 8CH Bit ñieàu khieån Timer 0 (gioáng TR1) 3 IE1 8BH Côø baùo ngaét cuûa ngaét INT1. Khi coù ngaét xaûy ra ôû ngoõ vaøo INT1 (caïnh xuoáng) thì côø IE1 taùc ñoäng leân möùc 1. Khi vi ñieàu khieån thöïc hieän chöông trình con phuïc vuï ngaét INT1 thì töï ñoäng xoùa luoân côø baùo ngaét IE1. 2 IT1 8AH Bit ñieàu khieån cho pheùp ngaét INT1 taùc ñoäng baèng möùc hay baèng caïnh. IT1 = 0 thì ngaét INT1 taùc ñoäng baèng möùc. IT1 = 1 thì ngaét INT1 taùc ñoäng baèng caïnh xuoáng. 1 IE0 89H Gioáng nhö IE1 nhöng phuïc vuï cho ngaét INT0 0 IT0 88H Gioáng nhö IT1 nhöng phuïc vuï cho ngaét INT0 CAÙC KIEÅU HOAÏT ÑOÄNG CUÛA TIMER VAØ CÔØ TRAØN : IV. MCS51 coù 2 timer laø timer0 vaø timer1. Ta duøng kyù hieäu TLx vaø Thx ñeå chæ 2 thanh ghi byte thaáp vaø byte cao cuûa Timer0 hoaëc Timer1. Nhö ñaõ trình baøy ôû treân caùc timer coù 4 kieåu hoaït ñoäng, phaàn naøy ta seõ khaûo saùt chi tieát caùc kieåu hoaït ñoäng cuûa timer. 1. MODE 0 (Mode Timer 13 bit) : Mode 0 laø mode ñeám 13 bit: trong ñoù 8 bit cao söû duïng heát 8 bit cuûa thanh ghi Thx, 5 bit coøn laïi chæ söû duïng 5 bit troïng soá thaáp cuûa thanh ghi TLx, coøn 3 bit cao cuûa TLx khoâng duøng nhö hình 5-1a. ÔÛ mode naøy giaù trò ñeám lôùn nhaát laø 213 = 8192 töùc ñeám töø 0 0000 0000 00002 ñeán 1 1111 1111 11112 vaø neáu coù theâm moät xung nöõa thì boä ñeám seõ traøn vaø laøm cho côø traøn leân 1. 2. MODE 1 (Mode Timer 16 bit) : Mode 1 laø mode ñeám 16 bit. ÔÛ mode naøy giaù trò ñeám laø lôùn nhaát laø 216 nhö hình 5-1b. 3. MODE 2 (Mode Timer töï ñoäng naïp 8 bit) : Mode 2 laø mode töï ñoäng naïp 8 bit, byte thaáp TLx cuûa Timer hoaït ñoäng nhö moät Timer 8 bit trong khi byte cao THx cuûa Timer duøng ñeå löu tröõ giaù trò ñeå naïp laïi cho thanh ghi TLx. Khi boä ñeám TLx chuyeån traïng thaùi töø FFH sang 00H: thì côø traøn ñöôïc set vaø giaù trò löu trong THx ñöôïc naïp vaøo TLx. Boä ñeám TLx tieáp tuïc ñeám töø giaù trò vöøa naïp töø THx leân vaø cho ñeán khi coù chuyeån traïng thaùi töø FFH sang 00H keá tieáp vaø cöù theá tieáp tuïc. Sô ñoà minh hoïa cho timer hoaït ñoäng ôû mode 2 nhö hình 5-1c. 4. MODE 3 (Mode Timer taùch ra) : Mode 3 laø mode Timer0 taùch ra laøm 2 timer cuøng vôùi timer 1 taïo thaønh 3 timer. Khi Timer0 ñònh ôû caáu hình mode 3 thì timer0 ñöôïc chia laø 2 timer 8 bit TL0 vaø TH0 hoaït ñoäng nhö nhöõng Timer rieâng leû vaø söû duïng caùc bit TF0 vaø TF1 laøm caùc bit côø traøn töông öùng nhö hình 5-1d. Timer 1 khoâng theå söû duïng ôû mode 3, nhöng coù theå ñöôïc khôûi ñoäng trong caùc mode khaùc vaø khoâng theå baùo traøn vì côø traøn TF1 ñaõ duøng ñeå baùo traøn cho timer TH0. 92 Lyù thuyeát & thöïc haønh. Nguyeãn Ñình Phuù Chöông 5: Khaûo saùt Timer/counter cuûa vi ñieàu khieån MCS51-52 Khi timer 0 hoaït ñoäng ôû Mode 3 seõ cung caáp theâm 1 Timer 8 bit thöù ba. Khi Timer0 ôû mode 3, Timer 1 coù theå hoaït ñoäng nhö laø moät boä dao ñoäng thieát laäp toác ñoä Baud phuïc vuï cho Port noái tieáp ñeå truyeàn vaø nhaän döõ lieäu, hoaëc noù coù theå duøng trong caùc öùng duïng maø khoâng söû duïng cheá ñoä baùo traøn vaø baùo ngaét. Hình 5-1. Caùc kieåu hoaït ñoäng cuûa timer. CAÙC NGUOÀN XUNG ÑEÁM : V. 93 Lyù thuyeát & thöïc haønh. Nguyeãn Ñình Phuù Chöông 5: Khaûo saùt Timer/counter cuûa vi ñieàu khieån MCS51-52 Timer/counter coù theå ñeám xung töø hai nguoàn: neáu timer/counter söû duïng ôû cheá ñoä ñònh thôøi timer thì seõ ñeám xung beân trong (xung noäi) ñaõ bieát taàn soá, neáu timer/counter söû duïng ôû cheá ñoä counter thì seõ ñeám xung töø beân ngoaøi nhö hình 5-2. Bit C/T trong TMOD cho pheùp choïn cheá ñoä timer hay counter khi khôûi taïo ôû thanh ghi tmod. Hình 5-2. Caùc nguoàn xung ñöa ñeán timer / counter. 1. Ñeám thôøi gian: Neáu bit C/T = 0 thì Timer hoaït ñoäng ñeám noäi xung lieân tuïc laáy töø dao ñoäng treân Chip. Taàn soá ngoõ vaøo tuï thaïch anh ñöôïc ñöa qua moät maïch chia 12 ñeå giaûm taàn soá phuø hôïp vôùi caùc öùng duïng. Neáu duøng thaïch anh 12MHz thì sau khi qua boä chia 12 taàn soá ñöa ñeán boä ñeám timer laø 1MHz. Timer seõ sinh ra traøn khi noù ñaõ ñeám ñuû soá xung töông öùng thôøi gian qui ñònh, phuï thuoäc vaøo giaù trò khôûi taïo ñöôïc naïp vaøo caùc thanh ghi THx vaø TLx. 2. Ñeám caùc söï kieän beân ngoaøi (Event Counting): Neáu bit C/T = 1 thì Timer hoaït ñoäng ñeám xung ñeán töø beân ngoaøi vaø chu kyø cuûa moãi xung do nguoàn taïo tín hieäu beân ngoaøi quyeát ñònh. Hoaït ñoäng naøy thöôøng duøng ñeå ñeám caùc söï kieän. Soá löôïng caùc söï kieän ñöôïc löu tröõ trong thanh ghi cuûa caùc Timer. Nguoàn xung clock beân ngoaøi ñöa vaøo chaân P3.4 laø ngoõ nhaäp xung clock cuûa Timer0 (T0) vaø P3.5 laø ngoõ nhaäp xung clock cuûa bôûi Timer1 (T1). Trong caùc öùng duïng ñeám xung töø beân ngoaøi: caùc thanh ghi Timer seõ taêng giaù trò ñeám khi xung ngoõ vaøo Tx chuyeån traïng thaùi töø 1 sang 0 (taùc ñoäng xung clock caïnh xuoáng). Ngoõ vaøo nhaän xung beân ngoaøi ñöôïc laáy maãu trong suoát khoaûng thôøi gian S5P2 cuûa moãi chu kyø maùy, do ñoù khi xung ôû möùc H (1) trong moät chu kyø naøy vaø chuyeån sang möùc L (0) trong moät chu kyø keá thì boä ñeám taêng leân moät. Ñeå nhaän ra söï chuyeån ñoåi töø 1 sang 0 phaûi maát 2 chu kyø maùy, neân taàn soá xung beân ngoaøi lôùn nhaát laø 500KHz neáu heä thoáng vi ñieàu khieån söû duïng dao ñoäng thaïch anh 12 MHz. ÑIEÀU KHIEÅN CAÙC TIMER: ÑEÁM, NGÖØNG ÑEÁM : VI. Bit TRx trong thanh ghi TCON ñöôïc ñieàu khieån bôûi phaàn meàm ñeå cho pheùp caùc Timer baét ñaàu quaù trình ñeám hoaëc ngöøng. 94 Lyù thuyeát & thöïc haønh. Nguyeãn Ñình Phuù Chöông 5: Khaûo saùt Timer/counter cuûa vi ñieàu khieån MCS51-52 Ñeå baéêt ñaàu cho caùc Timer ñeám thì phaûi set bit TRx baèng leänh: SETB TR0 ; cho pheùp timer T0 baét ñaàu ñeám SETB TR1 ; cho pheùp timer T1 baét ñaàu ñeám Ñeå caùc Timer ngöøng ñeám ta duøng leänh Clear bit TRx. Ví duï Timer 0 baét ñaàu bôûi leänh SETB TR0 vaø ngöøng ñeám bôûi leänh CLR TR0. Bit TRx bò xoùa khi reset heä thoáng, do ñoù ôû cheá ñoä maëc ñònh khi môû maùy caùc Timer bò caám. Moät phöông phaùp khaùc ñeå ñieàu khieån caùc Timer laø duøng bit GATE trong thanh ghi TMOD vaø ngoõ nhaäp beân ngoaøi INTx nhö hình 5-3. Phuông phaùp naøy ñöôïc duøng ñeå ño caùc ñoä roäng xung. Giaû söû xung caàn ño ñoä roäng ñöa vaøo chaân INT0, ta phaûi khôûi taïo Timer 0 hoaït ñoäng ôû mode 1 laø mode Timer 16 bit vôùi giaù trò khôûi taïo ban ñaàu laø TL0/TH0 = 0000H, bit GATE = 1, bit TR0 = 1. Khi xung ñöa ñeán ngoõ vaøo INT0 = 1 thì “coång ñöôïc môû” ñeå cho xung noäi coù taàn soá 1MHz vaøo tiemr 0. Quaù trình timer 0 ñeám xung noäi seõ döøng laïi cho ñeán khi xung ñöa ñeán ngoõ vaøo INT0 xuoáng möùc 0. Thôøi gian ñeám ñöôïc cuûa timer 0 chính laø ñoä roäng xung caàn ño. Hình 5-3. Ño ñoä roäng xung töø beân ngoaøi. KHÔÛI TAÏO VAØ TRUY XUAÁT CAÙC THANH GHI CUÛA TIMER/COUNTER : VII. Caùc Timer thöôøng ñöôïc khôûi taïo 1 laàn ôû ñaàu chöông trình ñeå thieát laäp mode hoaït ñoäng phuïc vuï cho caùc öùng duïng ñieàu khieån lieân quan ñeán ñònh thôøi hay ñeám xung ngoaïi. Tuøy thuoäc vaøo yeâu caàu ñieàu khieån cuï theå maø ta ñieàu khieån caùc timer baét ñaàu ñeám, ngöøng hay khôûi ñoäng ñeám laïi töø ñaàu … Thanh ghi TMOD laø thanh ghi ñaàu tieân caàn phaûi khôûi taïo ñeå thieát laäp mode hoaït ñoäng cho caùc Timer. Ví duï khôûi ñoäng cho Timer0 hoaït ñoäng ôû mode 1 (mode Timer 16 bit) vaø hoaït ñoäng ñònh thôøi ñeám xung noäi beân trong thì ta khôûi taïo baèng leänh: MOV TMOD, # 00000001B. Trong leänh naøy M1 = 0, M0 = 1 ñeå vaøo mode 1 vaø C/T = 0, GATE = 0 ñeå cho pheùp ñeám xung noäi beân trong ñoàng thôøi xoùa caùc bit mode cuûa Timer 1. Sau leänh treân Timer 0 vaãn chöa ñeám vaø timer 0 chæ ñeám khi set bit ñieààu khieåân chaïy TR0. 95 Lyù thuyeát & thöïc haønh. Nguyeãn Ñình Phuù Chöông 5: Khaûo saùt Timer/counter cuûa vi ñieàu khieån MCS51-52 Neáu ta khoâng thieát laäp caùc giaù trò baét ñaàu ñeám cho caùc thanh ghi TLx/THx thì Timer seõ baét ñaàu ñeám töø 0000H leân vaø khi chuyeån traïng thaùi töø FFFFH sang 0000H seõ sinh ra traøn laøm cho bit TFx = 1 roài tieáp tuïc ñeám töø 0000H leân tieáp . . . Neáu ta thieát laäp giaù trò baét ñaàu ñeám cho TLx/THx khaùc 0000H, thì Timer seõ baét ñaàu ñeám töø giaù trò thieát laäp ñoù leân nhöng khi chuyeån traïng thaùi töø FFFFH sang 0000H thì timer laïi ñeám töø 0000H leân. Ñeå timer luoân baét ñaàu ñeám töø giaù trò ta gaùn thì ta coù theå laäp trình chôø sau moãi laàn traøn ta seõ xoùa côø TFx vaø gaùn laïi giaù trò cho TLx/THx ñeå Timer luoân luoân baét ñaàu ñeám töø giaù trò khôûi gaùn leân. Ñaëc bieät neáu boä ñònh thôøi hoaït ñoäng trong phaïm vi nhoû hôn 256 μs thì ta neân duøng Timer ôû mode 2 (töï ñoäng naïp 8 bit). Sau khi khôûi taïo giaù trò ñaàu cho thanh ghi THx, vaø TLx, khi set bit TRx thì Timer seõ baét ñaàu ñeám töø giaù trò ñaõ gaùn trong TLX vaø khi traøn töø FFH sang 00H trong TLx, thì côø traøn TFx töï ñoäng ñöôïc set, ñoàng thôøi giaù trò trong Thx töï ñoäng naïp sang cho TLx vaø Timer baét ñaàu ñeám töø giaù trò khôûi gaùn naøy leân. Noùi caùch khaùc, sau moãi laàn traøn ta khoâng caàn khôûi gaùn laïi cho caùc thanh ghi Timer maø chuùng vaãn ñeám ñöôïc laïi töø giaù trò ñaõ gaùn. Ví duï 1: Chöông trình taïo xung vuoâng taàn soá 1kHz söû duïng timer mode1: mov tmod,#01h ;choïn mode 1 timer 0 ñeám 16 bit loop1: mov th0,#0feh ;ñoä roäng xung 500μs mov tl0,#0ch ; setb tr0 ;cho timer baét ñaàu ñeám loop: jnb tf0,loop ;chôø baùo ngaét clr tf0 ;xoùa côø ngaét cpl p1.0 ;nghòch ñaûo bit p1.0 sjmp loop1 ;quay trôû laïi laøm tieáp Ví duï 2: Chöông trình taïo xung vuoâng taàn soá 10 kHz söû duïng timer mode2: mov tmod,#02h ;choïn mode 2 cheá doä töï ñoäng naïp laiï 8 bit loop1: mov th0,#-50 ;taïo ñoä roäng xung 50μs setb tr0 ;cho timer baét ñaàu ñeám loop: jnb tf0,loop ;chôø baùo ngaét clr tf0 ;xoùa côø ngaét cpl p1.0 ;nghòch ñaûo bit p1.0 sjmp loop1 ;tro lai loop1 TIMER/COUNTER T2 CUÛA HOÏ MCS52 : VIII. Hoï vi ñieàu khieån MCS52 coù 3 timer T0, T1, T2. Caùc timer T0 vaø T1 coù caùc thanh ghi vaø hoaït ñoäng gioáng nhö hoï 51. ÔÛ ñaây chæ trình baøy theâm phaàn hoaït ñoäng cuûa timer T2. Caùc thanh ghi cuûa timer/counter T2 bao goàm: thanh ghi TL2, TH2, thanh ghi ñieàu khieån T2CON, thanh ghi RCAP2L vaø RCAP2H. Timer/counter T2 coù theå duøng ñeå ñònh thôøi timer hoaëc duøng nhö boä ñeám counter ñeå ñeám xung ngoaøi ñöa ñeán ngoõ vaøo T2 chính laø chaân P1.0 cuûa port 1 nhö hình 5-4. Timer/counter T2 coù 3 kieåu hoaït ñoäng: töï ñoäng naïp laïi, thu nhaän vaø thieát laäp toác ñoä baud ñeå phuïc vuï cho truyeàn döõ lieäu. 96 Lyù thuyeát & thöïc haønh. Nguyeãn Ñình Phuù Chöông 5: Khaûo saùt Timer/counter cuûa vi ñieàu khieån MCS51-52 Chöùc naêng cuûa thanh ghi ñieàu khieån T2CON: Bit Kí hieäu Ñòa chæ Chöùc naêng 7 TF2 CFH Côø traøn Timer 2: hoaït ñoäng gioáng nhö caùc timer treân (TF2 seõ khoâng ñöôïc thieát laäp leân möùc 1 neáu bit TCLK hoaëc RCLK ôû möùc 1). 6 EXF2 CEH Côø ngoaøi cuûa timer T2: chæ ñöôïc set khi xaûy ra söï thu nhaän hoaëc naïp laïi döõ lieäu bôûi söï chuyeån traïng thaøi töø 1 sang 0 ôû ngoõ vaøo T2EX vaø EXEN2 = 1; khi cho pheùp timer T2 ngaét, EXF2=1 thì CPU seõ thöïc hieän hieän chöông trình con phuïc vuï ngaét Timer T2, bit EXF2 coù theå baèng phaàn meàm. 5 RCLK CDH Xung clock thu cuûa timer 2. Khi RCLK=1 thì timer T2 cung caáp toác ñoä baud cho port noái tieáp ñeå nhaän döõ lieäu veà vaø timer T1 seõ cung caáp toác ñoä baud cho port noái tieáp ñeå phaùt döõ lieäu ñi. 4 TCLK CCH Xung clock phaùt cuûa timer 2. Khi TCLK=1 thì timer T2 cung caáp toác ñoä baud cho port noái tieáp ñeå phaùt döõ lieäu ñi vaø timer T1 seõ cung caáp toác ñoä baud cho port noái tieáp ñeå nhaän döõ lieäu veà. 3 EXEN2 CBH Bit ñieàu khieån cho pheùp taùc ñoäng töø beân ngoaøi. Khi EXEN2 = 1 thì hoaït ñoäng thu nhaän vaø naïp laïi cuûa timer T2 chæ xaûy ra khi ngoõ vaøo T2EX coù söï chuyeån traïng thaùi töø 1 sang 0. 2 TR2 CAH Bit ñieàu khieån Timer 1 ñeám / ngöøng ñeám: TR2 = 1 thì timer 1 ñöôïc pheùp ñeám xung. TR2 = 0 thì timer 1 khoâng ñöôïc pheùp ñeám xung (ngöøng). Duøng leänh ñieàu khieån bit TR2 ñeå cho pheùp timer1 ñeám hay ngöøng ñeám. 1 C/T2 C9H Bit löïa choïn counter hay timer: C/T2 = 1 : ñeám xung töø beân ngoaøi ñöa ñeán ngoõ vaøo T2. C/T2 = 0 : ñònh thôøi ñeám xung noäi beân trong. 0 CP/RL2 C8H Côø thu nhaän/naïp laïi döõ lieäu cuûa timer T2. Khi bit naøy = 1 thì thu nhaän chæ xaûy ra khi coù söï chuyeån traïng thaùi töø 1 sang 0 ôû ngoõ vaøo T2EX vaø EXEN2=1; khi bit naøy = 0 thì quaù trình töï ñoäng naïp laïi khi timer T2 traøn hoaëc khi coù söï chuyeån traïng thaùi ôû ngoõ vaøo T2EX vaø bit EXEN2 = 1; neáu bit RCLK hoaëc TCLK = 1 thì bit naøy xem nhö boû. 97 Lyù thuyeát & thöïc haønh. Nguyeãn Ñình Phuù Chöông 5: Khaûo saùt Timer/counter cuûa vi ñieàu khieån MCS51-52 Hình 5-4. Sô ñoà chaân cuûa 89C52 vôùi ngoõ vaøo T2 laø P1.0 vaø T2EX laø P1.1 . 1. Cheá ñoä töï ñoäng naïp laïi: Bit thu nhaän/naïp laïi CP / RL 2 löïa choïn moät trong hai cheá ñoä: töï ñoäng naïp laïi vaø thu nhaän. Khi CP / RL 2 = 0 thì timer hoaït ñoäng ôû cheá ñoä töï ñoäng naïp laïi: caùc thanh ghi TL2, TH2 seõ löu tröõ soá xung ñeám coøn 2 thanh ghi RCAP2L vaø RCAP2H löu tröõ giaù trò ñeå naïp laïi cho TL2, TH2. Giaù trò löu vaø naïp laïi laø 16 bit. Khi timer ñeám traøn thì laøm cho côø baùo traøn TF2 baèng 1 ñoàng thôøi töï ñoäng thöïc hieän naïp laïi döõ lieäu. Töông töï neáu bit EXEN2 = 1 thì cheá ñoä töï ñoäng naïp laïi xaûy ra khi coù söï chuyeån traïng thaùi töø 1 sang 0 ôû ngoõ vaøo T2EX ñoàng thôøi laøm cho bit EXF2 = 1. Töông töï nhö côø TF2 thì côø EXF2 cuõng coù theå ñöôïc kieåm tra baèng phaàn meàm hoaëc taïo ngaét. Bit EXF2 phaûi xoùa baèng phaàn meàm. Hoaït ñoäng töï naïp cuûa timer T2 ñöôïc trình baøy nhö hình 5-5. Hình 5-5.Hoaït ñoäng cuûa timer T2 ôû cheá ñoä töï ñoäng naïp laïi. 98 Lyù thuyeát & thöïc haønh. Nguyeãn Ñình Phuù Chöông 5: Khaûo saùt Timer/counter cuûa vi ñieàu khieån MCS51-52 2. Cheá ñoä thu nhaän: Khi CP / RL 2 = 1 thì timer hoaït ñoäng ôû cheá ñoä thu nhaän. Khi ñoù timer T2 hoaït ñoäng bình thöôøng nhö moät timer/counter 16 bit, thanh ghi TL2, TH2 seõ löu tröõ xung ñeám vaø neáu coù söï cuyeån traïng thaùi töø FFFFH sang 0000H thì seõ sinh ra traøn vaø laøm cho côø traøn TF2=1. Bit côø traøn coù theå kieåm tra baèng phaàn meàm hay coù theå taïo ra ngaét. Hình 5-6.Hoaït ñoäng cuûa timer T2 ôû cheá ñoä thu nhaän döõ lieäu. Ñeå cho pheùp cheá ñoä thu nhaän hoaït ñoäng thì laøm cho bit EXEN2 = 1. Neáu bit EXEN2 = 1 vaø khi coù söï chuyeån traïng traùi töø 1 sang 0ôû ngoõ vaøo T2EX thì cheá ñoä thu nhaän seõ xaûy ra: giaù trò ñeám ñöôïc trong thanh ghi TL2, TH2 seõ ñöôïc chuyeån sang 2 thanh ghi RCAP2L vaø RCAP2H. Côø EXF2 cuõng ñöôïc chuyeån leân möùc 1 ñeå baùo hieäu quaù trình thu nhaän ñaõ xaûy ra, côø EXF2 coù theå kieåm tra baèng phaàn meàm hoaëc taïo ngaét. Hoaït ñoäng thu nhaän döõ lieäu cuûa timer T2 ñöôïc trình baøy ôû hình 5-6. 99 Lyù thuyeát & thöïc haønh. Nguyeãn Ñình Phuù Chöông 5: Khaûo saùt Timer/counter cuûa vi ñieàu khieån MCS51-52 100 Lyù thuyeát & thöïc haønh. Nguyeãn Ñình Phuù
DMCA.com Protection Status Copyright by webtailieu.net