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

📄 ap66c.c

📁 16输入8输出单片机程序
💻 C
字号:
	//-------------------------------------------------------------------------
//      Filename :  ap066c.c
//      Language :  C for AT89c52
//      Revision :
//  Initial Date :  10/02
//   Last Modify :  Tom
//  System clock :  24.00MHZ
//   Description :  for 3p slot liner machine
//-------------------------------------------------------------------------
//--------------------test dn-----------------------------------------------------
#pragma  pr(xq_ap66c.lst)  pl(24)  pw(119)  //lc  //sb   

#pragma  object(xq_ap66c.obj)
	       
#pragma  mod517(noau,nodp8)  





//--------------------test up-----------------------------------------------------
#include <reg52.h>
#include <absacc.h>			            
#include "PC16BIOS.h"
// define constant for input of the main control board
#define p_pusher_fd     1
#define p_pusher_bd     2
#define index_up        3
#define index_dn        4
#define detect          5
#define alarm           6
#define start1          7
#define start2          8
#define workhd_up       9
#define workhd_dn       10
#define ck_pap          11

//#define               12
//#define               13
//#define               14
#define manual          15
#define reset           16
//-------------------------------------------------------------------------
// define constant for output of the main control board
#define p_pusher_1      1
#define p_pusher_2      2
#define index           3
#define workhd_1        4
#define workhd_2        5
#define reset_lp        6
//#define                 7
#define buzzer          8
									   	


	      


//-------------------------------------------------------------------------
	// function prototype
	//void ck_home (void);
	void manual_pro (void);
	void auto_pro (void);
	//void sin_mo_wa (void);  //in single step mode wait
	//void sin_mo_pro (void);  //in single step mode wait
	void on_p_pusher (void);
	void off_p_pusher (void);
	void on_workhd (void);
	void off_workhd (void);
	
	//-------------------------------------------------------------------------
	        char p_pushermem;
	        char indexmem;
	        char workhdmem;
//-------------------------------------------------------------------------
main ()
{
        init_system ();
        delay (900);           //delay 1 sec
        p_pushermem = 0;
        indexmem = 0;
        workhdmem = 0;
//      ck_home ();
        while (1)
        {
        if ( input_port ( manual ) )
	        manual_pro ();
	        else
	          {
	          if ( (input_port (start1) + input_port (start2)) == 2 )
	    	    auto_pro ();
	
	          if ( input_port (reset) )
	                {
	                output_port (buzzer,ON);
		
	                off_workhd ();
	                while ( !input_port (workhd_dn) );
	
	                off_p_pusher ();
	                while ( !input_port (p_pusher_bd) );
	
                output_port (buzzer,OFF);
		}
          }
        }
}
//-------------------------------------------------------------------------
void manual_pro ()
{
        char a;

        while (input_port (manual) )
        {
        switch ( scan_manual() )
                {
                case 1 :
                        if ( input_port (p_pusher_bd) == 1 )
                        output_port (reset_lp,OFF);
                        else
                        output_port (reset_lp,ON);

        if ( input_port (reset) )
        {
                while ( input_port (reset) );
                        if ( input_port (p_pusher_bd) == 0 )
                        {
                        off_p_pusher ();
                        p_pushermem = 0;
                        }
                        else
                        {
                        on_p_pusher ();
                        p_pushermem = 1;
                        }
        }
                        break;

                case 2 :
                        if ( input_port (index_up) == 1 )
                        output_port (reset_lp,OFF);
                        else
                        output_port (reset_lp,ON);

        if ( input_port (reset) )
        {
                while ( input_port (reset) );
                        if ( input_port (index_up) == 0 )
                        {
                        output_port (index,OFF );
                        indexmem = 0;
                        }
                        else
                        {
                        output_port (index,ON );
                        indexmem = 1;
                        }
        }
                        break;

                case 3 :
                        if ( input_port (workhd_dn) == 1 )
                        output_port (reset_lp,OFF);
                        else
                        output_port (reset_lp,ON);

        if ( input_port (reset) )
        {
                while ( input_port (reset) );
                        if ( input_port (workhd_dn) == 0 )
                        {
                        off_workhd ();
                        workhdmem = 0;
                        }
                        else
                        {
                        on_workhd ();
                        workhdmem = 1;
                        }
        }
                        break;
                }
                        delay (300);        }
        a = p_pushermem+indexmem+workhdmem;
        if ( a != 0 )
        {
        output_port (buzzer,ON);
        while ( !input_port (manual) );
        delay (100);
        output_port (buzzer,OFF);
        }
}
//-------------------------------------------------------------------------
void auto_pro ()
{
        char a;
        char b;
        char c;
//      char d;
        unsigned int job_time;
        unsigned int job_time_temp;
        delay (398);
        a = input_port(start1);
        a += input_port(start2);
        if ( a == 2 )
          {
          delay (383);

          while ( input_port (start1) );
          while ( input_port (start2) );

          if ( input_port (ck_pap ) == 1 )
          {
            output_port (buzzer,ON);
            delay (883);
            output_port (buzzer,OFF);
            return;
          }
            a = scan_manual ();
            on_workhd ();
            while ( !input_port (workhd_up) );
            delay (263);

            if ( input_port (detect) == 0 )
            {
              output_port (buzzer,ON);
              delay (883);
              output_port (buzzer,OFF);
              return;
            }
            output_port (index,ON);
            while ( !input_port (index_dn) );
            delay (23);
            output_port (index,OFF);
            while ( !input_port (index_up) );
            delay (23);
            b = a;
            while (b)
            {
            output_port (index,ON);
            while ( !input_port (index_dn) );
            delay (23);
            output_port (index,OFF);
            while ( !input_port (index_up) );
            delay (23);
            on_p_pusher ();
            c = 1;
            while (c)
            {
            job_time = _current_time ();

                while (c)
                {
                if ( input_port(p_pusher_fd) == 1 )
                c = 0;

                job_time_temp = _current_time ();
                if ( job_time == job_time_temp - 936 )
                  {
                    output_port (buzzer,ON);
                    off_p_pusher ();
                    off_workhd ();
                    while (1);
                  }
                }
            }
            delay (33);
            off_p_pusher ();
            while ( !input_port (p_pusher_bd) );
            delay (63);
            b--;
            }
            off_workhd ();
            while ( !input_port (workhd_dn) );
          }
        delay (23);
}
//-------------------------------------------------------------------------
void on_p_pusher ()
{
        output_port (p_pusher_1,ON);
        output_port (p_pusher_2,OFF);
}
//-------------------------------------------------------------------------
void off_p_pusher ()
{
        output_port (p_pusher_1,OFF);
        output_port (p_pusher_2,ON);
}
//-------------------------------------------------------------------------
void on_workhd ()
{
        output_port (workhd_1,ON);
        output_port (workhd_2,OFF);
}
//-------------------------------------------------------------------------
void off_workhd ()
{
        output_port (workhd_1,OFF);
        output_port (workhd_2,ON);
}

//-------------------------------------------------------------------------
//              end of file


/*
void sin_mo_wa ()
{
        char a;

        a = 1;
        if ( input_port (auto) == 0 )
        {
            while (a)
            {
            if ( input_port (start1) )
              { if ( input_port (start2) )
                a = 0;
              }
                if ( input_port (manual) )
                break;
            }
        }
        while ( input_port (start1) );
        while ( input_port (start2) );

}
*/
//-------------------------------------------------------------------------
/*
void ck_home ()
{

        char a;
        char b;

        b = 1 ;

        while ( b )
        {
         a = input_port(wguide_bd) ;
         a = a + input_port(feed1_dn) ;
         a = a + input_port(feed2_up) ;

         if ( a != 3 )
          { output_port (alarm,ON);
            b = 1;
          }
         else
          { b = 0;
            output_port (alarm,OFF);
          }

        }               //for the while (b)
}               //for the function
*/
//-------------------------------------------------------------------------
/*
void sin_mo_pro ()
{
//      char a;

            output_port (lock,ON);
                lockmem = 1;

            while ( !input_port (lock_fd) ) ;

        sin_mo_wa ();
        if ( input_port (manual) )
        return;

            output_port (oil_pump,ON);
                oil_pumpmem = 1;

        sin_mo_wa ();
//          while ( !input_port (oil_lvl_ck) ) ;

            output_port (tr1,ON);
            while ( !input_port (timer1) ) ;
            delay (238);
            output_port (tr1,OFF);
            output_port (oil_pump,OFF);
                oil_pumpmem = 0;

            while ( !input_port (timer3) ) ;            //soak time

            output_port (oil_drain,ON);
                oil_drainmem = 1;

            while ( !input_port (timer4) ) ;            //drain time

            output_port (rotate_mot,ON);
                rotate_motmem = 1;

            output_port (tr2,ON);
            while ( !input_port (timer2) ) ;
            output_port (tr2,OFF);

            output_port (rotate_mot,OFF);
                rotate_motmem = 0;

        sin_mo_wa ();
        if ( input_port (manual) )
        return;

            output_port (oil_drain,OFF);
            delay (1630);
                oil_drainmem = 0;

        sin_mo_wa ();
        if ( input_port (manual) )
        return;

            output_port (lock,OFF);
                lockmem = 0;

}
*/


//-------------------------------------------------------------------------
//              end of file

⌨️ 快捷键说明

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