|
#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=4M 17 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对吗? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|