深圳市英銳恩科技有限公司:臺灣麥肯單片機(Micon MDT單片機)亞太地區A級代理商
QLdsPIC3]流水燈[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 //流水燈延時時間
int main(void) //主函數
{
/*設置LED控制寄存器和定時器*/
//初始化LED端口和按鍵開關端口
LATD = 0x0000; //關閉所有LED
TRISD = 0xFF00; //設定LED引腳為輸出
T1CON = 0; //關閉定時器1
TMR1 = 0; //啟動定時器1的計數寄存器為0
PR1 = (Fcy/256)/2; //設定延時時間
T1CON = 0x8030; //配置定時器1 (定時器開, 在空閑模式定時器繼續工作,
//控時間累加禁止, 預分頻比是1:256, 內部時鐘)
unsigned char i; //定義一循環變量
while (1)
{
LATD=1; //先點亮PORTD0口LED
for(i=0;i<8;i++) //循環8次,依次點亮所有LED
{
while(!IFS0bits.T1IF); //等待延時時間到
LATD=LATD<<1; //緩沖器左移一位,以便點亮下一位LED
IFS0bits.T1IF=0; //定時器中斷標志位清0
}
}
}