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

fengxiao100100 2011-04-26 07:47:46
void Uart(void) interrupt 4 using 2 { } 这个C51函数后面麻烦问一下什么意思
...全文
3007 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjmp 2012-08-11
  • 打赏
  • 举报
回复
using 2 可以不要
gocpplua 2012-08-11
  • 打赏
  • 举报
回复
还有一点我补充下 中断向量=8*中断号+3
longteng 2012-04-23
  • 打赏
  • 举报
回复
给你一个例子参照一下或许你会很快明白

1、返回值 函数名 interrupt n

其中n 对应中断源的编号,其值从0 开始,以80C51 单片机为例,编号从0~4,分别对应外中断0、定时器0 中断、外中断1、定时器1 中断和串行口中断。

2、在C51 中,寄存器组选择取决于特定的编译器指令,即使用using n 指定,其中n 的值是0~3,对应使用四组工作寄存器。
例如可以这样来写:
void timer0() interrupt 1 using 2
{…}
即表示在该中断程序中使用第2 组工作寄存器。


using ** 不要写,写了易出错,不写绝对不出错.
interrupt**是中断源.具体编号如下:
INT0 INTERRUPT 0
T0 1
INT1 2
T1 3
UART 4
T2 5
UART1 6
外部中断2 7
外部中断3 8
外部中断4 9
外部中断5 10
看门狗定时器 11
woshi_ziyu 2011-04-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 peterpan_hai 的回复:]

这个是中断函数的格式,void 函数名() interrupt 中断号 using 工作组,中断号是指单片机中几个中断源的序号,"using 工作组"是指这个中断函数使用单片机内存中4组工作寄存器中的哪一组,C51编译器在编译程序时会自动分配工作组,所以最后这句话通常省略不写
[/Quote]
++
rayforeverster 2011-04-28
  • 打赏
  • 举报
回复
恩,楼上说的对。。
此外:51单片机通常有5个中断,当中断发生时,程序会跳到相应的中断服务程序去执行。为了区别不同的中断,引入了中断号,单片机的中断号对应的中断类型如下:
中断号 中断源 中断向量

0------------外部中断0-------------------------0003H
1-----------定时器中断0------------------------000BH
2------------外部中断1-------------------------0013H
3------------定时器中断1-----------------------001BH
4------------串口中断 ---------------------------0023H
5-----------定时器2--------------------------- 002BH (at89s52)
PeterPan 2011-04-26
  • 打赏
  • 举报
回复
这个是中断函数的格式,void 函数名() interrupt 中断号 using 工作组,中断号是指单片机中几个中断源的序号,"using 工作组"是指这个中断函数使用单片机内存中4组工作寄存器中的哪一组,C51编译器在编译程序时会自动分配工作组,所以最后这句话通常省略不写

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