📄 main.c
字号:
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
#define CLK1_PORT PTP_PTP0_MASK
#define CLK2_PORT PTP_PTP1_MASK
#define RS_PORT PTP_PTP7_MASK
#define CLK1_PWM PWME_PWME0
#define CLK2_PWM PWME_PWME1
#define RS_PWM PWME_PWME7
#define SH PORTA_BIT0
#define DIR DDRP_DDRP0_MASK|DDRP_DDRP1_MASK|DDRP_DDRP7_MASK
/*$OSEKDecl$*//*$XGATEDecl$*/
void OverFrequency(void);
void CcdIni(void);
void CcdDrive(void);
void DelayPer(byte fBus,byte TimeSpan);//单位延时时间
void Delay(byte Time);
void main(void) {
/* put your own code here */
EnableInterrupts;/*$XGATECall$*//*$OSEKCall$*/
OverFrequency();
CcdIni();
CcdDrive();
for(;;) {} /* wait forever */
/* please make sure that you never leave this function */
}
/*$OSEKTasks$*/
void CcdIni(void){
DDRA_BIT0 = 1;
PWMPOL_PPOL0 = 1; //P0先高后低
PWMPOL_PPOL1 = 0; //P1先低后高
PWMPOL_PPOL7 = 1; //P7先高后低
PWMCLK_PCLK0 = 0;
PWMCLK_PCLK1 = 0; //01通道使用A时钟
PWMCLK_PCLK7 = 0; //7通道使用B时钟
PWMPRCLK = 0x00; //AB时钟不分频
PWMCAE = 0x0; // 所有通道左对齐
PWMPER0 = 0x30;
PWMDTY0 = 0x18; //0通道频率为0.5M
PWMPER1 = 0x30;
PWMDTY1 = 0x18; //1通道频率为0.5M
PWMPER7 = 0x18;
PWMDTY7 = 0x06; //7通道频率为1M,
}
void OverFrequency(void){
REFDV = 1;
SYNR = 2;
while( CRGFLG_LOCK !=1 );
CLKSEL_PLLSEL = 1;//内部总线频率为24M。
}
void DelayPer(byte fBus,byte TimeSpan){
unsigned int num=0;
unsigned int i=0;
num = (unsigned int)(TimeSpan*fBus*1000 - 2)/6;
for(i = 0;i < num;i++);
}
void Delay(byte Time){
byte i=0;
for(i= 0 ;i < Time;i++)
DelayPer(24,1); //在24M的总线频率下,延时1ms
}
void CcdDrive(void){
while(1){
DDRP = DIR;
PTP = CLK1_PORT|!CLK2_PORT|!RS_PORT;//P0高电平,P1低电平
RS_PWM = 1;//启动7号通道
asm {
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
}
SH = 1;
asm {
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
}
SH = 0;
asm{
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
}
PWME = PWME+0X03; //同时启动0、1通道
Delay(10); //延时10ms
PWME = !CLK1_PWM|!CLK2_PWM|!RS_PWM;//同时关闭7、1、0四个通道
PWMCNT0 = 0;
PWMCNT1 = 0;
PWMCNT7 = 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -