#include <htc.h>
#include <pic18.h>
__CONFIG(1, INTCLKO);//INTIO 使用内部晶振 波特率9600bps
__CONFIG(2, PWRTEN & BOREN & BORV28 & WDTDIS);
void OSCInit(void);
void main()
{
TRISC7 = 0;//TX1
TRISC6 = 1;//RX1
TRISD = 0 ;
PORTD = 0 ;
TXSTA = 0;
RCSTA = 0;
SYNC = 0;//Async operation
SPBRGH = 0;//Baud Rate Generator Register High Byte
SPBRG = 0x19;//Baud Rate Generator Register Low Byte
BRGH = 1;//High Baud Rate Select
BRG16 = 1;//16-bit Baud Rate Register Enable
SPEN = 1;//Serial Port Enable
CREN = 1;//Continuous Receive Enable
TXEN = 1;//Transmit Enable
while(1)
{
if(RCIF==1)
PORTD =0XFF;
}
}
void OSCInit(void)//4Mhz
{
IRCF2 = 1;
IRCF2 = 1;
IRCF0 = 0;
while(!OSTS)
{
NOP();
}
while(!IOFS)
{
NOP();
}
}
请高手帮我看看我这个哪里出错了,感激不尽!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
初始化内置震荡为4MHz的这三句:
IRCF2 = 1;
IRCF2 = 1;
IRCF0 = 0;
是不是要改成:
IRCF2 = 1;
IRCF1 = 1;
IRCF0 = 0;
你原先的语句,IRCF1 没有配置,默认为0;当然,如果你就是用2MHz,这个没有问题;
另,OSCCON最低2位还需要设置成 1X,选择内部时钟模块(手册,page 36)
这个芯片我没有用过,我只是看手册,对应查到的一点东西;没有实际验证,意见仅供参考;
一周热门 更多>