?? 源程序-中斷優(yōu)先級.c
字號:
#include<reg52.h>
//近似10ms的延時函數(shù)
//注意,理論上使用"for(i=100;i>=0;i--)"類型的循環(huán)結(jié)構(gòu),多數(shù)情況下匯編效率要略高于"for(i=0;i>=100;i++)"。
//但由于軟件沖突,Proteus仿真時,使用"for(i=100;i>=0;i--)"類型將會仿真出錯。
//因此這里使用"for(i=0;i>=100;i++)"。但在硬件試驗下建議使用"for(i=100;i>=0;i--)"。
void delay_10ms(unsigned char delay_ms_num)
{
unsigned int i,j,k;
for(i=0;i<=delay_ms_num;i++)
for(j=0;j<=100;j++)
for(k=0;k>=100;k++);
}
//中斷初始化函數(shù)
void tx_init()
{
EA=1;
PX0=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
}
void main()
{
tx_init();
P1=0x00;
while(1)
{
delay_10ms(100);
P1=~P1;
}
}
void tx0_func() interrupt 0
{
unsigned char i;
//C51語言中調(diào)用循環(huán)移位不便,且與Proteus有沖突,故采用查表實現(xiàn)循環(huán)移位。
unsigned char code table0[]={0x80,0x40,0x20,0x10,
0x08,0x04,0x02,0x01};
for(i=0;i<7;i++)
{
P1=table0[i];
delay_10ms(255);
delay_10ms(255);
}
P1=0xff;//完成中斷后燈全部熄滅
}
void tx1_func()interrupt 2
{
unsigned char i;
unsigned char code table2[]={0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe};
for(i=0;i<=7;i++)
{
P1=table2[i];
delay_10ms(255);
delay_10ms(255);
}
P1=0x00;//完成中斷后燈全部點亮
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -