微控制器(組合語言),邏輯上有問題,請高手指教

2021-05-22 06:22:48 字數 3432 閱讀 7137

org 0000h

ljmp start

org 0003h

ljmp doorcheck

org  4000h

start:mov 40h,#00h

mov 41h,#00h

mov 42h,#00h

mov 43h,#00h

mov 44h,#00h

mov 45h,#00h

mov 46h,#00h

mov 47h,#00h

mov 48h,#00h

mov 49h,#00h

mov 50h,#00h

main:mov p3,#0ffh

l0:mov a,p3

anl a,#0ffh

mov 40h,a

cjne a,#0ffh,button

sjmp l0

button:mov dptr,#tab1

mov a,#00h

l1:push acc

movc a,@a+dptr

cjne a,40h,l2

pop acc

mov dptr,#tab2

jmp @a+dptr

l2:pop acc

inc a

cjne a,#05h,l1

sjmp l0

pr1:mov r0,44h

cjne r0,#03h,l3

mov 44h,#00h

sjmp l0

l3:inc 44h

sjmp l0

pr2:mov r0,45h

cjne r0,#0ah,l4

mov 45h,#00h

sjmp l0

l4:inc 45h

sjmp l0

pr3:mov r0,46h

acall show

cjne r0,#3ch,l5

mov 46h,#00h

sjmp l0

l5:inc 46h

sjmp l0

pr4:mov r0,46h

mov r1,47h

cjne r1,#3ch,l6

cjne r0,#3ch,l7

mov 47h,#00h

mov 46h,#00h

sjmp l0

l6:inc 47h

acall show

sjmp l0

l7:inc 46h

acall show

sjmp l0

pr0:jb p3.2,l8

setb p2.2

sjmp pr0

l8:setb it0

setb ex0

setb ea

mov p1,#0ffh

mov a,44h

mov dptr,#tab3

movc a,@a+dptr

mov p1,a

mov a,45h

mov b,#05h

mul ab

mov 48h,a

push 46h

push 47h

l9:mov 49h,#2dh

clr p2.0

l10:mov 50h,#0ah

l11:mov tmod,#01h

mov th1,#3ch

mov tl1,#0b0h

setb tr0

l12:jbc tf1,l13

sjmp l12

l13:djnz 50h,l11

mov r0,46h

mov r1,47h

cjne r1,#00h,l14

cjne r0,#00h,l15

pop 47h

pop 46h

ljmp ed

l15:mov 47h,#2ch

dec 46h

l14:dec 46h

acall show

djnz 48h,l10

setb p2.0

djnz 49h,l10

setb p2.2

ajmp l0

show:push 46h

push 47h

orl p2,#0fh

mov dptr,#tab4

mov a,46h

add a,#00h

da a

mov r1,a

anl a,#0f0h

cpl a

mov r2,#08h

lm1:movc a,@a+dptr

mov p0,a

clr p2.7

acall dlay

djnz r2,lm1

mov a,r1

anl a,#0fh

mov r2,#08h

lm2:movc a,@a+dptr

mov p0,a

clr p2.6

acall dlay

djnz r2,lm2

mov a,47h

add a,#00h

da a

mov r1,a

anl a,#0f0h

cpl a

lm3:mov r2,#08h

movc a,@a+dptr

mov p0,a

clr p2.5

acall dlay

djnz r2,lm3

mov a,r1

anl a,#0fh

lm4:mov r2,#08h

movc a,@a+dptr

mov p0,a

clr p2.4

acall dlay

djnz r2,lm4

pop 47h

pop 46h

ret 

dlay:mov r6,#0ffh

dl1:mov r7,#0ffh

dl2:nop

nopdjnz r7,dl2

djnz r6,dl1

retdoorcheck:jb p2.0,re

setb p2.0

setb p2.1

push 46h

push 47h

jnb p3.2,$

pop 47h

pop 46h

re:reti

ed:clr p2.2

setb p2.0

tab1:db 0f0h,0e1h,0d1h,0b1h,71h

tab2:ajmp pr0

ajmp pr1

ajmp pr2

ajmp pr3

ajmp pr4

tab3:db 0feh,0fdh,0fbh

tab4:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

end

組合語言 微控制器基礎

以老師上課講的例題為例,進行程式分析。前兩步為跳過中斷區,一般程式都直接加上 org 0000h ljmp main org 1000h 定義源位址為1000h main mov a,30h 將 立即數30h 賦給 累加器a movc a,a pc 將 累加器a 下一條命令後程式計數器的值 對應位址...

微控制器彙編程式設計300例 微控制器基礎組合語言程式設計例項

微控制器組合語言程式設計 1 編寫程式,用位處理指令實現 p1.4 p1.0 p1.1 p1.2 p1.3 的邏輯功能。mov c,p1.1 anl c,p1.2 orl c,p1.0 orl c,p1.3 mov p1.3,c 2 編寫程式,若累加器a的內容分別滿足下列條件,則程式轉到lable儲...

tiri微控制器 51微控制器 微控制器組合語言學習

mcs 51微控制器的特殊功能暫存器 符號位址 功能介紹 bf0h b暫存器 acce0h 累加器psw d0h程式狀態字 th2 cdh定時器 計數器2 高8位 tl2 cch定時器 計數器2 低8位 rcap2h cbh外部輸入 p1.1 計數器 自動再裝入模式時初值暫存器高八位 rcap2l ...