8個發光二極管間隔200ms由上至下,再由下至上點亮(單個燈點亮200ms,然后下一個燈點亮),此過程重復兩次;然后全部熄滅1s,接着以300ms間隔全部閃爍5次。重復上述全部過程。(要求用定時器定時來完成)



代碼:【自己寫的,初學者水平不高,但是能實現,如果有錯誤或者是可以優化,請評論區留言,不喜勿噴】

//這個是幫同學弄的,但是題目要求用定時器來完成,不然都不用那么麻煩。
//下面有重復的代碼,但是我發現我把它弄成函數就會出問題,菜鳥水平,大佬們看看笑話就好了。
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仿真:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM