void Uart(void) interrupt 4 using 2 { } 这个C51函数后面麻烦问一下什么意思

[复制链接]
查看11 | 回复6 | 2021-1-27 07:17:20 | 显示全部楼层 |阅读模式
voidUart(void)interrupt4using2{}这个C51函数后面麻烦问一下什么意思
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
这个是中断函数的格式,void函数名()interrupt中断号using工作组,中断号是指单片机中几个中断源的序号,"using工作组"是指这个中断函数使用单片机内存中4组工作寄存器中的哪一组,C51编译器在编译程序时会自动分配工作组,所以最后这句话通常省略不写
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
引用1楼peterpan_hai的回复:这个是中断函数的格式,void函数名()interrupt中断号using工作组,中断号是指单片机中几个中断源的序号,"using工作组"是指这个中断函数使用单片机内存中4组工作寄存器中的哪一组,C51编译器在编译程序时会自动分配工作组,所以最后这句话通常省略不写
++
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
恩,楼上说的对。。
此外:51单片机通常有5个中断,当中断发生时,程序会跳到相应的中断服务程序去执行。为了区别不同的中断,引入了中断号,单片机的中断号对应的中断类型如下:
中断号中断源中断向量
0------------外部中断0-------------------------0003H
1-----------定时器中断0------------------------000BH
2------------外部中断1-------------------------0013H
3------------定时器中断1-----------------------001BH
4------------串口中断---------------------------0023H
5-----------定时器2---------------------------002BH(at89s52)

回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
给你一个例子参照一下或许你会很快明白
1、返回值函数名interruptn
其中n对应中断源的编号,其值从0开始,以80C51单片机为例,编号从0~4,分别对应外中断0、定时器0中断、外中断1、定时器1中断和串行口中断。
2、在C51中,寄存器组选择取决于特定的编译器指令,即使用usingn指定,其中n的值是0~3,对应使用四组工作寄存器。
例如可以这样来写:
voidtimer0()interrupt1using2
{…}
即表示在该中断程序中使用第2组工作寄存器。

using**不要写,写了易出错,不写绝对不出错.
interrupt**是中断源.具体编号如下:
INT0INTERRUPT0
T01
INT12
T13
UART4
T25
UART16
外部中断27
外部中断38
外部中断49
外部中断510
看门狗定时器11
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
using2可以不要
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
还有一点我补充下中断向量=8*中断号+3
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行