⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led+key.c

📁 TMS320F2407的实验C程序,基础易懂
💻 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 + -