main.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 + -