在线时间0 小时
UID231752
注册时间2010-10-17
NXP金币0
该用户从未签到
新手上路

- 积分
- 36
- 最后登录
- 1970-1-1
|
程序代码如下,照着网上的程序修改的,用BDM在线调试可以运行,但是电源供电情况下拿掉BDM,程序无法运行,哪位能帮忙解决下,谢谢了。
#include /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
/****************
初始化时钟
************/
void MCUInit(void){
asm sei
SYNR = 0x0b; //时钟合成寄存器
REFDV = 0x01; //时钟分频寄存器
// 锁相环产生的时钟频率 f=2*foscclk*(SYNR+1)/(REFDV+1)
//对于S12xep100 4MHz外部晶体振荡器,总线时钟为24MHz
//片内系统时钟为48MHz
while((CRGFLG & 0x08) !=0x08); /*等待锁相环频率锁定*/
CLKSEL |= 0x80; //时钟选择寄存器
asm cli
}
/****************
初始化串口
************/
void SCI_Init(void)
{ unsigned char t;
//定义波特率Bt=9600,SCI6BD=fBUS/(16*Bt)
SCI6BDL = 0x9c; //须先给低8位赋值
SCI6BDH = 0x00; //再给高8位赋值
SCI6CR1 = 0x00; //设置允许SCI,正常码输出,8位数据,无校验
t = SCI6DRL; //读数据寄存器(清0)
t = SCI6SR1; //读状态寄存器(清0)
SCI6CR2 = 0x0C; //允许SCI6接收和发送 查询方式
}
void put_char (char c) {//发送数据是通过判断状态寄存器SCI6SR1的第7位(TDRE)
//接收数据是通过判断状态寄存器SCI6SR1的第5位(RDRF)
while((SCI6SR1 & 0X80)==0);//SCI6SR1的loops置0,正常模式,即当SCI6SR1.7=0时,等待
SCI6DRL=c;// SCI6SR1.7=1时,发送数据将c一字节输入数据缓冲区SCI6DRL(先低后 //高)
}
void main(void) {
char temp;
MCUInit(); //初始化时钟
SCI_Init(); //初始化串口
asm cli
for(;;) {
while((SCI6SR1 & 0X20)==0);
temp=SCI6DRL;
put_char(temp);
}
}
|
|