上電就開始計時,繼電器吸合,LED每秒閃一次,8小時后繼電器斷開,LED熄滅
搜狗截圖20170916133942.png (222.21 KB, 下載次數: 66)
下載附件
2017-9-16 13:38 上傳
單片機源程序如下:
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit led = P3^4;
- sbit out =P3^5;
- uchar aa,num,time,time1;
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void init()
- {
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- aa=0;
- num=0;
- time=0;
- time1=0;
- out=0;
- }
- void main()
- {
- init();
- while(1)
- {
- if(aa==20) //如果到了1S
- {
- aa=0; //清零aa
- num++; //秒數累加
- led=~led; //閃燈
- }
- if(num==60) //如果到了1min
- {
- num=0; //清零秒數
- time++; //累加分鐘
- }
- if(time==60) //如果到了60min(1h)
- {
- time=0; //清零分鐘
- time1++;//累加小時
- }
- if(time1==8) //如果到了8h
- {
- time1=0; //小時清零
- out=1; //關輸出
- TR0=0; //關掉定時器
- while(1); //停在這里死循環,其實可以把單片機掛到掉電模式,如果喜歡自己寫吧
- }
- }
- }
- void timer0() interrupt 1
- {
- TH0=(65536-50000)/256; //每50MS產生一次中斷,給寄存器裝初值并累加aa
- TL0=(65536-50000)%256;
- aa++;
- }
復制代碼
|