6816|6

259

帖子

5

TA的资源

一粒金砂(高级)

楼主
 

【已解决】pic16lf1823单片机引脚初始化问题 [复制链接]

本帖最后由 Tobey 于 2017-3-22 12:10 编辑

       和室友写了个简单的LED翻转程序,触摸感应区时翻转LED状态,由于LED输出电平在单片机初始化后是随机的,想让LED灯一开始是绿灯亮,之后再进行翻转操作,然而只要在进入循环前对LED引脚进行配置,程序运行结果就不对:触摸时LED状态翻转,随即又恢复至原来状态~~~若在进入循环前不对LED引脚进行配置,那么程序运行就正常,但是LED灯的初始状态就成随机的了,据说这段程序从开始就是错误的~~~然而我们还是没找到问题的出处,,

相关原理图:


代码:
  1. #include<pic16LF1823.h>
  2. void main()
  3. {        
  4.         static bit led_status;                 //定义一个静态的位变量
  5.         ANSELC=0;
  6.     TRISCbits.TRISC1=0;                        // 配置LED引脚为输出
  7.         PORTCbits.RC1 = 1;                  // 去除这行代码则LED翻转正常~~~
  8.         TRISCbits.TRISC0=1;                        // 配置触摸感应引脚为输入
  9.         led_status = RC1;                   //把LED灯的当前状态赋给变量led_status
  10.                
  11.     while(1)
  12.     {
  13.                 if(RC0==1)                                 // 检测到触摸信号
  14.         {
  15.                         led_status=~led_status;
  16.                         while(RC0)
  17.                         RC1=led_status;                // 翻转LED灯状态

  18.                 }

  19.         }
  20. }
复制代码



最新回复

谢谢,楼主分享 谢谢,楼主提供的场地。如果需要PIC原装正品的单片机或者可以替代的单片机可以联系我(不需要修改PCB资料,程序可以共用)  详情 回复 发表于 2017-8-23 11:48
点赞 关注
 

回复
举报

4177

帖子

9

TA的资源

五彩晶圆(高级)

推荐
 
Tobey 发表于 2017-3-22 11:16
pic这块并不是我负责的,我也不了解PIC单片机,,从网上找了别人写的代码参考着写了这么个测试用 ...

确实,头文件弄不好,再写多少都是枉然。。。。。。一般官网会有它的头文件包之类的吧,一般是这样。
 
 
 

回复

128

帖子

1

TA的资源

一粒金砂(中级)

沙发
 
为什么不初始化参数呢?

点评

问题就在于初始化后程序运行不对啊,,,  详情 回复 发表于 2017-3-22 08:11
 
 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

板凳
 
低调的路人 发表于 2017-3-21 21:52
为什么不初始化参数呢?

问题就在于初始化后程序运行不对啊,,,
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

4
 
没用过pic的这个片子,但是你可以连接仿真器,debug下看寄存器的值啊。通过判断寄存器的值,确定你的程序在哪里配置的不对啊。

点评

pic这块并不是我负责的,我也不了解PIC单片机,,从网上找了别人写的代码参考着写了这么个测试用例,, 问题已经解决了,主要问题出在头文件及配置上,,,正确代码如下: [mw_shl_code=applescript,t  详情 回复 发表于 2017-3-22 11:16
 
 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

5
 
huaiqiao 发表于 2017-3-22 09:25
没用过pic的这个片子,但是你可以连接仿真器,debug下看寄存器的值啊。通过判断寄存器的值,确定你的程序在 ...

       pic这块并不是我负责的,我也不了解PIC单片机,,从网上找了别人写的代码参考着写了这么个测试用例,,       问题已经解决了,主要问题出在头文件及配置上,,,正确代码如下:
  1. #include<pic.h>

  2. __CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);
  3. __CONFIG(PLLEN_OFF&LVP_OFF) ;//配置位

  4. void delay(unsigned int x)
  5. {
  6.         unsigned int y,z;
  7.         for(y=x;y>0;y--)
  8.                 for(z=25;z>0;z--);
  9. }

  10. void IO_Init(void)//初始化IO
  11. {
  12.   ANSELC=0;          //将RC口全部设置成数字口,
  13.   TRISCbits.TRISC1=0;//设置RC1为输出
  14.   PORTCbits.RC1=1;   //设置输出高电平,即关闭灯
  15.        
  16.   TRISCbits.TRISC0=1;//设置RC0为输入
  17.   WPUCbits.WPUC0=1;  //设置输入上拉
  18. }

  19. void main(void)
  20. {       
  21.            static bit temp = 0; //定义一个静态的变量

  22.         IO_Init();

  23. //        temp = RC1;   //把RC1 LED灯的当前状态赋给变量temp   RC1是输出模式,读取到数据?这地方不对,建议不用

  24.     delay(1000);  //等一秒,让触摸板校正
  25.           while(RC0);          //等到校正结束

  26.     while(1)
  27.     {  
  28.        if(RC0==1)//按下触摸板
  29.        {
  30.                         while(RC0);//等触摸板变回0,即松开手指
  31.                         {
  32.                                 temp=~temp;//每按一次,位变量temp取反一次
  33.                                 PORTCbits.RC1=temp;//要是第一次触摸,灯不亮,第二次触摸,灯亮,static bit temp = 0; 改为static bit temp = 1;即可
  34.                         }
  35.        }   
  36.     }
  37. }
复制代码

点评

确实,头文件弄不好,再写多少都是枉然。。。。。。一般官网会有它的头文件包之类的吧,一般是这样。  详情 回复 发表于 2017-3-22 11:55
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

7
 
谢谢,楼主分享

谢谢,楼主提供的场地。如果需要PIC原装正品的单片机或者可以替代的单片机可以联系我(不需要修改PCB资料,程序可以共用)
 
个人签名Microchip原装正品单片机,另有可替换单片机(无需修改PCB资料,程序可共用PIC的) 有用到的兄弟多多支持! 期待您的来电。 电话13430885511
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表