金牌会员
- 积分
- 1017
- 威望
- 560
- 贡献
- 265
- 兑换币
- 259
- 注册时间
- 2015-1-2
- 在线时间
- 96 小时
- 毕业学校
- 黑龙江科技大学
|
10贡献
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#include <MC9S12XS128.h>
// echo连接的是PA1
//trig连接的是PA0
unsigned char a=0,s;
void PIT(void) //PIT初始化子程序
{
PITCFLMT = 0x00; //禁止PIT模块
PITMUX_PMUX0 = 1; //定时器通道使用Base Timer0(微定时基准0)
PITMTLD0 = 0x01; //设置8位微定时装载寄存器0初值(8位计数器初值)
PITLD0 = 0x0078; //设置16位微定时装载寄存器0初值(16位计数器初值)
PITCFLMT =0x80; //使能PIT模块
PITCE_PCE0 = 1; //使能定时器通道0
PITINTE = 0x01; //使能PIT定时器通道0中断
//5us计时
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED //中断服务子程序
interrupt VectorNumber_Vpit0 void PIT_ISR(void)
{
if(PITTF_PTF0 == 1)
PITTF_PTF0 = 1; //清除标志位
a++;
}
#pragma CODE_SEG DEFAULT
void IO_INIT()//初始化端口
{
DDRA = 0x01;
PORTA = 0x00;
}
void delay(unsigned int loop_times) //延时10us程序
{
unsigned int loop_i,loop_j;
for(loop_i=0;loop_i<loop_times;loop_i++)
{for(loop_j=0;loop_j<38;loop_j++)
;
}
}
void signal() //超声波触发信号
{
PORTA_PA0 = 1;
PORTA_PA2 = 1;
delay(1);
PITINTE = 0x00;//关闭定时器
PORTA_PA0 = 0;//拉低电位
a = 0; //计时清0
}
void distance() //测试距离
{
while(!(PORTA_PA1 == 1))//程序一直 卡死在这里
{
;
}
PITINTE = 0x01;
while(!(PORTA_PA1 == 0))
{
;
}
PITINTE = 0x00;
s =a * 17/20; //a每5us增加一次
}
/***************************************************
** 函数名称: PLL_Init
** 功能描述: 时钟初始化函数
** 说明: 总线时钟选定24M
****************************************************/
void PLL_Init(void)
{
CLKSEL=0x00;
SYNR=0XC0 | 0X05;
REFDV=0XC0 | 0X03;
PLLCTL_PLLON=1;
POSTDIV=0X00;
asm(nop);
asm(nop);
while(0==CRGFLG_LOCK); //锁相环锁定
CLKSEL_PLLSEL=1; //选定PLL时钟
}
void SCI0_Init() //串口初始化
{
SCI0BDL = (byte)((24000000 /* OSC freq /2*/) / 9600 /* baud rate */ / 16 /*factor*/);
SCI0CR1 = 0X00; /*normal,no parity*/
SCI0CR2 = 0X2C; /*RIE=1,TE=1,RE=1, */
}
void SCI_Write(unsigned char sendchar) 串口发送数据
{
while (!(SCI0SR1&0x80));
SCI0DRH=0;
SCI0DRL=sendchar;
}
void main(void) {
DisableInterrupts;
IO_INIT();
PLL_Init();
SCI0_Init();
PIT();
EnableInterrupts;
//-------------------//
for(;;) {
signal();
distance();
SCI_Write(s);
}
}
经过我单步调试发现问题就是echo接收不到高电平,HC-SR04模块我也有换过,应该不是模块问题,求大神 支支招!!!
|
|