#include <AT89X52.h> unsigned char n,j,jf,jp,key; unsigned char Pn; sbit K=P1^0; void contr(unsigned char n,unsigned char level) { if(level>Pn) P0&=~(0x01<<n); else P0|=0x01<<n; } void main(void) { TMOD = 0x01; TH0 = 0xfd; TL0 = 0x8f; IE=0x82; TR0 = 1; while(1); } void Timer0Interrupt(void) interrupt 1 //1ms { unsigned char i,t; TH0 = 0xfd; TL0 = 0x8f; if(!K) { if(++key==20) { if(++n>=6)n=0; j=0;Pn=0;jf=0;jp=0;P0=0xff; } if(key>25)key=25; } else key=0; if(++Pn>=32)Pn=0; switch(n) { case 0:for(i=0;i<8;i++) contr(i,(i<<2)+1); break; case 1:if(!Pn){ if(!jf) {if(++j>128)jf=1;} else {if(!j--){jf=0;j=0;}} } for(i=0;i<8;i++) contr(i,j>>2); break; case 2:if(!Pn){ if(!jf) {if(++j>64){if(++jp>7){jf=1;jp=7;}else {j=0;}}} else {if(--j==0){if(!jp--){jf=0;jp=0;} else {j=64;}}} } contr(jp,j>>1); if(!jf) { for(i=0;i<jp;i++) contr(i,32); } break; case 3:if(!Pn){ if(!jf) {if(++j>128)jf=1;} else {if(j--<=8){jf=0;}} } for(i=0;i<4;i++) { t=(i<<2)+(((4-i)*(j>>2))>>2); contr(i,t); contr(7-i,32-t); } break; case 4:if(!Pn){if(++j>2){j=0;if(++jf>=8)jf=0;}} jp=jf; for(i=0;i<8;i++) { contr(jp%8,(i<<2)+1); jp++; } break; case 5:if(!Pn){ if(!jf) {if(++j>=31){jf=1;}} else {if(!--j){jf=0;}} } t=j%8; for(i=0;i<=t;i++) { if(!jp) contr(t,j-t+i); else contr(7-t,j-t+i); } if(!j%8)jp=!jp; break; default:break; } }
#include <AT89X52.h>
|
歡迎光臨 (http://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |