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

📄 lab3_1.c

📁 实现键盘扫描
💻 C
字号:
//★★★★★注意:本模板可能根据不同实验内容作修改★★★★★

//------------------------------------------------------------------------------
// 实验题目、内容
//     
// 
// 
//------------------------------------------------------------------------------
// 文件名:        LABxx_YZ.C
// 处理器型号:    PIC24FJ64GA006
// 采用外部晶振:  16MHz
// 编译器:        MPLAB C30

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// HXY         2007.10.29     初始版本
// 
//------------------------------------------------------------------------------

//如下语句强烈建议所有的程序中都保留//
#include <p24FJ64GA006.h>
unsigned char	RESERED[100];		//预留区,供ICD2调试使用
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & FWDTEN_OFF ) 	//程序配置位
_CONFIG2( FNOSC_PRI & FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS ) 

//------------------------------------------------------------------------------
//函数功能:延时程序(毫秒)
//入口参数:del(数值范围:16位整型)
//出口参数:无
//------------------------------------------------------------------------------
void DelaymS(unsigned int del) 
{
	unsigned int j;
	while(del--) 
		for(j=0;j<1600;j++);
}

//------------------------------------------------------------------------------
//函数功能:I/O端口初始化
//入口参数:无
//出口参数:无
//------------------------------------------------------------------------------
void IOInit()
{
	AD1PCFG= 0xFFFF;		//关闭PORTB端口所有引脚的模拟功能
	TRISB= 0xFFFF;			//设置PORTB的16位全部输出
	TRISD=0x0000;
        TRISE=0x0000; 
}
//------------------------------------------------------------------------
//外部中断0服务程序
//
//------------------------------------------------------------------------
//void _ISR  _INT0Interrupt( )
//{
//	IFS0bits.INT0IF=0;		//清中断标志位
//	LATB=0x0000;
//	……
//}

//------------------------------------------------------------------------------
//函数功能:main函数
//------------------------------------------------------------------------------
int main()
{
	unsigned int ASCI={0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046};
        unsigned int kcol,krow;                 
	IOInit();			//IO端口初始化
	while(1)
	{
           kcol=0xFFFF;
           krow=0xFFFF;
           PORTD=0xFFFC;
           if(PORTB!=0xFFFF)
              {
                 DelaymS(20);
                 PORTD=0xFFFE;
                 if(PORTB!=0xFFFF)
                     {
                        kcol=0;
                        krow=PORTB&0x0007;
                      }
                  else
                      {
                         PORTD=0xFFFD;
                         kcol=1;
                         krow=PORTB&0x0007;
                       } 
           
                 } 
           //拼键值并在二极管上显示
            if(kcol==0) PORTE=~ASCII[krow];
            else if(kcol==1) PORTE=~ASCII[krow+8];
            else PORTE=0xFFFF;  //全灭          
	  	
	 }
}
// end of main

⌨️ 快捷键说明

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