怎么建立微信大转盘的网站服务,网站运营 流程,app模板大全,怎么做诚信通网站的店招Keil C51中有一些关键字#xff0c;一定要牢记#xff0c;它和其它CPU不一样#xff0c;所以需要记住interrupt和using关键字#xff0c;以及它后面所跟的数字在程序中的意义。
单独提出来讲#xff0c;我也和大家一样记不住#xff0c;那些数字的意义太少#xff0c;不…Keil C51中有一些关键字一定要牢记它和其它CPU不一样所以需要记住interrupt和using关键字以及它后面所跟的数字在程序中的意义。
单独提出来讲我也和大家一样记不住那些数字的意义太少不知道编译器为什么不用宏去定义估计也只有51单片机才会这么操蛋。
1、interrupt关键字
interrupt 0指定当前函数为外部中断0
interrupt 1指定当前函数为定时器0中断
interrupt 2指定当前函数为外部中断1
interrupt 3指定当前函数为定时器1中断
interrupt 4指定当前函数为串口中断 2、using关键字
using 0表示当前函数的R0~R7使用第0组寄存器
using 1表示当前函数的R0~R7使用第1组寄存器
using 2 表示当前函数的R0~R7使用第2组寄存器
using 3 表示当前函数的R0~R7使用第3组寄存器 3、R0~R7的实际地址
51单片机内有4个工作组寄存器每个工作组的寄存器是R0--R7。
R0-R7的实际地址是由特殊功能寄存器PSW里的RS1、RS0位决定的。
using 0表示设置 RS10RS0 0即R0~R7使用第0组寄存器。
R0~R7的实际地址是00H~07H。R000H....R707H;
using 1表示设置 RS10RS0 1即R0~R7使用第1组寄存器。
R0~R7的实际地址是00H~07H。R008H....R70FH;
using 2表示设置 RS11RS0 0即R0~R7使用第2组寄存器。
R0~R7实际地址是08H~0FH。R010H....R717H;
using 3表示设置 RS11RS0 1即R0~R7使用第3组寄存器
R0~R7的实际地址是00H~07H。R018H....R71FH; 4、中断服务函数定义
void int0_interrupt_service_function(void) interrupt 0
{//外部中断0
} void timer0_interrupt_program(void) interrupt 1 using 1
{//Timer0中断
}
void TL0_interrupt_program(void) interrupt 1 using 1
{//Timer0中断
} void int1_interrupt_service_function(void) interrupt 2
{//外部中断1
} void timer1_interrupt_program(void) interrupt 3 using 1
{//Timer1中断
}
void TH0_interrupt_program(void) interrupt 3 using 1
{//Timer1中断
} void isr_UART(void) interrupt 4 using 1
{//串口中断
} void timer2_interrupt_program(void) interrupt 5 using 1
{//Timer2中断
} 5、举例
//函数功能: T2定时器的捕获中断服务程序;
void T2_capture_Interrupt_Program (void) interrupt 5 using 0
{ if(EXF2) //处理T2EX脚(P1.1)的下降沿中断;
{
/处理程序/ EXF20;
} if(TF2) //处理T2溢出中断;
{
/处理程序/ TF20;
}
}