和室友写了个简单的LED翻转程序,触摸感应区时翻转LED状态,由于LED输出电平在单片机初始化后是随机的,想让LED灯一开始是绿灯亮,之后再进行翻转操作,然而只要在进入循环前对LED引脚进行配置,程序运行结果就不对:触摸时LED状态翻转,随即又恢复至原来状态~~~若在进入循环前不对LED引脚进行配置,那么程序运行就正常,但是LED灯的初始状态就成随机的了,据说这段程序从开始就是错误的~~~然而我们还是没找到问题的出处
,,
相关原理图:
代码:
- #include<pic16LF1823.h>
- void main()
- {
- static bit led_status; //定义一个静态的位变量
- ANSELC=0;
- TRISCbits.TRISC1=0; // 配置LED引脚为输出
- PORTCbits.RC1 = 1; // 去除这行代码则LED翻转正常~~~
- TRISCbits.TRISC0=1; // 配置触摸感应引脚为输入
- led_status = RC1; //把LED灯的当前状态赋给变量led_status
-
- while(1)
- {
- if(RC0==1) // 检测到触摸信号
- {
- led_status=~led_status;
- while(RC0)
- RC1=led_status; // 翻转LED灯状态
-
- }
-
- }
- }
本帖最后由 Tobey 于 2017-3-22 12:10 编辑