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

📄 sfj1.c

📁 售饭机的源码程序,单片机开发使用,可以直接使用
💻 C
📖 第 1 页 / 共 3 页
字号:
            receivebuf[7]=(totalmoney-receivebuf[4]*10000-receivebuf[5]*1000-receivebuf[6]*100)/10;
            receivebuf[8]=totalmoney%10;
	
		       earnmoney=earnmoneytemp;
               earnmoney=earnmoney+(ulong)(totalmoney);
			 
            EA=0;
            ACC=STUS;  
            while(ACC2!=1) {ACC=STUS; }
            TXBID0=0x80|nodeaddress;
            TXBID1=0x08;
            TXBDATA0=nodeaddress;  
           
			TXBDATA1=0x56;
            TXBDATA2=receivebuf[4];   
            TXBDATA3=receivebuf[5];   
            TXBDATA4=receivebuf[6];   
            TXBDATA5=receivebuf[7];  
            TXBDATA6=receivebuf[8];   
           
			TXBDATA7=0;   
            
            COMD=0x01;    
            EA=1;
			receiveflag=2;
			keydoflag=0;
			havemoney=0;
			cancelstatus=0;
            for(i=0;i<13;i++) 
			  inputdata[i]=0;
            write728x(0x14,0x3f);
    		write728x(0x14,0xbf);
		   }
      	   }
		else if(receiveflag!=3)
		  {
		    if(firstnumflag==0)
			   {inputmoney();
	  		    receivebuf[0]=setmoney/256;
                receivebuf[1]=setmoney-(receivebuf[0]*256);
		 if(machinestatus==5)  
              {pointoff(); 
			   ISendStr(0xa0,2,&receivebuf,2);
	           spendmoney=setmoney;  
              dispmoney();
  		      pointbit=1;
			  behindnum=0;  
  		      firstnumflag=1;
              for(i=4;i<9;i++)
                 receivebuf[i]=0;
              
	  	      }
		 else if(machinestatus==3)  
              {ramaddress=10+(currentkind*2);
               ISendStr(0xa0,ramaddress,&receivebuf,2);
               displaybuf[0]=0x0d;  displaybuf[1]=0x13; displaybuf[2]=0x2f;  displaybuf[3]=0x3f; 
               repeatdisplay();
               for(i=0;i<16;i++)
                 write728x(0x14,displaybuf[i]);
     	       flashflag=1;
			   pointon();
	   		   enableauto=0;      	      
              }
			 }  
           }
           if(receiveflag==3 && kindmoney>0)
            {
          
			 earnmoney=earnmoneytemp;
			 earnmoney=earnmoney+kindmoney;
		
			receivebuf[4]=kindmoney/10000;
            receivebuf[5]=(kindmoney-receivebuf[4]*10000)/1000;
            receivebuf[6]=(uchar)((kindmoney-receivebuf[4]*10000-receivebuf[5]*1000)/100);
            receivebuf[7]=(uchar)((kindmoney-receivebuf[4]*10000-receivebuf[5]*1000-receivebuf[6]*100)/10);
            receivebuf[8]=(uchar)(kindmoney%10);
        
            EA=0;
            ACC=STUS;    
            while(ACC2!=1) {ACC=STUS; }
            TXBID0=0x80|nodeaddress;
            TXBID1=0x08;
            TXBDATA0=nodeaddress;   
            TXBDATA1=0x56;  
            TXBDATA2=receivebuf[4];   
            TXBDATA3=receivebuf[5];   
            TXBDATA4=receivebuf[6];   
            TXBDATA5=receivebuf[7];   
            TXBDATA6=receivebuf[8];   
            TXBDATA7=0x00;  
            COMD=0x01;  
            EA=1;
			receiveflag=2;
		
            kindmoney=0;
			cancelstatus=0;
			havemoney=0;
			}
		 if((searchflag==1)&&(clearflag==1))  
		{searchflag=0;
	
         pointoff();
		 receivebuf[0]=0;
         receivebuf[1]=0;
         receivebuf[2]=0;
		 ramaddress=0xd0;
         ISendStr(0xa0,ramaddress,&receivebuf,3);
         displaybuf[0]=0x0d;
         displaybuf[1]=0x1a;
         displaybuf[2]=0x2f;
         displaybuf[3]=0x3f;
         displaybuf[4]=0x4f;
         displaybuf[5]=0x50;
         displaybuf[6]=0x60;
         displaybuf[7]=0x70;
         repeatdisplay();
         for(i=0;i<16;i++)
             write728x(0x14,displaybuf[i]);
		 earnmoney=0;
		 earnmoneytemp=0;
		 ALARM=1;
 		 flashflag=0;
         Rst_Wdog();
         for(i=0;i<3;i++)
           {for(delayl=0;delayl<25000;delayl++) ;
            Rst_Wdog();
		   }
       }
		}
       else if(keyvalue==33)  
	    {
           if((pointbit==1)&&(flashflag==0)) 
              {pointbit=0;
			   behindnum=0;
			   pointnum3=0;
			   pointoff();
               if((receivebuf[3]==0x0a)&&(machinestatus==4))
			     {receivebuf[8]=receivebuf[8]|0x80;  
                		          		 
				 } 
               else if(receivebuf[4]==0x0a)
			     {receivebuf[8]=receivebuf[8]|0x80;  
                 	          		 
				 } 
               else 
			     {firstnumflag=0;
                  for(dispshift=4;dispshift<9;dispshift++)  receivebuf[dispshift]=0x0f;
				  write728x(0x14,0x2a);
				  write728x(0x14,0xaa);
				  write728x(0x14,0x30+receivebuf[4]);
				  write728x(0x14,0x40+receivebuf[5]);
				  write728x(0x14,0x50+receivebuf[6]);
				  write728x(0x14,0x60+receivebuf[7]);
				  write728x(0x14,0xb0+receivebuf[4]);
				  write728x(0x14,0xc0+receivebuf[5]);
				  write728x(0x14,0xd0+receivebuf[6]);
				  write728x(0x14,0xe0+receivebuf[7]);
   				  receivebuf[8]=0x80;
				  write728x(0x14,0x70);
				  write728x(0x14,0xf0);
				  cancelstatus=1;
                 } 
 				 if(machinestatus==4)
                     moneyflag=1;
				 
                  write728x(0x18,0x3f);
				  write728x(0x18,0x7f);		          		 
              } 
		   
     	}
       else if(flashflag==0)
        {numkey();
        
		}
        ALARM=1;  
		EA=1;
   		TR0=1; 
	
      }   

     if((SYS_STATE==0x11)&&(enablesend==1))  
      {EA=0;
	
	    ALARM=1;
       X_Sum=Rec_xorsum(Serial_Buf,Serial_Buf_NumSum);
       if(Serial_Buf[Serial_Buf_NumSum]==X_Sum)            
         { 	Sendbuf[0]=0xf0;
            Sendbuf[1]=0x02;
			Sendbuf[2]=0x02;
			Sendbuf[3]=0xf9;
			send(Sendbuf,4);                                      
    		 ALARM=1;
     	   pointoff();
           flashflag=0;
           T_Cnt=0;
           enablesend=0;
		 
	   	   ES=0;
           TR1=0;

	  
	   timeflag=0;  
       for(j=0;j<5;j++)
         Num_Buf[j]=(Serial_Buf[2*j]<<4)|Serial_Buf[2*j+1];

           sendorder=0x53;
                  cansend();
				   for(delayl=0;delayl<5000;delayl++) ;  
                    Rst_Wdog();
                   receiveflag=1;
      
	   }
	   SYS_STATE=0;
       enablesend=0;
	   EX0=1;
       EA=1;
      }
      if(receiveflag==1)
         {EA=0;
          ACC=STUS;
          if(ACC0==1)
            {
			canreceive();
           
             COMD=0x0c;  
             ACC=STUS;
			 receiveflag=0;
             if(ACC1==1)
                {ACC=ACC&0xfd;
              
                }
            EA=1;
		
              if(receivebuf[3]==0x55)
                { if(receivebuf[4]==0x0a){receivebuf[4]=0;}  
                if(receivebuf[5]==0x0a){receivebuf[5]=0;}  
                if(receivebuf[6]==0x0a){receivebuf[6]=0;}  
                if(receivebuf[7]==0x0a){receivebuf[7]=0;}  
                if(receivebuf[8]==0x0a){receivebuf[8]=0;} 
havemoney=receivebuf[4]*10000+receivebuf[5]*1000+receivebuf[6]*100+receivebuf[7]*10+receivebuf[8];
			   
 
                 if((receivebuf[5]==0)&&(receivebuf[4]==0))  receivebuf[5]=0x0f;  
                 if(receivebuf[4]==0)   receivebuf[4]=0x0f;
                 displaybuf[3]=0x30+receivebuf[4]; displaybuf[4]=0x40+receivebuf[5]; displaybuf[5]=0x50+receivebuf[6];
                 displaybuf[6]=0x60+receivebuf[7]; displaybuf[7]=0x70+receivebuf[8]; 
                 repeatdisplay();
                 for(i=0;i<16;i++)
                       write728x(0x14,displaybuf[i]);
				 write728x(0x18,0x2f);write728x(0x18,0x6f);
				 keydoflag=1;
				 workflag=1;
                 for(i=4;i<9;i++)   
                    receivebuf[i]=0;
                 if(machinestatus==3) 
				   {firstnumflag=1;
  				    kindmoney=0;
					receiveflag=3;
					cancelstatus=0;
				   }
                 else if(machinestatus==4) 
				   {firstnumflag=1;
  				    totalmoney=0;
					inputpoint=0;
					cancelstatus=0;
     	            for(i=0;i<13;i++)
	         		  inputdata[i]=0;

                    countok=1;
				   }
                 else if(machinestatus==5)  
	               {
		            
                    receivebuf[4]=spendmoney/10000;
                    receivebuf[5]=(spendmoney-receivebuf[4]*10000)/1000;
                    receivebuf[6]=(spendmoney-receivebuf[4]*10000-receivebuf[5]*1000)/100;
                    receivebuf[7]=(spendmoney-receivebuf[4]*10000-receivebuf[5]*1000-receivebuf[6]*100)/10;
                    receivebuf[8]=spendmoney%10;
			
                    EA=0;
                    ACC=STUS;    
                    while(ACC2!=1) {ACC=STUS; }
                    TXBID0=0x80|nodeaddress;
                    TXBID1=0x08;
                    TXBDATA0=nodeaddress;  
                    TXBDATA1=0x56;   
                    TXBDATA2=receivebuf[4];  
                    TXBDATA3=receivebuf[5];   
                    TXBDATA4=receivebuf[6];   
                    TXBDATA5=receivebuf[7];  
                    TXBDATA6=receivebuf[8];   
                    TXBDATA7=0x00;   
                    COMD=0x01;   
                   
                    EA=1;
 				    receiveflag=2;
					for(i=0;i<3;i++)
				      {for(delayl=0;delayl<20000;delayl++) ;  
                       Rst_Wdog();
					  }
                   
              	   }
                }
              else if(receivebuf[3]==0x54)  
                {receivebuf[8]=receivebuf[4]&0x0f;
                 displaybuf[3]=0x3f; displaybuf[4]=0x4f; displaybuf[5]=0x5b;
                 displaybuf[6]=0x6a; displaybuf[7]=0x70+receivebuf[8]; 
                 repeatdisplay();
                 for(i=0;i<16;i++)
                       write728x(0x14,displaybuf[i]);
	    		 receiveflag=0;
    			 flashcount=1;
				 SYS_STATE=0;
 			     pointbit=1;
		         firstnumflag=1;
				 ALARM=0;
				
			       for(delayl=0;delayl<20000;delayl++) ;
                    Rst_Wdog();
				 
                 ALARM=1;   
			    if(machinestatus==5)
 			       {
        	        dispmoney();
					enablesend=1;
                    ES=1;
					TR1=1;
				   }
			  else {timeflag=1; TR0=1;}
                } 
                                                            
            }          
          } 
		 else if(receiveflag==2)
           {for(delayl=0;delayl<25000;delayl++) ;
            Rst_Wdog();
           
            EA=0;
		    ACC=STUS;
           if(ACC0==1)
            {canreceive();
             COMD=0x04;
             ACC=STUS;
			 receiveflag=0;
			 workflag=0;
             if(ACC1==1)
                {ACC=ACC&0xfd;
              
                }
		
              EA=1;
              if(receivebuf[3]==0x57)              
                { if(receivebuf[4]==0x0a){receivebuf[4]=0;}  
                if(receivebuf[5]==0x0a){receivebuf[5]=0;}  
                if(receivebuf[6]==0x0a){receivebuf[6]=0;}  
                if(receivebuf[7]==0x0a){receivebuf[7]=0;}  
                if(receivebuf[8]==0x0a){receivebuf[8]=0;} 
				 pointoff();
                
                 if(receivebuf[9]!=0x30)  
                  {receivebuf[8]=receivebuf[9]&0x0f;
                   displaybuf[3]=0x3f; displaybuf[4]=0x4f; displaybuf[5]=0x5b;
                 displaybuf[6]=0x6a; displaybuf[7]=0x70+receivebuf[8]; 
                 repeatdisplay();
                 for(i=0;i<16;i++)
                       write728x(0x14,displaybuf[i]);
                  
            	  
           		   ALARM=0;
                  }
				 else
				  {if((receivebuf[5]==0)&&(receivebuf[4]==0))  receivebuf[5]=0x0f;  
                   if(receivebuf[4]==0)   receivebuf[4]=0x0f;
                   displaybuf[3]=0x30+receivebuf[4]; displaybuf[4]=0x40+receivebuf[5]; displaybuf[5]=0x50+receivebuf[6];
                   displaybuf[6]=0x60+receivebuf[7]; displaybuf[7]=0x70+receivebuf[8]; 
                   repeatdisplay();
                   for(i=0;i<16;i++)
                        write728x(0x14,displaybuf[i]);
			       write728x(0x18,0x2f);write728x(0x18,0x6f);
                   if(machinestatus==5)
				    {earnmoney=earnmoneytemp;
                     earnmoney=earnmoney+(ulong)(spendmoney);
					}
				    earnmoneytemp=earnmoney;
			    	receivebuf[0]=(uchar)(earnmoneytemp/65536);
                    earnmoneytemp1=(uint)(earnmoneytemp-receivebuf[0]*65536);
                    receivebuf[1]=(uchar)(earnmoneytemp1/256);
                    receivebuf[2]=(uchar)(earnmoneytemp1-receivebuf[1]*256);
                    ramaddress=0xd0;
                    ISendStr(0xa0,ramaddress,&receivebuf,3);

  				  }
				
				   for(delayl=0;delayl<25000;delayl++) ;  
                    Rst_Wdog();
				
                   ALARM=1;
                }
			  receiveflag=0;
			
			  flashcount=1;
              if(machinestatus==5)
 			    {pointbit=1;
		         firstnumflag=1;
                
			     for(delayl=0;delayl<25000;delayl++) ;  for(delayl=0;delayl<20000;delayl++) ;
                    Rst_Wdog();
                  
                 
                 write728x(0x14,0x3f);
 			     write728x(0x14,0xbf);
                 write728x(0x18,0xaf);write728x(0x18,0xef);
    	         dispmoney();
				  enablesend=1;
	    		  ES=1;
		    	  TR1=1;
                 for(delayl=0;delayl<15000;delayl++) ;
				}
			  else 
			    {timeflag=1;
                  TR0=1;
				}
	    	                                     
            }  
		   }
     } 
   } 
void dispmoney(void)
{ lightflag=0;
  displaybuf[3]=(uchar)(spendmoney/10000);
  displaybuf[4]=(uchar)((spendmoney-displaybuf[3]*10000)/1000);
  displaybuf[5]=(uchar)((spendmoney-displaybuf[3]*10000-displaybuf[4]*1000)/100);
  displaybuf[6]=(uchar)((spendmoney-displaybuf[3]*10000-displaybuf[4]*1000-displaybuf[5]*100)/10);
  displaybuf[7]=(uchar)(spendmoney%10);
  if((displaybuf[3]==0)&&(displaybuf[4]==0))  displaybuf[4]=0x0f;  
  if(displaybuf[3]==0)   displaybuf[3]=0x0f;
 
 if((displaybuf[6]==0)&&(displaybuf[7]==0))
    {for(dispshift=7;dispshift>5;dispshift--)
	  {displaybuf[dispshift]=displaybuf[dispshift-2];
	  }
     displaybuf[4]=0x0f;displaybuf[5]=0x0f;
   write728x(0x18,0x3f);   write728x(0x18,0x7f);
    lightflag=1;
    }    
  if((displaybuf[7]==0)&&(lightflag==0))
    {for(dispshift=7;dispshift>3;dispshift--)
	  {displaybuf[dispshift]=displaybuf[dispshift-1];
	  }
    if (lightflag==0)
     {write728x(0x18,0x37);   write728x(0x18,0x77);     
	  lightflag=1;
     }
	}
  if (lightflag==0)  { write728x(0x18,0x2f);   write728x(0x18,0x6f);}
  displaybuf[3]=0x30+displaybuf[3]; displaybuf[4]=0x40+displaybuf[4]; displaybuf[5]=0x50+displaybuf[5];
  displaybuf[6]=0x60+displaybuf[6]; displaybuf[7]=0x70+displaybuf[7]; 
  repeatdisplay();
  for(i=0;i<16;i++)
     write728x(0x14,displaybuf[i]);
}

void numkey(void)
{if((machinestatus==5)||(flagkeyd==1))
  {
  if(numkeyvalue<10)
   {for(j=0;j<8;j++)
      {write728x(0x18,pointoffvalue[j]);
      }
    receivebuf[4]=0x0a;
    if(firstnumflag==1)
      {firstnumflag=0;
       for(dispshift=5;dispshift<9;dispshift++)  receivebuf[dispshift]=0x0f;
      }
    else
  
     {if(pointbit==0) behindnum=behindnum+1;
	  if((behindnum<3)||(pointbit==1))
	   {for(dispshift=5;dispshift<9;dispshift++) 
            receivebuf[dispshift-1]=receivebuf[dispshift];
       } 
	 }

    receivebuf[8]=numkeyvalue;
		    for(i=5;i<9;i++)
			  {if((receivebuf[i]&0x80)!=0x00)   
		         {write728x(0x18,pointonvalue[i-5]);
				  write728x(0x18,pointonvalue[i-1]); 
 				 }
              }  
   displaybuf[3]=0x30+(receivebuf[4]&0x0f); displaybuf[4]=0x40+(receivebuf[5]&0x0f); displaybuf[5]=0x50+(receivebuf[6]&0x0f);
   displaybuf[6]=0x60+(receivebuf[7]&0x0f); displaybuf[7]=0x70+numkeyvalue; 
   repeatdisplay();
   for(i=0;i<16;i++)
      write728x(0x14,displaybuf[i]);
	 numkeyvalue=20;
	}
  }
  else if((machinestatus==4)&&(keydoflag==1))
  {
   cancelstatus=1;
   if(numkeyvalue<10)
   {pointoff();
    if(firstnumflag==1)
     {firstnumflag=0;
      for(dispshift=4;dispshift<9;dispshift++)  receivebuf[dispshift]=0x0f;
     }
   else
     {if(pointbit==0) behindnum=behindnum+1;
	  if((behindnum<3)||(pointbit==1))

⌨️ 快捷键说明

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