0515Dr的UART6通信,初始化问题
#pragma sfr#pragma di
#pragma ei
#pragma NOP
#pragma HALT
#pragma STOP
#pragma asm
void main(void)
{
unsigned int i;
unsigned char k;
DI();
/*********设置内部高速振荡 8M**********/
OSCCTL=0; //时钟操作模式选择寄存器,
PCC=0; // 处理器时钟控制寄存器. 时钟不分频,默认是2分频.
LSRSTOP=0; // 内部低速振荡器
RSTOP=0; // 内部高速振荡器
MOC=0x80; // X1振荡器停止.禁止使用外部输入时钟.
MCM=0; // 主时钟模式寄存器,使用内部高速时钟.
OSTS=0x05; // 振荡稳定时间选择寄存器.
while(RSTS==0); // 等?内部启动完成.
PM1.4=1; // 设置RXD6?脚为输入
P1.3=1; // 设置TXD6?脚为高电平
PM1.3=0; // 设置TXD6?脚为输出
ASIM6=0x01;// 停止开始-设置到复位状态.
WDTE=0xAC;
CKSR6=0x01;// 8/2=4M17 115200: 3916800
BRGC6=17; // 设置波特率.
ASIM6|=0xE5;
POWER6=1;
for(i=0;i<1000;i++){ NOP(); WDTE=0xAC;}
STIF6=0; //清?TX中断请求.
TXE6=1; //使能发送
SRIF6=0; //清?RX中断请求.
RXE6=1; //使能接收.
EI();
while(1)
{
WDTE=0xAC;
for(i=0;i<1000;i++)WDTE=0xAC;
if((SRIF6)&&(ASIS6))
{
SRIF6=0;
i=RXB6;
}
TXB6=0xA5;
while(STIF6==0);
STIF6=0;
}
P2.0=0;
}
单步到这: BRGC6=17程序就跑飞,为什么?
上面设8M对吗? 建议你去掉晶振设置那段,如果你没有设置OPTION寄存器,默认就是使用内部高速RC震荡器。
如果去掉还有问题请发邮件到bg7fw@163.com
页:
[1]