📄 yangtao.c
字号:
#include <reg52.h>
#include <stdio.h>
#include <intrins.h>
//#include <math.h>
#define fx_close 0x18
#define fx_0_dis 0xf7
#define fx_1_dis 0xef
#define MAX_220V 50
#define key_0 1
#define key_1 2
#define key_2 3
#define key_3 4
#define key_4 5
#define key_5 6
#define key_6 7
#define key_7 8
#define key_8 9
#define key_9 10
#define key_enter 11
#define key_esc 12
#define key_sel 13
#define key_prog 14
#define key_up 15
#define key_down 16
// #pragma src
extern void Read24c02(unsigned char idata *RamAddress,unsigned char RomAddress,unsigned char bytes);
extern void Write24c02(unsigned char idata *RamAddress,unsigned char RomAddress,unsigned char bytes);
extern unsigned char key_in(void);
#define BLACK 0x7F
#define UP 10
#define DOWN 11
#define dis_zs_0 dis_ram[0]
#define dis_zs_1 dis_ram[1]
#define dis_zs_2 dis_ram[2]
#define dis_zs_3 dis_ram[3]
#define dis_gg_0 dis_ram[4]
#define dis_gg_1 dis_ram[5]
#define dis_gx_0 dis_ram[6]
#define dis_gx_1 dis_ram[7]
#define dis_fx_0 dis_ram[8]
#define dis_fx_1 dis_ram[9]
// 0 1 2 3 4 5 6 7 8 9
unsigned char code gg_dis_table[]={0xff,0xff,0xff,0xff,0x7f,0x7f,0xff,0xff,0xff,0xff};
unsigned char code zs_dis_table[]={0x7f,0x7f,0x7f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff};
unsigned char code gx_dis_table[]={0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0xff,0xff};
unsigned char code fx_dis_table[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f};
unsigned char code dis_w_table[]={ 0xf7,0xfb,0xfd,0xfe,0xdf,0xef,0x7f,0xbf};
// 0 1 2 3 4 5 6 7 8 9 10 11 12
unsigned char code dis_d_table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0x9c,0xa3,0xff };
bit key_bit_press;
bit sel_bit;
bit gg_bit_flash;
bit zs_bit_flash;
bit gx_bit_flash;
bit fx_bit_flash;
bit prog_bit;
bit start_bit_stop;
bit gg_bit_sel;
bit begin_bit;
bit en_bit_write;
// 0 baozhuan 1 juandai
bit xh_bit ;
bit add_bit;
bit key_bit_start;
bit dis_bit;
bit input_1;
bit input_2;
bit en_bit_220v;
//sbit data_2401=P2^0;
//sbit clk_2401=P2^1;
sbit xh_sel=P2^2;
sbit led_light=P2^5;
sbit dis_w_enable=P2^6;
sbit dis_d_enable=P2^7;
sbit r_45=P3^0;
sbit key_start_stop=P3^1;
sbit r_67=P3^6;
sbit r_1456=P3^4;
sbit r_220v=P3^5;
sbit signal_1=P3^7;
sbit signal_2=P3^3;
unsigned char dms1,dms10,dms100,sec1;
unsigned char key_dms10,key_dms100;
//unsigned char key_add_step;
//unsigned char key_step;
unsigned char key_number;
unsigned char gg_ram;
unsigned char gx_ram;
unsigned char fx_ram;
unsigned int zs_ram_0,zs_ram_1;
unsigned char dis_ram[10];
unsigned char gg_max,gx_max,xh_ram_length;
unsigned char start_stop_dms10;
unsigned char dms_220v;
unsigned char idata gg_2401_ram[130];
//-----------------------------------------
void delay(void)
{
unsigned int i;
i=1500;
while(i){
i--;
}
}
//-----------------------------------------
void canshu_deal(void)
{
unsigned char i ;
i=gg_ram*xh_ram_length;
if(gx_ram==0) fx_ram=gg_2401_ram[i]&0x80;
else fx_ram=gg_2401_ram[i+1]&(1<<(gx_ram-1));
i=i+(gx_ram+1)*2;
zs_ram_0=gg_2401_ram[i];
zs_ram_1=gg_2401_ram[i+1];
}
void dis_ram_deal(void)
{
unsigned char i,j,k;
if(prog_bit|sel_bit) {
canshu_deal();
i=zs_ram_0;
dis_zs_0=i%10;
dis_zs_1=(i-i%10)/10;
i=zs_ram_1;
dis_zs_2=i%10;
dis_zs_3=(i-i%10)/10;
}
else{
i=gg_ram*20+(gx_ram+1)*2;
j=gg_2401_ram[i];
i=gg_2401_ram[i+1];
if(j<zs_ram_0){
j=100+j-zs_ram_0;
k=i-zs_ram_1-1;
}
else {
j=j-zs_ram_0;
k=i-zs_ram_1;
}
dis_zs_0=j%10;
dis_zs_1=(j-j%10)/10;
dis_zs_2=k%10;
dis_zs_3=(k-k%10)/10;
}
dis_gg_0=gg_ram+1;
dis_gg_1=0;
dis_gx_0=gx_ram+1;
dis_gx_1=0;
if(fx_ram) {
dis_fx_0=UP;
dis_fx_1=UP;
}
else {
dis_fx_0=DOWN;
dis_fx_1=DOWN;
}
}
//-----------------------------------------
//-----------------------------------------
void key_number_sub(unsigned char i)
{
i=i-1;
if(prog_bit&&zs_bit_flash){
switch(key_number){
case 0:
zs_ram_0=zs_ram_0+i-zs_ram_0%10;
break;
case 1:
zs_ram_0=i*10+zs_ram_0%10;
break;
case 2:
zs_ram_1=zs_ram_1+i-zs_ram_1%10;
break;
case 3:
zs_ram_1=i*10+zs_ram_1%10;
break;
default: break;
}
i=gg_ram*xh_ram_length+(gx_ram+1)*2;
gg_2401_ram[i]=zs_ram_0;
gg_2401_ram[i+1]=zs_ram_1;
key_number++;
if(key_number==4) key_number=0;
}
}
//----------------------------------------------------
//----------------------------------------------------
void prog_sub(void)
{
if(start_bit_stop|sel_bit) return;
if(!prog_bit){
prog_bit=1;
gg_bit_flash=1;
// gg_ram=0;
gx_ram=0;
}
else {
prog_bit=0;
gg_bit_flash=0;
gx_bit_flash=0;
fx_bit_flash=0;
zs_bit_flash=0;
gx_ram=0;
en_bit_write=1;
canshu_deal();
}
}
void sel_sub(void)
{
if(start_bit_stop|prog_bit) return;
if(!sel_bit){
sel_bit=1;
gg_bit_flash=1;
// gg_ram=0;
gx_ram=0;
}
else {
sel_bit=0;
gg_bit_flash=0;
gx_bit_flash=0;
gx_ram=0;
canshu_deal();
}
}
//----------------------------------------------------
void enter_sub(void)
{
if(!(prog_bit|sel_bit)) return;
if(prog_bit){
if(gg_bit_flash) { gx_bit_flash=1; gg_bit_flash=0; return; }
if(gx_bit_flash) { fx_bit_flash=1; gx_bit_flash=0; key_number=0;return; }
if(fx_bit_flash) { zs_bit_flash=1; fx_bit_flash=0; return; }
if(zs_bit_flash) { gg_bit_flash=1; zs_bit_flash=0; return; }
}
else {
if(gg_bit_flash) { gx_bit_flash=1; gg_bit_flash=0; return; }
if(gx_bit_flash) { gg_bit_flash=1; gx_bit_flash=0; return; }
}
}
void esc_sub(void)
{
unsigned char i,j;
if(sel_bit|start_bit_stop) return;
if(prog_bit){
if(gg_bit_flash) {
j=gg_ram*xh_ram_length;
i=20;
while(i){
i--;
gg_2401_ram[i+j]=0;
}
return;
}
if(gx_bit_flash) {
zs_ram_0=0;
zs_ram_1=0;
fx_ram=0;
i=gg_ram*xh_ram_length ;
if(gx_ram) gg_2401_ram[i+1]=gg_2401_ram[i+1]&(~(1<<(gx_ram-1)));
else gg_2401_ram[i]=gg_2401_ram[i]&0x7f;
i=i+(gx_ram+1)*2;
gg_2401_ram[i]=0; // clear ram
gg_2401_ram[i+1]=0; // clear ram
}
}
else{
zs_ram_0=0;
zs_ram_1=0;
gx_ram++;
if(gx_ram==gx_max+1) gx_ram=0;
else { // 2004.9.4
canshu_deal();
if((zs_ram_0==0)&&(zs_ram_1==0)) gx_ram=0;
} // 2004.9.4
if(gx_ram==0) canshu_deal();
}
}
void up_sub(void)
{
unsigned char i;
if(!(prog_bit|sel_bit)) return;
key_dms10=0;
key_bit_press=0;
if(prog_bit){
if(zs_bit_flash){
if(++key_number==4) key_number=0;
}
if(gg_bit_flash&&(gg_ram<gg_max)) {
gg_ram++;
gx_ram=0;
}
if(gx_bit_flash&&(gx_ram<gx_max)) gx_ram++;
if(fx_bit_flash) {
if(fx_ram) return ;
fx_ram=1;
i=gg_ram*xh_ram_length;
if(gx_ram) gg_2401_ram[i+1]=gg_2401_ram[i+1]|(1<<(gx_ram-1));
else gg_2401_ram[i]=gg_2401_ram[i]|0x80;
}
}
else {
if(gg_bit_flash&&(gg_ram<gg_max)){
gg_ram++;
gx_ram=0;
}
if(gx_bit_flash&&(gx_ram<gx_max)) gx_ram++;
}
}
void down_sub(void)
{
unsigned char i;
if(!(prog_bit|sel_bit)) return;
key_dms10=0;
key_bit_press=0;
if(prog_bit){
if(zs_bit_flash) {
if(key_number==0) key_number=3;
else key_number--;
}
if(gg_bit_flash&&(gg_ram>0)) {
gg_ram--;
gx_ram=0;
}
if(gx_bit_flash&&(gx_ram>0)) gx_ram--;
if(fx_bit_flash&&fx_ram){
fx_ram=0;
i=gg_ram*xh_ram_length;
if(gx_ram==0) gg_2401_ram[i]=gg_2401_ram[i]&0x7f;
else gg_2401_ram[i+1]=gg_2401_ram[i+1]&(~(1<<(gx_ram-1)));
}
}
else {
if(gg_bit_flash&&(gg_ram>0)){
gg_ram--;
gx_ram=0;
}
if(gx_bit_flash&&(gx_ram>0)) gx_ram--;
}
}
void key_deal(void)
{
unsigned char i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -