
思路:
1,程序开始准备
2,标志位为0?是则等待中断,为1则执行下一步
3,亮灯,延时一秒,灭灯,延时一秒
4,跳到第二步步
中断程序:
1,标志位取反
2,reti
还有就是你按键接错了,你那样是查询方法,不是中断。
mov di,2000
delay:
mov si,3000
delay1:
dec si
jnz delay
这段就是main process
改成你要的判断
还有也不要用21h了,换个保留的中断号就行了
我告诉你思路,例子就不举了,很简单:
1、定义一个dword变量xxx用以存储原来的中断向量(所谓中断向量即中断发生时执行的子程序入口地址)
2、编写自己的中断处理过程(yyy proc far),该处理过程内应保存所有可能修改的寄存器,并在返回前恢复原状;一般情况下,如果还需要执行原有中断处理过程,那么调用jmp far xxx链接到原来的中断过程;如果不需要执行原有过程,那么直接以iret返回即可
3、在主程序开始时,先调用int 35h,获取指定中断号的中断向量,将返回的中断向量存储在xxx变量中
4、调用int 25h,将指定的中断号的中断向量指向自己的过程yyy
5、当前程序在退出前,应再次调用int 25h,将被修改掉的中断号的中断向量恢复为xxx变量的值
ORG 0000H
LJMP START
ORG 000BH
LJMP Timer0Interrupt
START:
MOV SP,#60H
LCALL InitTimer0
LOOP:
;add your code here!
LJMP LOOP
InitTimer0:
MOV TMOD,#01H
MOV TH0,#0FCH
MOV TL0,#18H
SETB EA
SETB ET0
SETB TR0
RET
Timer0Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH0,#0FCH
MOV TL0,#18H
CPL P10
POP ACC
POP DPL
POP DPH
RETI
END
这是定时器0的一个1ms中断一次的程序 在P10端口输出1KHz方波
用c语言的话中断程序是单独写在中断服务函数中的,51单片机的中断服务函数的定义:
void functionname(void) interrupt num //functionname是自己定义的函数名字,num对应实际的中断向量号
以上就是关于如图 我想用单片机汇编语言编写中断程序,要求是 开始等不亮,当按钮按下,LED等亮一秒灭一秒,这样循环。全部的内容,包括:如图 我想用单片机汇编语言编写中断程序,要求是 开始等不亮,当按钮按下,LED等亮一秒灭一秒,这样循环。、汇编 中断处理程序怎么写、汇编中断程序具体例子等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)