找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1117|回复: 4
收起左侧

新人求教单片机中断程序如何编写?

[复制链接]
ID:719641 发表于 2020-4-2 16:25 | 显示全部楼层 |阅读模式
51单片机如果在main函数里正在执行一个死循环如while(1),这时在中断函数里有个条件成立,然后main函数跳出while(1);
回复

使用道具 举报

ID:688129 发表于 2020-4-2 18:44 | 显示全部楼层
就是一个普通的中断就行了,定时器、外部等中断
回复

使用道具 举报

ID:351097 发表于 2020-4-2 22:00 | 显示全部楼层
如果在keil 51平台,中断程序书写如下:
void 函数名 interrupt x
{
    /*中断处理程序*/
}
其中,函数名是中断处理函数名interrupt x为中断序号,比如外部中断0用interrupt 0。
如果在IAR for 8051平台,中断程序书写如下:
#pragma vector=VECT(n, addr )
__interrupt void 函数名(void)
{
    /*中断处理程序*/
}
其中n为中断序号,addr为中断入口地址。比如定时器0中断,则为VECT(1, 0x0b)。
回复

使用道具 举报

ID:719641 发表于 2020-4-3 08:37 | 显示全部楼层
wang_hu_hi 发表于 2020-4-2 18:44
就是一个普通的中断就行了,定时器、外部等中断

具体实现想法是这样的,我用定时器中断去做按键扫描,主函数里有两个子函数,当按键一按下时执行子函数一,按下按键二执行子函数二,这比较好实现。如果函数一里有一个时间很长的延时(1小时),这样如果按键二按下,它应该是继续执行延时不能立即执行子函数二吧。
回复

使用道具 举报

ID:706084 发表于 2020-4-4 11:40 | 显示全部楼层
发生中断,会暂停现在的主程序,去执行中断,中断执行完成,回到主程序继续执行主程序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表