自己设计的流水灯计时器
单片机源程序如下:
- #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)
|