;按鍵控制練習, 按P3.2(INT0), P2顯示值加1 ; 按P3.3(INT1), P2顯示值減1 buffer equ 30H mov buffer,#0 ;設定初值為0 check_p32: jb P3.2,check_p33 ;檢查P3.2是否為1(沒有按),若是跳至檢查P3.3 mov R5,#1 ;延遲 call delay jb p3.2,check_p32 ;判斷是否已變成1, 若P3.2=1表示剛才為彈跳訊號, 跳回去重新檢查 inc buffer ;buffer內的值加1 mov a,buffer ;複製至累加器 cpl a ;反向 mov p2,a ;顯示於P2 wait_p32: jb p3.2,check_p32 ;等按鍵放開(P3.2=1) jmp wait_p32 check_p33: jb P3.3,check_p32 ;檢查P3.2是否為1(沒有按),若是跳至檢查P3.2 mov R5,#1 ;延遲 call delay jb p3.3,check_p33 ;判斷是否已變成1, 若P3.3=1表示剛才為彈跳訊號, 跳回去重新檢查 dec buffer ;buffer內的值減1 mov a,buffer ;複製至累加器 cpl a ;反向 mov p2,a ;顯示於P2 wait_p33: jb p3.3,check_p33 ;等按鍵放開(P3.3=1) jmp wait_p33 delay: mov r6,#100 del: mov r7,#200 djnz r7,$ djnz r6,del djnz r5,delay ret end