Xem mẫu

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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