初学P利用PIC18F8720做跑马灯,请各位大虾给予帮助

[复制链接]
3328|11
 楼主| 笑傲浆糊 发表于 2010-9-24 15:29 | 显示全部楼层 |阅读模式
跑马灯的程序,程序很简单,编译也通过了,但用proteus搭建的仿真平台时,PORTJ口在
循环时,第一次循环正常,第二次循环只从PORTJ0到PORTJ3,然后再从PORTJ0循环到PORTJ7,如此这样循环。我找不出原因,刚刚开始自学PIC.在程序里每一步调试看值都是正常的。不知道为什么用proteus仿真时就不对了,现在确定不了是什么问题,望各位高手帮忙解答,谢了。
#include <pic18.h>

    void delay()

{
   int i;
        for(i=0;i<30000;i++);
}
void main(void)
    {
      static  char a=0;
  TRISJ=0x00;//设置PORTJ为输出口
  PORTJ=0X01;

       while(1)
         {
           delay();
     switch(a)
   {
             case 0:
                   {
    // TRISJ=0x00;
     PORTJ=0X01;
    // RJ0=1;
     a++;
     break;   
          }
   case 1:
                   {
    // TRISJ=0x00;
     PORTJ=0X02;
    // RJ1=1;
     a++;
     break;   
          }
   case 2:
                   {
    // TRISJ=0x00;
     PORTJ=0X04;
    // RJ2=1;
     a++;
     break;   
          }
   case 3:
                   {
    // TRISJ=0x00;
        PORTJ=0X08;
    // RJ3=1;
     a++;
     break;   
          }
   case 4:
                   {
    // TRISJ=0x00;
     PORTJ=0X10;
    // RJ4=1;
     a++;
     break;   
          }
   case 5:
                   {
    // TRISJ=0x00;
        PORTJ=0X20;
    // RJ5=1;
     a++;
     break;   
          }
   case 6:
                   {
    // TRISJ=0x00;
        PORTJ=0X40;
    // RJ6=1;
     a++;
     break;   
          }
   case 7:
                   {
    // TRISJ=0x00;
        PORTJ=0X80;
    // RJ7=1;
     if(7==a)a=0;
     break;   
          }
    }
         }
  
        
    }
 楼主| 笑傲浆糊 发表于 2010-9-24 16:23 | 显示全部楼层
附件是proteus的仿真

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 笑傲浆糊 发表于 2010-9-24 16:48 | 显示全部楼层
能有高手帮着解答下吗
匠人粉丝团 发表于 2010-9-24 16:55 | 显示全部楼层
有时候用PROTEUS仿真不一定是对的。
你为什么不用那种两个脚的最简单的那种LED灯仿真?
21ID 发表于 2010-9-25 15:32 | 显示全部楼层
LS上正解,proteus有时候确是不好用
 楼主| 笑傲浆糊 发表于 2010-9-25 18:51 | 显示全部楼层
即使用最简单的LED灯,也会出现同样的情况,Proteus 不可能仿真这么简单的还会有问题吧,我想知道是不是我程序的问题,还是关于这个单片机设置哪方面有问题,我实在是找不出来,应该这是个很容易找出的问题啊 ,郁闷,望各位熟悉PIC的帮助下,谢了
 楼主| 笑傲浆糊 发表于 2010-9-25 18:54 | 显示全部楼层
这是这款型号芯片的datasheet,请各位大侠帮忙找出原因啊,不甚感激

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 笑傲浆糊 发表于 2010-9-25 22:04 | 显示全部楼层
高手帮解决一下啊
Nigelool 发表于 2010-9-25 22:25 | 显示全部楼层
刚学PIC为啥不从12F16F学起,直接上了18呢
 楼主| 笑傲浆糊 发表于 2010-9-25 23:24 | 显示全部楼层
以前用过其他的单片机,现在想自己用PIC做点小东西。
很奇怪,程序改成这样就没问题。但是我也不知道为什么。
#include <pic18.h>

    void delay();

        void main(void)
    {
       char a=0;
                EBDIS=0;
                TRISJ=0x00;
                PORTJ=0X01;

                TRISH=0x00;
                PORTH=0X01;
                delay();
                for(;;)
                 {
                   PORTJ=PORTJ<<1;
                   delay();
                 }
  }
 楼主| 笑傲浆糊 发表于 2010-9-25 23:26 | 显示全部楼层
TRISH=0x00; PORTH=0X01;这两个是不起作用的。
 楼主| 笑傲浆糊 发表于 2010-9-29 09:28 | 显示全部楼层
没人顶,只有自己给自己分了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

35

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部