5980|20

135

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

我刚学习PIC单片机,帮我看看这个程序哪里有错 [复制链接]

 
大侠们!帮帮忙,看看程序有何问题,我在软件仿真程序的时候,为何运行到下图处时,
PORTA的值还没有改变呢?

1PNG.PNG (29.77 KB, 下载次数: 6)

1PNG.PNG

最新回复

最好,不要仿真,弄块板子下载程序看结果。仿真和运行差不少呢  详情 回复 发表于 2016-6-21 08:06
点赞 关注
 

回复
举报

12

帖子

0

TA的资源

一粒金砂(中级)

推荐
 
如果你用I/O做输出口,并赋值输出高电平,我的写法是
TRISAbits.TRISA0 = 0;
LATAbits.LATA0 = 1;
如果做输入口那么会这样写
if(1 == PORTAbits.RA0)
操作的是两个寄存器,希望对你有帮助啊
 
 
 

回复

1632

帖子

4

TA的资源

纯净的硅(高级)

沙发
 
要设置为数字IO,默认模拟IO,读为0

点评

为什么你的仿真例子里的C程序只有下面这样,这样子的话等会闪烁吗? //----------------------------------------------------------------- // 名称: 闪烁的LED //--------------------------------  详情 回复 发表于 2015-3-23 21:58
 
个人签名科技改变生活
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

板凳
 
眼大5子 发表于 2015-3-20 09:50

大侠我不太懂你的意思,可以说详细点吗?





 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(中级)

4
 
你那边有PIC单片机的下载接口原理图吗?能给我一份不?我需要那个,谢谢楼主
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

5
 
不好意思我没有,
我刚刚才学习这个学了一下,写了一两条程序都行不通,头大的,有谁知道我的程序有问题的





 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

6
 
大侠们,求助啦,快来帮帮帮忙啊,谢谢了
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

7
 
眼大5子 发表于 2015-3-20 09:50
要设置为数字IO,默认模拟IO,读为0

为什么你的仿真例子里的C程序只有下面这样,这样子的话等会闪烁吗?




//-----------------------------------------------------------------

//  名称: 闪烁的LED

//-----------------------------------------------------------------

//  说明: LED按设定的时间间隔闪烁

//-----------------------------------------------------------------

#include

#define _XTAL_FREQ 4000000UL

#define LED  RC5             //定义LED

//-----------------------------------------------------------------

// 主程序

//-----------------------------------------------------------------

void main()

{

   TRISC = 0x00;             //设置整个PORTC端口为输出(或设置TRISC5 = 0;)

   PORTC = 0xFF;             //初始时输出全1



   while(1)

   {







   }

}


点评

PIC16F676要使能PORTA脚时,不仅仅需要设置TRISA,还要初始化复用功能引脚 一般有两个:AD寄存器,比较器寄存器 尤其是比较器寄存器,PIC16F676初始化时此寄存器为00,默认是PORTA作为比较器模拟输入脚,此时当然不能作为  详情 回复 发表于 2015-3-24 11:24
 
 
 

回复

638

帖子

2

TA的资源

版主

8
 
werjufour 发表于 2015-3-23 21:58
为什么你的仿真例子里的C程序只有下面这样,这样子的话等会闪烁吗?




//-----------------------------------------------------------------

//  名称: 闪烁的LED

//-----------------------------------------------------------------

//  说明: LED按设定的时间间隔闪烁

//-----------------------------------------------------------------

#include

#define _XTAL_FREQ 4000000UL

#define LED  RC5             //定义LED

//-----------------------------------------------------------------

// 主程序

//-----------------------------------------------------------------

void main()

{

   TRISC = 0x00;             //设置整个PORTC端口为输出(或设置TRISC5 = 0;)

   PORTC = 0xFF;             //初始时输出全1



   while(1)

   {







   }

}

PIC16F676要使能PORTA脚时,不仅仅需要设置TRISA,还要初始化复用功能引脚
一般有两个:AD寄存器,比较器寄存器
尤其是比较器寄存器,PIC16F676初始化时此寄存器为00,默认是PORTA作为比较器模拟输入脚,此时当然不能作为输出了
应该将比较器寄存器设置为0X07,关闭比较器功能.

点评

谢谢你的提示 我也刚刚想到了是这个原因 复用的引脚该作为什么功能引脚该设置哪个寄存器呢 我官方下载的中文数据手册中没有提到引脚做为什么功能引脚的设置。 你数据手册哪里下的,可以告诉我吗  详情 回复 发表于 2015-3-24 20:37
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

9
 
dingzy_2002 发表于 2015-3-24 11:24
PIC16F676要使能PORTA脚时,不仅仅需要设置TRISA,还要初始化复用功能引脚
一般有两个:AD寄存器,比较器寄存器
尤其是比较器寄存器,PIC16F676初始化时此寄存器为00,默认是PORTA作为比较器模拟输入脚,此时当然不能作为输出了
应该将比较器寄存器设置为0X07,关闭比较器功能.

谢谢你的提示



我也刚刚想到了是这个原因



复用的引脚该作为什么功能引脚该设置哪个寄存器呢

我官方下载的中文数据手册中没有提到引脚做为什么功能引脚的设置。

你数据手册哪里下的,可以告诉我吗?


点评

官方下载的中文数据手册里面就有的,仔细看下,有书签查看,很是方便的。 我下的也是官方的数据手册。  详情 回复 发表于 2015-3-25 09:57
 
 
 

回复

638

帖子

2

TA的资源

版主

10
 
比较寄存器名称:CMCON,初始化写为CMCON=0x07;
AD寄存器有3个:ADCON0,ADCON1,ANSEL,
其中ADCON0是作为转换通道/转换结果对齐/基准源选择 以及AD模块开启/关闭 的功能设置
      ADCON1是作为转换速率设置
      ANSEL是作为要使用的AD通道对应的管脚 是否作为模拟输入或数字输入选择的。
 
 
 

回复

638

帖子

2

TA的资源

版主

11
 
werjufour 发表于 2015-3-24 20:37
谢谢你的提示



我也刚刚想到了是这个原因



复用的引脚该作为什么功能引脚该设置哪个寄存器呢

我官方下载的中文数据手册中没有提到引脚做为什么功能引脚的设置。

你数据手册哪里下的,可以告诉我吗?

官方下载的中文数据手册里面就有的,仔细看下,有书签查看,很是方便的。
我下的也是官方的数据手册。

点评

我下载的这份都没有,你可以发分给我吗?谢谢了  详情 回复 发表于 2015-3-25 22:28
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

12
 
dingzy_2002 发表于 2015-3-25 09:57
官方下载的中文数据手册里面就有的,仔细看下,有书签查看,很是方便的。
我下的也是官方的数据手册。

我下载的这份都没有,你可以发分给我吗?谢谢了
 
 
 

回复

638

帖子

2

TA的资源

版主

13
 
本帖最后由 dingzy_2002 于 2015-3-26 09:35 编辑

见附件吧,应该是与你下载的一样的。
(中)数据手册 PIC16F630&676.pdf (3 MB, 下载次数: 12)
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

14
 
谢谢
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

16
 
