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

📄 reg932_isp.c

📁 上学时做的一个51单片机按键显示程序
💻 C
字号:
#include "include/REG932_ISP.H" 
#define uchar unsigned char			//宏
#define uint  unsigned  int

void  (*Excute_ISP)(); 				//定义ISP函数指针 
void  ISP_932(void);				//932-ISP引导程序
void  DSP_ISP(void);				//932-ISP引导动画
void  wait750ms_ISP(void);			//750ms延时程序
void  CLS_ISP(void);				//清空显示
void  display_ISP(uchar k_ISP);			//第1/2行显示程序
void  send_byte_ISP(uchar buf_ISP,r_ISP);	//串行1/2发送1字节
void  CLRWDTEXP_ISP(void);			//喂狗程序

sbit PIN_ISP =P2^7;				//ISP跳线设置引脚
sbit clk1_ISP=P1^6;				//模拟串行I/O引脚
sbit dat1_ISP=P1^7;
sbit clk2_ISP=P2^6;
sbit dat2_ISP=P2^7;
uchar DIS_ISP[8];				//显示缓冲区
 
//===================================================================
void ISP_932(void) 				//932-ISP引导程序
{  uchar i_ISP;
   P1M1=0x00; 
   P1M2=0x00; 					//设置P1口为准双向
   P2M1=0x00; 
   P2M2=0x00; 					//设置P2口为准双向 
   Excute_ISP=0x1E00; 				//ISP代码指针为0x1F00 
   CLRWDTEXP_ISP();
   CLS_ISP();					//清空显示
   if(PIN_ISP==0) 				//跳线设置为ISP方式?
      {for(i_ISP=0;i_ISP<250;i_ISP++) ;		//短延时
       if(PIN_ISP==0)				//跳线设置为ISP方式?
          {
           DSP_ISP();				//932-ISP引导动画
           Excute_ISP();			//调用ISP程序
           } 			
       } 
 }
//--------------------------------------------------------------------
void  DSP_ISP(void)				//932-ISP引导动画
{  //uchar j_ISP;
   CLRWDTEXP_ISP();
   DIS_ISP[0]=0x14;	
   DIS_ISP[1]=0x67;
   DIS_ISP[2]=0xF1;
   DIS_ISP[3]=0x00;
   DIS_ISP[4]=0x00;
   DIS_ISP[5]=0x00;
   DIS_ISP[6]=0x14;	
   DIS_ISP[7]=0xF4;
   SS=1;
   SPICLK=1;
   display_ISP(1);				//显示字符ISP   IN
   wait750ms_ISP();				//保持
     DIS_ISP[3]=0x02;
     display_ISP(1);				//显示字符ISP-  IN
     wait750ms_ISP();				//保持
       DIS_ISP[4]=0x40;
       display_ISP(1);				//显示字符ISP-- IN
       wait750ms_ISP();				//保持
         DIS_ISP[5]=0x02;
         display_ISP(1);			//显示字符ISP---IN
         wait750ms_ISP();			//保持
 }
//--------------------------------------------------------------------
void wait750ms_ISP(void)			//750ms延时程序
{ uchar i_ISP,j_ISP; 
  for(i_ISP=0;i_ISP<255;i_ISP++)	
     {for(j_ISP=0;j_ISP<255;j_ISP++)
         {CLRWDTEXP_ISP();}
      }
 }
//--------------------------------------------------------------------
void CLRWDTEXP_ISP(void)			//喂狗程序
{ bit eacopy;
   eacopy=EA;
   EA=0;
   WFEED1=0xA5;
   WFEED2=0x5A;
   EA=eacopy;
 }
//--------------------------------------------------------------------
void  CLS_ISP(void)				//清空显示
{ uchar i_ISP;
  for(i_ISP=0;i_ISP<8;i_ISP++)			
       {DIS_ISP[i_ISP]=0;}
        SS=1;
        SPICLK=1;
        display_ISP(1);				
        display_ISP(2);	
        display_ISP(1);				
        display_ISP(2);		
 }
//--------------------------------------------------------------------
void  display_ISP(uchar k_ISP)			//第1/2行显示程序
{uchar i_ISP;
 CLRWDTEXP_ISP();
 for(i_ISP=0;i_ISP<8;i_ISP++)			//送给8个LED显示
   {send_byte_ISP(~DIS_ISP[i_ISP],k_ISP);}
 }
//--------------------------------------------------------------------
void  send_byte_ISP(uchar buf_ISP,r_ISP)	//向模拟串口发送一字节
{
 uchar i_ISP,j_ISP;
 if(r_ISP==1)
   { for(i_ISP=0;i_ISP<8;i_ISP++)		//移位8次输出buf_ISP
       {
	 	if(buf_ISP&0x01==0x01)		//d.0位为1?
 	  	{dat1_ISP=1;}			//dat1输出1
	 	else
	  	{dat1_ISP=0;}			//dat1输出0
	 	clk1_ISP=1;			//发移位脉冲
	 	for(j_ISP=0;j_ISP<5;j_ISP++) ;	//短延时
	 	clk1_ISP=0;			//撤消移位脉冲
	 	buf_ISP=buf_ISP>>1;		//字型码逐位移出
	}
    }
 if(r_ISP==2)
   { for(i_ISP=0;i_ISP<8;i_ISP++)		//移位8次输出buf_ISP
       {
	 	if(buf_ISP&0x01==0x01)		//d.0位为1?
 	  	{dat2_ISP=1;}			//dat2输出1
	 	else
	  	{dat2_ISP=0;}			//dat2输出0
	 	clk2_ISP=1;			//发移位脉冲
	 	for(j_ISP=0;j_ISP<5;j_ISP++) ;	//短延时
	 	clk2_ISP=0;			//撤消移位脉冲
	 	buf_ISP=buf_ISP>>1;		//字型码逐位移出
	}
    }
 }
//--------------------------------------------------------------------

⌨️ 快捷键说明

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