Cov txheej txheem:

AVR Assembler Tutorial 6: 3 Cov Kauj Ruam
AVR Assembler Tutorial 6: 3 Cov Kauj Ruam

Video: AVR Assembler Tutorial 6: 3 Cov Kauj Ruam

Video: AVR Assembler Tutorial 6: 3 Cov Kauj Ruam
Video: AVR 6# Переменные и арифметика 2024, Lub Xya hli ntuj
Anonim
AVR Assembler Tutorial 6
AVR Assembler Tutorial 6

Zoo siab Tutorial 6!

Kev qhia hnub no yuav luv ib qhov uas peb yuav txhim kho txoj hauv kev yooj yim los sib txuas lus cov ntaub ntawv ntawm ib qho atmega328p thiab lwm qhov siv ob lub chaw nres nkoj txuas rau lawv. Tom qab ntawd peb yuav nqa cov menyuam tsuav los ntawm Tutorial 4 thiab Sau Npe Txheeb Xyuas los ntawm Tutorial 5, txuas lawv ua ke, thiab siv peb txoj hauv kev los sib tham qhov tshwm sim ntawm dice yob los ntawm cov menyuam mus rau lub tshuab ntsuas. Peb mam li luam tawm cov ntawv yob hauv binary siv cov LEDs uas peb tsim los rau tus kws tshuaj xyuas hauv Tutorial 5. Thaum peb ua tiav qhov haujlwm no peb yuav muaj peev xwm tsim kho tom ntej ntawm peb cov phiaj xwm tag nrho hauv cov lus qhia tom ntej.

Hauv qhov kev qhia no koj yuav xav tau:

  1. Koj pawg thawj coj saib tsab ntawv
  2. Koj cov menyuam tsuav los ntawm Tutorial 4
  3. Koj Tus Kws Tshuaj Ntsuam Xyuas los ntawm Tutorial 5
  4. Ob txoj hlua sib txuas
  5. Ib daim qauv ntawm Daim Ntawv Teev Npe Cov Ntaub Ntawv (2014 kho dua tshiab):

    www.atmel.com/images/Atmel-8271-8-bit-AVR-M…

  6. Ib daim qauv ntawm Phau Ntawv Teev Npe Qhia (kho dua tshiab 2014):

    www.atmel.com/images/atmel-0856-avr-instruc…

Nov yog qhov txuas mus rau kev sau tiav ntawm kuv cov AVR kev sib sau ua ke qhia:

Kauj Ruam 1: Peb Yuav Ua Li Cas Thiaj Tau Txais Ob Lub Microcontrollers los Sib Tham?

Peb Yuav Ua Li Cas Thiaj Tau Txais Ob Lub Microcontrollers los Sib Tham?
Peb Yuav Ua Li Cas Thiaj Tau Txais Ob Lub Microcontrollers los Sib Tham?

