Xem mẫu
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 31
6
VI XÖÛ LYÙ
AVR AT90S2313
6.1 GIÔÙI THIEÄU CHUNG VEÀ HOÏ VI XÖÛ LYÙ AVR
AVR laø vi xöû lyù chuaån CMOS 8bit tieâu thuï ít naêng löôïng, ñöôïc cheá taïo döïa
treân caáu truùc AVR RISC (Reduced Instruct Set Computers), ñaây laø caáu truùc coù
toác ñoä xöû lyù cao hôn nhieàu so vôùi caùc vi xöû lyù ñöôïc cheá taïo döïa treân caáu truùc
CISC (Complex Instruct Set Computers). Bôûi vì moãi moät chu kyø maùy cuûa AVR
baèng vôùi taàn soá hoaït ñoäng cuûa thaïch anh, trong khi vôùi vi xöû lyù hoï 8051 thì moãi
chu kyø maùy baèng taàn soá cuûa thaïch anh chia cho 12.
6.1.1 Ñaëc tính kyõ thuaät cuûa AVR-AT90S2313
- Taäp leänh goàm 118 leänh. Haàu heát moãi leänh ñöôïc thöïc hieän trong moät chu
kyø maùy.
- 32×8 thanh ghi (R0→R31).
- 2Kb flash ROM ñeå chöùa chöông trình, cho pheùp xoùa naïp 1000 laàn.
- 128 bytes SRAM.
- 128 bytes EEPROM, cho pheùp ghi xoùa 100000 laàn.
- Cho pheùp caám truy caäp noäi dung Flash ROM va EEPROM.
- Moät boä ñònh thôøi vaø boä ñeám 8bit.
- Moät boä ñònh thôøi vaø boä ñeám 16bit, boä phaùt xung PWM 8,9 hoaëc 10 bit.
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 32
- Boä so aùp.
- Watchdog timer coù theå laäp trình ñöôïc.
- Laäp trình tröïc tieáp thoâng qua chuaån giao tieáp SPI.
- Hoã trôï toác ñoä BAUD cao.
- Cheá ñoä tieát kieäm naêng löôïng.
- 15 chaân xuaát nhaäp.
- Ñieän aùp hoaït ñoäng 4,0– 6,0V.
6.1.2 Sô ñoà chaân
+ Moâ taû caùc chaân:
- VCC: Chaân caáp ñieän (5V).
- GND: Chaân noái ñaát (0V).
- PORTB (PB7..PB0):
Port B laø port xuaát nhaäp hai chieàu 8-bit vôùi caùc ñieän trôû keùo leân beân trong.
PB0 vaø PB1 cuõng laø caùc ngoõ vaøo döông (AIN0) vaø aâm (AIN1) cuûa boä so aùp. Boä
ñeäm xuaát cuûa Port B coù theå keùo doøng ñeán 20mA. Port B seõ ôû traïng thaùi high-Z
khi bò Reset hoaëc ngay caû khi ngaét xung clock.
- PORT D (PD6..PD0):
Port D cuõng töông töï nhö Port B nhöng chæ coù 7 pin xuaát nhaäp hai chieàu.
- RESET:
Ngoõ vaøo Reset. Möùc thaáp ôû chaân naøy trong hôn 50ns seõ reset chip.
- XTAL1:
Ngoõ vaøo khueách ñaïi ñaûo cuûa maïch dao ñoäng.
- XTAL2:
Ngoõ ra khueách ñaïi ñaûo cuûa maïch dao ñoäng.
6.2 CAÁU TRUÙC CUÛA AVR
Vi xöû lyù AVR-AT90S2313 coù kieán truùc kieåu RISC. Taäp thanh ghi truy xuaát
nhanh cuûa noù bao goàm 32 x 8 bit thanh ghi vôùi thôøi gian truy xuaát baèng moät xung
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 33
clock. Ñieàu naøy coù nghóa laø trong thôøi gian moät xung clock, ñôn vò soá hoïc ALU
(Arithmetic Logic Unit) seõ thöïc thi moät leänh, keát quaû ñöôïc löu ngöôïc laïi vaøo caùc
thanh ghi. ALU hoã trôï caùc pheùp tính soá hoïc vaø logic giöõa caùc thanh ghi hay giöõa
moät haèng soá vôùi moät thanh ghi. Caùc leänh treân moät thanh ghi ñôn cuõng coù theå
ñöôïc thöïc thi trong ALU.
Saùu trong soá 32 thanh ghi ñoù ñöôïc duøng nhö laø 3 thanh ghi con troû ñòa chæ
16-bit, ñieàu naøy seõ ñöôïc noùi roõ hôn ôû phaàn sau.
Boä nhôù xuaát nhaäp bao goàm 64 ñòa chæ cho CPU keát noái vôùi caùc thieát bò
ngoaïi vi: thanh ghi ñieàu khieån, boä ñònh thôøi/boä ñeám, boä chuyeån ñoåi A/D, vaø moät
soá chöùc naêng xuaát nhaäp khaùc. Boä nhôù xuaát nhaäp coù theå ñöôïc truy xuaát tröïc tieáp.
Hoï AVR cuõng coù kieán truùc Harvard: taùch rôøi vuøng nhôù vaø caùc bus cho
chöông trình vaø döõ lieäu.
Hình 6.1 Khoâng gian vuøng nhôù cuûa AVR – AT90S2313
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 34
Hình 6.2 Caáu truùc cuûa AVR AT90S2313
6.2.1 Thanh ghi (register)
Veà caáu truùc thì AVR AT90S2313 coù 32 thanh ghi 8bit ñöôïc truy caäp trong
moät chu kyø maùy. Coù 6 trong 32 thanh ghi ñöôïc söû duïng nhö 3 thanh ghi con troû
16 bit ñeå ñònh ñòa chæ döõ lieäu (X,Y,Z). Vaø moät trong 3 thanh ghi naøy coøn ñöôïc söû
duïng laøm con troû troû ñeán moät baûng döõ lieäu trong haøm tìm kieám (look up).
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 35
Hình 6.3 Ñòa chæ thanh ghi
Haàu heát trong taäp leänh cuûa AVR ñeàu cho pheùp duøng toaøn boä thanh ghi.
Chæ tröø caùc leänh sau SBCI, SUBI, CPI, ANDI, ORI, LDI laø caùc leänh thao taùc treân
moät thanh ghi vôùi moät haèng soá, chæ cho pheùp duøng caùc thanh ghi töø R16-R31.
6.2.2 Boä ñònh thôøi (timer)
AT90S2313 cung caáp 2 timer, moät timer 8-bit vaø moät timer 16-bit, ñeàu coù
khaû naêng thay ñoåi toác ñoä traøn baèng caùch laáy taàn soá thaïch anh chia cho 8, 64, 256,
1024.
Hình 6.4 Sô ñoà khoái Timer
6.2.3 UART
Moät soá ñaëc tính veà boä thu phaùt khoâng ñoàng boä cuûa AT90S2313
• Hoä trôï raát nhieàu toác ñoä BAUD.
• Cho toác ñoä BAUD cao ngay caû vôùi taàn soá thaïch anh thaáp.
• Khung truyeàn 8 hoaëc 9 bit.
• Cheá ñoä loïc nhieãu.
• Côø kieåm tra neáu döõ lieäu trong boä ñeäm bò ghi ñeø.
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 36
• Côø kieåm tra loãi khung truyeàn.
• Côø kieåm tra loãi Start bit.
• Hoã trôï ba ngaét rieâng bieät: ngaét khi truyeàn xong, ngaét khi boä ñeäm döõ
lieäu roãng, ngaét khi nhaän xong.
6.2.3.1 Boä truyeàn döõ lieäu
Hình 6.5 Sô ñoà khoái cuûa boä truyeàn UART
Döõ lieäu caàn truyeàn ñöôïc caát vaøo trong thanh ghi döõ lieäu UDR. Döõ lieäu trong
thanh ghi naøy ñöôïc chuyeån tôùi thanh ghi dòch ñeå truyeàn ñi treân chaân TxD.
Neáu boä ñeäm truyeàn roãng thì côø UDRE trong thanh ghi USR ñöôïc set. Khi
truyeàn xong thì côø TXC trong thanh ghi USR ñöôïc set.
Côø TXEN trong thanh ghi UCR laø côø cho pheùp truyeàn. Khi côø naøy ñöôïc
reset thì chaân PD1 (TxD) coù theå ñöôïc söû duïng nhö moät chaân xuaát nhaäp bình
thöôøng. Vaø khi côø naøy ñöôïc set, thì boä truyeàn seõ ñöôïc noái vôùi chaân PD1 ñeå trôû
thaønh chaân TxD.
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 37
6.2.3.2 Boä nhaän döõ lieäu
Hình 6.6 Sô ñoà khoái boä nhaän UART
Boä nhaän laáy maãu treân chaân RxD ôû taàn soá gaáp 16 laàn toác ñoä BAUD. Ñieàu
naøy coù nghóa laø trong thôøi gian cuûa 1 bit döõ lieäu thì boä nhaän seõ laáy maãu 16 laàn.
Trong khi ñöôøng truyeàn raûnh, maãu laáy ôû möùc logic 0 thì ñöôïc hieåu laø caïnh xuoáng
cuûa start-bit, vaø chu trình kieåm tra start-bit ñöôïc baét ñaàu.
Ta choïn maãu laàn thöù 1 bieåu thò cho maãu 0. Ta xeùt maãu thöù 8, 9 vaø 10, neáu
hôn hai trong ba maãu naøy ôû möùc logic 1 thì startbit ñöôïc coi nhö laø moät nhieãu vaø
boä nhaän seõ chôø moät start-bit môùi.
Neáu moät start-bit ñöôïc kieåm tra laø ñuùng, thì quaù trình laáy maãu töông töï
ñöôïc tieáp tuïc vôùi töøng bit döõ lieäu keá theo.
Hình 6.7 Khung truyeàn döõ lieäu UART
Khi stop-bit ñeán boä nhaän, phaûi coù ít nhaát 2 trong 3 maãu ôû logic 1 thì bit ñoù
môùi ñöôïc hieåu laø stopbit. Neáu coù hôn 2 maãu laø logic 0 thì côø FE (Framing Error)
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 38
trong thanh ghi USR ñöôïc set. Vì vaäy tröôùc khi ñoïc thanh ghi UDR, ngöôøi söû
duïng neân kieåm tra côø FE.
Döõ lieäu vaãn ñöôïc chuyeån vaøo thanh ghi UDR vaø côø RXC trong thanh ghi
USR ñöôïc set cho duø vieäc kieåm tra stop-bit coù loãi hay khoâng. Thaät ra, UDR ñöôïc
chia thaønh 2 thanh ghi rieâng bieät: moät cho boä nhaän vaø moät cho boä truyeàn.
Vaø neáu trong khi ñang nhaän veà moät kyù töï maø thanh ghi UDR khoâng ñöôïc
ñoïc veà töø laàn nhaän tröôùc thì côø OR (OverRun) trong UCR seõ ñöôïc set. Ñieàu naøy
coù nghóa laø döõ lieäu trong laàn nhaän tröôùc ñaõ ñöôïc dòch vaøo trong thanh ghi dòch ñaõ
khoâng ñöôïc chuyeån vaøo UDR vaø bò maát. Côø OR ñöôïc caäp nhaät khi maø döõ lieäu
trong UDR ñöôïc ñoïc. Vì theá, ngöôøi söû duïng neân kieåm tra côø naøy sau khi ñoïc
UDR ñeå chaéc raèng döõ lieäu khoâng bò ghi ñeø do toác ñoä BAUD quaù cao hay CPU
quaù taûi.
Khi maø côø RXEN trong thanh ghi UCR ñöôïc reset, thì boä nhaän bò voâ hieäu
hoùa. Töùc laø chaân PD0 (RxD) coù theå duøng nhö laø moät chaân xuaát nhaäp bình
thöôøng. Khi côø naøy ñöôïc set, boä nhaän seõ ñöôïc noái vôùi chaân PD0 vaø chaân naøy trôû
thaønh chaân RxD.
6.2.4.3 Caùc thanh ghi lieân quan
• Thanh ghi döõ lieäu UDR (The UART I/O Data Register)
Thanh ghi UDR thaät ra coù 2 thanh ghi rieâng bieät cuøng coù chung moät ñòa chæ
I/O. Khi ghi leân thanh ghi naøy, thì UDR laø thanh ghi döõ lieäu cuûa boä truyeàn. Khi
ñoïc töø UDR, thì luùc naøy UDR laïi laø thanh ghi döõ lieäu cuûa boä nhaän.
• Thanh ghi traïng thaùi USR (UART Status Register)
Thanh ghi USR laø moät thanh ghi chæ ñoïc, noù cung caáp thoâng tin traïng thaùi
UART.
Bit 7 – RXC (UART Receive Complete)
Bit naøy ñöôïc set khi moät kyù töï ñöôïc chuyeån töø thanh ghi
dòch vaøo UDR. RXC ñöôïc xoùa khi UDR ñöôïc ñoïc.
Bit 6 – TXC (UART Transmit Complete)
Bit naøy ñöôïc set khi maø toaøn boä kyù töï (bao goàm caû
stop-bit) trong thanh ghi dòch ñöôïc ñaåy ra vaø khoâng coù döõ
lieäu môùi naøo ñöôïc ghi vaøo trong UDR.
Bit 5 – UDRE (UART Data Register Empty)
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 39
Bit naøy ñöôïc set khi moät kyù töï trong UDR ñöôïc chuyeån
vaøo thanh ghi dòch. Vieäc set côø naøy baùo hieäu raèng boä truyeàn
ñaõ roãng vaø ñaõ saün saøng ñeå phaùt kyù töï tieáp theo.
UDRE ñöôïc set trong suoát quaù trình reset.
Bit 4 – FE (Framing Error)
Bit naøy ñöôïc set neáu moät loãi khung truyeàn ñöôïc tìm
thaáy; ví duï nhö: stop-bit cuûa kyù töï ñang nhaän laø 0.
Bit naøy seõ ñöôïc xoùa khi maø stopbit cuûa döõ lieäu nhaän
ñöôïc laø 1.
Bit 3 – OR (Overrun)
Bit naøy ñöôïc set neáu moät loãi ghi ñeø döõ lieäu ñöôïc phaùt
hieän. Ví duï nhö: khi moät kyù töï ñang ôû trong UDR khoâng
ñöôïc ñoïc tröôùc khi moät kyù töï khaùc ñöôïc dòch vaøo thanh ghi
dòch cuûa boä nhaän.
Côø OR ñöôïc xoùa khi döõ lieäu ñöôïc nhaän vaø chuyeån tôùi
UDR.
• Thanh ghi ñieàu khieån UCR (UART Control Register)
bit 7 – RXCIE: Cho pheùp ngaét nhaän khi hoaøn taát.
Neáu bit naøy ñöôïc set thì khi bit RXC trong thanh ghi RXC
leân moät thì chöông trình phuïc ngaét seõ ñöôïc thöïc hieän.
bit 6 – TXCIE: Cho pheùp ngaét truyeàn khi hoaøn taát.
Neáu bit naøy ñöôïc set thì khi bit TXC trong thanh ghi USR
leân moät thì chöông trình phuïc vuï ngaét seõ ñöôïc thöïc hieän.
bit 5 – UDRIE: Cho pheùp ngaét khi boä ñeäm roãng.
Neáu bit naøy ñöôïc set thì khi bit UDRE trong thanh ghi USR
leân moät thì chöông trình phuïc vuï ngaét seõ ñöôïc thöïc hieän.
bit 4 – RXEN: Cho pheùp nhaän.
Bit naøy cho pheùp boä nhaän hoaït ñoäng khi ñöôïc set. Khi bit
naøy ñang ôû möùc 0, thì caùc côø traïng thaùi TXC, OR, FE khoâng theå
ñöôïc set. Neáu caùc côø naøy ñöôïc set, thì vieäc reset RXEN khoâng
laøm cho caùc côø naøy bò xoùa.
bit 3 – TXEN: Cho pheùp truyeàn
Bit naøy cho pheùp boä truyeàn hoaït ñoäng khi ñöôïc set. Trong
khi ñang truyeàn moät kyù töï maø bit cho pheùp truyeàn bò reset, thì
boä truyeàn vaãn tieáp tuïc truyeàn cho ñeán heát kyù töï ñang truyeàn.
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 40
bit 2 – CHR9: Khung döõ lieäu 9 bit
Khi bit naøy ñöôïc set thì khung döõ lieäu seõ laø 9 bit keå caû start
bit vaø stop-bit. Bit thöù 9 seõ ñöôïc ñoïc vaø ghi baèng caùch söû duïng
bit RXB8 vaø TXB8 töông öùng trong thanh ghi UCR. Bit thöù 9
naøy coù theå coi nhö moät stop-bit môû roäng hoaëc bit kieåm tra
parity.
bit 1 - RXB8: Receive Data Bit 8
RXB8 laø bit thöù 9 cuûa kyù töï nhaän ñöôïc khi CHR9 ñöôïc set.
bit 0 – TXB8: Transmit Data Bit 8
TXB8 laø bit thöù 9 cuûa kyù töï nhaän ñöôïc khi CHR9 ñöôïc set.
6.2.4.4 Caùch ñònh toác ñoä BAUD
Toác ñoä BAUD ñöôïc xaùc ñònh theo coâng thöùc sau:
f CK
BAUD =
16( UBRR + 1)
BAUD: toác ñoä BAUD.
fCK : taàn soá thaïch anh söû duïng.
UBRR: thanh ghi chöùa giaù trò xaùc ñònh toác ñoä BAUD (0-
255).
Vôùi moät soá thaïch anh chuaån, caùc toác ñoä BAUD thoâng thöôøng ñöôïc cho
trong baûng sau, chuù yù raèng vôùi caùc toác ñoä BAUD coù phaàn traêm sai soá hôn 1%
khoâng neân söû duïng:
Baûng 6.1 Baûng caùc toác ñoä BAUD thoâng duïng
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 41
• Thanh ghi toác ñoä BAUD – UBRR
Thanh ghi UBRR laø thanh ghi 8 bit qui ñònh toác ñoä BAUD.
6.3 CAÙC LEÄNH CUÛA AT90S2313 SÖÛ DUÏNG TRONG LUAÄN VAÊN
ADC – Coäng vôùi côø Carry
Coäng hai thanh ghi vôùi côø C, sau ñoù keát quaû ñöôïc löu vaøo thanh ghi
ñích Rd.
Soá byte 2
Soá chu kyø 1
Maõ ñoái töôïng 0001 11rd dddd rrrr
Cuù phaùp
ADC Rd, Rr (0 ≤ d ≤ 31, 0 ≤ r ≤ 31)
Hoaït ñoäng
Rd ← Rd+Rr+C
Caùc côø aûnh höôûng Z, C, N, V, H.
ADIW – Coäng tröïc tieáp 1 thanh ghi 16bit vôùi moät soá
Coäng moät caëp thanh ghi vôùi moät soá töø 0-63, keát quaû löu vaøo caëp
thanh ghi. Leänh naøy duøng cho 4 caëp thanh ghi cao nhaát.
Soá byte 2
Soá chu kyø 2
Maõ ñoái töôïng 1001 0110 KKdd KKKK
Cuù phaùp
ADIW Rd+1:Rd, K (d ∈ {24,26,28,30}, 0≤ K ≤ 63)
Hoaït ñoäng
Rd+1:Rd ← Rd+1:Rd + K
Caùc côø aûnh höôûng Z, C, N, V, S.
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 42
AND – And logic
Thöïc hieän pheùp and logic noäi dung giöõa hai thanh ghi Rd vaø Rr, keát
quaû löu vaøo thanh ghi Rd.
Soá byte 2
Soá chu kyø 1
Maõ ñoái töôïng 0010 00rd dddd rrrr
Cuù phaùp
AND Rd, Rr (0 ≤ d ≤ 31, 0 ≤ r ≤ 31)
Hoaït ñoäng
Rd ← Rd * Rr
Caùc côø aûnh höôûng Z, N, V.
BREQ – Nhaûy neáu baèng
Leänh naøy seõ thöïc hieän neáu côø Z ñöôïc set
Soá byte 2
Soá chu kyø 1/2
Maõ ñoái töôïng 1111 00kk kkkk k001
Cuù phaùp
BREQ k (-64 ≤ k ≤ 63)
Hoaït ñoäng
If Rd=Rr (Z=1) then PC← PC+k+1, else PC ← PC+1
BRNE – Nhaûy neáu khoâng baèng
Leänh naøy seõ ñöôïc thöïc hieän neáu côø Z ñöôïc reset
Soá byte 2
Soá chu kyø 1/2
Maõ ñoái töôïng 1111 01kk kkkk k001
Cuù phaùp
BRNE k (-64 ≤ k ≤ 63)
Hoaït ñoäng
If Rd≠Rr (Z=0) then PC← PC+k+1, else PC ← PC+1
BRCS – Nhaûy neáu côø Carry ñöôïc set
Leänh naøy seõ thöïc hieän khi côø Carry ñöôïc set
Soá byte 2
Soá chu kyø 1/2
Maõ ñoái töôïng 1111 00kk kkkk k000
Cuù phaùp
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 43
BRCS k (-64 ≤ k ≤ 63)
Hoaït ñoäng
If C=1 then PC← PC+k+1, else PC ← PC+1
CP – So saùnh
So saùnh noäi dung thanh ghi Rd vaø Rr. Leänh naøy khoâng laøm thay ñoåi
noäi dung thanh ghi.
Soá byte 2
Soá chu kyø 1
Maõ ñoái töôïng 0001 01rd dddd rrrr
Cuù phaùp
CP Rd, Rr (0 ≤ d ≤ 31, 0 ≤ r ≤ 31)
Hoaït ñoäng
Rd - Rr
Caùc côø aûnh höôûng Z, C, N, V, H
CPI – So saùnh
So saùnh noäi dung thanh ghi Rd vôùi moät haèng soá K. Leänh naøy khoâng
laøm thay ñoåi noäi dung thanh ghi.
Soá byte 2
Soá chu kyø 1
Maõ ñoái töôïng 0011 KKKK dddd KKKK
Cuù phaùp
CPI Rd, K (16 ≤ d ≤ 31, 0 ≤ K ≤ 255)
Hoaït ñoäng
Rd - K
Caùc côø aûnh höôûng Z, C, N, V, H.
CPSE – So saùnh vaø boû qua neáu baèng
So saùnh noäi dung thanh ghi Rd vaø Rr, vaø boû qua leänh keá tieáp neáu
Rd=Rr. Leänh naøy khoâng laøm thay ñoåi noäi dung thanh ghi.
Soá byte 2
Soá chu kyø 1/2
Maõ ñoái töôïng 0001 00rd dddd rrrr
Cuù phaùp
CPSE Rd, Rr (0 ≤ d ≤ 31, 0 ≤ r ≤ 31)
Hoaït ñoäng
If Rd = Rr then PC ← PC + 2 (hoaëc 3), else PC ← PC + 1
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 44
IN – Löu giaù trò cuûa moät vò trí I/O vaøo thanh ghi
Löu döõ lieäu töø moät thieát bò xuaát nhaäp (nhö Port, Timer…) vaøo thanh
ghi Rd.
Soá byte 2
Soá chu kyø 1
Maõ ñoái töôïng 1011 0AAd dddd AAAA
Cuù phaùp
IN Rd,A (0 ≤ d ≤ 31, 0 ≤ A ≤ 63)
Hoaït ñoäng
Rd ← I/O(A)
LD – Naïp giaùn tieáp noäi dung vaøo thanh ghi thoâng qua thanh ghi con troû
(X, Y, Z).
Noäi dung caùc thanh ghi con troû X, Y, Z coù theå khoâng ñoåi hoaëc coù theå
taêng hoaëc giaûm moät ñôn vò sau khi leänh ñöôïc thöïc thi. Chuù yù raèng chæ coù
noäi byte thaáp cuûa thanh ghi ñöôïc caäp nhaät, coøn byte cao thì khoâng.
Soá byte 2
Soá chu kyø 2
Maõ ñoái töôïng
Khi söû duïng thanh ghi con troû X
(1) 1001 000d dddd 1100
(2) 1001 000d dddd 1101
(3) 1001 000d dddd 1110
Khi söû duïng thanh ghi con troû Y
(4) 1000 000d dddd 1000
(5) 1001 000d dddd 1001
(6) 1001 000d dddd 1010
Khi söû duïng thanh ghi con troû Z
(7) 1000 000d dddd 0000
(8) 1001 000d dddd 0001
(9) 1001 000d dddd 0010
Cuù phaùp
(1) LD Rd, X ( 0 ≤ d ≤ 31)
(2) LD Rd, X+ ( 0 ≤ d ≤ 31)
(3) LD Rd, -X ( 0 ≤ d ≤ 31)
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 45
(4) LD Rd, Y ( 0 ≤ d ≤ 31)
(5) LD Rd, Y+ ( 0 ≤ d ≤ 31)
(6) LD Rd, -Y ( 0 ≤ d ≤ 31)
(7) LD Rd, Z ( 0 ≤ d ≤ 31)
(8) LD Rd, Z+ ( 0 ≤ d ≤ 31)
(9) LD Rd, -Z ( 0 ≤ d ≤ 31)
Hoaït ñoäng
(1) Rd ← (X)
(2) Rd ← (X) X ← X+1
(3) X ← X-1 Rd ← (X)
Cô cheá hoaït ñoäng töông töï vôùi Y vaø Z
LDI – Naïp giaù trò tröïc tieáp
Naïp moät haèng soá 8-bit tröïc tieáp vaøo thanh ghi töø 16 ñeán 31
Soá byte 2
Soá chu kyø 1
Maõ ñoái töôïng 1110 KKKK dddd KKKK
Cuù phaùp
LDI Rd, K (16 ≤ d ≤ 31, 0 ≤ K ≤ 255)
Hoaït ñoäng
Rd ← K
MOV – Sao cheùp thanh ghi
Leänh naøy sao cheùp noäi dung cuûa thanh ghi Rr vaøo thanh ghi Rd.
Thanh ghi Rr khoâng thay ñoåi trong khi thanh ghi Rd ñöôïc löu giaù trò cuûa
thanh ghi Rr.
Soá byte 2
Soá chu kyø 1
Maõ ñoái töôïng 0010 11rd dddd rrrr
Cuù phaùp
MOV Rd,Rr (0 ≤ d ≤ 31, 0 ≤ r ≤ 31)
Hoaït ñoäng
Rd ← Rr
ORI – Or vôùi moät haèng soá
Thöïc hieän pheùp OR logic giöõa moät thanh ghi Rd vaø moät haèng soá, keát
quaû löu vaøo thanh ghi Rd.
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 46
Soá byte 2
Soá chu kyø 1
Maõ ñoái töôïng 0110 KKKK dddd KKKK
Cuù phaùp
ORI Rd,K (16 ≤ d ≤ 31, 0 ≤ K ≤ 255)
Hoaït ñoäng
Rd ← Rd v K
Caùc côø aûnh höôûng: Z, N, V.
RJMP – Nhaûy khoâng ñieàu kieän
Nhaûy ñeán moät ñòa chæ trong khoaûng PC – 2K + 1 ñeán PC + 2K
(Word). Vôùi ngoân ngöõ Assembler, thì K ñöôïc thay baèng moät nhaõn.
Soá byte 2
Soá chu kyø 1
Maõ ñoái töôïng 1100 kkkk kkkkk kkkkk
Cuù phaùp
RJMP k (-2K ≤ k ≤ 2K)
Hoaït ñoäng
PC ← PC + k + 1
SBIS – Boû qua neáu bit trong thanh ghi I/O ñöôïc set
Leänh naøy kieåm tra moät bit leû trong moät thanh ghi I/O vaø boû qua leänh
keá tieáp neáu bit ñoù ñöôïc set. Leänh naøy chæ thöïc hieän vôùi caùc thanh ghi I/O
thaáp.
Soá byte 2
Soá chu kyø 1
Maõ ñoái töôïng 1001 1011 AAAA Abbb
Cuù phaùp
SBIS A,b (0≤ A ≤ 31, 0 ≤ b ≤ 7)
Hoaït ñoäng
If I/O(A.b) = 1 then PC ← PC + 2( or 3) else PC ← PC + 1
SBIW – Tröø moät haèng soá (16 bit)
Laáy moät caëp thanh ghi tröø moät haèng soá (0-63), keát quaû löu vaøo caëp
thanh ghi ñoù.
Soá byte 2
Soá chu kyø 2
Maõ ñoái töôïng 1001 0111 KKdd KKKK
Cuù phaùp
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 47
SBIW Rd+1:Rd,K (d∈{24,26,28,30}, 0 ≤ K ≤ 63)
Hoaït ñoäng
Rd+1:Rd ← Rd+1:Rd -K
Caùc côø aûnh höôûng: Z, N, V, S, C.
ST – Löu noäi dung moät thanh ghi vaøo oâ nhôù ñöôïc con troû döõ lieäu troû tôùi
(X,Y,Z).
Noäi dung caùc thanh ghi con troû X, Y, Z coù theå khoâng ñoåi hoaëc coù theå
taêng hoaëc giaûm moät ñôn vò sau khi leänh ñöôïc thöïc thi. Chuù yù raèng chæ coù
noäi byte thaáp cuûa thanh ghi ñöôïc caäp nhaät, coøn byte cao thì khoâng.
Soá byte 2
Soá chu kyø 2
Maõ ñoái töôïng
Khi söû duïng thanh ghi con troû X
(1) 1001 001r rrrr 1100
(2) 1001 001r rrrr 1101
(3) 1001 001r rrrr 1110
Khi söû duïng thanh ghi con troû Y
(4) 1000 001r rrrr 1000
(5) 1001 001r rrrr 1001
(6) 1001 001r rrrr 1010
Khi söû duïng thanh ghi con troû Z
(7) 1000 001r Rrrr 0000
(8) 1001 001r Rrrr 0001
(9) 1001 001r Rrrr 0010
Cuù phaùp
(1) ST X, Rr ( 0 ≤ r ≤ 31)
(2) ST X+, Rr ( 0 ≤ r ≤ 31)
(3) ST -X, Rr ( 0 ≤ r ≤ 31)
(4) ST Y, Rr ( 0 ≤ r ≤ 31)
(5) ST Y+, Rr ( 0 ≤ r ≤ 31)
(6) ST -Y, Rr ( 0 ≤ r ≤ 31)
(7) ST Z, Rr ( 0 ≤ r ≤ 31)
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 48
(8) ST Z+, Rr ( 0 ≤ r ≤ 31)
(9) ST -Z, Rr ( 0 ≤ r ≤ 31)
Hoaït ñoäng
(2) (X) ← Rr
(4) (X) ← Rr X ← X+1
(5) X ← X-1 (X) ← Rr
Cô cheá hoaït ñoäng töông töï vôùi Y vaø Z
STS – Löu giaù trò tröïc tieáp vaøo bieán
Löu moät byte töø moät thanh ghi vaøo trong boä nhôù (RAM noäi).
Soá byte 4
Soá chu kyø 2
Maõ ñoái töôïng 0110 001d dddd 0000
kkkk kkkk kkkk kkkk
Cuù phaùp
STS k,Rr (0 ≤ r ≤ 31, 0 ≤ k ≤ 65535)
Hoaït ñoäng
(k) ← Rr
Chuù yù ñoái vôùi caùc leänh khoâng ñeà caäp ñeán caùc côø aûnh höôûng, nghóa laø caùc
leänh ñoù khoâng aûnh höôûng ñeán caùc côø.
6.4 NAÏP DÖÕ LIEÄU NOÁI TIEÁP
Chöông trình coù theå ñöôïc naïp vaøo chip baèng chuaån SPI trong khi chaân
RESET ñöôïc keùo xuoáng mass. Chuaån SPI duøng 3 chaân: SCK, MOSI (nhaäp) vaø
MISO (xuaát). Sau khi chaân RESET ñöôïc keùo xuoáng mass, thì leänh cho pheùp laäp
trình caàn ñöôïc thöïc hieän tröôùc khi thöïc hieän vieäc xoaù vaø naïp chöông trình.
Hình 6.8 Sô ñoà maïch ñoå chöông trình cho chip
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 49
Ñoái vôùi EEPROM thì khoâng caàn thöïc hieän leänh xoùa vì ñieàu naøy seõ ñöôïc
thöïc hieän töï ñoäng. Leänh xoùa laøm toaøn boä noäi dung thaønh FFh.
Hình 6.9 Giaûn ñoà xung cho quaù trình ñoå döõ lieäu vaøo chip
Quaù trình naïp chip
a) Caáp nguoàn cho chip (Vcc vaø GND) trong khi chaân RESET vaø SCK xuoáng
mass.
b) Chôø ít nhaát 20ms vaø cho pheùp naïp noái tieáp baèng caùch gôûi leänh cho pheùp naïp
tôùi chaân MOSI (PB5).
c) Neáu thieáu söï ñoàng boä thì caùc leänh naïp noái tieáp seõ khoâng ñöôïc thöïc hieän. Khi
ñaõ coù söï ñoàng boä, thì byte thöù hai (53h) seõ ñöôïc gôûi ngöôïc trôû laïi trong khi
byte thöù ba ñang cuûa leänh cho pheùp naïp ñöôïc gôûi. Cho duø byte gôûi veà thöù hai
(53h) coù ñuùng hay khoâng thì taát caû 4 byte cuõng phaûi ñöôïc truyeàn ñi. Trong
tröôøng hôïp byte thöù hai (53h) khoâng ñöôïc gôûi veà thì ta caáp moät xung döông
cho chaân SCK vaø sau ñoù ta laïi tieáp tuïc truyeàn laïi leänh laäp trình. Quaù trình naøy
seõ ñöôïc laäp ñi laäp laïi trong 32 laàn, neáu khoâng thaønh coâng coi nhö vieäc laäp
trình chip bò huûy.
d) Neáu leänh xoùa chip ñöôïc thöïc hieän (khi laäp trình Flash ROM) thì ta chôø tWD-
ERASE (toái thieåu 8ms) sau leänh naøy, tieáp tuïc caáp moät xung döông cho chaân
RESET roài quay laïi böôùc hai.
e) Flash ROM vaø EEPROM ñöôïc naïp töøng byte moät baèng caùch cung caáp vöøa ñòa
chæ vöøa döõ lieäu trong cuøng moät leänh ghi thích hôïp. Ñoái vôùi vuøng nhôù trong
EEPROM, thì leänh xoùa seõ ñöôïc thöïc hieän moät caùch töï ñoäng tröôùc khi döõ lieäu
môùi ñöôïc ghi vaøo. Coù theå söû duïng vieäc ñoïc caùc byte daáu hieäu tröôùc khi
truyeàn leänh keá tieáp hoaëc neáu khoâng thì ta chôø tWD-PROG (toái thieåu 4ms)
f) Baèng leänh ñoïc ta coù theå ñoïc laïi noäi dung trong baát kyø oâ nhôù naøo thoâng qua
chaân MISO (PB6) ñeå kieåm tra laïi döõ lieäu ñaõ ghi.
g) Khi keát thuùc vieäc ñoå chöông trình, chaân RESET ñöôïc ñöa leân möùc cao ñeå baét
ñaàu cheá ñoä hoaït ñoäng bình thöôøng.
Baûng 6.2 Caùc leänh duøng trong naïp chöông trình cho chip
Maõ leänh
Leänh Ghi chuù
Byte 1 Byte 2 Byte 3 Byte 4
Cho pheùp Leänh thöïc thi
1010 1100 0101 0011 xxxx xxxx xxxx xxxx
naïp khi chaân
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 50
RESET → 0V
Xoùa Flah vaø
Xoùa chip 1010 1100 100x xxxx xxxx xxxx xxxx xxxx
EEPROM
Ñoïc döõ lieäu o
Leänh ñoïc
0010 H000 xxxx xxaa bbbb bbbb oooo oooo töø flash ROM
Flash ROM
taïi ñòa chæ a:b
Ghi döõ lieäu i
Ghi vaøo vaøo Flash
0100 H000 xxxx xxaa bbbb bbbb iiii iiii
Flash ROM ROM taïi ñòa
chæ a:b
Ñoïc döõ lieäu o
Leänh ñoïc
1010 0000 xxxx xxxx xbbb bbbb oooo oooo töø EEPROM
EEPROM
taïi ñòa chæ b
Ghi döõ lieäu I
Ghi vaøo
1100 0000 xxxx xxxx xbbb bbbb iiii iiii vaøo EEPROM
EEPROM
taïi ñòa chæ b
Ghi bit khoùa.
Ghi bit
1010 1100 111x x21x xxxx xxxx xxxx xxxx 1,2=0 thì khoùa
khoùa
chöông trình
Ñoïc caùc Ñoïc caùc byte
byte daáu 0011 0000 xxxx xxxx xxxx xxbb oooo oooo daáu hieäu o taïi
hieäu ñòa chæ b
Chuù thích:
- a = bit ñòa chæ cao
- b = bit ñòa chæ thaáp
- H = 0 – byte thaáp, 1 – byte cao
- o = döõ lieäu nhaän veà
- i = döõ lieäu naïp vaøo
- x = khoâng quan taâm
- 1 = bit khoùa 1
- 2 = bit khoùa 2
6.5 KEÁT LUAÄN
Chöông naøy chuùng ta ñaõ naém khaù roõ caáu truùc, caùch laäp trình cuõng nhö caùc
ñaëc tính noåi troäi cuûa chip AT90S2313. Döïa vaøo nhöõng ñieàu naøy chuùng ta coù theå
laäp trình ñieàu khieån caùc ñoäng cô RC-Servo. Chöông sau seõ noùi khaùi quaùt veà hoï vi
xöû lyù MCS-51, cuï theå laø vi xöû lyù AT89C2051.
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
nguon tai.lieu . vn