/******************************************************************************<br />*<br />* Copyright (C) 2006 Freescale Semiconductor, Inc.<br />* All Rights Reserved<br />*<br />* Filename: DEMO9S08AW60_TEST.c<br />* Author: Daniel Kruczek <br />* Revision: 3.0<br />*<br />* Description: Flashes LED_BAR7 and LED_BAR0 turns on and off according to<br />* the state of SW1.<br />*<br />* Notes: Also serves as an example for the 9S08AW60 demo board.<br />* Created using CodeWarrior 5.0 for HC(S)08.<br />******************************************************************************/<br />// ===================================================================<br />// Macro Functions definitions<br />// ===================================================================<br />// The setting in project preference must be checked<br />// char should be unsigned 8 bit<br /><br />typedef unsigned char muint8;<br />typedef unsigned short muint16;<br />typedef unsigned long muint32;<br /><br />typedef char mint8;<br />typedef short mint16;<br />typedef long mint32;<br /><br />// To Clear or Set single bits in a byte variable.<br />#define b_SetBit(bit_ID, varID) (varID |= (muint8)(1<<bit_ID))<br />#define b_ClearBit(bit_ID, varID) (varID &= ~(muint8)(1<<bit_ID))<br />#define b_XorBit(bit_ID, varID) (varID ^= (muint8)(1<<bit_ID))<br /><br />// To Clear or Set single bits in a word(16-bit) variable.<br />#define w_SetBit(bit_ID, varID) (varID |= (muint16)(1<<bit_ID))<br />#define w_ClearBit(bit_ID, varID) (varID &= ~(muint16)(1<<bit_ID))<br />#define w_XorBit(bit_ID, varID) (varID ^= (muint16)(1<<bit_ID))<br /><br /><br />#include <hidef.h> /* EnableInterrupts macro */<br />#include "derivative.h" /* include peripheral declarations */<br /><br />muint8 flag;<br />/*<br />// ---------------------------------------------------------------------------<br />// Peripheral Initialization Routine<br />// ---------------------------------------------------------------------------<br />*/<br />void PeriphInit(void)<br />{<br /> SOPT = 0x00; /* Disable COP */<br /> PTCDD = 0x10; <br /> PTCPE = 0xEF; <br /> <br /> PTFDD = 0xFF; <br /> PTFD = 0x00; <br /> flag=1; <br />}<br /><br />/***** Init_TPM init code *****/<br /> <br />void TPM_init(void) <br />{ <br /><br /> //TPM1SC = 0x00;<br /> TPM1SC = 0x00; //TPM2SC <br /> TPM1MOD = 0x5FFF; <br /> TPM1C2V = 0x0FF; <br /> (void)(TPM1C2SC == 0); <br /><br /> TPM1C2SC = 0x68; <br /> TPM1C3V = 0x0FFF; <br /> (void)(TPM1C3SC == 0); <br /> //TPM1C2SC = 0x28;<br /> TPM1C3SC = 0x28; <br /> <br /> (void)(TPM1SC == 0); <br /> <br /> TPM1SC = 0x0F; <br />} <br /> <br />void main(void) {<br /> <br /> <br /> PeriphInit(); /* Microcontroller initialization */ <br /> TPM_init();<br /> EnableInterrupts; /* enable interrupts */<br /> <br /> <br /> // Begin LED/Switch test<br /> for(;;) <br /> { <br /> if (PTCD_PTCD2==0x01)<br /> b_ClearBit(2,PTFD);<br /> else<br /> b_SetBit(2,PTFD);<br /> <br /> b_ClearBit(7,PTFD);<br /> b_ClearBit(6,PTFD);<br /> b_ClearBit(5,PTFD);<br /><br /> <br /> } /* loop forever */ <br />}/* end main(void) */<br /><br />interrupt void PWMCH2_ISR(void) <br />{<br /> TPM1C2SC_CH2IE=0X00;<br /> TPM1C2SC&=0xEF;<br /><br /><br /> flag++;<br /><br /> if(flag<=1)<br /> { <br /> b_SetBit(7,PTFD);<br /> } else {<br /> flag=0;<br /> b_ClearBit(7,PTFD);<br /> }<br /><br /> TPM1C2SC_CH2IE=0X01; <br />}<br /> |
|