Txij li thaum peb tab tom pib nthuav peb txoj haujlwm kom peb cov khoom kawg tau tsim los ntawm kev sau cov khoom me me peb yuav xav tau tus pin ntau dua li ib qho Atmega328P tuaj yeem muab. Yog li peb yuav ua txhua daim ntawm qhov phiaj xwm tag nrho ntawm ib lub microcontroller cais thiab tom qab ntawd kom lawv faib cov ntaub ntawv nruab nrab ntawm lawv. Yog li qhov teeb meem uas peb yuav tsum tau daws yog peb tuaj yeem ua tus txheej txheem yooj yim rau cov tswj hwm los tham nrog lwm tus thiab hloov cov ntaub ntawv ntawm lawv li cas? Zoo, ib yam hais txog cov tswj hwm no yog tias lawv txhua tus ua tiav 16 lab cov lus qhia ib pliag. Qhov no yog lub sijhawm tiag tiag thiab yog li peb tuaj yeem siv lub sijhawm no los hloov cov ntaub ntawv. Yog tias peb siv millisecond qeeb los tsim cov ntaub ntawv ces peb tsis tas yuav yog txhua qhov tseeb vim tias CPU ua tiav 16, 000 cov lus qhia hauv ib lub millisecond. Hauv lwm lo lus, millisecond yog nyob mus ib txhis rau CPU. Yog li cia peb sim nws nrog dice yob. Kuv xav xa qhov tshwm sim ntawm cov dice yob los ntawm dice cov menyuam nti mus rau tus kws tshuaj ntsuam nti. Piv txwv tias koj tau sawv hla txoj kev thiab kuv xav ua lub cim rau koj qhov tshwm sim ntawm kuv cov yob ntawm ib khub ntawm tsuav. Ib yam uas kuv tuaj yeem ua, yog tias peb ob leeg muaj lub moos, yog kuv tuaj yeem qhib lub teeb nyem, tom qab ntawd thaum koj npaj tau txais kuv cov ntaub ntawv koj qhib koj lub teeb nyem thiab peb ob leeg pib peb lub moos. Tom qab ntawd kuv khaws kuv lub teeb nyem rau qhov pes tsawg milliseconds raws li cov tsuav yob thiab tom qab ntawd kaw nws. Yog li yog tias kuv dov 12 Kuv yuav khaws kuv lub teeb rau 12 milliseconds. Ntau qhov teeb meem nrog rau saum toj no yog, rau koj thiab kuv, tsis muaj txoj hauv kev uas peb yuav tuaj yeem siv sijhawm kom raug kom paub qhov txawv ntawm 5 milliseconds thiab 12 milliseconds. Tab sis dab tsi txog qhov no: Piv txwv tias peb tau txiav txim siab tias kuv yuav khaws kuv lub teeb rau ib xyoos rau txhua tus lej ntawm tsuav? Tom qab ntawd yog tias kuv yob 12 Kuv yuav ci lub teeb ntawm koj rau 12 xyoos thiab kuv xav tias koj yuav pom zoo tias tsis muaj peev xwm uas koj yuav ua yuam kev hauv kev suav tus lej yog? Koj tuaj yeem so thiab mus ua si ntaus pob, koj tseem tuaj yeem mus ua si craps hauv Vegas tau 6 lub hlis, tsuav yog nyob rau qee lub sijhawm ntawm lub xyoo txhawm rau saib hla txoj kev kom pom tias lub teeb nyob ntawm koj yuav tsis plam qhov suav. Zoo uas yog qhov peb ua rau microcontrollers! Ib millisecond rau CPU zoo li ib xyoos. Yog li yog tias kuv tig lub teeb liab rau 12 milliseconds yuav luag tsis muaj txoj hauv kev uas lwm lub microcontroller yuav tsis meej pem rau 10 lossis 11 tsis muaj teeb meem dab tsi cuam tshuam thiab tsis muaj dab tsi tshwm sim nyob rau lub sijhawm no. Rau microcontrollers, millisecond yog nyob mus ib txhis. Yog li no yog qhov peb yuav ua. Ua ntej peb yuav xaiv ob lub chaw nres nkoj ntawm tus tswj hwm los ua peb cov chaw sib txuas lus. Kuv yuav siv PD6 rau Txais Cov Ntaub Ntawv (peb tuaj yeem hu nws Rx yog tias peb nyiam) thiab kuv yuav xaiv PD7 rau xa cov ntaub ntawv (peb tuaj yeem hu nws Tx yog peb nyiam). Tus kws tshuaj ntsuam xyuas yuav tshuaj xyuas nws tus pin Rx ib ntus thiab yog tias nws pom lub cim nws yuav poob mus rau "kev sib txuas lus subroutine" thiab tom qab ntawd xa lub teeb liab rov qab mus rau cov menyuam tsuav hais tias nws npaj tau txais. Lawv yuav ob leeg pib lub sijhawm thiab cov menyuam tsuav yuav xa lub teeb liab (piv txwv li 5V) rau lub millisecond ib tus lej ntawm cov tsuav. Yog li yog tias cov yob tau muab ob npaug rau, lossis 12, ces cov menyuam tsuav yuav teeb nws PD7 rau 5V rau 12 milliseconds thiab tom qab ntawd teeb nws rov qab rau 0V. Tus ntsuas yuav tshuaj xyuas nws PD6 tus pin txhua lub millisecond, suav txhua lub sijhawm, thiab thaum nws rov qab mus rau 0V tom qab ntawd nws tso tawm cov lej ua rau tus ntsuas ntsuas pom, qhia kaum ob hauv binary ntawm LED's Yog li ntawd yog txoj kev npaj. Cia saib seb peb puas tuaj yeem siv nws.

Kauj Ruam 2: Kev Sib Txuas Lus Subroutines

Thawj qhov peb yuav tsum tau ua yog txuas ob tus tswj. Yog li nqa xov hlau los ntawm PD6 ntawm ib qho thiab txuas nws mus rau PD7 ntawm lwm qhov, thiab hloov pauv. Tom qab ntawd pib lawv los ntawm kev teeb tsa PD7 rau OUTPUT ntawm ob qho thiab PD6 rau INPUT ntawm ob qho tib si. Thaum kawg teeb lawv txhua tus rau 0V. Tshwj xeeb, ntxiv cov hauv qab no rau Init, lossis Rov Pib Tshooj ntawm cov cai ntawm txhua lub microcontroller:

SIB DDRD, 7; PD7 teeb tsa rau cov zis

cbi PortD, 7; PD7 pib 0V cbi DDRD, 6; PD6 teeb tsa rau cov tswv yim cbi PortD, 6; PD6 pib 0V clr tag nrho; tag nrho ntawm tsuav pib 0

Tam sim no cia teeb tsa kev sib txuas lus subroutine ntawm dice-roller chip. Ua ntej piav qhia qhov sib txawv tshiab nyob rau sab saum toj hu ua "tag nrho" uas yuav khaws tag nrho cov naj npawb dov ntawm ob khub ntawm tsuav thiab pib nws mus rau xoom.

Tom qab ntawv sau subroutine los tham nrog tus kws tshuaj xyuas:

sib tham:

cbi PortD, 7 sbi PortD, 7; Xa cov teeb liab npaj tos: sbic PinD, 6; nyeem PinD thiab hla yog 0V rjmp tos ncua 8; ncua kom synchronize (pom qhov kev sim no) xa: dec tag nrho ncua 2; ncua rau txhua tus tuag suav cpi tag nrho, 0; 0 ntawm no txhais tau tias "tag nrho" tus lej qeeb tau raug xa breq PC+2 rjmp xa cbi PortD, 7; PD7 rau 0V clr tag nrho; rov pib tsuav tag nrho rau 0 ret

Hauv tus kws tshuaj ntsuam peb ntxiv rcall los ntawm cov txheej txheem tseem ceeb rau kev sib txuas lus subroutine:

clr tsom xam; npaj rau tus lej tshiab

sbic PinD, 6; kos PD6 rau 5V teeb liab rcall sib tham; yog 5V mus rau kev sib txuas lus mov analyzer, tag nrho; tso tawm rau tus kws tshuaj ntsuam tso saib rcall tsom xam

thiab tom qab ntawd sau qhov kev sib tham subroutine raws li hauv qab no:

sib tham:

clr tag nrho; rov pib dua tag nrho rau 0 ncua 10; ncua kom tshem tawm bounces sbi PortD, 7; teeb PB7 rau 5V kom teeb liab tau txais: ncua 2; tos rau tus lej tom ntej inc tag nrho; nce ntxiv sbic PinD, 6; yog PD6 rov qab mus rau 0V peb tau ua tiav rjmp tau txais; txwv tsis pub rov rov qab rau cov ntaub ntawv ntau ntxiv cbi PortD, 7; rov pib dua PD7 thaum ua tiav ret

Koj mus! Tam sim no txhua lub microcontroller tau teeb tsa los sib tham qhov tshwm sim ntawm cov dice yob thiab tom qab ntawd tso tawm ntawm lub tshuab tshuaj ntsuam.

Peb yuav siv txoj hauv kev muaj txiaj ntsig zoo dua ntawm kev sib txuas lus tom qab thaum peb xav hloov cov ntsiab lus ntawm kev tso npe ntawm cov tswj hwm tsis yog tsuas yog dice yob. Hauv qhov xwm txheej ntawd, peb tseem yuav siv tsuas yog ob lub xov hlau txuas rau lawv tab sis peb yuav siv 1, 1 txhais tau tias "pib kis"; 0, 1 txhais tau tias "1"; 1,0 los txhais tias "0"; thiab thaum kawg 0, 0 txhais tau tias "kawg kis".

Qoj 1: Saib seb koj puas tuaj yeem siv txoj hauv kev zoo dua thiab siv nws los hloov cov dice yob ua tus lej 8-ntsis binary.

Kuv yuav muab daim vis dis aus uas qhia kuv li kev ua haujlwm.

Kauj Ruam 3: Xaus

Xaus
Xaus

Kuv tau txuas qhov chaws tiav rau koj siv. Nws tsis yog huv thiab huv si li kuv xav tau, tab sis kuv yuav ntxuav nws li peb nthuav nws hauv cov lus qhia yav tom ntej.

Txij tam sim no kuv yuav cia li xa cov ntawv uas muaj cov lej ntau dua li ntaus nws tawm ntawm no. Peb tsuas yog yuav sau cov ntu uas peb txaus siab los tham txog.

Nov yog cov lus qhia luv luv uas peb tau los nrog txoj hauv kev yooj yim ntawm kev qhia peb tus kws tshuaj xyuas microcontroller qhov tshwm sim ntawm peb cov dice yob los ntawm peb cov dice-roller microcontroller thaum tsuas yog siv ob lub chaw nres nkoj.

Kev tawm dag zog 2: Hloov chaw ntawm kev siv lub teeb liab npaj los qhia thaum lub dice cov menyuam tau npaj txhij yuav xa tawm thiab lwm qhov thaum tus kws tshuaj ntsuas npaj tau txais, siv "cuam tshuam sab nraud" hu ua "Pin Change Interrupt". Cov pins ntawm atmega328p tuaj yeem siv txoj hauv kev no uas yog vim li cas lawv thiaj muaj PCINT0 hla PCINT23 ib sab ntawm lawv hauv daim duab pinout. Koj tuaj yeem siv qhov no los cuam tshuam ib txoj hauv kev zoo ib yam li peb tau ua nrog lub sij hawm dhau los cuam tshuam. Hauv qhov no qhov cuam tshuam "tus tuav" yuav yog subroutine uas sib txuas lus nrog cov menyuam tsuav. Txoj hauv kev no koj tsis tas yuav hu rau kev sib txuas lus subroutine los ntawm lub ntsiab: nws yuav mus rau txhua lub sijhawm muaj kev cuam tshuam los ntawm kev hloov pauv ntawm lub xeev ntawm tus pin ntawd.

Kev ua 3: Ib txoj hauv kev zoo dua ntawm kev sib txuas lus thiab xa cov ntaub ntawv ntawm ib lub microcontroller mus rau kev sau ntawm lwm tus yog siv ua hauv 2-xaim xov tooj sib cuam tshuam ntawm lub microcontroller nws tus kheej. Sim nyeem ntu 22 ntawm cov ntawv teev npe thiab saib yog tias koj tuaj yeem txiav txim siab yuav siv nws li cas.

Peb yuav siv cov txheej txheem sofisticated no yav tom ntej thaum peb ntxiv cov tswj hwm ntxiv.

Qhov tseeb tias txhua yam peb tau ua nrog peb tus kws tshuaj ntsuam yog siv tag nrho cov dice yob thiab tom qab ntawd luam tawm hauv binary siv LEDs tsis yog qhov tseem ceeb. Qhov tseeb yog tam sim no peb tus kws tshuaj ntsuam "paub" cov dice yob yog dab tsi thiab tuaj yeem siv nws raws li.

Hauv qhov kev qhia tom ntej no peb yuav hloov pauv lub hom phiaj ntawm peb "tus kws tshuaj ntsuam", qhia txog ob peb lub ntsiab lus ntxiv hauv Circuit Court, thiab siv cov dice yob hauv txoj hauv kev nthuav dua.

Txog rau lwm lub sijhawm…

Pom zoo: