代碼:【自己寫的,初學者水平不高,但是能實現,如果有錯誤或者是可以優化,請評論區留言,不喜勿噴】
//這個是幫同學弄的,但是題目要求用定時器來完成,不然都不用那么麻煩。
//下面有重復的代碼,但是我發現我把它弄成函數就會出問題,菜鳥水平,大佬們看看笑話就好了。
1 #include<reg51.h> 2 unsigned char TAB[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //共陽,低電平亮 3 int i,j,k,K1=0; 4 main() 5 { TMOD=0x01; 6 TH0=(65536-50000)/256; 7 TL0=(65536-50000)/256; 8 TR0=1; 9 while(1) 10 { 11 for(i=0;i<2;i++) 12 { 13 for(j=0;j<7;j++) 14 { 15 P0=TAB[7-j]; 16 while(1){ 17 if(TF0==1){ 18 TF0=0; 19 TH0=(65536-50000)/256; 20 TL0=(65536-50000)/256; 21 K1++; 22 if(K1==4){ 23 K1=0; 24 break; 25 } 26 } 27 } 28 } 29 for(k=0;k<7;k++) 30 { 31 P0=TAB[k]; 32 while(1){ 33 if(TF0==1){ 34 TF0=0; 35 TH0=(65536-50000)/256; 36 TL0=(65536-50000)/256; 37 K1++; 38 if(K1==4){ 39 K1=0; 40 break; 41 } 42 } 43 } 44 } 45 } 46 P0=0XFF; 47 while(1){ 48 if(TF0==1){ 49 TF0=0; 50 TH0=(65536-50000)/256; 51 TL0=(65536-50000)/256; 52 K1++; 53 if(K1==20){ 54 K1=0; 55 break; 56 } 57 } 58 } 59 for(j=0;j<10;j++) 60 { 61 P0=~P0; 62 while(1){ 63 if(TF0==1){ 64 TF0=0; 65 TH0=(65536-50000)/256; 66 TL0=(65536-50000)/256; 67 K1++; 68 if(K1==6){ 69 K1=0; 70 break; 71 } 72 } 73 } 74 } 75 } 76 }
protues仿真: