📄 back_up.c
字号:
/************************************************************
* Processer : Microchip PIC16C57 *
* Compiler : Hi-TECH PICC 8.01 PL3 *
* Writer : Karm Duan *
* Description : It can read/write MII Phy Register *
*************************************************************/
#include <pic.h>
__CONFIG(XT&PROTECT&WDTDIS);
#define uchar unsigned char
#define uint unsigned int
//;HARDWARE
#define DIG4 RB0
#define DIG5 RB1
#define KEY RB3
#define POINT1 RB4
#define POINT2 RB5
#define SDA RB6
#define SCL RB7
#define cs_347 RB2
#define di_347 RB6
#define ck_347 RB7
#define do_347 RA4
#define IR RA0
#define DIG1 RA2
#define DIG2 RA3
#define DIG3 RA1
#define digital PORTC
#define INIT_RA 0x11//0X07
#define INIT_RB 0X38
#define INIT_RC 0X00
#define _NOP_() asm("nop")
#define NOWDT() asm("CLRWDT")
//static volatile unsigned char PORTC @ 0x07;
//static volatile bit SCL_CON @ (unsigned)&TRISC*8+3;
//------------INTER RAM INPUT -----------------------
bank1 uchar rembyte,rembyte1,mhz,khz,freq,mvolg,fvolg,svolg,
cvolg,swvolg,input,times,buf_g31,buf_g41;
static volatile uchar ACC @ 0X7f;
static volatile bit ACC0 @ (unsigned)&ACC*8+0;
static volatile bit ACC1 @ (unsigned)&ACC*8+1;
static volatile bit ACC2 @ (unsigned)&ACC*8+2;
static volatile bit ACC3 @ (unsigned)&ACC*8+3;
static volatile bit ADDD @ (unsigned)&ACC*8+4;
static volatile bit FG_CEN @ (unsigned)&ACC*8+5;
static volatile bit FG_SUR @ (unsigned)&ACC*8+6;
static volatile bit FM_AM @ (unsigned)&ACC*8+7;
static volatile uchar flag @ 0X7e;
static volatile bit POWER @ (unsigned)&flag*8+7;
static volatile bit MUTE @ (unsigned)&flag*8+6;
static volatile bit AK47 @ (unsigned)&flag*8+5;
static volatile bit KEY_DOWN @(unsigned)&flag*8+4;
static volatile bit FLAG_ME @ (unsigned)&flag*8+3;
static volatile bit first_dis @ (unsigned)&flag*8+2;
static volatile bit KEYED @ (unsigned)&flag*8+1;
static volatile bit OUTMODE @ (unsigned)&flag*8+0; //=1 5.1OUT; =0 2.1 OUT
static volatile uchar FBIT @ 0X7d;
static volatile bit BIT1 @ (unsigned)&FBIT*8+7;
static volatile bit BIT2 @ (unsigned)&FBIT*8+6;
static volatile bit BIT3 @ (unsigned)&FBIT*8+5;
static volatile bit BIT4 @ (unsigned)&FBIT*8+4;
static volatile bit BIT5 @ (unsigned)&FBIT*8+3;
static volatile bit POINT11 @ (unsigned)&FBIT*8+2;
static volatile bit POINT22 @ (unsigned)&FBIT*8+1;
//static volatile bit REMED @ (unsigned)&FBIT*8+0;
static volatile uchar charge_dis @ 0X7c;
static volatile uchar buf_g1 @ 0X70;
static volatile uchar buf_g2 @ 0X71;
static volatile uchar buf_g3 @ 0X72;
static volatile uchar buf_g4 @ 0X73;
static volatile uchar buf_g5 @ 0X77;
static volatile bit LED51 @ (unsigned)&buf_g5*8+0;
static volatile bit LED20 @ (unsigned)&buf_g5*8+1;
static volatile bit LEDRD @ (unsigned)&buf_g5*8+2;
static volatile bit LED21 @ (unsigned)&buf_g5*8+3;
static volatile bit LEDSTB @ (unsigned)&buf_g5*8+4;
static volatile bit LEDMUT @ (unsigned)&buf_g5*8+5;
static volatile bit LED6 @ (unsigned)&buf_g5*8+6;
static volatile bit LED7 @ (unsigned)&buf_g5*8+7;
static volatile uchar times4 @ 0X5C;
static volatile uchar times3 @ 0X5d;
static volatile uchar times2 @ 0X5e;
static volatile uchar station_me @ 0X5f;
static volatile uchar byte_1 @ 0X60;
static volatile uchar byte_2 @ 0X61;
static volatile uchar byte_3 @ 0X62;
static volatile uchar station_fm @ 0X63;
static volatile uchar station_am @ 0X64;
static volatile uchar volflag @ 0X65;
void s24(void);
void p24(void);
void masterack();
void noack();
unsigned char rd24(void);
void wd24(uchar sendbyte);
void write(uchar address,uchar shiftdata);
unsigned char read(uchar address);
void send_pt2323(void);
void send_tda7448(void);
void dlms(uchar num);
void remote (void);
void display (void);
uchar chg_vol(void);
void remotefun(uchar rembyte);
bank2 uchar remba(uchar dd);
//-----------------------------------------
void wd347a(uchar dd);
void send_mode1(uchar dd);
void send_mode2(uchar dd1);
void up_radio(void);
bank1 uchar remb(uchar dd);
uchar scan_key(void);
/*******************************************************/
void interrupt timer0_isr(void)
{
if(T0IF)
{
display();
T0IF = 0;
TMR0=0XF0;
times--;
if(times2>0)times2--;
if(times2==0)
{ times2=0xff;
if(times3>0)times3--;
if(times3==0)
{
times3=0x0f;
_NOP_();
volflag=0,rembyte1=0;
buf_g3=buf_g31,buf_g4=buf_g41;
if(input==0) buf_g1=0x6f,buf_g2=0x30;
else if(input==1)buf_g1=0xd7,buf_g2=0xfc;
else
{
if(!FM_AM) buf_g1=0xBD;
else buf_g1=0x8D;
buf_g2=0x00;
}
}
}
}
}
/////---------------------------------------------------
void main(void)
{
uchar k;
OPTION=0X05;
T0IE=0X01;
TMR0 = 0X00; // preload timer
T1CON= 0X01;
T2CON= 0X06;
GIE = 1;
//-----------------------------------------------------
ADCON1=0X07;
TRISA=INIT_RA;
TRISB=INIT_RB;
TRISC=INIT_RC;
do_347=1;
do_347=0;
FBIT=0X00;
BIT1=1;
write(4,9);
dlms(100);
TMR0=read(4);
buf_g5=0;
times3=0x15,times4=0;
input=0,buf_g1=0x6f,buf_g2=0x30,LED51=1,LED20=0,LEDRD=0;
OUTMODE=1,LED21=1;
DIG1=1,DIG2=1,DIG3=1,DIG4=1,DIG5=1;
POWER=0,volflag=0;
dlms(200);
mvolg=30,fvolg=0x05,cvolg=0x05,svolg=0x05,swvolg=0x05;
buf_g3=buf_g31=remb((mvolg-10)/10), buf_g4=buf_g41=remb((mvolg-10)%10);
byte_1=0xb6;byte_2=0x07;
FM_AM=1,byte_3=0xe6,FLAG_ME=0;
station_fm=1,station_am=1;
send_pt2323();
send_tda7448();
for( ;;)
{
NOWDT();
// up_radio();
if((k=chg_vol())!=0)
{
POWER=1,MUTE=0;
remotefun(k);
}
if(!IR)remote();
if(rembyte!=0)
{
remotefun(rembyte);
rembyte=0;
}
if(((scan_key())&(!KEY_DOWN)))
{
KEY_DOWN=1;
remotefun(3);
}
}
}
//----------------------------------------------------------
uchar chg_vol(void)
{
unsigned int i;
unsigned char y;
uchar ab=0;
for(y=0;y<3;y++)
{
POINT1=1;
POINT2=1;
if((POINT1 & POINT2))
{
for(i=0; i <50; i++)
{
if((!POINT1) & POINT2)
{
volflag=0;
return(12);
}
if(POINT1 & (!POINT2))
{
volflag=0;
return(14);
}
}
}
return (0);
}
}
//------------------------------------*/
//***********************************************//
////////////////////////////////////////
void dlms(uchar num)//延时
{
uchar i;
for(;num!=0;num--)
for(i=140;i>0;i--);
}
////////////////////////////////////////////////////
void remote (void)
{
uchar i,j=0,k,l,m,n;
TMR1H=0X00,TMR1L=0X00;//charge_dis=0;
do{
if(TMR1H>0X50) break;
}while(IR==0);
if(TMR1H>=0X30)
{ TMR1H=0X00,TMR1L=0X00;//charge_dis=0;
do{
}while(IR==1);
if(TMR1H>=0X14)
{
for(i=0;i<=23;i++)
{
TMR1H=0X00,TMR1L=0X00;//charge_dis=0;
do
{
}while(IR==0);
if(TMR1H!=0)
{
TMR1H=0X00,TMR1L=0X00;//charge_dis=0;
do
{
if(TMR1H>20) goto out_rmt;
}while(IR==1);
if((TMR1H>5)&(TMR1H<11))k=k&0xfe;
else k=k|0x01;
j++;
if(j<=8)
{
if(j<=7)k=k<<1;
else if(j==8)j=0;
}
switch (i)
{
case 7: l=k;break;
case 15: m=k;break;
case 23:
{
n=k;
if(l==0xff)
{
if (n==0xfe) rembyte=1;
else if(n==0xbe) rembyte=2;
else if(n==0xde) rembyte=3;
else if(n==0x5e) rembyte=4;
else if(n==0x9e) rembyte=5;
else if(n==0xee) rembyte=6;
else if(n==0x6e) rembyte=7;
else if(n==0xae) rembyte=8;
else if(n==0xce) rembyte=9;
else if(n==0x4e) rembyte=10;
else if(n==0x8e) rembyte=11;
else if(n==0xf6) rembyte=12;
else if(n==0x76) rembyte=13;
else if(n==0xd6) rembyte=14;
else if(n==0x96) rembyte=15;
rembyte1=rembyte;
}
break;
}
}
}
}
}
else if(AK47)
{
if(times4>=2)
rembyte=rembyte1,times4=1;
else rembyte=0,times4++;
}
}
out_rmt:
_NOP_();
}
//////////////////////////////////////////////////////////////
//**********************************************************//
uchar scan_key(void)
{
if(KEY==0)
{
dlms(10);
if(!KEY)
KEYED=1;
return(1);
}
KEYED=0;
KEY_DOWN=0;
return(0);
}
//---------------------------------------------
void write(uchar address,uchar shiftdata)
{
s24();
wd24(0xa0);
wd24(address);
wd24(shiftdata);
p24();
}
unsigned char read(uchar address)
{
uchar dd;
s24();
wd24(0xa0);
wd24(address);
//------------------------------
s24();
wd24(0xa1);
dd=rd24();
p24();
return(dd);
}
/*99999999999999999999999999999
00000000000000000000000000000*/
void wd347a(uchar dd)
{
unsigned char ai;
for (ai=8;ai>0;ai--)
{
ck_347=0;
di_347=(bit)(dd&0x1);
dd>>=1;
ck_347=1;
}
// return(0);
}
////////////////////////////////////////
void up_radio(void)
{
uint bi;
GIE=0;
if(FM_AM)
{
bi=byte_1+256*byte_2;
if(!first_dis)
{
if(ADDD)
{
if(bi<(0x0945))bi=bi+2;
else bi=0x07b6;
}
else
{
if(bi>(0x07b7))bi=bi-2;
else bi=0x0946;
}
byte_2=bi/256,byte_1=bi-256*byte_2;
}
bi=(bi-0x07b6)/2+880;
mhz=bi/10,khz=bi%10;
buf_g1=mhz/100,buf_g2=(mhz%100)/10,buf_g3=(mhz%100)%10,buf_g4=khz;
send_mode1(0x22);
send_mode2(0x20);
}
else
{
if(!first_dis)
{
if(ADDD)
{
if(byte_3<(0xe6-9)) byte_3=byte_3+1;
else byte_3=0x6c;
}
else
{
if(byte_3>(0x6c+9))byte_3=byte_3-1;
else byte_3=0xe6;
}
}
bi=(byte_3*9)-450;
buf_g1=bi/1000,buf_g2=(bi%1000)/100;
buf_g3=((bi%1000)%100)/10,buf_g4=((bi%1000)%100)%10;
send_mode1(0x90);
send_mode2(0x20);
}
first_dis=0;
GIE=1;
}
//////////////////////////////////////////////////
//////////////////////////////////////////////////
void send_mode1(uchar dd)
{ uchar i,j;
if(FM_AM)
{
cs_347=0;
wd347a(0x28);
i=byte_1,j=byte_2;
}
else
{
cs_347=0;
wd347a(0x28);
i=(byte_3&0xf)<<4;
j=(byte_3&0xf0)>>4;
}
cs_347=1;
wd347a(i);//(byte_1);
wd347a(j);//(byte_2);
wd347a(dd); //dd=0x22
cs_347=0;
}
/*********************************/
/*********************************/
void send_mode2(uchar add1)
{
cs_347=0;
wd347a(0x29);
cs_347=1;
wd347a(add1); //dd1=0x20 //ioc1 ioc2 io1 io2 b01 b02 b03 b04;
wd347a(0x00);
wd347a(0x12);
cs_347=0;
}
//----------------------------------------------------
void display(void)
{
digital=0x00;
if(BIT1)
{
BIT1=0,BIT2=1;
DIG1=0,DIG5=1;
if(POWER)
digital=buf_g1;
}
else if(BIT2)
{
BIT2=0,BIT3=1;
DIG2=0,DIG1=1;
if(POWER)
digital=buf_g2;
}
else if(BIT3)
{
BIT3=0,BIT4=1;
DIG3=0,DIG2=1;
if(POWER)
digital=buf_g3;
}
else if(BIT4)
{
BIT4=0,BIT5=1;
DIG4=0,DIG3=1;
if(POWER)
digital=buf_g4;
}
else if(BIT5)
{
BIT5=0,BIT1=1;
DIG5=0,DIG4=1;
if(MUTE)
{
if(times==0)
{
if(LEDMUT)LEDMUT=0;
else LEDMUT=1;
times=255;
}
}
else LEDMUT=0;
if(POWER)digital=buf_g5;
else digital=0x10;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -