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

📄 exam.c

📁 这是一个源码程序包
💻 C
字号:
/////////////////////////////////////
//  Generated Initialization File  //
/////////////////////////////////////

#include "C8051F330.h"
#include "intrins.h"
#include "CH452CMD.H"	// 定义常用命令码及外部子程序
#include "pin.h"

// Peripheral specific initialization functions,
// Called from the Init_Device() function
void Port_IO_Init()
{
    // P0.0  -  Unassigned,  Open-Drain, Digital
    // P0.1  -  Unassigned,  Open-Drain, Digital
    // P0.2  -  Unassigned,  Open-Drain, Digital
    // P0.3  -  Unassigned,  Open-Drain, Digital
    // P0.4  -  Unassigned,  Open-Drain, Digital
    // P0.5  -  Unassigned,  Open-Drain, Digital
    // P0.6  -  Unassigned,  Open-Drain, Digital
    // P0.7  -  Unassigned,  Open-Drain, Digital

    // P1.0  -  Unassigned,  Open-Drain, Digital
    // P1.1  -  Unassigned,  Open-Drain, Digital
    // P1.2  -  Unassigned,  Open-Drain, Digital
    // P1.3  -  Unassigned,  Open-Drain, Digital
    // P1.4  -  Unassigned,  Open-Drain, Digital
    // P1.5  -  Unassigned,  Open-Drain, Digital
    // P1.6  -  Unassigned,  Open-Drain, Digital
    // P1.7  -  Unassigned,  Open-Drain, Digital

    XBR1      = 0x40;
}

void Interrupts_Init()
{
    IE        = 0x81;
    IT01CF    = 0x07;
}

// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
    Port_IO_Init();
    //Interrupts_Init();
}

/////////////////////////////////////////////////////////////////////////
sbit	LED=P1^6;

void delayms()
{unsigned int j;
 for(j=0;j<=1000;j++){_nop()_;}	 

}


void CH452_Write(unsigned short cmd)
{
	unsigned char i;
	DISABLE_KEY_INTERRUPT;		  //禁止键盘中断,防止传输过程中被CH452中断而进入中断服务程序中再次传输
	CH452_LOAD_CLR;                 //命令开始,LOAD=0
	CH452_LOAD_D_OUT;		// 设置LOAD为输出方向
	CH452_DOUT_D_IN;		// 设置DOUT为输入方向
	CH452_DIN_D_OUT;		// 设置DIN为输出方向
	CH452_DCLK_D_OUT;		// 设置DCLK为输出方向
	for(i=0;i!=12;i++)				//送入12位数据,低位在前
	{
	 if (cmd&1) {CH452_DIN_SET;}
	    else {CH452_DIN_CLR;}  // 输出位数据
                                   // 另外的表达CH452_DIN=cmd&1;
    	 CH452_DCLK_CLR;
    	 cmd>>=1;
	 DELAY_1US;
	 DELAY_1US;	
	    	CH452_DCLK_SET;             //上升沿有效
	}
  	CH452_LOAD_SET;         //加载数据,LOAD上升沿
	DELAY_1US;				//命令数据加载周期不小于6US,CH451不需要该周期
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;				//命令数据加载周期不小于6US,CH451不需要该周期
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;				//命令数据加载周期不小于6US,CH451不需要该周期
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	
  	ENABLE_KEY_INTERRUPT;
}

//*************************************************
//输入按键代码子程序,从CH452读取
unsigned char CH452_Read( void )
{
	unsigned char i;
  	unsigned char cmd,keycode;		//定义命令字,和数据存储器
  	DISABLE_KEY_INTERRUPT;			//禁止键盘中断,防止传输过程中被CH452中断而进入中断服务程序中再次传输	
  	cmd=0x07;			        //读按键的命令字
  	CH452_LOAD_CLR;
  	for(i=0;i!=4;i++)                       // 只需要发出高4位,多发也可以,但应该确保最后留下的4位是该命令码
	{
		if (cmd&1) {CH452_DIN_SET;}
		else {CH452_DIN_CLR;}           // 输出位数据
//		CH452_DIN=cmd&1;		//送入最低位
    	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,高位在前,低位在后
		if (CH452_DOUT) keycode++;      //从高到低读入451的数据
//    	keycode|=CH452_DOUT;
    	CH452_DCLK_CLR;			        //产生时钟下升沿通知CH451输出下一位
    	CH452_DCLK_SET;
 	}
  	CLEAR_KEY_INTER_FLAG;	                //清中断标志
  	ENABLE_KEY_INTERRUPT;
  	return(keycode);		        //反回键值
}


void main(void)
{uchar key;
//	CH452_Write(CH452_RESET);	
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	CH452_Write(CH452_SYSON2);//打开键盘显示
	CH452_Write(CH452_BCD);   // BCD译码,8个数码管
while(1){
	key=ch452_read();
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	CH452_Write(CH452_DIG0 | 6);
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	CH452_Write(CH452_DIG5 | 4);
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
  }
}

⌨️ 快捷键说明

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