程序内容:大概形容下,初始化I/O(所有端口都设为输出低电平),程序运行逐步将RB0,RB1,RB2置为高电平。
PIC18F452单片机,直接在其引脚13,14上焊接了20MHz晶振及周边电容,同时给单片机提供5V电压,直接上电。用软件仿真没有问题,但是实际中,用万用表测试RB0电压是3V,单片机供电电压5V,RE1引脚3V.Lvpp引脚3V.
问题:1.怎么会输出3V,再怎么又问题也应该是5V才对啊?
2.为什么只有RB0与RE1是高电平,程序怎么没有运行了
3.LVPP引脚为什么是高电平,干什么用的
void SetupPortB (void)
{
INTCON2bits.RBPU = 0;
TRISBbits.TRISB0 = 0;
PORTBbits.RB0 = 0;
TRISBbits.TRISB1 = 0;
PORTBbits.RB1 = 0;
TRISBbits.TRISB2 = 0;
PORTBbits.RB2 = 0;
TRISBbits.TRISB3 = 0;
PORTBbits.RB3 = 0;
TRISBbits.TRISB4 = 0;
PORTBbits.RB4 = 0;
TRISBbits.TRISB5 = 0;
PORTBbits.RB5 = 0;
TRISBbits.TRISB6 = 0;
PORTBbits.RB6 = 0;
TRISBbits.TRISB7 = 0;
PORTBbits.RB7 = 0;
}
void main (void)
{
SetupPortA();
SetupPortC();
SetupPortB();
SetupPortD();
SetupPortE();
while (1)
{
PORTEbits.RE1 = 1;
PORTBbits.RB0=1;
delaymore(700);
PORTBbits.RB0=0;
delaymore(300);
PORTBbits.RB1=1;
delaymore(700);
PORTBbits.RB1=0;
delaymore(300);
PORTBbits.RB2=1;
delaymore(700);
PORTBbits.RB2=0;
}
}
void delaymore(unsigned int time)
{
unsigned int i,j;
for(i = 0;i < time; i++)
{
//for(j = 0;j < 30; j++);
for(j = 0;j < 1000; j++);
}
}
谢谢,刚自学,问题多。 |