概述
C语言在8051单片机上的扩展(KEIL中interrupt、using关键字的用法)
C语言在8051单片机上的扩展(KEIL中interrupt、using关键字的用法)
直接访问寄存器和端口
定义
sfr P0 0x80
sfr P1 0x81
sfr ADCON; 0xDE
sbit EA 0x9F
操作
ADCON = 0x08 ; /* Write data to register */
P1 = 0xFF ; /* Write data to Port */
io_status = P0 ; /* Read data from Port */
EA = 1 ; /* Set a bit (enable all interrupts) */
在使用了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 interrupt each other.
最后
以上就是微笑舞蹈为你收集整理的keil 扩展c语言语法,C语言在8051单片机上的扩展(KEIL中interrupt、using关键字的用法)...的全部内容,希望文章能够帮你解决keil 扩展c语言语法,C语言在8051单片机上的扩展(KEIL中interrupt、using关键字的用法)...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复