📄 mcuinit.c
字号:
/*
** ###################################################################
** This code is generated by the Device Initialization Tool.
** It is overwritten during code generation.
** USER MODIFICATION ARE PRESERVED ONLY INSIDE INTERRUPT SERVICE ROUTINES
** OR EXPLICITLY MARKED SECTIONS
**
** Project : Project_2
** Processor : MC9S08AW60CFU
** Version : Bean 01.132, Driver 01.04, CPU db: 2.87.184
** Datasheet : MC9S08AW60 Rev 2 12/2006
** Date/Time : 2008-5-15, 21:26
** Abstract :
** This module contains device initialization code
** for selected on-chip peripherals.
** Contents :
** Function "MCU_init" initializes selected peripherals
**
** (c) Copyright UNIS, spol. s r.o. 1997-2006
** UNIS, spol s r.o.
** Jundrovska 33
** 624 00 Brno
** Czech Republic
** http : www.processorexpert.com
** mail : info@processorexpert.com
** ###################################################################
*/
/* MODULE MCUinit */
#include <MC9S08AW60.h> /* I/O map for MC9S08AW60CFU */
#include "MCUinit.h"
#include "includes.h"
unsigned char data1;
unsigned char data2;
/* User declarations and definitions */
/* Code, declarations and definitions here will be preserved during code generation */
/* End of user declarations and definitions */
/*
** ===================================================================
** Method : MCU_init (bean MC9S08AW60_64)
**
** Description :
** Device initialization code for selected peripherals.
** ===================================================================
*/
void MCU_init(void)
{
/* ### MC9S08AW60_64 "Cpu" init code ... */
/* PE initialization code after reset */
/* Common initialization of the write once registers */
/* SOPT: COPE=0,COPT=1,STOPE=0 */
SOPT = 0x53;
/* SPMSC1: LVDF=0,LVDACK=0,LVDIE=0,LVDRE=1,LVDSE=1,LVDE=1,BGBE=0 */
SPMSC1 = 0x1C;
/* SPMSC2: LVWF=0,LVWACK=0,LVDV=0,LVWV=0,PPDF=0,PPDACK=0,PPDC=0 */
SPMSC2 = 0x00;
/* SMCLK: MPE=0,MCSEL=0 */
SMCLK &= (unsigned char)~0x17;
/* System clock initialization */
/* ICGC1: HGO=1,RANGE=1,REFS=1,CLKS1=1,CLKS0=1,OSCSTEN=1,LOCD=1 */
ICGC1 = 0xFE;
/* ICGC2: LOLRE=1,MFD2=0,MFD1=0,MFD0=0,LOCRE=0,RFD2=0,RFD1=0,RFD0=0 */
ICGC2 = 0x80;
ICGTRM = *(unsigned char*far)0xFFBE; /* Initialize ICGTRM register from a non volatile memory */
while(!ICGS1_LOCK) { /* Wait */
}
/* Common initialization of the CPU registers */
/* PTASE: PTASE7=1,PTASE6=1,PTASE5=1,PTASE4=1,PTASE3=1,PTASE2=1,PTASE1=1,PTASE0=1 */
PTASE = 0xFF;
/* PTBSE: PTBSE7=1,PTBSE6=1,PTBSE5=1,PTBSE4=1,PTBSE3=1,PTBSE2=1,PTBSE1=1,PTBSE0=1 */
PTBSE = 0xFF;
/* PTCSE: PTCSE6=1,PTCSE5=1,PTCSE4=1,PTCSE3=1,PTCSE2=1,PTCSE1=1,PTCSE0=1 */
PTCSE |= (unsigned char)0x7F;
/* PTDSE: PTDSE7=1,PTDSE6=1,PTDSE5=1,PTDSE4=1,PTDSE3=1,PTDSE2=1,PTDSE1=1,PTDSE0=1 */
PTDSE = 0xFF;
/* PTESE: PTESE7=1,PTESE6=1,PTESE5=1,PTESE4=1,PTESE3=1,PTESE2=1,PTESE1=1,PTESE0=1 */
PTESE = 0xFF;
/* PTFSE: PTFSE7=1,PTFSE6=1,PTFSE5=1,PTFSE4=1,PTFSE3=1,PTFSE2=1,PTFSE1=1,PTFSE0=1 */
PTFSE = 0xFF;
/* PTGSE: PTGSE6=1,PTGSE5=1,PTGSE4=1,PTGSE3=1,PTGSE2=1,PTGSE1=1,PTGSE0=1 */
PTGSE |= (unsigned char)0x7F;
/* PTADS: PTADS7=0,PTADS6=0,PTADS5=0,PTADS4=0,PTADS3=0,PTADS2=0,PTADS1=0,PTADS0=0 */
PTADS = 0x00;
/* PTBDS: PTBDS7=0,PTBDS6=0,PTBDS5=0,PTBDS4=0,PTBDS3=1,PTBDS2=0,PTBDS1=0,PTBDS0=0 */
PTBDS = 0x08;
/* PTCDS: PTCDS6=0,PTCDS5=0,PTCDS4=1,PTCDS3=0,PTCDS2=0,PTCDS1=0,PTCDS0=0 */
PTCDS = 0x10;
/* PTDDS: PTDDS7=0,PTDDS6=0,PTDDS5=0,PTDDS4=0,PTDDS3=0,PTDDS2=1,PTDDS1=1,PTDDS0=1 */
PTDDS = 0x07;
/* PTEDS: PTEDS7=0,PTEDS6=0,PTEDS5=0,PTEDS4=0,PTEDS3=0,PTEDS2=1,PTEDS1=0,PTEDS0=0 */
PTEDS = 0x04;
/* PTFDS: PTFDS7=0,PTFDS6=0,PTFDS5=0,PTFDS4=0,PTFDS3=0,PTFDS2=0,PTFDS1=0,PTFDS0=1 */
PTFDS = 0x01;
/* PTGDS: PTGDS6=0,PTGDS5=0,PTGDS4=0,PTGDS3=1,PTGDS2=0,PTGDS1=0,PTGDS0=0 */
PTGDS = 0x08;
/* ### Init_SCI init code */
/* SCI2C2: TIE=0,TCIE=0,RIE=0,ILIE=0,TE=0,RE=0,RWU=0,SBK=0 */
SCI2C2 = 0x00; /* Disable the SCI2 module */
(void)(SCI2S1 == 0); /* Dummy read of the SCI2S1 registr to clear flags */
(void)(SCI2D == 0); /* Dummy read of the SCI2D registr to clear flags */
/* SCI2S2: BRK13=0,RAF=0 */
SCI2S2 = 0x00;
/* SCI2BDH: SBR12=0,SBR11=0,SBR10=0,SBR9=0,SBR8=0 */
SCI2BDH = 0x00;
/* SCI2BDL: SBR7=1,SBR6=0,SBR5=0,SBR4=0,SBR3=0,SBR2=0,SBR1=0,SBR0=0 */
SCI2BDL = 0x80;
/* SCI2C1: LOOPS=0,SCISWAI=0,RSRC=0,M=1,WAKE=0,ILT=0,PE=0,PT=0 */
SCI2C1 = 0x10;
/* SCI2C2: TIE=0,TCIE=0,RIE=1,ILIE=0,TE=1,RE=1,RWU=0,SBK=0 */
SCI2C2 = 0x2C;
/* SCI2C3: R8=0,T8=0,TXDIR=0,TXINV=0,ORIE=0,NEIE=0,FEIE=0,PEIE=0 */
SCI2C3 = 0x00;
/* ### Init_SCI init code */
/* SCI1C2: TIE=0,TCIE=0,RIE=0,ILIE=0,TE=0,RE=0,RWU=0,SBK=0 */
SCI1C2 = 0x00; /* Disable the SCI1 module */
(void)(SCI1S1 == 0); /* Dummy read of the SCI1S1 registr to clear flags */
(void)(SCI1D == 0); /* Dummy read of the SCI1D registr to clear flags */
/* SCI1S2: BRK13=0,RAF=0 */
SCI1S2 = 0x00;
/* SCI1BDH: SBR12=0,SBR11=0,SBR10=0,SBR9=0,SBR8=0 */
SCI1BDH = 0x00;
/* SCI1BDL: SBR7=1,SBR6=0,SBR5=0,SBR4=0,SBR3=0,SBR2=0,SBR1=0,SBR0=0 */
SCI1BDL = 0x80;
/* SCI1C1: LOOPS=0,SCISWAI=0,RSRC=0,M=1,WAKE=0,ILT=0,PE=0,PT=0 */
SCI1C1 = 0x10;
/* SCI1C2: TIE=0,TCIE=0,RIE=1,ILIE=0,TE=1,RE=1,RWU=0,SBK=0 */
SCI1C2 = 0x2C;
/* SCI1C3: R8=0,T8=0,TXDIR=0,TXINV=0,ORIE=0,NEIE=0,FEIE=0,PEIE=0 */
SCI1C3 = 0x00;
/* ### Init_RTI init code */
/* SRTISC: RTIF=0,RTIACK=1,RTICLKS=0,RTIE=1,RTIS2=1,RTIS1=0,RTIS0=1 */
SRTISC = 0x55;
/* ### Init_GPIO init code */
/* PTFD: PTFD5=1,PTFD4=0,PTFD1=0,PTFD0=0 */
PTFD = (PTFD & (unsigned char)~0x13) | (unsigned char)0x20;
/* PTFPE: PTFPE0=1 */
PTFPE |= (unsigned char)0x01;
/* PTFDD: PTFDD5=1,PTFDD4=1,PTFDD1=1,PTFDD0=1 */
PTFDD |= (unsigned char)0x33;
/* ### Init_GPIO init code */
/* PTED: PTED3=1,PTED2=1 */
PTED |= (unsigned char)0x0C;
/* PTEDD: PTEDD3=1,PTEDD2=1 */
PTEDD |= (unsigned char)0x0C;
/* ### Init_GPIO init code */
/* PTCD: PTCD4=0,PTCD1=1,PTCD0=1 */
PTCD = (PTCD & (unsigned char)~0x10) | (unsigned char)0x03;
/* PTCPE: PTCPE4=1 */
PTCPE |= (unsigned char)0x10;
/* PTCDD: PTCDD4=1,PTCDD1=1,PTCDD0=1 */
PTCDD |= (unsigned char)0x13;
/* ### Init_TPM init code */
/* TPM1SC: TOF=0,TOIE=0,CPWMS=0,CLKSB=0,CLKSA=0,PS2=0,PS1=0,PS0=0 */
TPM1SC = 0x00; /* Stop and reset counter */
TPM1MOD = 0xC003; /* Period value setting */
(void)(TPM1SC == 0); /* Overflow int. flag clearing (first part) */
/* TPM1SC: TOF=0,TOIE=1,CPWMS=0,CLKSB=1,CLKSA=0,PS2=0,PS1=0,PS0=0 */
TPM1SC = 0x50; /* Int. flag clearing (2nd part) and timer control register setting */
/* ### Init_TPM init code */
/* TPM2SC: TOF=0,TOIE=0,CPWMS=0,CLKSB=0,CLKSA=0,PS2=0,PS1=0,PS0=0 */
TPM2SC = 0x00; /* Stop and reset counter */
TPM2MOD = 0x00; /* Period value setting */
(void)(TPM2SC == 0); /* Overflow int. flag clearing (first part) */
/* TPM2SC: TOF=0,TOIE=1,CPWMS=0,CLKSB=0,CLKSA=1,PS2=1,PS1=1,PS0=1 */
TPM2SC = 0x4F; /* Int. flag clearing (2nd part) and timer control register setting */
/* ### Init_GPIO init code */
/* PTAD: PTAD1=1 */
PTAD |= (unsigned char)0x02;
/* PTAPE: PTAPE1=1 */
PTAPE |= (unsigned char)0x02;
/* PTADD: PTADD1=0 */
PTADD &= (unsigned char)~0x02;
/* ### Init_GPIO init code */
/* PTBD: PTBD3=1,PTBD2=1,PTBD1=1,PTBD0=1 */
PTBD |= (unsigned char)0x0F;
/* PTBDD: PTBDD3=1,PTBDD2=0,PTBDD1=0,PTBDD0=0 */
PTBDD = (PTBDD & (unsigned char)~0x07) | (unsigned char)0x08;
/* ### Init_GPIO init code */
/* PTDD: PTDD2=0,PTDD1=1,PTDD0=1 */
PTDD = (PTDD & (unsigned char)~0x04) | (unsigned char)0x03;
/* PTDDD: PTDDD2=1,PTDDD1=1,PTDDD0=1 */
PTDDD |= (unsigned char)0x07;
/* ### Init_GPIO init code */
/* PTGD: PTGD3=0 */
PTGD &= (unsigned char)~0x08;
/* PTGDD: PTGDD3=1,PTGDD0=0 */
PTGDD = (PTGDD & (unsigned char)~0x01) | (unsigned char)0x08;
/* ### */
asm CLI; /* Enable interrupts */
} /*MCU_init*/
/*
** ===================================================================
** Interrupt handler : isrVrti
**
** Description :
** User interrupt service routine.
** Parameters : None
** Returns : Nothing
** ===================================================================
*/
__interrupt void isrVrti(void)
{
asm nop;
PTED_PTED3=~PTED_PTED3;
//PTED_PTED2=~PTED_PTED2;
SRTISC_RTIACK=1;
}
/* end of isrVrti */
/*
** ===================================================================
** Interrupt handler : isrVsci2tx
**
** Description :
** User interrupt service routine.
** Parameters : None
** Returns : Nothing
** ===================================================================
*/
__interrupt void isrVsci2tx(void)
{
SCI2C3=(data1>1)&SCI2C3;
SCI2D=data2;//发送数据选择,选择串口接收到的数据
while(SCI2S1_TC==0){
};
SCI2C2_TIE=0;
PTCD_PTCD4=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -