技术热线: 4007-888-234

{QLdsPIC3}所有IO口流水灯{C30+dsPIC30F6014A}

更新时间: 2019-03-25
阅读量:851

深圳市英锐恩科技有限公司:台湾麦肯单片机(Micon MDT单片机)亚太地区A级代理商

{QLdsPIC3}所有IO口流水灯{C30+dsPIC30F6014A}
//实验目的:通过LED流水灯实验,熟悉dsPIC30F6014A的简单编程
//软件思路:
//          1、PORTD口的低8位的流水灯实验
//          2、用TMR1的定时做流水灯的延时时间
//          3、改变FCY的值可以改变流水灯的速度
//硬件规划:拨码开关S1全置ON,其他拨码开关OFF

#include             //dsPIC30F6014标准头文件

  _FOSC(CSW_FSCM_OFF & XT_PLL4);  //4倍频晶振,Failsafe 时钟关闭
  _FWDT(WDT_OFF);                 //关闭看门狗定时器
  _FBORPOR(PBOR_OFF & MCLR_EN);   //掉电复位禁止,MCLR复位使能。
  _FGS(CODE_PROT_OFF);            //代码保护禁止
#define Fcy 5000000               //流水灯延时时间

void delay()
{
unsigned int j,k;
 for(j=0;j<10000;j++)
    {
      for(k=0;k<12;k++);
    }
}

int main(void)                    //主函数
{  
/*设置LED控制寄存器和定时器*/
//初始化LED端口和按键开关端口
LATA=0;
TRISA=0;
LATB=0;
TRISB=0;
LATC=0;
TRISC=0;
LATG=0;
TRISG=0;
LATD = 0x0000;                   //关闭所有LED
TRISD = 0;                       //设定LED引脚为输出
LATF=0;
TRISF=0;
ADPCFG=0XFFFF;

unsigned char i;                 //定义一循环变量
   while (1)                   
   {

    LATAbits.LATA6=1;            //RA6
    delay();

     LATAbits.LATA6=0;
     LATAbits.LATA7=1;            //RA7
     delay();
     LATAbits.LATA7=0;

     LATAbits.LATA9=1;            //RA9
     delay();

     LATAbits.LATA9=0;
     LATAbits.LATA10=1;            //RA10
     delay();
     LATAbits.LATA10=0;

     LATA=0X1000;                   
     for(i=0;i<4;i++)            //RA12-RA15 
      {
   delay();  
       LATA=LATA<<1;                    
      }

     LATB=0X100;                   
     for(i=0;i<8;i++)            //RB8-RB15 
      {
    delay();   
       LATB=LATB<<1;           
      }

     LATB=1;                    
     for(i=0;i<8;i++)            //RB0-RB7
      {
    delay();
       LATB=LATB<<1;            
      }
     LATB=0;


     LATFbits.LATF8=1;            //RF8
     delay();
     LATFbits.LATF8=0;
    
     LATCbits.LATC1=1;            //RC1-RC4
     for(i=0;i<4;i++)
     {
    delay(); 
       LATC=LATC<<1;            
      }
  
     LATCbits.LATC13=1;            //RC13
     delay();

     LATCbits.LATC13=0;
     LATCbits.LATC14=1;            //RC14
     delay();
     LATCbits.LATC14=0;

     LATD=0X100;                   
     for(i=0;i<8;i++)            //RD8-RD15 
      {
    delay();   
       LATD=LATD<<1;           
      }

     LATD=1;                    
     for(i=0;i<8;i++)            //RD0-RD7
      {
    delay(); 
       LATD=LATD<<1;            
      }
     LATD=0;        

     LATF=1;                    
     for(i=0;i<8;i++)            //RF0-RF7
      {
   delay();
       LATF=LATF<<1;           
      }
     LATF=0;   

     LATG=0X1000;                   
     for(i=0;i<4;i++)            //RG12-RG15 
      {
   delay(); 
       LATG=LATG<<1;            
      }

       LATG=1;                    
     for(i=0;i<4;i++)            //RG0-RG3
      {
   delay();
       LATG=LATG<<1;            
      }
    
       LATG=0X40;                    
     for(i=0;i<4;i++)            //RG6-RG9
      {
   delay(); 
       LATG=LATG<<1;             
      }
     LATG=0;
   }
}