我不知道你的程序怎么定义的  不过我可以给你写一份
#include
__CONFIG(0x1832)//芯片配置
void delay_ms(int ms); //延时函数声明    你要使LED闪烁  一定要有一定的延时
void delay(int ms)
{
  for(int i=0;i   for(int j=0;j<46;j++)
}
void main()
{
  TRISC=0x00;  定义RC口的八个口为输出口
  while(1)
{
    PORTC=0xff; // 先输出RC口为八个高电平;
    delay_ms(500);//延时500毫秒
    PORTC=0x00; //  输出RC口为八个低电平
}
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

17
 
刚开始学,还是用新的IDE吧
 
 
 

回复

136

帖子

0

TA的资源

一粒金砂(中级)

18
 
本帖最后由 dageliu 于 2015-7-13 11:11 编辑
maminbo3 发表于 2015-5-28 19:47
我不知道你的程序怎么定义的  不过我可以给你写一份
#include
__CONFIG(0x1832)//芯片配置
void delay_m ...


芯片配置是怎么配置的,为什么我的总是提示配置位没有配置呀?我已经在程序中添加了下面的配置语句,但还提示未配置。
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
// CONFIG1L
#pragma config PLLDIV = 1       // PLL Prescaler Selection bits (No prescale (4 MHz oscillator input drives PLL directly))
#pragma config CPUDIV = OSC1_PLL2// System Clock Postscaler Selection bits ([Primary Oscillator Src: /1][96 MHz PLL Src: /2])
#pragma config USBDIV = 1       // USB Clock Selection bit (used in Full-Speed USB mode only; UCFG:FSEN = 1) (USB clock source comes directly from the primary oscillator block with no postscale)
// CONFIG1H
#pragma config FOSC = EC_EC     // Oscillator Selection bits (EC oscillator, CLKO function on RA6 (EC))
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF       // Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)
// CONFIG2L
#pragma config PWRT = OFF       // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOR = ON         // Brown-out Reset Enable bits (Brown-out Reset enabled in hardware only (SBOREN is disabled))
#pragma config BORV = 3         // Brown-out Reset Voltage bits (Minimum setting)
#pragma config VREGEN = OFF     // USB Voltage Regulator Enable bit (USB voltage regulator disabled)
// CONFIG2H
#pragma config WDT = OFF        // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
#pragma config WDTPS = 32768    // Watchdog Timer Postscale Select bits (1:32768)
// CONFIG3H
#pragma config CCP2MX = ON      // CCP2 MUX bit (CCP2 input/output is multiplexed with RC1)
#pragma config PBADEN = ON      // PORTB A/D Enable bit (PORTB<4:0> pins are configured as analog input channels on Reset)
#pragma config LPT1OSC = OFF    // Low-Power Timer 1 Oscillator Enable bit (Timer1 configured for higher power operation)
#pragma config MCLRE = ON       // MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled)
// CONFIG4L
#pragma config STVREN = ON      // Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
#pragma config LVP = ON         // Single-Supply ICSP Enable bit (Single-Supply ICSP enabled)
#pragma config ICPRT = OFF      // Dedicated In-Circuit Debug/Programming Port (ICPORT) Enable bit (ICPORT disabled)
#pragma config XINST = OFF      // Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode))
// CONFIG5L
#pragma config CP0 = OFF        // Code Protection bit (Block 0 (000800-001FFFh) is not code-protected)
#pragma config CP1 = OFF        // Code Protection bit (Block 1 (002000-003FFFh) is not code-protected)
#pragma config CP2 = OFF        // Code Protection bit (Block 2 (004000-005FFFh) is not code-protected)
#pragma config CP3 = OFF        // Code Protection bit (Block 3 (006000-007FFFh) is not code-protected)
// CONFIG5H
#pragma config CPB = OFF        // Boot Block Code Protection bit (Boot block (000000-0007FFh) is not code-protected)
#pragma config CPD = OFF        // Data EEPROM Code Protection bit (Data EEPROM is not code-protected)
// CONFIG6L
#pragma config WRT0 = OFF       // Write Protection bit (Block 0 (000800-001FFFh) is not write-protected)
#pragma config WRT1 = OFF       // Write Protection bit (Block 1 (002000-003FFFh) is not write-protected)
#pragma config WRT2 = OFF       // Write Protection bit (Block 2 (004000-005FFFh) is not write-protected)
#pragma config WRT3 = OFF       // Write Protection bit (Block 3 (006000-007FFFh) is not write-protected)
// CONFIG6H
#pragma config WRTC = OFF       // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) are not write-protected)
#pragma config WRTB = OFF       // Boot Block Write Protection bit (Boot block (000000-0007FFh) is not write-protected)
#pragma config WRTD = OFF       // Data EEPROM Write Protection bit (Data EEPROM is not write-protected)
// CONFIG7L
#pragma config EBTR0 = OFF      // Table Read Protection bit (Block 0 (000800-001FFFh) is not protected from table reads executed in other blocks)
#pragma config EBTR1 = OFF      // Table Read Protection bit (Block 1 (002000-003FFFh) is not protected from table reads executed in other blocks)
#pragma config EBTR2 = OFF      // Table Read Protection bit (Block 2 (004000-005FFFh) is not protected from table reads executed in other blocks)
#pragma config EBTR3 = OFF      // Table Read Protection bit (Block 3 (006000-007FFFh) is not protected from table reads executed in other blocks)
// CONFIG7H
#pragma config EBTRB = OFF      // Boot Block Table Read Protection bit (Boot block (000000-0007FFh) is not protected from table reads executed in other blocks)
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

19
 
freshworld 发表于 2015-4-10 16:24
如果你用I/O做输出口,并赋值输出高电平,我的写法是
TRISAbits.TRISA0 = 0;
LATAbits.LATA0 = 1;
如果 ...

正解
 
 
 

回复

21

帖子

1

TA的资源

一粒金砂(初级)

20
 
建议初学,用汇编语言。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表