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

📄 24cxx_rs232.c

📁 强联单片机W804开发板C源码 可在强联的多种开发板上运行
💻 C
字号:
 
#include<reg51.h>
#include<intrins.h>
#include<stdio.h>
#include<string.h>

#define UN  unsigned char
 
void csf();
UN  d10[4];
void del05s();
 
void  ask();
void stop();
void start();
UN rdby();
void waddr();
void wrby(UN x);
UN  raddr();
UN read(UN x);
void write(UN,UN x);
void d5ms();
void w8addr(UN x);
 
sbit    ESDA=P2^7;
sbit ECLK=P3^6;
 sbit    KEY=P2^0;
//sbit    jmw =P1^1;

UN btl_bz;
UN icxh;
/*
//gs=============
sbit    sdo =P1^5;
sbit    reset =P1^2;
sbit    sdi =P1^3;
sbit    sclk=P1^4;
sbit    ss=P1^6;
//sbit    reset=P3^5;
*/
//jia

unsigned int AllByte;//需读出的字节数不16位
/*
sbit    sdo =P1^3;
sbit    reset =P1^5;
sbit    sdi =P1^4;
sbit    sclk=P1^2;
sbit    ss=P1^6;
*/


sbit    lsledcs =P3^7;

/*
sbit    reset =P1^3;
sbit    ss=P1^4;
sbit    sdi =P1^5;
sbit    sdo =P1^6;
sbit    sclk=P1^7;
*/





void delay();
UN zh_adh8252r(UN x);
UN zh_adh8252w(UN x);
sfr16 DPTR=0x82;

sbit    ACC0=ACC^0;
sbit    ACC1=ACC^1;
sbit    ACC2=ACC^2;
sbit    ACC3=ACC^3;
sbit    ACC4=ACC^4;
sbit    ACC5=ACC^5;
sbit    ACC6=ACC^6;
sbit    ACC7=ACC^7;

unsigned char bdata bm;
sbit  bm0=bm^0;
sbit  bm1=bm^1;
sbit  bm2=bm^2;
sbit  bm3=bm^3;
sbit  bm4=bm^4;
sbit  bm5=bm^5;
sbit  bm6=bm^6;
sbit  bm7=bm^7;
UN data rmem[6]={0xff,0xff,0xff,0xff,0xff,0xff};
UN code ledcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,//0-9
                   0x88,0x83,0xa7,0xa1,0x86,0x8e};
void main()

{   unsigned int i,j;

	csf();
  while(1)
       {


         P0=0xff;
         lsledcs=1;
      j=0;
      while(j!=30)
      {
         i=0;
         do{
         P0=ledcode[0];
         P1=0xfe;
         delay();
         P0=ledcode[1];
         P1=0xfd;
         delay();
         P0=ledcode[2];
         P1=0xfb;
         delay();
         P0=ledcode[3];
         P1=0xf7;
         delay();
          i++;}
          while(i!=10);
        j++;
       }

       P1=0xff;
       del05s();
        
        }

}

void csf()
{

         TMOD=0x20;TH1=0xfd;TL1=0xfd;SCON=0x50;PCON|=0x80;TR1=1;

         EA=1;
         delay();
         ES=0;
    SBUF=0xf0;while(TI==0){;}TI=0;
    SBUF=0x01;while(TI==0){;}TI=0;
    SBUF=0x02;while(TI==0){;}TI=0;
    SBUF=0x03;while(TI==0){;}TI=0;ES=1;
 }


/*################################串口*/
  void surt() interrupt 4
   {UN surti; unsigned int cc1;
        surti=0;
        RI=0;
        P0=~P0;
        d10[surti]=SBUF;
       do
        {cc1=0xffff;
         surti++;
         while(RI==0){cc1--;if(cc1==0){goto surtint;}}
         RI=0;d10[surti]=SBUF;}
       while(surti!=2);
  if(d10[0]==0x55){write(d10[1],d10[2]);}
  else if(d10[0]==0xaa){ 
  	                  SBUF=read(d10[1]);
  	                  while(TI==0){;}TI=0;
  	                   } 

  surtint:;ES=1;

}


void delay()
{unsigned int kk=0xff;
    do{_nop_();kk--;}
    while(kk!=0);
   // ES=0;
   // KEY=1;
   // if(KEY==0){SBUF=0x99;while(TI==0){;}TI=0;}
   // ES=1;
}
void del05s()
{unsigned int kk=0xefff;
    do{_nop_();kk--;}
    while(kk!=0);
}





void  ask()
    {
    	unsigned int i=0xffff;
    	ESDA=1;_nop_();ECLK=1;_nop_();
    	do
    	{i--;
    	if(ESDA!=1)
    	   {ECLK=0;i=0;}
    	 }
    	 while(i!=0);
       }
/*###################################*/
void stop()
 {
 	  ECLK=0; _nop_();
 	  ESDA=0; _nop_();
 	  ECLK=1; _nop_();
 	  ESDA=1;_nop_();
 	  ECLK=0;_nop_();
 	  }
/*  */
/*###################################*/
/*24c256 start  */
void start()
 {
 	ESDA=1;_nop_();
 	ECLK=1;_nop_();
 	ESDA=0;_nop_();
 	ECLK=0;_nop_();
 	}
/*###################################*/
/*24c256 rdby  */
UN rdby()
 {      ESDA=1;
	ECLK=1;ACC7=ESDA;ECLK=0;
	ECLK=1;ACC6=ESDA;ECLK=0;
	ECLK=1;ACC5=ESDA;ECLK=0;
	ECLK=1;ACC4=ESDA;ECLK=0;
	ECLK=1;ACC3=ESDA;ECLK=0;
	ECLK=1;ACC2=ESDA;ECLK=0;
	ECLK=1;ACC1=ESDA;ECLK=0;
	ECLK=1;ACC0=ESDA;ECLK=0;
 	return(ACC);
}
/*###################################*/
/*24c256 waddr  */
 void waddr()
 {
 	start();
 	wrby(0xa0);
 	ask();}
/*###################################*/
/*24c256 raddr  */
 UN  raddr()
 {
 	start();
 	wrby(0xa1);
 	ask();
 	ACC=rdby();
 	stop();
 	return(ACC);
}
/*###################################*/
void wrby(UN x)

{       ACC=x;
        ESDA=ACC7;ECLK=1;ECLK=0;
        ESDA=ACC6;ECLK=1;ECLK=0;
        ESDA=ACC5;ECLK=1;ECLK=0;
        ESDA=ACC4;ECLK=1;ECLK=0;
        ESDA=ACC3;ECLK=1;ECLK=0;
        ESDA=ACC2;ECLK=1;ECLK=0;
        ESDA=ACC1;ECLK=1;ECLK=0;
        ESDA=ACC0;ECLK=1;ECLK=0;
	ESDA=1;ECLK=1;
 }
/*####################################*/
/*24c256 读出一字节  */
UN read(UN x)

  {     waddr();
        w8addr(x);
        ACC=raddr();
  return(ACC);
  }
 /*######################################*/
/*24c256 记忆一字节  */
void write(UN f,UN x)
   {    //EWP=0;
   	waddr();
  	w8addr(f);
   	wrby(x);
   	ask();
   	stop();
   	d5ms();
   	//EWP=1;
   }
/* 延时*/
void d5ms()
 { UN a, b;
   for (a=0;a<=15;a++)
   {
     for (b=0;b<0x7f;b++)
         {;}
   }
 }
/*void d6us()
{  UNC a;
 for (a=0;a<=10;a++)
     {;}
       }
/*################################写入256的16位地址*/
void w8addr(UN  x)
      { 
            wrby(x );
            ask();
             
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -