📄 main.c
字号:
#include "main.h" //程序经过修改调整FLASH写数据正确,且每个参数分为高低位。
#include "bl.h"
sbit CS=P1^2; //7289控制键
sbit CLK=P1^3;
sbit DIO=P1^4;
sbit KEY=P1^6;
sbit P0_0=P0^0; //二极管控制端口
sbit P1_5=P1^5;
sbit P1_7=P1^7;
sbit S1=P0^3; //3个接近开关
sbit S2=P0^2;
sbit S3=P0^4;
sbit P0_6=P0^6; //热保护
sbit P0_7=P0^7; //手动
sbit P0_5=P0^5; //屏蔽
sbit P1_0=P1^0; //故态继电器K1触发
sbit P1_1=P1^1; //故态继电器K2触发
main()
{
do
{
PCA0MD=0X00;
SysClk_Init();
port_Init(); //端口配置
timer_Init();
DAC_Init();
WDT_Init(); //系统配置
din_50=0; //初始化
setcan=0;
pointer=4;
count=0;
freq=0;
idamin_l=0;
idamin_h=0;
idamax_l=0;
idamax_h=0;
t_s=15;
t_m=0;
db4=0x00;
db3=0x00;
db2=0x00;
db1=0x00;
CS=0;
CLK=0;
delay_short();
SEND_BUF=0xA4; //7289复位
send7289();
db_clear(1,2,3,4);
ACC=0;
while(setcan<=200)
{
do
{
if (KEY==0)
{
CS = 0;
delay_short();
SEND_BUF=0X15; // 写入读键盘数据指令
send7289();
delay_short();
symbol = read_key(); // 读出按键的值
ACC=symbol;
CS = 1;
delay_long();
switch(symbol)
{
case(2): //检测按下功能键
{
freq++;
if(freq==1)
{
P1_7=1;
P1_5=0;
P0_0=0;
}
else if(freq==2)
{
P1_7=0;
P1_5=0;
P0_0=1;
}
else if(freq==3)
{
P1_7=0;
P1_5=1;
P0_0=0;
}
else
{
freq=0;
P1_7=0;
P1_5=0;
P0_0=0;
EA=0; //禁止中断;
FLSCL=0X80;
PSCTL=0X03; //擦除指定的Flash地址;
FLKEY=0XA5;
FLKEY=0XF1;
ACC=FLKEY;
pwrite=0X1b00;
*pwrite=0XF0;
PSCTL=0X00;
PSCTL=0X01;
FLKEY=0XA5;
FLKEY=0XF1;
ACC=FLKEY;
*pwrite++=t_s;
PSCTL=0X01;
FLKEY=0XA5;
FLKEY=0XF1;
ACC=FLKEY;
*pwrite++=t_m;
PSCTL=0X01;
FLKEY=0XA5;
FLKEY=0XF1;
ACC=FLKEY;
*pwrite++=idamin_l;
PSCTL=0X01;
FLKEY=0XA5;
FLKEY=0XF1;
ACC=FLKEY;
*pwrite++=idamin_h;
PSCTL=0X01;
FLKEY=0XA5;
FLKEY=0XF1;
ACC=FLKEY;
*pwrite++=idamax_l;
PSCTL=0X01;
FLKEY=0XA5;
FLKEY=0XF1;
ACC=FLKEY;
*pwrite++=idamax_h;
PSCTL=0X00;
EA=1;
}
while(KEY==0);
break;
}
case(1): //按键循环闪烁
{
if(pointer==4)
{
pointer--;
CS=0;
delay_short();
SEND_BUF=0X88;
send7289();
delay_short();
SEND_BUF=0xF7;
send7289();
CS=1;
delay_long();
while(KEY==0);
break;
}
else if(pointer==3)
{
pointer--;
CS=0;
delay_short();
SEND_BUF=0X88;
send7289();
delay_short();
SEND_BUF=0xFB;
send7289();
CS=1;
delay_long();
while(KEY==0);
break;
}
else if(pointer==2)
{
pointer--;
CS=0;
delay_short();
SEND_BUF=0X88;
send7289();
delay_short();
SEND_BUF=0xFD;
send7289();
CS=1;
delay_long();
while(KEY==0);
break;
}
else if(pointer==1)
{
pointer--;
CS=0;
delay_short();
SEND_BUF=0X88;
send7289();
delay_short();
SEND_BUF=0xFE;
send7289();
CS=1;
delay_long();
while(KEY==0);
break;
}
else if(pointer==0)
{
pointer=4;
CS=0;
delay_short();
SEND_BUF=0X88;
send7289();
delay_short();
SEND_BUF=0xFF;
send7289();
CS=1;
delay_long();
while(KEY==0);
if(freq==1)
{
t_s=db2*10+db1; //1S=20次中断;
t_m=db4*10+db3;
}
else if(freq==2)
{
idamin_l=db2*10+db1;
idamin_h=db4*10+db3;
}
else if(freq==3)
{
idamax_l=db2*10+db1;
idamax_h=db4*10+db3;
}
else
{
;
}
break;
}
}
case(3): //检测按下键2,对应数码管的值加1
{
if(pointer==3) //DB4
{
db4++;
if(db4==10)
db4=0;
CS=0;
delay_short();
SEND_BUF=0XCB;
send7289();
delay_short();
SEND_BUF=db4;
send7289();
CS=1;
delay_long();
while(KEY==0);
break;
}
else if(pointer==2) //DB3
{
db3++;
if(db3==10)
db3=0;
CS=0;
delay_short();
SEND_BUF=0XCA;
send7289();
delay_short();
SEND_BUF=db3;
send7289();
CS=1;
delay_long();
while(KEY==0);
break;
}
else if(pointer==1) //DB2
{
db2++;
if(db2==10)
db2=0;
CS=0;
delay_short();
SEND_BUF=0XC9;
send7289();
delay_short();
SEND_BUF=db2;
send7289();
CS=1;
delay_long();
while(KEY==0);
break;
}
else if(pointer==0) //DB1
{
db1++;
if(db1==10)
db1=0;
CS=0;
delay_short();
SEND_BUF=0XC8;
send7289();
delay_short();
SEND_BUF=db1;
send7289();
CS=1;
delay_long();
while(KEY==0);
break;
}
else
{
while(KEY==0);
break;
}
}
default: break;
}
}
else
{
break;
}
}while(1);
}
do{
do
{
while((P0_7!=0)&&(din_50!=(t_m*60+t_s)*20)) //手动按钮没有按下且时间没达到设定值,则等待
{;}
db_clear(0,0,0,0);
din_50=0;
}while(P0_5==0); //外部有屏蔽信号,程序重新开始执行
P1_0=1; //触发K1;
do
{
if(S1==0) //脉冲计数
{
count++;
while(S1==0)
{;}
}
else
{
do{
if (KEY==0)
{
CS = 0;
delay_short();
SEND_BUF=0X15;
send7289();
delay_short();
symbol = read_key();
CS = 1;
delay_long();
switch(symbol)
{
case(2):
{
freq++;
if(freq==1)
{
P1_7=1;
P1_5=0;
P0_0=0;
pread=0x1b00;
t_s=*pread++;
t_m=*pread;
while(KEY==0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -