📄 main.c
字号:
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
//定义road 类的结构体,并初始化
struct
{
byte led0;
byte led1;
byte led2;
byte led3;
byte led4;
byte led5;
byte led6;
byte led7;
byte led8;
byte led9;
byte led10;
byte led11;
}road={1,1,1,1,1,1,1,1,1,1,1,1};
//光电感应器初始化
void Led_init()
{
DDRH_DDRH7=0; //LED0定义为输入
DDRH_DDRH6=0; //LED1
DDRH_DDRH5=0; //LED2
DDRH_DDRH4=0; //LED3
DDRJ_DDRJ1=0; //LED4
DDRJ_DDRJ0=0; //LED5
DDRK_BIT5=0; //LED6
DDRK_BIT4=0; //LED7
DDRK_BIT3=0; //LED8
DDRK_BIT2=0; //LED9
DDRK_BIT1=0; //LED10
DDRK_BIT0=0; //LED11
}
//读取光电感应器的状态
void Get_sensor()
{
road.led0=PTH_PTH7;
road.led1=PTH_PTH6;
road.led2=PTH_PTH5;
road.led3=PTH_PTH4;
road.led4=PTJ_PTJ1;
road.led5=PTJ_PTJ0;
road.led6=PORTK_BIT5;
road.led7=PORTK_BIT4;
road.led8=PORTK_BIT3;
road.led9=PORTK_BIT2;
road.led10=PORTK_BIT1;
road.led11=PORTK_BIT0;
}
//开光电感应器电源
void Sensor_on()
{
DDRM_DDRM0=1;//设置0为输出
PTM_PTM0=1;//设为高电平,开三极管
}
//关光电感应器电源
void Sensor_off()
{
PTM_PTM0=0;//关三极管
}
//***************主程序***************//
void main(void)
{
Led_init();
Sensor_on();
//设置PM6,PM7用于人机交互
DDRM_DDRM7=0;//设置M口7脚为输入
DDRM_DDRM6=0;//设置M口6脚为输入
//设置PORTB
DDRB=0xFF;//设置B口为输出
PORTB=0xFF;//将指示灯全部关闭
//先设置PM4
DDRM_DDRM4=1;//设置M口4引脚为输出
PTM_PTM4=1;//先将M口4脚设为高电平
//设置PP3
DDRP_DDRP3=1;//设置P口3脚为输出
PTP_PTP3=0;//设置3脚为低电平,如果2脚为高电平,则正转
RDRP_RDRP3=1;//P口3脚降功率输出
//先将PP2置为低电平
DDRP_DDRP2=1;
PTP_PTP2=0;
//设置PP2为方波输出模式
PWMCAE_CAE2=0;//选择模式为左对齐
PWMCNT2=0;//计数器清零
PWMPOL_PPOL2=1;//先输出高电平
PWMPRCLK_PCKB=6;//clockB64分频,即为1MHz
PWMCLK_PCLK2=0;//选择B为时钟源
PWMPER2=255;//
PWMDTY2=80;//
PWME_PWME2=0;//允许2输出脉冲
while(1)
{
Get_sensor();
PORTB_BIT0=road.led8;
PORTB_BIT1=road.led9;
PORTB_BIT2=road.led10;
PORTB_BIT3=road.led11;
PORTB_BIT4=road.led4;
PORTB_BIT5=road.led5;
PORTB_BIT6=road.led6;
PORTB_BIT7=road.led7;
if(PORTB_BIT5==1)//关电机
PWME_PWME2=0;
if(PTM_PTM6==1)
{
while(PTM_PTM6);
Sensor_off();
PWME_PWME2=1;
PWMDTY2-=10; //按下6则减速
if(PWMDTY2<=20)
PWMDTY2=20;
PWMCNT2=0;
}
if(PTM_PTM7==1)
{
Sensor_on();
while(PTM_PTM7);
PWME_PWME2=1;
PWMDTY2+=10; //按下7,则加速
if(PWMDTY2>=240)
PWMDTY2=240;
PWMCNT2=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -