;开机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即可直接烧写)
|