⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 back_up.c

📁 C语言程序,LC72131+PIC16C63+PT2258
💻 C
📖 第 1 页 / 共 2 页
字号:

/************************************************************
*	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 + -