spi.c

来自「PIC单片机模拟SPI口」· C语言 代码 · 共 42 行

C
42
字号
uchar rdbyte_spi(void)            //从目标片读字节                                                                                                                                                                                                                                                                                                       
               {	                                                                                                                                                                                                                                                                                                                                                 
               	       uchar i ;                                                                                                                                                                                                                                                                                                                                        
               	       union bkind rwbuf;                                                                                                                                                                                                                                                                                                                               
                       PORTFD&=0xEF;                                                                                                                                                                                                                                                                                                                                    
                       PORTF=PORTFD;                                                                                                                                                                                                                                                                                                                                    
                       delay(2);                                                                                                                                                                                                                                                                                                                                      
               	       for(i=0;i<8;i++)                                                                                                                                                                                                                                                                                                                                 
               	       {                                                                                                                                                                                                                                                                                                                                                
                           PORTFD|=0x10;                                                                                                                                                                                                                                                                                                                                
                           PORTF=PORTFD;                                                                                                                                                                                                                                                                                                                                
                           rwbuf.x<<=1;                                                                                                                                                                                                                                                                                                                                 
                           if(PORTFbits.RF5) rwbuf.x|=0x01;                                                                                                                                                                                                                                                                                                             
                           delay(2);                                                                                                                                                                                                                                                                                                                                  
                           PORTFD&=0xEF;                                                                                                                                                                                                                                                                                                                                
                           PORTF=PORTFD;                                                                                                                                                                                                                                                                                                                                
                           delay(2);                                                                                                                                                                                                                                                                                                                                  
               	        }                                                                                                                                                                                                                                                                                                                                               
                       return rwbuf.x;                                                                                                                                                                                                                                                                                                                                  
               }                                                                                                                                                                                                                                                                                                                                                       
               void writebyte_spi(uchar trdata)      //向目标片写字节                                                                                                                                                                                                                                                                                                      
               {                                                                                                                                                                                                                                                                                                                                                        
               	       uchar i ;                                                                                                                                                                                                                                                                                                                                        
                       union bkind rwbuf;	                                                                                                                                                                                                                                                                                                                         
               	       rwbuf.x=trdata;                                                                                                                                                                                                                                                                                                                                  
                       PORTFD&=0xEF;                                                                                                                                                                                                                                                                                                                                    
                       PORTF=PORTFD;                                                                                                                                                                                                                                                                                                                                    
                       delay(2);         	                                                                                                                                                                                                                                                                                                                         
               	       for(i=0;i<8;i++)                                                                                                                                                                                                                                                                                                                                 
               	       {                                                                                                                                                                                                                                                                                                                                                
               	             if(rwbuf.b.b7) {PORTFD|=0x40;PORTF=PORTFD;	}                                                                                                                                                                                                                                                                                        
                             else           { PORTFD&=0xbf;PORTF=PORTFD;	}                                                                                                                                                                                                                                                                                        
                             delay(2);                                                                                                                                                                                                                                                                                                                                
                             PORTFD|=0x10;                                                                                                                                                                                                                                                                                                                              
                             PORTF=PORTFD;              	                                                                                                                                                                                                                                                                                                         
                             rwbuf.x<<=1;                                                                                                                                                                                                                                                                                                                               
                             PORTFD&=0xEF;                                                                                                                                                                                                                                                                                                                              
                             PORTF=PORTFD;                                                                                                                                                                                                                                                                                                                              
                             delay(2);                    	       	                                                                                                                                                                                                                                                                                                 
               	       }                                                                                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                                                                                        
               }                             

⌨️ 快捷键说明

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