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

main.c

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

char Num_Table[10] = {
0xFC,0x60,0xDA,0xF2,0x66,
0xB6,0xBE,0xE0,0xFE,0xF6 };
char value[4];
char pPosition;

char Receive_SCI_Byte();
void Transmit_SCI_Byte(char T_Byte);
void Transmit_SCI_String(const char *pString);
char InHex();

void main(void) {
  char i;
  char Temp[4];
  DisableInterrupts;  /* Disable Interrupts */
  
	/* Initial_ICG */
	ICGC1 = 0x78;
	ICGC2 = 0x30;	/* Enable the External Crystal = 4 MHz, Bus Frequency = 20 MHz */
	  
  /* Initial_SCI1 */
	SCI1BDL = 0x82;	/* Set Baud Rate for 20MHz Bus Frequency */
	SCI1C2 = 0x0C;	/* Enalbe SCI R/W */
  
  /* Initialize TPM */
  TPM1SC = 0x4F;  /* Enable TOF Interrupt and use bus clock */
  TPM1MOD = 0x0400;
  
  PTADD = 0xFF; /* Set Port A as output */
  PTCDD = 0xFF; /* Set Port C as output */
  PTAD = 0xFF;
  PTCD = 0xFF;
  
  pPosition = 0;
  
  EnableInterrupts; /* enable interrupts */

  for(;;) {
    __RESET_WATCHDOG(); /* feeds the dog */
    Transmit_SCI_String("\n\r->");
    for(i=0;i<4;i++) {
      Temp[i] = InHex();
      Transmit_SCI_Byte(Temp[i] + '0');
    }
    for(i=0;i<4;i++) value[i] = Temp[i];
  } /* loop forever */
}

/* Reveive a byte from SCI */
char Receive_SCI_Byte(){
	while((SCI1S1&0x20) == 0) __RESET_WATCHDOG();
	return SCI1D;
}

/* Transmit a byte to SCI */
void Transmit_SCI_Byte(char T_Byte){
	while((SCI1S1&0x80) == 0) __RESET_WATCHDOG();
	SCI1D = T_Byte;
}

/* Transmit string to SCI */
void Transmit_SCI_String(const char *pString){
	char *pTemp = pString;
	while(*pTemp != 0) {
	  Transmit_SCI_Byte(*pTemp++);
	  __RESET_WATCHDOG();
	}
}

/* Get Hex num from SCI, converted from ASCII code */
char InHex() {
  char gSCIData;
	gSCIData = Receive_SCI_Byte();
	gSCIData -= '0';
	return gSCIData;
}

interrupt TPM() {
  PTAD = ~Num_Table[value[pPosition]];
  /* Cycle light the 7 segments LED */
  switch(pPosition) {
    case 0: 
      PTCD = 0xFE;
      pPosition++;
      break;
    case 1:
      PTCD = 0xFD;
      pPosition++;
      break;
    case 2:
      PTCD = 0xFB;
      pPosition++;
      break;
    case 3:
      PTCD = 0xF7;
      pPosition = 0;
      break;
    default:
      PTCD = 0xFF;
      pPosition = 0;
  }
  TPM1SC_TOF = 0; /* TPM interrupt acknowledge */
}								  

⌨️ 快捷键说明

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