深圳市英锐恩科技有限公司:台湾麦肯单片机(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;
}
}