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

📄 ch452_2407.c.bak

📁 键盘LED控制芯片与2407的C程序
💻 BAK
字号:
/******************************************************************
本程序实现DSP控制ch452来实现键盘显示
*********************************************************************/
#include <2407.h>
#include <intrins.h>
#include <ch452_2407_pin.h>  // 修改该文件以适应硬件环境/单片机型号等

 //输出命令子程序
 //定义一无符号整型变量存储12字节的命令字。
void CH452_Write(unsigned int cmd)
{
	unsigned char i;
	
	CH452_LOAD_CLR;  	                     //命令开始,LOAD=0
	
	for(i=12;i!=0;i--)										//送入12位数据,低位在前
	{
		if (cmd&1) 
			{
				CH452_DIN_SET;
			}
			
		else 
			{
				CH452_DIN_CLR;
			}  							                   // 输出位数据
			
    	CH452_DCLK_CLR;
    	cmd>>=1;
    	CH452_DCLK_SET;                    //上升沿有效
	}
	
  CH452_LOAD_SET;                        //加载数据,LOAD上升沿
	DELAY(6);															 //命令数据加载周期不小于6US
}


//*************************************************
//读按键子程序,DSP从CH452读出按键的代码
unsigned char CH452_Read()
{
	unsigned char i;
  unsigned char cmd,keycode;		//定义命令字,和数据存储器

  	cmd=0x07;			               //输入读451命令字
  	CH452_LOAD_CLR;
  	for(i=4;i!=0;i--)
	{
		if (cmd&1) 
			{
				CH452_DIN_SET;
			}
			
		else 
			{
				CH452_DIN_CLR;
			}  	
															// 输出命令的前4位数据
    	CH452_DCLK_CLR;			 
    	cmd>>=1;			      			//往右移一位
    	CH452_DCLK_SET;			      //产生时钟上升沿锁通知CH451输入位数据
 	}
 	
 	
  	CH452_LOAD_SET;				      //产生加载上升沿通知CH451处理命令数据
  	keycode=0;				      //清除keycode
  	for(i=0;i!=7;i++)
	{
		keycode<<=1;			      //数据移入keycode,高位在前,低位在后
    	keycode|=CH452_DOUT;		      //从高到低读入451的数据
    	CH452_DCLK_CLR;			      //产生时钟下升沿通知CH451输出下一位
    	CH452_DCLK_SET;
 	}

  	return(keycode);			     //反回键值
}

main()
{
	              
/************** head files ********************/
#include  "reg_c.h" 
#include  "var_g.h"
#include  "fun_ex.h"
#include  "macro.h"

void bk();  


/******************************************************/
main()
{ 
	sysini();						/*system initial*/
	perini();                       /*peripheral initial*/ 
	         
	  
	para_load();
	flagini();
	
	enable(); 
	
    operate_flag=RUN;
    need_brk1=0;
    f_r_last_adj=0;
    f_r_now=12800; 
    f_pwm=0;  
    v_pwm=0;
    oc_flag=0;  
    change_speed_flag=0;
/************************ main loop begin here ********************************/ 

	while(1)
	{     
	  bk();	  
	  relayon(); 
//	  delay_ms(1000); 
	  relayoff();
//	  k_ia=add2(0,1)+k_ia;
	  enable();
	  asm( " nop ") ;  
    }
}



void bk()
{
     
  k_ia++;   
  return; 
  k_ia=0;
}





	
	
	
	
	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -