📄 fj4.asm
字号:
//**********************************************************************
// hjzf_cpu.asm fja.asm 2003.12.08--2004.12.15
//**********************************************************************
#include <reg51.h>
//#include <absacc.h>
#define Uchar unsigned char
#define Uint unsigned int
#define Temp_V1 10
#define Temp_V2 100
#define Temp_V3 900
Uchar code led[]={0x11,0xd7,0x32,0x92,0xd4,0x98,0x18,0xd3,0x10,0xd0,0xff,0x7c,0xef};
Uchar code fun_select[]={0x06,0x05,0x03,0x00};
Uchar led_bit,display_bz;
Uchar lednum_a,lednum_b,lednum_c;
Uchar lednum_max;
Uchar vol_val;
unsigned int delay_a;
unsigned int delay_c;
Uchar delay_b;
Uchar fun_code,question;
Uchar bdata led_state;
Uchar bdata qt1_state;
Uchar bdata qt2_state;
Uchar bdata qt3_state;
Uchar fun0_2, fun0_3;
Uchar fun2_1, fun2_2, fun2_3;
Uchar fun3_2, fun3_3;
Uint scan_key_d;
Uchar time_b;
Uint time_a;
Uchar temp_da3,temp_da4,temp_da5,temp_da6;
Uchar addr;
Uchar fjjs_da3,fjjs_da4,fjjs_da5,fjjs_da6;
Uchar fjfs_da2,fjfs_da3;
//Uchar txd_temp2,txd_temp3;
Uchar old_da3,old_da4,old_da5,old_da6;
Uchar workled_onoff;
Uchar ScanMaxTime;
sbit sy_b=led_state^0;
sbit su_b=led_state^1;
sbit te_b=led_state^2;
sbit w_busy=led_state^7;
sbit w_use=led_state^6;
sbit display_a=led_state^3;
sbit display_b=led_state^4;
sbit display_c=led_state^5;
sbit ok_sta1=qt1_state^0;
sbit cancel_sta1=qt1_state^1;
sbit key_time=qt1_state^2;
sbit gb_led=qt1_state^3;
sbit force_bit=qt1_state^4;
sbit sound_=qt1_state^5;
sbit gb_ask=qt1_state^6;
sbit no_sio_da=qt1_state^7;
sbit sio_normal=qt2_state^0;
sbit led_normal=qt2_state^1;
sbit ok0_push=qt2_state^2;
sbit ok1_push=qt2_state^3;
sbit ok2_push=qt2_state^4;
sbit ok3_push=qt2_state^5;
sbit bit_temp=qt2_state^6;
sbit vol_adj=qt2_state^7;
sbit talking=qt3_state^0;
sbit beep_b=P2^0;
sbit work_led=P3^2;
sbit P2_7=P2^7;
sbit P2_6=P2^6;
sbit P2_5=P2^5;
sbit P2_4=P2^4;
sbit P2_3=P2^3;
sbit P2_2=P2^2;
sbit P1_3=P1^4;
void timer0();
void led_display();
void vol_display();
void scan_key();
void scan_sio();
void sio_ri();
void key_k1();
void key_k2();
void key_k3();
void key_k4();
void key_k5();
void key_k6();
void data_cl();
void gbsq_led();
void main()
{
P1=0;
P2=0xff;
P0=0xff;
beep_b=0;
delay_b=0;
IE=0;
key_time=0;
time_a=Temp_V1;
display_bz=1;
lednum_a=0x0a;
lednum_b=0;
lednum_c=0;
led_state=0xfe;
fjfs_da2=0x10;
fjfs_da3=0x00;
old_da4=0x0f;
old_da5=0x0f;
fun0_2=0;
fun0_3=0;
fun2_1=0;
fun2_2=0;
fun2_3=0;
fun3_2=0;
fun3_3=0;
ok_sta1=0;
sio_normal=1;
led_normal=0;
gb_led=0;
force_bit=0;
question=0;
delay_a=0;
delay_c=0;
P1=0xff;
addr=P1;
addr&=0x0f;
TMOD=0x21;
TH0=0;
TL0=0;
TR0=1;
ET0=1;
TH1=0xfa;
TL1=0xfa;
SCON=0xf0;
PCON=0;
ET1=0;
ES=0;
TR1=1;
RI=0;
TI=0;
EA=1;
SM2=1;
beep_b=0;
sound_=0;
TB8=1;
key_time=0;
scan_key_d=0;
time_b=0;
talking=0;
P2_7=0; P2_6=0; P2_5=1;
P2_4=1; P2_3=1; P2_2=1;
// vol_adj=1;
do
{
// delay_a=0;
// led_normal=0;
if (gb_ask)
gbsq_led();
if (display_bz==1)
{
if (vol_adj)
vol_display();
else
led_display();
}
if (key_time)
{
scan_key();
}
scan_sio();
if ((delay_c++)>=3000)
{
delay_c=0;
P1_3=1;
}
}while (1);
}
void gbsq_led()
{
if (time_b>0x60)
{
time_b=0;
gb_led=~gb_led;
}
if (gb_led)
led_state=led_state&0xf8|fun_select[fun_code];
else
led_state=led_state&0xf8|0x7;
}
void timer0() interrupt 1 //using 1
{
led_normal |=((delay_a++)>=2000);
key_time |=((scan_key_d++)>time_a);
workled_onoff++;
work_led=workled_onoff^7;
TH0=0xee;
display_bz=1;
switch (led_bit)
{
case 0:
led_bit=1;
break;
case 1:
led_bit=2;
break;
case 2:
led_bit=0;
break;
}
}
void vol_display()
{
display_bz=0;
switch (led_bit)
{
case 0:
P0=0xff, P2_6=0; P2_6=1; P2_6=0;
display_a=0;
goto dis_v_com;
case 1:
P0=0xff;
// P0=led[(vol_val+1)/10];
P2_6=0; P2_6=1; P2_6=0;
display_b=0;
goto dis_v_com;
case 2:
P0=led[(vol_val+1)%10];
P2_6=0; P2_6=1; P2_6=0;
display_c=0;
dis_v_com:
P0=led_state; P2_7=0; P2_7=1; P2_7=0;
led_state|=0x38;
}
}
void led_display()
{
display_bz=0;
if (gb_ask)
time_b++;
// led_normal=0;
if (led_normal)
{
cancel_sta1=0;
beep_b=0;
sound_=0;
question=0;
ok_sta1=0;
switch (led_bit)
{
case 0:
// wr_led=0xfe;
P0=0xfe; P2_6=0; P2_6=1; P2_6=0;
display_a=0;
goto dis_coma;
case 1:
// wr_led=led[(addr+1)/10]; //0x7c;
P0=led[(addr+1)/10]; P2_6=0; P2_6=1; P2_6=0;
display_b=0;
goto dis_coma;
case 2:
// wr_led=led[(addr+1)%10];
P0=led[(addr+1)%10]; P2_6=0; P2_6=1; P2_6=0;
display_c=0;
dis_coma:
// wr_bit=led_state;
P0=led_state; P2_7=0; P2_7=1; P2_7=0;
led_state|=0x38;
}
}
else
{
switch (led_bit)
{
case 0:
// wr_led=led[lednum_a];
P0=led[lednum_a]; P2_6=0; P2_6=1; P2_6=0;
display_a=0;
goto dis_comb;
case 1:
// wr_led=led[lednum_b];
P0=led[lednum_b]; P2_6=0; P2_6=1; P2_6=0;
display_b=0;
goto dis_comb;
case 2:
// wr_led=led[lednum_c];
P0=led[lednum_c]; P2_6=0; P2_6=1; P2_6=0;
display_c=0;
dis_comb:
// wr_bit=led_state;
P0=led_state; P2_7=0; P2_7=1; P2_7=0;
led_state|=0x38;
}
}
}
void scan_key()
{
unsigned int temp;
unsigned char key_code;
if (sound_)
{
if (((delay_b++)<20) & (!talking))
beep_b=~beep_b;
else
{
beep_b=0; sound_=0; delay_b=0;
talking=1;
}
}
scan_key_d=0;
key_time=0;
time_a=Temp_V1;
P0=0xff;
P2_5=0; key_code=P0; P2_5=1;
if (!(key_code==0xff))
{
temp=2000;
while (temp--)
{
if (display_bz==1)
{
if (vol_adj)
vol_display();
else
led_display();
}
}
P2_5=0; key_code=P0; P2_5=1;
if (!(key_code==0xff))
{
beep_b=1;
switch(key_code)
{
case 247 :
if(!ok_sta1) key_k1();
time_a=Temp_V2;
goto skey_com;
case 239 :
if(!ok_sta1) key_k2();
time_a=Temp_V2;
goto skey_com;
case 223 :
if (vol_adj)
{
vol_val=(vol_val+1)&0x07;
P2_4=(~vol_val)&0x01;
P2_3=((~vol_val)>>1)&0x01;
P2_2=((~vol_val)>>2)&0x01;
}
if(!ok_sta1) key_k3();
time_a=Temp_V2;
goto skey_com;
case 191 :
if (vol_adj)
{
vol_val=(vol_val-1)&0x07;
P2_4=(~vol_val)&0x01;
P2_3=((~vol_val)>>1)&0x01;
P2_2=((~vol_val)>>2)&0x01;
}
if(!ok_sta1) key_k4();
time_a=Temp_V2;
goto skey_com;
case 127 :
if (ok_sta1) time_a=Temp_V3;
else time_a=Temp_V2;
led_state=led_state&0xf8|fun_select[fun_code];
gb_ask=0;
key_time=0;
scan_key_d=0;
key_k5();
beep_b=0;
sound_=0;
delay_b=0;
goto skey_com;
case 251 :
delay_c=0;
P1_3=0;
if((!ok_sta1)&&w_busy) key_k6();
time_a=Temp_V3;
skey_com:
beep_b=0;
if (display_bz==1)
{
if (vol_adj)
vol_display();
else
led_display();
}
/*
if (cancel_sta1)
{
do
{
if (display_bz==1)
led_display();
key_code=rd_key;
}while (!(key_code==0xff));
}
*/
}
}
}
}
void scan_sio()
{
if (RI==1)
{
RI=0;
temp_da4=SBUF;
if (temp_da4==0xaa)
{
temp_da3=0xaa;
return;
}
if (!(temp_da4==addr) & (temp_da3==0xaa))
temp_da3=0x0;
else
{
temp_da3=0x0;
SM2=0;
TI=0;
SBUF=addr;
while (TI==0);
TI=0;
if (vol_adj)
vol_display();
else
led_display();
SBUF=fjfs_da2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -