📄 int8led.asm
字号:
;开机8个灯循环, 按p32后暂停,小喇叭响,松开继续循环,中断的典型应用。
;***************************************************************************
;* sxj1974@163.com (51c51 test web) www.8951.com *
;* Create by :石学军 www.51c51.com 更多例程请登陆网站 *
;***************************************************************************
org 00h;开始
jmp start;跳到主程序
org 03h;int0中断入口(p32)
jmp ext0;到中断子程序
start: mov ie,#10000001b;中断使能
mov ip,#00000001b;中断优先
mov tcon,#0000000b;中断为电平触发
mov sp,#70h;堆栈指针
main:;主程序循环点亮
mov p1,#00h ;全亮
lcall delay ;延时一段时间
mov a,#0feh ;每次只亮一个灯。
loop: mov p1,a ;输出到p1
lcall delay ; 延时
rl a ;循环左移。
ajmp loop ; 跳转main继续循环
ext0: push acc ;(把A的值压入堆栈,保存A)
push psw ;(保存现场)
cpl p3.3 ; 小喇叭响
call deL ;小喇叭响的速率
pop psw ; 恢复现场
pop acc
reti
delay: mov r5,#20;延时子程序1闪烁灯调用
d1:mov r6,#20
d2: mov r7,#250
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
del: ;延时子程序2小喇叭调用
mov r4,#250
djnz r4,$
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -