main.c

来自「Freescal MC9S08GT60的一些实例源码」· C语言 代码 · 共 90 行

C
90
字号
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC9S08GB60.h> /* include peripheral declarations */

void main(void) {
  DisableInterrupts;	/* Disable Interrupts */
  
  PTBD = 0x00;
  PTBDD = 0xFF; /* Set Port B as output */
  PTADD = 0x0F; /* Set Port A bits 7-4 as input and 3-0 as output */
  PTAPE = 0xF0; /* Internal Pullup Enable bits 7-4 */
  PTAD = 0x00; 
  KBI1PE = 0xF0;  /* Enable Port A bits 7-4 as keyboard */
  KBI1SC = 0x06;  /* Keyboard Interrupt Enable and event on falling edges sensitive */
    
  EnableInterrupts; /* enable interrupts */

  for(;;) {
    __RESET_WATCHDOG(); /* feeds the dog */
  } /* loop forever */
}

interrupt Keyboard(void) {
  char result;  
  unsigned int i;
  /* Cross scan to acquire Key in code */
  result = PTAD;
  KBI1PE = 0x00;
  PTADD = 0xF0;
  PTAPE = 0x0F;
  PTAD = 0x00;
  result |= PTAD;
  /* Change LED state judge by key in code */
  switch(result) {
    case 0xEE:
      PTBD = 0xEF;
      break;
    case 0xED:
      PTBD = 0xDF;
      break;
    case 0xEB:
      PTBD = 0xBF;
      break;
    case 0xE7:
      PTBD = 0x7F;
      break;
    case 0xDE:
      PTBD = 0xFE;
      break;
    case 0xDD:
      PTBD = 0xFD;
      break;
    case 0xDB:
      PTBD = 0xFB;
      break;
    case 0xD7:
      PTBD = 0xF7;
      break;
    case 0xBE:
      PTBD = 0xEF;
      break;
    case 0xBD:
      PTBD = 0xDF;
      break;
    case 0xBB:
      PTBD = 0xBF;
      break;
    case 0xB7:
      PTBD = 0x7F;
      break;
    case 0x7E:
      PTBD = 0xFE;
      break;
    case 0x7D:
      PTBD = 0xFD;
      break;
    case 0x7B:
      PTBD = 0xFB;
      break;
    case 0x77:    
      PTBD = 0xF7;
      break;
  }
  for(i=0;i<=20000;i++) __RESET_WATCHDOG();
  /* Resume to initial state */
  KBI1PE = 0xF0;
  PTADD = 0x0F;
  PTAPE = 0xF0;
  PTAD = 0x00;
  KBI1SC_KBACK = 1; /* Keyboard interrupt acknowledge */
}

⌨️ 快捷键说明

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