📄 复件 7.c.bak
字号:
jiage[i]=jiage[i]-10;
}
if(yijian()==1) break; //按下一键,移到下一位
}
}
loop:1;
a=0; //退出后显示时间
i=0;
}
void main() //主程序
{
TMOD=0x42; //初始化
TH0=0x06;
TL0=0x06;
TH1=7192;
TL1=7192;
TR0=1;
ET0=1;
ET1=1;
EA=1;
P0=duanma[shijian[dis]] ; //P0口输出段码
P2=weima[dis] ; //P2口输出位码
while(1)
{
if(yijian()==1) //一键按下,进入改时间程序
{
tiaoshi();
}
if(erjian()==1) //二键按下,进入计价程序
{
jijia();
}
if(shangjian()==1) //三键按下,进入改价格程序
{
gaijia();
}
if(kaiguan()==1) //白天,晚上转换开关
{
m=1;
}
}
}
void t0(void) interrupt 1 using 1 //定时器0中断
{
ms++;
if(ms==8)
{
ms=0;
switch(a) //显示模块开关
{
case 0: if((i==dis|(i-1)==dis)&i>0) //0:显示时间
{
if(tcnt<1500) //闪动程序
{
P0=duanma[17];
}
else P0=duanma[shijian[dis]];
break;
}
else P0=duanma[shijian[dis]]; break;
case 1: P0=duanma[lucheng[dis]]; break; //1:显示路程
case 2: if(i==dis&i>=0) //2:显示价格
{
if(tcnt<1500)
{
P0=duanma[17];
}
else P0=duanma[jiage[dis]] ; break;
}
else P0=duanma[jiage[dis]] ; break;
case 3: if(shijian[1]%2==1) //3:路程,总价循环显示
{
P0=duanma[lucheng[dis]] ; break;
}
else P0=duanma[zongjia[dis]]; break;
case 4: P0=duanma[zongjia[dis]]; break; //4:总价显示
case 5: if(i==dis&i>=0) //5:输密码显示
{
if(tcnt<1500)
{
P0=duanma[17];
}
else P0=duanma[mima[dis]];
break;
}
else P0=duanma[mima[dis]]; break;
case 6: if(i==dis&i>=0) //6:改密码显示
{
if(tcnt<1500)
{
P0=duanma[17];
}
else P0=duanma[mima1[dis]];
break;
}
else P0=duanma[mima1[dis]]; break;
}
P2=weima[dis]; //位码扫描
dis++;
if(dis==8)
{
dis=0;
}
}
tcnt++;
if(tcnt==3685)
{
if(TR1==1) //计数器开始状态,计时间
{
lucheng[0]++;
if(lucheng[0]==10)
{
lucheng[0]=0;
lucheng[1]++;
if(lucheng[1]==6)
{
lucheng[1]=0;
lucheng[2]++;
if(lucheng[2]==28)
{
lucheng[2]=18;
lucheng[3]++;
if(lucheng[3]==6)
lucheng[3]=0;
}
}
}
}
tcnt=0;
if(k==0)
second++; //秒加1
if(second>=60) //到60清0,分加1
{
if(w==1)
{
hour1++;
if(hour1==2)
{
hour1=0;
w=0;
}
}
second=0;
minite++;
if(x==1&TR1==1) //是否在进行中断(中途等待程序)
{
y++; //没进行y+1
if(y==1) //是否等待10分钟
{
y=0; //清0
zongjia[0]=jiage[3]; //价格显示位显示中途等待价
zongjia[1]=jiage[4];
zongjia[5]=zongjia[5]+jiage[3];if(zongjia[5]>9) //总价加中途等待价
{
n=1; zongjia[5]=zongjia[5]%10;
}
zongjia[6]=zongjia[6]+jiage[4];if(n==1)
{
zongjia[6]++;n=0;
}
zongjia[6]=zongjia[6]-18; if(zongjia[6]>27)
{
n=1; zongjia[6]=zongjia[6]-10;
}
if(n==1)
{
zongjia[7]++;
n=0;
if(zongjia[7]>9)
zongjia[7]=0;
}
}
}
if(minite>=60) //分到60清0
{
minite=0;
hour++; //时加1
if(hour>=24) //时到24清0
{
hour=0;
}
/* if(w==1)
{
hour1++;
if(hour1==24)
{
hour1=0;
w=0;
}
} */
}
}
shijian[0]=second%10;
shijian[1]=second/10;
shijian[3]=minite%10;
shijian[4]=minite/10;
shijian[6]=hour%10;
shijian[7]=hour/10;
}
}
void t1(void) interrupt 3 using 2
{
x=0; //进入中断标志
tcnt2++;
switch(m) //判断白天还是晚上
{
case 0: zongjia[0]=jiage[0]; //白天总价0、1位显示白天单价
zongjia[1]=jiage[1];
break;
case 1: zongjia[0]=jiage[6]; //晚上总价0、1位显示白天单价
zongjia[1]=jiage[7];
break;
}
if(tcnt2<=10)
{
zongjia[6]=23;
}
else
{
c++;
if(c==5)
{
c=0;
switch(m) //判断白天还是晚上
{
case 0: zongjia[5]=zongjia[5]+jiage[0];if(zongjia[5]>9)//白天:总价加白天单价
{
n=1; zongjia[5]=zongjia[5]%10;
}
zongjia[6]=zongjia[6]+jiage[1];if(n==1)
{
zongjia[6]++;n=0;
}
zongjia[6]=zongjia[6]-18;if(zongjia[6]>27)
{
n=1; zongjia[6]=zongjia[6]-10;
}
if(n==1)
{
zongjia[7]++;
n=0;
if(zongjia[7]>9)
zongjia[7]=0;
}
break;
case 1: zongjia[5]=zongjia[5]+jiage[6];if(zongjia[5]>9) //晚上:总价加晚上单价
{
n=1; zongjia[5]=zongjia[5]%10;
}
zongjia[6]=zongjia[6]+jiage[7];if(n==1)
{
zongjia[6]++;n=0;
}
zongjia[6]=zongjia[6]-18;if(zongjia[6]>27)
{
n=1; zongjia[6]=zongjia[6]-10;
}
if(n==1)
{
zongjia[7]++;
n=0;
if(zongjia[7]>9)
zongjia[7]=0;
}
zongjia[0]=jiage[6];
zongjia[1]=jiage[7];
break;
}
}
}
lucheng[5]++; //路程位加1
if(lucheng[5]>9)
{
n=1; //大于9进1位
lucheng[5]=lucheng[5]%10; //本位10取余
}
if(n==1) //是否有进位
{
n=0; //进位清0
lucheng[6]++; //上一位加1
if(lucheng[6]>27) //是否到有小数点的9
{
n=1; //进位
lucheng[6]=lucheng[6]-10; //本位减10
}
}
if(n==1) //是否有进位
{
n=0; //进位清0
lucheng[7]++; //加1
if(lucheng[7]>9) //如果大于9清0
{
lucheng[7]=0;
}
}
x=1; //中断完成标志
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -