返回主页 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 论坛

;开机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:;主程序循环点亮
movp1,#00h;全亮
lcalldelay;延时一段时间
mova,#0feh;每次只亮一个灯。
loop:movp1,a;输出到p1
lcalldelay;延时
rla;循环左移。
ajmploop; 跳转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

hex格式文件下载(点右键,目标另存为hex即可直接烧写)