現在問題是,上電能顯示654321,可當按下P1.3口接的按鍵時,6 個數碼管都不會亮了,程序哪里出了問題
程序目的:上電時數碼管顯示654321,每次按下P1.3口按鍵時
對31H中的數據加一,加到 10時,31H中清0并對下一個地址
(32H)中的數據加1,依次類推
*************************************************************
org 0000h jmp start org 0003h reti org 000bh reti org 0013h jmp wzd1 org 001bh reti org 0023h reti wzd1: push psw ;外中斷入口 push acc clr ea clr ex1 jnb p1.3,key3 ;P1.3為0時轉KEY3 wzdfh:pop acc ;外中斷返回 pop psw setb ea setb ex1 reti key3:call delay10ms jb p1.3,wzdfh l1: jnb p1.3,$ inc 31h ;P1.3松開時31H加1 mov a,#10 cjne a,31h,wzdfh ;31H中不等于10中斷返回 clr a mov 31h,a ;31H中的數據清0并對下一地址中的數據加一 inc 32h mov a,#10 cjne a,32h,wzdfh clr a mov 32h,a inc 33h mov a,#10 cjne a,33h,wzdfh clr a mov 33h,a inc 34h mov a,#10 cjne a,34h,wzdfh clr a mov 34h,a inc 35h mov a,#10 cjne a,35h,wzdfh clr a mov 35h,a inc 36h mov a,#10 cjne a,36h,wzdfh clr a mov 36h,a jmp wzdfh start:mov 31h,#1 mov 32h,#2 mov 33h,#3 mov 34h,#4 mov 35h,#5 mov 36h,#6 clr p1.5 setb ea setb ex1 start1:call display jmp start1 display:mov r1,#31h mov r2,#00000001 play: mov p0,#0ffh mov a,r2 mov p2,a mov a,@r1 mov dptr,#tab movc a,@a+dptr mov p0,a call delay1ms inc r1 mov a,p2 jb acc.5,endout rl a mov r2,a mov p2,#0h jmp play endout:mov p0,#0ffh mov p2,#0 ret delay1ms:mov r3,#2 d1: mov r4,#250 d2: djnz r4,$ djnz r3,d1 ret delay10ms: call play ;10ms子程序,調用一次顯示子程序約6ms,調兩次約12ms call play ret tab:db 48h,0ebh,52h,62h,0e1h,64h,44h,0eah,40h,60h end
哎~~
我也是開始學匯編,現在開始學C了~~~
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |