请各位帮忙看看这个流水灯的程序问题出在哪

2020-02-09 11:28发布

/*包含头文件*/
#include<pic.h>//**********************************************PIC16F690芯片
/*宏定义*/
#define uchar unsigned char
#define uint  unsigned int
/*定义子函数*/
void delay(uint);//延时子函数

/*配置位*/

__CONFIG(0x3FF2);
/*主函数*/
void main()
{
uchar i;
TRISC = 0x00;//配置PORTC口为输出
while(1)
{
  PORTC = 0x01;//这句赋值在MPLAB SIM Debug里面调试
                     //看不到PORTC口有变化
  for(i=8;i>0;i--)
  {
   delay(200);//延时200ms
   PORTC = PORTC<<1;//PORTC口数据左移一位
  }
}
}
/*延时1ms子函数*/
void delay(uint z)//z的值为多少就大概延时多少ms
{
uint x,y;
for(x=z;x>0;x--)
  for(y=152;y>0;y--);
}




上面这个程序是我根据下面这个程序改的,上面的PORTC赋值有问题,而下面的这个程序给PORTD赋值没有问题



#include<pic.h>//****************************************************************PIC16F877芯片
#define uchar unsigned char
#define uint  unsigned int
__CONFIG(0x3B31);
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
  for(b=110;b>0;b--);
}
void main()
{
uchar i;
TRISD=0x00;
while(1)
{
  PORTD=0x01;
  for(i=8;i>0;i--)
  {
   delay(200);
   PORTD=PORTD<<1;
  }
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
role_2099
1楼-- · 2020-02-09 16:45
我用的单片机型号是PIC16F690,调试环境是MPLAB SIM,内置8M晶振
单步调试,执行PORTC=0x01;语句后PORTC的值仍然是00!
用proteus方针调试,RC0会亮一下然后熄灭,但是其他的LED没有反应

应该是很简单的问题,但是我在这困住了,希望哪位能帮忙指点一下
dianxinwuban
2楼-- · 2020-02-09 20:58
C口有跟AD功能复用 要设置为IO数字功能
role_2099
3楼-- · 2020-02-09 23:43
回复【2楼】dianxinwuban
-----------------------------------------------------------------------

就是这个原因,谢谢电信五班

一周热门 更多>