?? p1口的8個燈循環亮.asm
字號:
;P1口的8個燈循環亮,按P32后全部閃爍5次后繼續循環亮, 中斷程序的典型應用。
;***************************************************************************
;* (程序轉載請著明出處 ,未聲明可適應本站騰龍/isp開發套件/倚天版開發套件 *
;* E-mail:sxj1974@163.com (51c51 test web) 51測試網,自學單片機的網站 *
;* Create by :石學軍 www.51c51.com www.8951.com 更多例程請登陸網站 *
;***************************************************************************
org 00h ;開始
jmp start
org 03h ;int0中斷入口(p32)
jmp ext0 ;到中斷子程序
start: mov ie,#10000001b ;中斷使能
mov ip,#00000001b ;中斷優先
mov tcon,#0000000b ;中斷為電平觸發
mov sp,#70h ;堆棧指針
loop:mov a,#0ffh ;左移動初值
clr c ; C=0
mov r2,#08 ;左移動8次
loop1:rlc a ;含c左移動一位
mov p1,a ;輸出到P1口
call delay ;延時
djnz r2,loop1 ;左移動8次了嗎?
mov r2,#07 ;設定右移7次
loop2:rrc a
mov p1,a
call delay
djnz r2,loop2 ;右移動7次了嗎?
jmp loop
ext0: push acc ;把a壓入堆棧
push psw ;保存現場
setb rs0 ;設定工作寄存器1
clr rs1
mov a,#00 ;使P1全亮一次
mov r2,#10 ;閃爍5次(亮滅共10次,小心了)
loop3:mov p1,a ;輸出到P1
call delay
cpl a
djnz r2,loop3 ;10次到了么?沒有繼續否則完成
pop psw ;恢復現場
pop acc
reti
delay: mov r5,#20 ;延時200MS
d1:mov r6,#20
d2: mov r7,#250
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -