单片机c语言using,C语言在8051单片机上的扩展(interrupt、using关键字的用法)

本文介绍了8051单片机中C语言的中断处理,包括`interrupt`和`using`关键字的使用。`interrupt`用于声明中断服务程序,`using`指定中断服务程序使用的寄存器银行,以减少中断处理时间。使用`using`时需要注意,相同优先级的中断可以共享寄存器银行,但不同中断之间不能调用使用不同寄存器组的函数,否则可能导致错误。此外,中断服务程序不会保存R0-R7寄存器的值。
摘要由CSDN通过智能技术生成

C语言在8051单片机上的扩展(interrupt、using关键字的用法)

直接访问寄存器和端口

定义

sfr   P0 0x80

sfr    P1 0x81

sfr    ADCON; 0xDE

sbit EA    0x9F

操作

ADCON = 0x08 ;

P1

= 0xFF      ;

io_status = P0 ;

EA

= 1        ;

在使用了interrupt 1关键字之后,会自动生成中断向量

在ISR中不能与其他"后台循环代码"(the

background loop code)共享局部变量

因为连接器会复用在RAM中这些变量的位置,所以它们会有不同的意义,这取决于当前使用的不同的函数

复用变量对RAM有限的51来将很重要。所以,这些函数希望按照一定的顺序执行而不被中断。

timer0_int() interrupt 1 using 2

{

unsigned char temp1 ;

unsigned char temp2 ;

executable C statements ;

}

"interrupt"声明表示向量生成在(8*n+3),这里,n就是interrupt参数后的那个数字这里,在08H的代码区域生成LJMP timer0_int这样一条指令

"using"

tells the compiler to switch register banks on entry to an interrupt routine.

This "context" switch is the fastest way of providing a fresh

registerbank for an interrupt routine's local data and is to be preferred to

stacking registers for very time-critical routines. Note that interrupts of the

same priority can share a register bank, since there is no risk that they will

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值