- 积分
- 39
- 下载分
- 分
- 威望
- 点
- 原创币
- 点
- 下载
- 次
- 上传
- 次
- 注册时间
- 2010-6-15
- 精华
|
马上注册,获取阅读精华内容及下载权限
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 烟雨阑珊 于 2010-6-17 23:46 编辑
今天刚成为会员,,在此发我的第一个正式帖子。。(以前都不让说话,憋屈呀)
看到yzz163管理员以前有个用M8做的定时器,所以自己也就以那个主题写个帖子吧,,,,只是自己写个简单的程序吧。。。呵呵,,,感兴趣的朋友以后要多多交流啊,,,呵呵,,,程序已亲自调试,,,感兴趣的朋友可以自己下载到板子里玩玩,,呵呵,,此程序到了30分钟,,蜂鸣器自动报警,实现30分钟报警功能。。。。(自己第一次弄的,有权利申请个精么?小小的奢望下,呵呵。。。)
单片机型号:AT89C52RC
C程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint sec=0,min=0,aa;
uchar ss,sg,ms,mg;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
sbit feng=P2^3;
sbit dula=P2^6;
sbit wela=P2^7;
void delay(uint z);
void init();
void displays(uchar ,uchar );
void displaym(uchar ,uchar );
void main()
{
init();
while(1)
{
ss=sec/10;
sg=sec%10;
ms=min/10;
mg=min%10;
displays( ss,sg);
displaym( ms,mg);
}
}
void init() //初始化程序
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
aa++;
if (aa==20)
{
aa=0;
sec++;
if (sec==60)
{
sec=0;
min++;
if (min==30)
{
min=0;
feng=1;
delay(500);
feng=~feng;
}
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void displays(uchar ss,uchar sg)
{
dula=1;
P0=table[sg];
dula=0;
P0=0xff; //消隐
wela=1;
P0=0xdf;
wela=0;
delay(1);
dula=1;
P0=table[ss];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delay(1);
}
void displaym(uchar ms,uchar mg)
{
dula=1;
P0=table[mg];
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delay(1);
dula=1;
P0=table[ms];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);
}
|
|