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

📄 copy of main.c

📁 HCS08例程: 本程序是SPI模块的例程
💻 C
字号:
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */



#define b_da  PTBD_PTBD3
#define b_dai PTBD_PTBD4
#define b_clk PTBD_PTBD2
#define b_cs  PTBD_PTBD5

typedef union {
  byte Byte;
  struct {
    byte B0       :1;                                       /* Port B Data Register Bit 0 */
    byte B1       :1;                                       /* Port B Data Register Bit 1 */
    byte B2       :1;                                       /* Port B Data Register Bit 2 */
    byte B3       :1;                                       /* Port B Data Register Bit 3 */
    byte B4       :1;                                       /* Port B Data Register Bit 4 */
    byte B5       :1;                                       /* Port B Data Register Bit 5 */
    byte B6       :1;                                       /* Port B Data Register Bit 6 */
    byte B7       :1;                                       /* Port B Data Register Bit 7 */
  } Bits;
} BUFFER;
 BUFFER _buffer ;
#define buffer                            _buffer.Byte
#define buffer_b7                      _buffer.Bits.B0
#define buffer_b6                      _buffer.Bits.B1
#define buffer_b5                      _buffer.Bits.B2
#define buffer_b4                      _buffer.Bits.B3
#define buffer_b3                      _buffer.Bits.B4
#define buffer_b2                      _buffer.Bits.B5
#define buffer_b1                      _buffer.Bits.B6
#define buffer_b0                      _buffer.Bits.B7

 BUFFER _buffer1 ;
#define buffer3                         _buffer1.Byte
#define buffer3_b7                      _buffer1.Bits.B0
#define buffer3_b6                      _buffer1.Bits.B1
#define buffer3_b5                      _buffer1.Bits.B2
#define buffer3_b4                      _buffer1.Bits.B3
#define buffer3_b3                      _buffer1.Bits.B4
#define buffer3_b2                      _buffer1.Bits.B5
#define buffer3_b1                      _buffer1.Bits.B6
#define buffer3_b0                      _buffer1.Bits.B7

unsigned char dizhi,m; 

unsigned char rebuff1=0xaa;
unsigned char rebuff2=0x22;
unsigned char rebuff3=0x00;
unsigned char rebuff4=0x00;
unsigned char rebuff5=0x22;
unsigned char rebuff6=0x22;
unsigned char rebuff7=0x22;

unsigned char rebuff8=0x22;
unsigned char rebuff9=0x22;

void yanshi(void);





void xieyunxu(void) ;

void WRITEDATA(void) ;

void WRITEEN(void)  ;

void READDATA(void);

 
///////////////////////
void main(void) {


  PTBDD_PTBDD5=1;
  
  xieyunxu(); 
  
  yanshi();
  
  yanshi();
  
  SPIC1=0X50;
  SPIC2=0X00;
  SPIBR=0X33;
  
  EnableInterrupts; 
  
   m=0;
   for(;m<0x03f;m++)
   WRITEDATA();
 
 
 
  for(;;) {
   
    __RESET_WATCHDOG(); /* feeds the dog */
      
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
   
 // m=0;
 //  for(;m<0x03f;m++)
 //  WRITEDATA();
  
  READDATA();
  
  asm{
  nop
  };
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
  yanshi();
  
/*  
 
for(dizhi=0x3f;dizhi!=0;dizhi--) {
  
xiechengxu(dizhi);
  asm{
  nop
  } EnableInterrupts; 
  
   yanshi();

yanshi();

  yanshi();

yanshi();
}
  
  duchengxu();
  
 yanshi();
 
  asm{
  nop
  }
  yanshi();
 */ 
}


  }  



void WRITEDATA(void) {

    SPIC1=0X50;
    SPIC2=0X00;
    SPIBR=0X33;
     
     b_cs=0;
     yanshi();
 
     b_cs=1;
     yanshi();
     
     SPID=0X01;
    
     while(!SPIS_SPTEF);
     
     SPID=0X40+m;
     
     while(!SPIS_SPTEF);
     
     SPID=0Xde;
     
     while(!SPIS_SPTEF);
     
     SPID=0X39;
     
     while(!SPIS_SPTEF);
     
     SPID=0X00;
     
     while(!SPIS_SPTEF);
     
     
    
     yanshi();
     
     yanshi();
     yanshi();

     yanshi();
     yanshi();
     b_cs=0;
     yanshi();
     yanshi();
     
     
     }
     


void READDATA(void) {


     SPIC1=0X50;  
     
     
          
     b_cs=0;
     yanshi();
     yanshi();
     yanshi();
     yanshi();
     
     b_cs=1;
     
     yanshi();
      
     SPID=0X01;
     
     while(!SPIS_SPTEF);
     
     rebuff1=SPID;
     
     SPID=0X80;     
     
     while(!SPIS_SPTEF);
      
     
     SPID=0X00;     
     
     while(!SPIS_SPTEF);
     
     rebuff1=SPID;
     
     while(!SPIS_SPRF) ;
     
     rebuff1=SPID;
     
     
     SPID=0X00;
     
     while(!SPIS_SPTEF);
     
     rebuff1=SPID;
     
     
     while(!SPIS_SPRF) ;
     
     rebuff2=SPID;
     
      ///////////////////////////////   
     SPID=0X00;
     
     while(!SPIS_SPTEF);
     rebuff2=SPID;
     while(!SPIS_SPRF);
     
     rebuff3=SPID;
         
     
     SPID=0X00;
     
    while(!SPIS_SPTEF);
     rebuff3=SPID;
     
     
      //////////////////////////////
    SPIC1=0X00;
    
    
    /* 
    if(rebuff2&(1<<7))
    
    rebuff1=(rebuff1<<1+1);
    
    else rebuff1=(rebuff1<<1+0);
    
    
   if(rebuff3&(1<<7))
    
    rebuff2=(rebuff2<<1+1);
    
    else rebuff2=(rebuff2<<1+0);
    
    */ 
     yanshi(); 
     yanshi();
     yanshi();
     yanshi(); 
     yanshi();
     b_cs=0;
     yanshi();

}


void yanshi(void){
unsigned char i;

for(i=0;i<10;i++)__RESET_WATCHDOG();
}

     
void WRITEEN(void) {
     b_cs=0;
     yanshi(); 
     b_cs=1;
     yanshi();
     
     SPID=0X01;
     
     while(!SPIS_SPTEF);
     SPID=0X30;
     while(!SPIS_SPTEF);
     yanshi();
      yanshi();
     b_cs=0;
       yanshi();
}


//模拟写允许
void xieyunxu(void){

 SPIC1=0;
 
 buffer=0xaa;
 
 PTBDD_PTBDD3=1;
 PTBDD_PTBDD4=0;
 PTBDD_PTBDD2=1;
 PTBDD_PTBDD5=1;

b_da=0;
b_clk=0;

b_cs=0;
yanshi();
b_cs=1;
yanshi();

b_da=1;
yanshi();
b_clk=1;
yanshi();    //>1
yanshi();

b_clk=0;
yanshi();
b_da=0;
yanshi();    //>0

b_clk=1;
yanshi();
yanshi();


b_clk=0;
yanshi();
b_da=0;
yanshi();    //>0   

b_clk=1;
yanshi();
yanshi();


b_clk=0;
yanshi();
b_da=1;
yanshi();    //>1  a5

b_clk=1;
yanshi();
yanshi();

b_clk=0;
yanshi();
b_da=1;
yanshi();    //>1  a4 

b_clk=1;
yanshi();
yanshi();

b_clk=0;
yanshi();
b_da=0;
yanshi();    //>0   a3

b_clk=1;
yanshi();
yanshi();

b_clk=0;
yanshi();
b_da=0;
yanshi();    //>0   a2

b_clk=1;
yanshi();
yanshi();

b_clk=0;
yanshi();
b_da=0;
yanshi();    //>0   a1

b_clk=1;
yanshi();
yanshi();

b_clk=0;
yanshi();
b_da=0;
yanshi();    //>0   a0

b_clk=1;
yanshi();
yanshi();

b_clk=0;
b_cs=0;

yanshi();
yanshi();


}

⌨️ 快捷键说明

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