?? a4_5_1.asm
字號:
;///////////////////////////////////////////
;本程序源代碼由單片機培訓網提供.
;單片機培訓網,讓更多人學習單片機更容易.
;第一網址----www.mcuedu.com
;第二網址----http://51_train.nease.net
;創辦人------劉永忠
;熱線電話----(0755)27529998
;email-------aa815@163.com
;主程序將led端口的8個LED作左移右移,中斷時使8個LED閃爍5次
;程序難易等級--------稍難
;///////////////////////////////////////////
led_port equ p0 ;便于移植到不同的硬件上
org 0000h ;起始地址
jmp main ;跳到主程序main
org 0003h ;int0中斷子程序起始地址
jmp ext0 ;中斷子程序
org 0030h
main:
mov ie,#81h ;int0中斷使能
mov ip,#01h ;int0中斷優先
mov tcon,#00h ;int0為電平觸發
mov sp,#70h ;設定堆棧指針
loop:
mov a,#0ffh ;左移初值
clr c
mov r2,#08h ;設定左移八次
loop1:
rlc a ;含C左移一位
mov led_port,a ;輸出至led端口
call delay ;延時0.2秒
djnz r2,loop1 ;左移八次?
mov r2,#07h ;設定右移七次
loop2:
rrc a ;含C右移一位
mov led_port,a ;輸出至led端口
call delay ;延時0.2秒
djnz r2,loop2 ;右移七次?
jmp loop ;重復
ext0:
push acc ;將累加器的值壓入堆棧保存
push psw ;將PSW的值壓入堆棧保存
setb rs0 ;設定工作寄存器組1
clr rs1 ;
mov a,#00h ;為使LED端口全亮
mov r2,#10 ;閃爍五次(亮滅十次)
loop3:
mov led_port,a ;將A輸出 call delay ;延時0.2秒
cpl a ;將A的值反相
djnz r2,loop3 ;閃爍五次(亮滅十次)?
pop psw ;從堆棧取回PSW的值
pop acc ;從堆棧取回ACC的值
reti ;返回主程序
delay:
mov r5,#20 ;0.2秒
d1:
mov r6,#20 ;10毫秒
d2:
mov r7,#248 ;0.5毫秒
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -