打印

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

[复制链接]
1778|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
笑傲浆糊|  楼主 | 2010-9-24 15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
跑马灯的程序,程序很简单,编译也通过了,但用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=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;   
          }
    }
         }
  
        
    }

test1 for PIC.rar

20.76 KB

相关帖子

沙发
笑傲浆糊|  楼主 | 2010-9-24 15:26 | 只看该作者
附件的proteus仿真

使用特权

评论回复
板凳
笑傲浆糊|  楼主 | 2010-9-24 15:27 | 只看该作者
#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;   
          }
    }
         }
  
        
    }

使用特权

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

本版积分规则

0

主题

35

帖子

1

粉丝