51单片机c语言的中断程序的名字怎么写?是void Time1(void) interrupt 3 using 0吗?

51单片机c语言的中断程序的名字怎么写?是void Time1(void) interrupt 3 using 0吗?,第1张

定时器设置如下

TMOD = 0x10 //方式1

TH1 = (65536-19456)/256 //0.05ms

TL1 = (65536-19456)%256

EA = 1

ET1 = 1

我在mian的上面写的中断void Time1(void) interrupt 3 using 0

为什么不会自动进入中断?

是写错哪里了?

呵呵呵,一个简单的问题啊,你定时器1配置好了,打开了T1中断 ET1 = 1,开启总中断EA = 1

但是你还没有启动定时器TR1 = 1就可以了,这么简单的问题!

000BH 0030H是这两个中断的入口地址,也就是发生中断后将要跳到这里来.

T0INT,T1INT都是中断程序的名字,也相当于地址,我们要跳到那个地方去执行中断子程序!!!!

在程序中,一般只有中断才会用到保护和恢复现场,我到现在还没有看见其它情况用它们的!!!

你的第3个问题就要看你用什么IC了,有的IC自带的有那些功能,你就不需要了,但是51是需要的.至于子程序那就不用中断首地址了,因为你掉用的子程序是固定的,不象中断,不知道发生在什么地方,不好把中断子程序放置,才要定义中断入口!!!!

在汇编语言里

中断程序首先有入口地址(比如ORG 0003H) 之后是中断处理语句 最后有一个返回指令RETI

例如:

ORG 000BH

LJMP TION

MOV R4,#0

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H

SETB EA

SETB ET0

WAIT: SJMP WAIT

TION: INC R4

CJNE R4,#10,timer

timer:MOV TH0,#3CH

MOV TL0,#0B0H

RETI

如果你说的是C51

中断程序结构如下:

void 中断程序名(void) interrupt n using m //确定中断源和中断程序所用寄存器

{

// 中断处理部分

}

例如:

void Time0_int(void) interrupt 1 using 1

{

uchar led,i

led=0xfe

P1=led

delay(500)

for(i=0i<8i++)

{

led=(led<<1)|0x01

P1=led

delay(500)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8048528.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存