- 打卡等级:初来乍到
- 打卡总天数:1
- 最近打卡:2025-03-17 16:39:04
中级会员
- 积分
- 253
|
【声明】此程序仅用于学习与参考!
*********************************************************************/
#include <STC15W408AS.h>
#include <intrins.h>
#include <string.h>
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
/**************************************************
IO口定义
***************************************************/
sbit led = P1^0;
sbit IN1 = P5^4;
sbit set1= P1^7;
sbit set2= P1^6;
sbit set3= P1^1;
sbit ten1= P3^7;
sbit ten2= P3^6;
sbit ten3= P3^5;
sbit ten4= P3^4;
sbit b1 = P3^3;
sbit b2 = P3^2;
sbit b3 = P3^1;
sbit b4 = P3^0;
sbit OUT = P5^5;
bit bz=0,bk=0,kk=0,bt=0,kz=0,bs1=0,bs2=0,bs3=0;
uchar ba=0;
uint dat=0,dat1=0,dat2=0,jsu=0,js=0,js1=0,js2=0;
/**************************************************
配置t0
***************************************************/
void Timer0Init(void) //1毫秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xCD; //设置定时初值
TH0 = 0xD4; //设置定时初值
TF0 = 0; //清除TF0标志
ET0 = 1;
TR0 = 1; //定时器0开始计时
}
/**************************************************
t0
***************************************************/
void InterruptTimer0() interrupt 1{//T0中断服务函数,执行串口接收监控
dat2=dat+dat1;
if(dat2==0){kz=1;}else{kz=0;}
if((kk==1)&&(bk==0)&&(kz==0)){jsu++;}
if(ba==0)//秒
{
if(jsu==100){if(bt==0){OUT=1;}else{OUT=0;}}
if(jsu==800){led=0;}
if(jsu==1000)//1s
{
jsu=0;
led=1;
js++;
if(js==dat2)
{
js=0;
bk=1;
kk=0;
led=0;
OUT=!OUT;
}
}
}
if(ba==1)//分
{
if(jsu==100){if(bt==0){OUT=1;}else{OUT=0;}}
if(jsu==800){led=0;}
if(jsu==1000)//1s
{
jsu=0;
led=1;
js++;
if(js==60)//1fen
{
js=0;
js1++;
if(js1==dat2)
{
js1=0;
bk=1;
kk=0;
led=0;
OUT=!OUT;
}
}
}
}
if(ba==2)//分
{
if(jsu==100){if(bt==0){OUT=1;}else{OUT=0;}}
if(jsu==800){led=0;}
if(jsu==1000)//1秒
{
jsu=0;
led=1;
js++;
if(js==60)//1分钟
{
js=0;
js1++;
if(js1==60)//1小时
{
js1=0;
js2++;
if(js2==dat2)
{
js2=0;
bk=1;
kk=0;
led=0;
OUT=!OUT;
}
}
}
}
}
}
/**************************************************
主函数
***************************************************/
void main()
{
Timer0Init();
EA=1;
ba=0;
while(1)
{
if((IN1==0)&&(bz==0)){bz=1;kk=1;bk=0;}
if((IN1==1)&&(bz==1)){bz=0;}
if(set1==0){bt=1;}else{bt=0;} //拨上拨码开关设置延时断开,不拨延时接通
if((set2==1)&&(set3==1)&&(bs1==0)){ba=0;bs1=1;bs2=0;bs3=0;}
if((set2==0)&&(set3==1)&&(bs2==0)){ba=1;bs1=0;bs2=1;bs3=0;}
if((set2==0)&&(set3==0)&&(bs3==0)){ba=2;bs1=0;bs2=0;bs3=1;}
if((b1==1)&&(b2==1)&&(b3==1)&&(b4==1)){dat=0;}//1秒
if((b1==0)&&(b2==1)&&(b3==1)&&(b4==1)){dat=1;}
if((b1==1)&&(b2==0)&&(b3==1)&&(b4==1)){dat=2;}
if((b1==0)&&(b2==0)&&(b3==1)&&(b4==1)){dat=3;}
if((b1==1)&&(b2==1)&&(b3==0)&&(b4==1)){dat=4;}
if((b1==0)&&(b2==1)&&(b3==0)&&(b4==1)){dat=5;}
if((b1==1)&&(b2==0)&&(b3==0)&&(b4==1)){dat=6;}
if((b1==0)&&(b2==0)&&(b3==0)&&(b4==1)){dat=7;}
if((b1==1)&&(b2==1)&&(b3==1)&&(b4==0)){dat=8;}
if((b1==0)&&(b2==1)&&(b3==1)&&(b4==0)){dat=9;}
if((b1==1)&&(b2==0)&&(b3==1)&&(b4==0)){dat=10;}
if((b1==0)&&(b2==0)&&(b3==1)&&(b4==0)){dat=11;}
if((b1==1)&&(b2==1)&&(b3==0)&&(b4==0)){dat=12;}
if((b1==0)&&(b2==1)&&(b3==0)&&(b4==0)){dat=13;}
if((b1==1)&&(b2==0)&&(b3==0)&&(b4==0)){dat=14;}
if((b1==0)&&(b2==0)&&(b3==0)&&(b4==0)){dat=15;}//15秒
if((ten1==1)&&(ten2==1)&&(ten3==1)&&(ten4==1)){dat1=0;}//0s
if((ten1==0)&&(ten2==1)&&(ten3==1)&&(ten4==1)){dat1=10;}//10s
if((ten1==1)&&(ten2==0)&&(ten3==1)&&(ten4==1)){dat1=20;}//20s
if((ten1==0)&&(ten2==0)&&(ten3==1)&&(ten4==1)){dat1=30;}//30s
if((ten1==1)&&(ten2==1)&&(ten3==0)&&(ten4==1)){dat1=40;}//40s
if((ten1==0)&&(ten2==1)&&(ten3==0)&&(ten4==1)){dat1=50;}//50s
if((ten1==1)&&(ten2==0)&&(ten3==0)&&(ten4==1)){dat1=60;}//60s
if((ten1==0)&&(ten2==0)&&(ten3==0)&&(ten4==1)){dat1=70;}//70s
if((ten1==1)&&(ten2==1)&&(ten3==1)&&(ten4==0)){dat1=80;}//80s
if((ten1==0)&&(ten2==1)&&(ten3==1)&&(ten4==0)){dat1=90;}//90s
if((ten1==1)&&(ten2==0)&&(ten3==1)&&(ten4==0)){dat1=100;}//100s
if((ten1==0)&&(ten2==0)&&(ten3==1)&&(ten4==0)){dat1=110;}//110s
if((ten1==1)&&(ten2==1)&&(ten3==0)&&(ten4==0)){dat1=120;}//120s
if((ten1==0)&&(ten2==1)&&(ten3==0)&&(ten4==0)){dat1=130;}//130s
if((ten1==1)&&(ten2==0)&&(ten3==0)&&(ten4==0)){dat1=140;}//140s
if((ten1==0)&&(ten2==0)&&(ten3==0)&&(ten4==0)){dat1=150;}//150s
}
}
/*********************************************************************************************/
|
|