?? led+key.c
字號:
//(2) 主程序
// 該程序用于實驗演示模板上的8個LED的顯示
#include "register.h"
int j,k;
main() // 初始化子程序
{
asm(" setc SXM"); // 抑制符號位擴展
asm(" clrc OVM"); // 累加器中結果正常溢出
asm(" clrc CNF"); // B0被配置為數據存儲空間
asm(" setc INTM"); // 禁止所有中斷
SCSR1=0x81FE; // CLKIN=10M,CLKOUT=4*CLKIN=40M
WDCR=0x0E8; // 不使能看門狗,因為SCSR2中的WDOVERRIDE
// 軟件禁止看門狗
IMR=0x0000; // 禁止所有中斷
IFR=0x0FFFF; // 清除全部中斷標志,"寫1清0"
MCRA=MCRA&0x00c7; // IOPA3,IOPA4,IOPA5,IOPB端口配置為一般的I/O功能, TMS320LF240x的
// 端口均為8位,MCRA為16位因此控制了IOPA和IOPB的設置
PBDATDIR=0x0FF00; // IOPB端口設置為輸出方式
PADATDIR=PADATDIR|0x0FF38;
PADATDIR=PADATDIR&0x0FF00; //IOPA3,IOPA4,IOPA5 設置為輸出方式,且LEDCLK=1
PADATDIR=PADATDIR|0x0FF10; // IOPA3,IOPA4,IOPA5 設置為輸出方式,選通KEYC
while(1)
{
PBDATDIR=PBDATDIR&0x00ff;
k=PBDATDIR&0x00FF;
if(k==0x00FF) k=0;
else k=1;
if(k==1)
{
for(j=0;j<3000;j++) ;
k=PBDATDIR&0x00FF;
if(k==0x00FF) k=0;
else k=1;
}
if(k==1)
{
k=PBDATDIR&0x00FF;
switch(k)
{
case 0x00FE:PBDATDIR=(PBDATDIR&0x0FF00)|0x0FF01; break; //按下S1點亮led1
case 0x00FD:PBDATDIR=(PBDATDIR&0x0FF00)|0x0FF02; break; //按下S2點亮led2
case 0x00FB:PBDATDIR=(PBDATDIR&0x0FF00)|0x0FF04; break; //按下S3點亮led3
case 0x00F7:PBDATDIR=(PBDATDIR&0x0FF00)|0x0FF08; break; //按下S4點亮led4
case 0x00EF:PBDATDIR=(PBDATDIR&0x0FF00)|0x0FF10; break; //按下S5點亮led5
case 0x00DF:PBDATDIR=(PBDATDIR&0x0FF00)|0x0FF20; break; //按下S6點亮led6
case 0x00BF:PBDATDIR=(PBDATDIR&0x0FF00)|0x0FF40; break; //按下S7點亮led7
case 0x007F:PBDATDIR=(PBDATDIR&0x0FF00)|0x0FF80; break; //按下S8點亮led8
default: PBDATDIR=PBDATDIR;
}
PADATDIR=PADATDIR|0x0FF38;
PADATDIR=PADATDIR&0x0FF00; //IOPA3,IOPA4,IOPA5 設置為輸出方式,且LEDCLK=1
PADATDIR=PADATDIR|0x0FF10;
}
}
}
// 直接返回中斷服務程序
void interrupt nothing( )
{
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -