“Микропроцессорын техник лаб” №3 /КТХС-324/

Дараагийн хийх ёстой лабораторийн хичээлийг тавьлаа. Dropbox дээр group үүсгээд өөрсдийн ажиллуулсан симулациудаа хийхийг хүсье.

Диод асааж унтраах программ

ORG 0H        ;Программыг программын санах ойн хамгийн эхнээс
;эхлүүлнэ. Ө.х RESET хийгдмэгц эндээс ажиллаж эхлэнэ.
ON_RST:
CPL P1.7        ;Р1.7-г үгүйсгэнэ.Ө.х диод асаж байсан бол унтраана.
;Унтарсан байсан бол асаана.
ACALL DELAYHS    ;Хагас секунд орчим саатуулдаг дэд программыг дуудна.
;Хэрэв ингэж саатуулахгүй бол 11.0592MHz давтамжаар
;ажиллаж байгаа uC энэ диодыг нэг сек-д 153600 удаа
;асааж унтраах учир бид анивчиж байгааг нь харж
;чадахгүй.Дэд программ ажиллаж дуусаад буцаж ирмэгц
AJMP ON_RST        ;ON_RST хаяг руу үсэрч үйлдлийг давтана.

DELAYHS:            ;Хагас сек орчим саатуулдаг программын эхлэл.
MOV R6,#00H        ;R6-д 00Н тоог хийнэ.
MOV R7,#02H        ;R7-д 02Н тоог хийнэ.
LOOPB:ACALL DELAYMS    ;1mS орчим хугацаагаар саатуулдаг дэд программыг
;дуудна.256х2 буюу 512 удаа дуудна.
DJNZ R6,LOOPB    ;R6-ийн утгыг нэгээр хорогдуулаад 00Н болоогүй бол
;LOOPB хаяг руу үсэрч давтана.00Н болбол
DJNZ R7,LOOPB    ;R7-ийн утгыг нэгээр хорогдуулаад 00Н болоогүй бол
;LOOPB хаяг руу үсэрч давтана.00Н болбол
RET            ;энэ дэд программыг дуудсан цэг рүү буцна.
;Аливаа дэд программ заавал RET командаар дуусна.
DELAYMS:            ;1mS орчим саатуулдаг программ
MOV R5,#00H        ;R6-д 00Н тоог хийнэ.
LOOPA:NOP            ;Ямар ч үйлдэл хийлгүйгээр 1 машин цикл өнгөрөөнө.
DJNZ R5,LOOPA    ;R5-ийн утгыг нэгээр хорогдуулаад 00Н болоогүй бол
;LOOPA хаяг руу үсэрч давтана.00Н болбол
RET            ;энэ дэд программыг дуудсан цэг рүү буцна.
END            ;Аливаа программ заавал END-командаар дуусах ёстой.

00Н утгатай байсан регистрийн утгыг нэгээр хорогдуулбал доторхи утга нь FFH болно. Энэ нь тэгээс ялгаатай утга учир цикл давтагдана. Нэг нэгээр хорогдуулсаар энэ давталт 256 удаа давтагдах болно.

Гэрэл гүйлгэх ба нүх гүйлгэх програм.

Р1-д холбогдсон найман диодыг өөр янз бүрийн эффекттэйгээр асааж унтрааж болно. Одоо диодууд нэг нэгээр ээлжлэн асаж гүйдэг гэрэл хийе.

;Гүйдэг гэрлийн программ

ORG 0H
ON_RST:
MOV A,#0FEH        ;ACC-т FEH буюу 11111110B (хоёртын) тоог хийнэ.
LOOP:
MOV P1,A        ;АСС-г Р1-ээр гаргавал Р1.0 логик “0” болж D0 асна.
RL A            ;АСС-г зүүн тийш нэг эргүүлбэл утга нь 11111101B болж
;логик “0” нь зүүн тийш нэг орон шилжинэ. 7-р бит нь
;тойроод 0-р бит рүү орж ирэх учир P1.0 нь “1” болно.
;Дараагийн удаад дахин нэг орон шилжих болно.
ACALL DELAYHS    ;Өмнөх дасгалд хэрэглэсэн дэд программыг хэрэглэнэ.
AJMP LOOP        ;Эргүүлсэн АСС-ийн утгыг Р1-ээр гаргахын тулд LOOP
;хаяг руу үсэрч давтана.

Хариу үлдээх

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Өөрчлөх )

Twitter picture

You are commenting using your Twitter account. Log Out / Өөрчлөх )

Facebook photo

You are commenting using your Facebook account. Log Out / Өөрчлөх )

Google+ photo

You are commenting using your Google+ account. Log Out / Өөрчлөх )

Connecting to %s