自己設計的流水燈計時器
單片機源程序如下:
- #include<reg52.h>
- #include<intrins.h>
- #define uint unsigned int //宏定義
- #define uchar unsigned char //宏定義
- uchar temp,aa,num; //三個變量
- sbit dula=P2^6;
- sbit wela=P2^7;
- uchar code table[]={ //
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71};
- void delay(uint z); //延時子函數聲明
- void main()
- {
- num=0;
- aa=0;
- TMOD=0x01; //工作模式
- TH0=(65536-50000)/256; //
- TL0=(65536-50000)%256;
- EA=1; //cpu中斷允許(總中斷允許)位,響應條件之一
- ET0=1; //定時器,計數器中斷允許位
- TR0=1; //啟動定時器
- temp=0xfe; //賦初值
- P1=temp; //點亮第一個二極管
- dula=1;
- P0=table[0]; //顯示零
- dula=0;
- wela=1; //都亮
- P0=0xc0;
- wela=0; //顯示零
- while(1) //嵌套
- {
- delay(1000); //延時1000毫秒
- temp=_crol_(temp,1); //移位temp,1位
- P1=temp; //賦值
- /* if(aa==40) //
- {
- aa=0; //清零
- num++;
- if(num==16)
- num=0;
- dula=1;
- P0=table[num];
- dula=0;
- } */
- }
- }
- void delay(uint z) //延時子函數
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void timer0() interrupt 1 //定時器1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- aa++;
- if(aa==40)
- {
- aa=0;
- num++;
- if(num==16)
- num=0;
- dula=1;
- P0=table[num];
- dula=0;
- }
- }
復制代碼
所有資料51hei提供下載:
流水燈計時.rar
(47.51 KB, 下載次數: 5)
2018-5-20 11:55 上傳
點擊文件名下載附件
|