?? led.c
字號(hào):
#include "2407c.h"
#define T1MS 0x9c3f /* 9c3fH=40000-1 */
ioport unsigned int port8000;
ioport unsigned int port8005;
ioport unsigned int port8007;
void interrupt gptime1(void); /* 中斷服務(wù)程序,定時(shí)器計(jì)數(shù)T1MS次時(shí)中斷調(diào)用 */
void gp_init(void); /* 定時(shí)器初始化 */
unsigned int uWork,nCount;
int * pf;
main()
{
int i;
*WDCR=0x6f;
*WDKEY=0x5555;
*WDKEY=0xaaaa; /* 關(guān)閉看門狗中斷 */
*SCSR1=0x81fe; /* 設(shè)置DSP運(yùn)行頻率40m */
(*MCRB)=0;
asm(" setc INTM"); /* 關(guān)中斷,進(jìn)行關(guān)鍵設(shè)置時(shí)不允許發(fā)生中斷,以免干擾 */
uWork=(*MCRC); /* 將PWM12/IOPE6設(shè)置成通用I/O口,以控制實(shí)驗(yàn)箱上指示燈 */
uWork&=0x0ffbf;
(*MCRC)=uWork;
gp_init(); /* 設(shè)置定時(shí)器 */
*IMR=0x2; /* 使能定時(shí)器中斷(INT2) */
*IFR=0xffff; /* 清除中斷標(biāo)志 */
port8000=0; // 初始化ICETEK-CTR
port8000=0x80;
port8000=0;
port8000=0x82;
port8007=0; // 關(guān)閉東西方向的交通燈
port8007=0x40; // 關(guān)閉南北方向的交通燈
asm(" clrc INTM"); /* 開中斷 */
for(;;);
}
// 中斷服務(wù)程序:響應(yīng)INT2中斷
void interrupt gptime1(void) /* 中斷服務(wù)程序定義,須使用interrupt聲 */
{
uWork=(*PIVR); /* 讀外設(shè)中斷向量寄存器*/
switch(uWork)
{
case 0x27: /* T1PINT,0x27為定時(shí)器1的周期中斷的向量值 */
{
(*EVAIFRA)=0x80; /* 清除中斷標(biāo)志T1PINT */
nCount++;
if ( nCount>=500 ) /* 計(jì)數(shù)500此=500ms=0.5秒*/
{
uWork=(*PEDATDIR); /* 設(shè)置指示燈狀態(tài)翻轉(zhuǎn)一次 */
uWork|=0x4000;
uWork^=0x0040;
(*PEDATDIR)=uWork;
nCount=0;
}
break;
}
}
}
void gp_init(void)
{
*EVAIMRA = 0x80; /* 使能T1PINT即通用定時(shí)器1周期中斷 */
*EVAIFRA = 0xffff; /* 清除中斷標(biāo)志 */
*GPTCONA = 0x0000;
*T1PR = T1MS; /* 周期寄存器=40000 */
*T1CNT = 0; /* 計(jì)數(shù)初值=0 */
*T1CON = 0x1040; /* 啟動(dòng)計(jì)數(shù)器 */
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -