欢迎来到虫虫下载站 | 资源下载 资源专辑 关于我们
虫虫下载站

main.c

Freescal MC9S08GT60的一些实例源码
C
字号:
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC9S08GB60.h> /* include peripheral declarations */

char value;

void main(void) {
  DisableInterrupts;	/* Disable Interrupts */
  
  /* Initialize Keyboard */
  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 */
  
  /* Initialize TPM */
  TPM1SC = 0x4F;  /* Enable TOF Interrupt and use bus clock */
  TPM1MOD = 0x4400;
  
  PTBDD = 0xFF; /* Set Port B as output */
  PTBD = 0xFF;
  
  value = 0x00;
  
  EnableInterrupts; /* enable interrupts */

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

interrupt Keyboard() {
  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 TPM time setting judge by key in code */
  switch(result) {
    case 0xEE:
      TPM1MOD = 0x4000;
      break;
    case 0xED:
      TPM1MOD = 0x3C00;
      break;
    case 0xEB:
      TPM1MOD = 0x3800;
      break;
    case 0xE7:
      TPM1MOD = 0x3400;
      break;
    case 0xDE:
      TPM1MOD = 0x3000;
      break;
    case 0xDD:
      TPM1MOD = 0x2C00;
      break;
    case 0xDB:
      TPM1MOD = 0x2800;
      break;
    case 0xD7:
      TPM1MOD = 0x2400;
      break;
    case 0xBE:
      TPM1MOD = 0x2000;
      break;
    case 0xBD:
      TPM1MOD = 0x1C00;
      break;
    case 0xBB:
      TPM1MOD = 0x1800;
      break;
    case 0xB7:
      TPM1MOD = 0x1400;
      break;
    case 0x7E:
      TPM1MOD = 0x1000;
      break;
    case 0x7D:
      TPM1MOD = 0x0C00;
      break;
    case 0x7B:
      TPM1MOD = 0x0800;
      break;
    case 0x77:    
      TPM1MOD = 0x0400;
      break;
  }
  for(i=0;i<=20000;i++) __RESET_WATCHDOG();
  /* Resume to initial state */
  KBI1PE = 0xF0;
  PTADD = 0x0F;
  PTAPE = 0xF0;
  PTAD = 0x00;
  TPM1CNTH = 0x00;
  value = 0x00;
  PTBD = 0xFF;
  KBI1SC_KBACK = 1; /* Keyboard interrupt acknowledge */
}

interrupt TPM() {
  value++;
  PTBD = ~value;  
  TPM1SC_TOF = 0; /* TPM interrupt acknowledge */
}

⌨️ 快捷键说明

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