打印

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

[复制链接]
1813|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的仿真

test1 for PIC.rar

20.76 KB

使用特权

评论回复
板凳
笑傲浆糊|  楼主 | 2010-9-24 16:48 | 只看该作者
能有高手帮着解答下吗

使用特权

评论回复
地板
匠人粉丝团| | 2010-9-24 16:55 | 只看该作者
有时候用PROTEUS仿真不一定是对的。
你为什么不用那种两个脚的最简单的那种LED灯仿真?

使用特权

评论回复
5
21ID| | 2010-9-25 15:32 | 只看该作者
LS上正解,proteus有时候确是不好用

使用特权

评论回复
6
笑傲浆糊|  楼主 | 2010-9-25 18:51 | 只看该作者
即使用最简单的LED灯,也会出现同样的情况,Proteus 不可能仿真这么简单的还会有问题吧,我想知道是不是我程序的问题,还是关于这个单片机设置哪方面有问题,我实在是找不出来,应该这是个很容易找出的问题啊 ,郁闷,望各位熟悉PIC的帮助下,谢了

使用特权

评论回复
7
笑傲浆糊|  楼主 | 2010-9-25 18:54 | 只看该作者
这是这款型号芯片的datasheet,请各位大侠帮忙找出原因啊,不甚感激

PIC18F8720.pdf

3.29 MB

使用特权

评论回复
8
笑傲浆糊|  楼主 | 2010-9-25 22:04 | 只看该作者
高手帮解决一下啊

使用特权

评论回复
9
Nigelool| | 2010-9-25 22:25 | 只看该作者
刚学PIC为啥不从12F16F学起,直接上了18呢

使用特权

评论回复
10
笑傲浆糊|  楼主 | 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();
                 }
  }

使用特权

评论回复
11
笑傲浆糊|  楼主 | 2010-9-25 23:26 | 只看该作者
TRISH=0x00; PORTH=0X01;这两个是不起作用的。

使用特权

评论回复
12
笑傲浆糊|  楼主 | 2010-9-29 09:28 | 只看该作者
没人顶,只有自己给自己分了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

35

帖子

1

粉丝