不是特別需求,中斷函數里不要寫過多的語句,特別不能有長延時。中斷函數里只留標識即可,其它任務放在主函數處理。
- #include <reg51.h>
- #include <intrins.h>
- #define uchar unsigned char
- uchar L[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
- bit flag=1;
- void delay()
- {
- int i,j;
- for(i=0;i<183;i++)
- for(j=0;j<500;j++);
- }
- void main()
- {
- uchar i,j=0XFD,a,b=0XFE,k;
- IT1 = 1;
- EX1 = 1;
- EA = 1;
- while(1)
- {
- if(flag)
- {
- for(i=0;i<8;i++)
- {
- P1=L[i];
- delay();
- }
- }
- else
- {
- P1=0xff;
- for(k=0;k<5;k++)
- {
- for(i=0;i<4;i++)
- {
- P1=_crol_(j,i*2);
- delay();
- }
- P1=0xff;
- for(a=0;a<4;a++)
- {
- P1=_crol_(b,a*2);
- delay();
- }
- }
- }
- }
- }
- void int1 () interrupt 2
- {
- flag=~flag;
- }
復制代碼 |