ch− ơng IV: thiết kế và thi công mạch điều khiển tỉc đĩ và vị trí đĩng cơ điện mĩt chiều
4.4. LAễP TRèNH CHO VI ẹIEĂU KHIEƠN 1 LệU ẹOĂ GIẠI THUAễT
4.4.1. LệU ẹOĂ GIẠI THUAễT
Bạng danh saựch caực lửu ủoă giại thuaụt ủửụùc sửỷ dỳng
Teđn lửu ủoă Nhieụm vỳ
TIMER 0_ISR Trỡnh phỳc vỳ ngaĩt Timer 0
INT0_ISR Trỡnh phỳc vỳ ngaĩt do ủẽm tõc ủoụ
MAIN Chửụng trỡnh chớnh
HIENTHITOCDO Hieơn thũ tõc ủoụ ủo
BINTOBCD ẹoơi sõ nhũ phađn 16 bit thaứnh maừ BCD neựn
DIV_16_8 Chia sõ nhũ phađn 16 bit cho sõ 8 bit Chửực naớng caực ođ nhụự ủửụùc duứng trong chửụng trỡnh:
OĐ nhụự nhụự
Chửực naớng
7FH Byte cao cụa giaự trũ khoạng ủũnh thụứi mửực 1 (byte cao cụa TH)
7EH Byte thãp cụa giaự trũ khoạng ủũnh thụứi mửực 1 (byte thãp cụa TH)
7DH Byte cao cụa giaự trũ khoạng ủũnh thụứi mửực 0 (byte cao cụa TL)
7CH Byte thãp cụa giaự trũ khoạng ủũnh thụứi mửực 0 (byte thãp cụa TL)
7BH Boụ nhụự caụp nhaụt tõc ủoụ ủo theo chu kyứ laứm vieục cụa Timer 0 (~50ms)
7AH OĐ nhụự tõc ủoụ ủo (Caụp nhaụt giaựn tiẽp qua 7BH) 79H OĐ nhụự tõc ủoụ chuaơn
77H OĐ nhụự lửu tõc ủoụ ủaịt cụa ADC0809 (caụp nhaụt giaựn tiẽp qua 75H)
75H OĐ nhụự caụp nhaụt tõc ủoụ ủaịt tửứ ADC0809 74H Tửụng tửù thanh ghi R7
73H Tửụng tửù thanh ghi R6
Chửực naớng caực thanh ghi trong bank thanh ghi default:
Thanh ghi Chửực naớng
R2 ẹeơ ủẽm sõ laăn dũch bit khi chia sõ 16 bit cho sõ 8 bit
R3 ẹeơ phaựt hieụn tớn hieụu yeđu caău ủạo chieău ủoụng cụ
R5 laứm boụ ủẽm trong chửụng trỡnh con DELAYMS
haứng chỳc-ủụn vũ cụa giaự trũ tõc ủoụ ủo
R7 ễÛ dỏng nhũ phađn chửựa byte cao, BCD thỡ chửựa haứng ngaứn-traớm cụa giaự trũ tõc ủoụ ủo
PUSH ACC CLR TR0
Bit dãu: 00H=#0?
ẹúc tõc ủoụ tửứ ADC vaứo ođ nhụự 75H Yes No (75H)≠(77H)? Nỏp (75H) vaứo (77H) Nỏp (75H) vaứo Yes Nỏp (75H) vaứo (77H) Nỏp (75H) vaứo Y1: Khụỷi ủoụng ADC0809 Nỏp (7BH) vaứo (7AH) Xoựa (7BH) Set bit dãu: 00H=#1 Nỏp (7FH) vaứo TH0 Nỏp (7EH) vaứo TL0
SKIP_1
Khụỷi ủoụng timer 0: TR0=1
POP ACC RETI
Y2:
* INT0_ISR:
* MAIN:
Taớng noụi dung boụ ủẽm tõc ủoụ 7BH
RETI
Nỏp 50.000às (thụứi gian mửực 0 cụa tớn hieụu ủieău khieơn ủoụng cụ) vaứo hai byte: Cao 7DH, thãp 7CH Nỏp 00000às (thụứi gian mửực 1 cụa tớn hieụu ủieău khieơn ủoụng cụ) vaứo hai byte: cao 7FH, thãp 7EH
Khụỷi ủoụng ADC0809
79H>7AH (Chuaơn>ủo)
?
Nỏp SCON, TH1, SP Nỏp TMOD, TCON, IE,
IP Set bit: TR1=1 Set bit: TR0=1 No Yes 79H<7AH (Chuaơn<ủo) ? No Yes
Giạm ođ nhụự 7EH, nẽu traứn 00→FF thỡ giạm ođ nhụự 7FH. Taớng ođ nhụự 7CH, nẽu traứn FF→00
thỡ taớng ođ nhụự 7DH
Taớng ođ nhụự 7EH, nẽu traứn 00→FF thỡ taớng ođ nhụự 7FH. Giạm ođ nhụự 7CH, nẽu traứn FF→00
thỡ giạm ođ nhụự 7DH
X1:
Hieơn thũ tõc ủoụ
X0:
* HIENTHITOCDO
Nỏp (7AH) vaứo thanh ghi A
Nỏp 60 vaứo thanh ghi B Nhađn A vụựi B Nỏp B vaứo R7 Nỏp A vaứo R6 Nỏp B vaứo (74H) Nỏp A vaứo (73H) BINTOBCD Nỏp R7 vaứo 74H Nỏp R6 vaứo 73H
Nỏp 73H vaứo thanh ghi A Nỏp sõ BCD ủụn vũ trong A
(ANL)
Chún led ủụn vũ: ACC.4=0 (ORL) Xuãt A ra port 0
DELAYMS (6 laăn)
Nỏp 73H vaứo thanh ghi A Hoaựn vũ hai nible trong A Nỏp sõ BCD chỳc trong A (ANL)
Chún led chỳc: ACC.5=0 (ORL)
Xuãt A ra port 0
DELAYMS (6 laăn)
Nỏp 74H vaứo thanh ghi A Nỏp sõ BCD traớm trong A (ANL)
Chún led traớm: ACC.6=0 (ORL)
Xuãt A ra port 0
DELAYMS (6 laăn)
Nỏp 74H vaứo thanh ghi A Hoaựn vũ hai nible trong A Nỏp sõ BCD ngaứn trong A
(ANL)
Chún led chỳc: ACC.7=0 (ORL) Xuãt A ra port 0
DELAYMS (6 laăn)
* DELAYMS