打印
[PIC®/AVR®/dsPIC®产品]

为什么单片机没有输出?

[复制链接]
2151|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大副|  楼主 | 2014-10-23 18:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人最近新接触PIC单片机,遇到一些麻烦.
采用的是MCU芯片是PIC16F1503,
开发工具MPLAB X IDE,XC8编译器.PICkit3仿真器.
暂时先先控制两个LED灯,以确认单片机工作正常,
但是把如下代码烧录后,LED没反应,经测量,单片机没输出.
请教各位前辈,这个代码是否有问题?先谢谢各位了.

// CONFIG1
#pragma config FOSC = INTOSC
#pragma config WDTE = OFF
#pragma config PWRTE = ON
#pragma config MCLRE = ON
#pragma config CP = OFF
#pragma config BOREN = OFF
#pragma config CLKOUTEN = OFF
// CONFIG2
#pragma config WRT = OFF
#pragma config STVREN = ON
#pragma config BORV = 25
#pragma config LPBOR = OFF
#pragma config LVP = OFF

#define K1P     RC4
#define K1      LATC4

#define TX      LATC5
#define RX      RA4
#define LED1    LATC2
#define LED2    LATC3

typedef unsigned char U8;
typedef unsigned int U16;

U16 IsSendCmd,Timeout;

void System_Init()
{

    OSCCON      = 0b01111010;
    OPTION_REG  = 0b10000000;
    IOCIE=0;
    PEIE=0;
    GIE=0;

    ANSELA      = 0b00000000;
    ANSELC      = 0b00000000;
    TRISA       = 0b00110100;
    TRISC       = 0b00000000;
    PORTA       = 0b00000000;
    PORTC       = 0b00000000;

    /* Port Interrupt Config */
    IOCAF2 = 0; //INT_Pin
    IOCAP2=1;   //Positive edge
    IOCAN2=1;   //Negative edge

    IOCAF4 = 0; //RX_Pin
    IOCAP4=1;
    IOCAN4=1;

    IOCAF5 = 0; //ZERO_Pin
    IOCAP5=1;
    IOCAN5=1;

    /* TIME2 Config */
    PR2=0x7D;         //125
    T2CON=0x02;     //16M  1:16 Fosc/4,  -> 0.25MHz -> 4us
    TMR2=0;
    TMR2ON=1;
    TMR2IE=1;

    IOCIE=1;
    PEIE=1;
    GIE=1;
}

void interrupt ISR(void)
{
    if(TMR2IE&&TMR2IF)      //Timer2 500us
    {
        TMR2IF=0;
        Timeout ++;
        if(Timeout >= 2000)           // 1S
        {
           Timeout = 0;
           IsSendCmd = 1;
        }
    }
}

void main()
{
    System_Init();
       
    while(1)
    {
        if(IsSendCmd)
        {
            IsSendCmd = 0;

            if(LED1 == 1)
            {
                LED1 = 0;
                LED2 = 1;
            }
            else
            {
                LED1 = 1;
                LED2 = 0;
            }
        }
    }
}



沙发
huarana| | 2014-10-24 12:37 | 只看该作者
独端口的时候要设为输入啊。if(LED1 == 1) 这种显然不合适啊。

使用特权

评论回复
板凳
lx911gt| | 2014-10-28 09:59 | 只看该作者
你先配置完基本部分后,先在while做个给高电平或低电平你的LED端口先试试能不能亮再说吧,没人会仔细看贴出来的代码的

使用特权

评论回复
地板
NE5532| | 2014-10-29 15:27 | 只看该作者
楼主属于明显给自己找事的人,你连这种单片机的门都没摸到,就写了100多行代码出来了,你这样写不行啊?

while(1)
{
PortA ^= 0xFF;
}

使用特权

评论回复
5
大副|  楼主 | 2014-10-30 15:43 | 只看该作者
NE5532 发表于 2014-10-29 15:27
楼主属于明显给自己找事的人,你连这种单片机的门都没摸到,就写了100多行代码出来了,你这样写不行啊?

w ...

对,你牛X,大神!你写过101行代码.
你以为你那样写能解决问题吗? 我喜欢什么代码风格管你屁事啊?
版主就了不起啊?封号啊.屎一样的货色!**!

使用特权

评论回复
6
lrqzsu| | 2014-10-30 16:02 | 只看该作者
大副 发表于 2014-10-30 15:43
对,你牛X,大神!你写过101行代码.
你以为你那样写能解决问题吗? 我喜欢什么代码风格管你屁事啊?
版主就了 ...

年轻人,天干物燥啊

使用特权

评论回复
7
yklstudent| | 2014-10-30 16:39 | 只看该作者
哎,这种态度不行的,楼主。且行且珍惜

使用特权

评论回复
8
NE5532| | 2014-10-31 09:56 | 只看该作者
大副 发表于 2014-10-30 15:43
对,你牛X,大神!你写过101行代码.
你以为你那样写能解决问题吗? 我喜欢什么代码风格管你屁事啊?
版主就了 ...

连门都没有摸到,还拒绝人家批评,你能看懂这个while循环,就入门了。就5楼这德性,回家洗了睡吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