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

📄 main.c.bak

📁 用Visual C++实现键盘的驱动程序
💻 BAK
字号:
/* $Id: //depot/software/SDK2/Triscend/a7hal/examples/hello/main.c#1 $ *//* ********************************************************** *  main.c *  Copyright(C) 2001-2002 Triscend Corporation. All Rights Reserved. *  This file is licensed under the terms of Triscend SDK License Agreement. ********************************************************** */#include <a7hal.h>#include <stdio.h>#include <stdlib.h>#include "main.h"#include "keyboard.h"#define keyctrl 	*( ( unsigned char * ) keyCtrl )#define keystat  	*( ( unsigned char * ) keyState )static unsigned char keyvaluetable[] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};//----------for keypad----------volatile char keypressed,keyreleased,keyvalid,key,keyout;/* *  Timer0 Interrupt Handler */void Delay(int period);void timer0_ISR( unsigned long whichTimer ){	int i,j = 0;	int halt;	unsigned char pre = keystat;    a7hal_timer_clearInt( A7HAL_ICU_TIMER0 );	a7hal_icu_intDisable( A7HAL_ICU_TIMER0 );    a7hal_icu_intDisable( A7HAL_ICU_CSL0 );	keyctrl = 1;	for(i = 0; (i < 6) && (pre != keystat); i++, keyctrl <<= 1);	if (i < 6)	{		pre = ~pre & 0x0f;			if (keystat != 0xf)		{				while (pre > 1)			{				pre >>= 1;				j++;			}			printf("%c ", keyvaluetable[i * 4 + j] );			Delay(1000);			while (keystat != 0xf);		}	}	keyctrl = 0xff;	a7hal_icu_intEnable( A7HAL_ICU_CSL0 );}/* *  IRQ0 Interrupt Handler  --  keypad IRQ Capture */void irq0_ISR( unsigned long param ){	//printf("key irq generate!\n");    a7hal_icu_intDisable( A7HAL_ICU_CSL0 );    a7hal_icu_intEnable( A7HAL_ICU_TIMER0 );	a7hal_timer_start( 5000, 0, A7HAL_DIV_256 | A7HAL_PERIODIC );}int main(  ){		//char ch;    char *src;        a7hal_uart_init ();    printf( "Uart Init Finished .\n" );        /* Connect an ISR for the FIQ */    a7hal_icu_intConnect( timer0_ISR, A7HAL_INT_LVL_TIMER0, 0 );    /* Enable the timer interrupt and the FIQ */    a7hal_icu_intEnable( A7HAL_INT_LVL_TIMER0 );    /* Start the timer */    //a7hal_timer_start( 0x8000, 0, A7HAL_DIV_256 | A7HAL_PERIODIC );    //a7hal_timer_stop( 0 );    printf( "Timer Init Finished .\n" );          /* Enable the irq0 interrupt  */    a7hal_icu_intConnect( irq0_ISR, A7HAL_ICU_CSL0, 0 );    a7hal_icu_intEnable( A7HAL_ICU_CSL0 );    printf( "Irq0 Init Finished .\n" );     //src = ( char * ) malloc( 128 );        //----------for keypad----------    keyctrl = 0xff;    keypressed=0;    keyvalid= 0;    	printf( "Press any key to continue ...\n" );    for ( ;; )    {    		    //gets( src );		if(keyvalid==1)		{			keyvalid=0;			//ch = keymap(keyout);			//get key value			//printf("%c",ch);			//keyctrl = 0xff;			//a7hal_icu_intEnable( A7HAL_ICU_CSL0 );		}    }}void Delay(int period){	int i,j;	long value;	for(i=0;i<period;i++)	{		for(j=0;j<period;j++)		{			value = i*j;		}	}}  

⌨️ 快捷键说明

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