//晶振11.0592 //燈光在單片機(jī)控制之下完成由亮到暗的逐漸變化,感覺像是在呼吸 //本例在51hei-5型開發(fā)板上實(shí)現(xiàn)了一個(gè)數(shù)碼管和一個(gè)led燈一起實(shí)現(xiàn)呼吸效果 //文件下載:http://www.zg4o1577.cn/f/fxd.rar #include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit D1=P0^7; uchar sr; uchar jf; uchar code table[]={ 0,1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18, 19,20,21,22,23,24,25,26,27, 28,29,30,31,32,33,34,35,36, 37,38,39,40,41,42,43,44,45, 46,47,48,49}; void light(uchar num); void delay(uint z); void main() { //設(shè)置計(jì)數(shù)器 //選取計(jì)數(shù)方式1 TMOD = 0x11; //給計(jì)數(shù)器寫初值 TH0 = 0; TL0 = 0; //////////////////// //操作單片機(jī) //開啟CPU中斷 EA = 1; /////////////////// //開啟定時(shí)器T0位中斷 ET0 = 1; //開啟計(jì)數(shù)器 TR0 = 1; //操作二極管 P1=0; while(1) { if(sr<50) light(sr); else sr=0; } } //子函數(shù) void light(uchar num) { uchar tme; D1 = 0; tme = table[num]; delay(tme); D1 = 1; delay(49-tme); } //中斷函數(shù) void time () interrupt 1 { //自變量自加 if (jf<2) { jf++; TH0 =0; TL0 = 0; } if (jf==2) { //寫初值 jf=0; TH0 = 254; TL0 = 254; sr++; } } void delay(uint z) { uint x,y; for(x=10;x>0;x--) for(y=z;y>0;y--); }