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

📄 skm_fireserviceinterface.c

📁 This is an interface program for flip flop emulation. At first pulse at the input pin the apropriate
💻 C
字号:
       /*
 * Project name:
    Interface

 * Test configuration:
     MCU:             PIC16F877A
     Dev.Board:       EasyPIC2
     Oscillator:      HS, 08.0000 MHz
     Ext. Modules:    -
     SW:              mikroC v8.2
 * NOTES:
     None.
*/


unsigned door;
unsigned st1;
unsigned st2;
unsigned st3;


void interrupt() {
  door++;                 // Increment value of door on every interrupt
  st1++;                  // Increment value of st1 on every interrupt
  st2++;                  // Increment value of st1 on every interrupt
  st3++;                  // Increment value of st1 on every interrupt

  TMR0   = 96;
  INTCON = 0x20;           // Set T0IE, clear T0IF
}


void main() {
  char recall = 0;
  char on1 = 0;
  char on2 = 0;
  char on3 = 0;


  /*       DEFINE INPUTS AND OUTPUTS     */

  OPTION_REG = 0x84;       // Assign prescaler to TMR0
  TMR0  = 96;              // Timer0 initial value
  INTCON = 0xA0;           // Enable TMRO interrupt
  door = 0;                 // Initialize door
  st1 = 0;                 // Initialize st1
  st2 = 0;                 // Initialize st2
  st3 = 0;                 // Initialize st3
  
  
  TRISA = 0;        // PORTA is digital output
  PORTA = 0;
  ADCON0 = 0;
  ADCON1 = 6;
  CMCON = 7;

  TRISB = 0;          // PORTB is output
  PORTB = 0;          // Initialize PORTB  (all outputs are 0)

  TRISC = 0x07;          // PORTC is output Except C0, C1 and C2
  PORTC = 0;          // Initialize PORTC  (all outputs are 0)

  TRISD = 0x03;          // PORTD is output Except D0 and D1
  PORTD = 0;          // Initialize PORTD  (all outputs are 0)

  TRISE = 0x07;          // PORTE is output Except E0, E1 and E2
  PORTE = 0;          // Initialize PORTE  (all outputs are 0)



      do {

      /*   RECALL    */
    if (Button(&PORTE, 0, 20, 1))                // detect logical one on RECALL INPUT pin
     recall = 1;
    if (recall && Button(&PORTE, 0, 20, 0)) {  // detect one-to-zero transition on RECALL INPUT pin
      PORTB.F5 = ~PORTB.F5;
      recall = 0;
        }


        /*   ON1    */
    if (Button(&PORTE, 1, 20, 1))                // detect logical one on ON1 INPUT pin
      on1 = 1;
    if (on1 && Button(&PORTE, 1, 20, 0)) {  // detect one-to-zero transition on ON1 INPUT pin
      PORTB.F1 = ~PORTB.F1;
      on1 = 0;
       }


       /*   ON2    */
    if (Button(&PORTC, 2, 20, 1))                // detect logical one on ON2 INPUT pin
      on2 = 1;
    if (on2 && Button(&PORTC, 2, 20, 0)) {  // detect one-to-zero transition on ON2 INPUT pin
      PORTD.F6 = ~PORTD.F6;
      on2 = 0;
       }


        /*   ON3    */
    if (Button(&PORTC, 0, 20, 1))                // detect logical one on ON3 INPUT pin
      on3 = 1;
    if (on3 && Button(&PORTC, 0, 20, 0)) {  // detect one-to-zero transition on ON3 INPUT pin
      PORTD.F4 = ~PORTD.F4;
      on3 = 0;
       }


         /*   DOOR    */
         if (Button(&PORTD, 0, 20, 1))  {       //Detect logical zero on DOOR INPUT
         PORTD.F2 = 1;                           // Switch on door lock solenoid
         door = 0;                               //Reser counter
          }

          if (door == 2000)
          PORTD.F2 = 0;      // End of delay, Switch off door lock solenoid


          /*   ST1   */
         if (Button(&PORTD, 1, 20, 1))  {       //Detect logical zero on ST1 INPUT
         PORTD.F7 = 1;                           // Switch on ST1 OUTPUT
         st1 = 0;                               //Reser counter
          }


          if (st1 == 400)
          PORTD.F7 = 0;      // End of delay, Switch off ST1 OUTPUT


          /*   ST2   */
         if (Button(&PORTC, 1, 20, 1))  {       //Detect logical zero on ST2 INPUT
         PORTD.F5 = 1;                           // Switch on ST2 OUTPUT
         st2 = 0;                               //Reser counter
          }

          if (st2 == 400)
          PORTD.F5 = 0;      // End of delay, Switch off ST2 OUTPUT


          /*   ST3   */
         if (Button(&PORTE, 2, 20, 1))  {       //Detect logical zero on ST3 INPUT
         PORTD.F3 = 1;                           // Switch on ST3 OUTPUT
         st3 = 0;                               //Reser counter
          }

          if (st3 == 400)
          PORTD.F3 = 0;      // End of delay, Switch off ST3 OUTPUT



        
         } while(1);         // endless loop

        }

⌨️ 快捷键说明

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