• 大小: 39KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-21
  • 语言: C/C++
  • 标签: 单片机  电子琴  

资源简介

单片机课程设计,实现电子琴功能,用C语言编写。

资源截图

代码片段和文件信息

/*-----------------------------------------------------*
*文件描述:本文件包含了H08C键盘中断子函数分别为:       *  
*(1)KB_Init:键盘初始化函数                             *
*   void KB_Init(void)                                 *
*(2)KB_Scan:扫描读取键值函数                           *
*   unsigned char KB_Scan(void)                        *
*(3)KB_Def:键值转为定义值函数                          *
*   unsigned char KB_Def(unsigned char KB_valve)       *
*-----------------------------------------------------*/
/*[以下为子程序源代码]*/
/*[头文件]*/
#include “GP32C.H“
#include “KB.h“
/*KB_Init:键盘初始化函数-------------------------------*
*功  能:初始化键盘中断的引脚,但未开放键盘中断         *
*参  数:无                                             *
*返  回:无                                             *
*-----------------------------------------------------*/  
unsigned char flag=0;
void KB_Init(void)
{
 KB_P=0x00;             //复位KB_P
 KB_D=0b00001111;       //定定义7-4为输入3-0为输出
 KB_PUE=0b11110000;     //定义输入引脚有内部上拉电阻
 //INTKBSCR|= (1< // INTKBIER=0b11110000;   //允许输入引脚的中断可进入
// INTKBSCR|= (1<}
/*KB_Scan:扫描读取键值函数-----------------------------*
*功  能:扫描一次4*4键盘上的按键,读取键值->*p          *
*         若无按键,*p为0xff                           *
*参  数:无                                             *
*返  回:扫描到的键值                                   *
*-----------------------------------------------------*/  
unsigned char KB_Scan(void) 
 {
 unsigned char lineitmp;
     line=0b11111110;        //使第一根行线为0(低电平)
 for(i=1;i<=4;i++)         //将扫描4根行线
  {
        tmp=KB_P;            //取KB_P->tmp
        tmp|=0b00001111;     //KB_P.7-4保留KB_P.3-0为1
        KB_P=tmp&line;       //令KB_P.n=0n=0、1、2、3
    asm(“NOP“);            //等待,消除按键抖动
    asm(“NOP“);
    tmp=KB_P;
    tmp&=0b11110000;       //看第n行是否有键按下
    if(tmp!=0xf0)          //本行有键按下
     {
        tmp=KB_P;
    break;
     }
     else                  //本行无键按下扫描下一行
    line=(line<<1)|0x01; 
 }
  if(i==5)   tmp=0xff;
  
  return(tmp);
 }
 unsigned char KB_Scan2(void) 
 {
 unsigned char lineitmptmp1tmp2line1line2line3;
     line=0b11110111;        //使第四根行线为0(低电平)
 for(i=1;i<=4;i++)         //将扫描4根行线
  {
        tmp=KB_P;            //取KB_P->tmp
        tmp|=0b00001111;     //KB_P.7-4保留KB_P.3-0为1
        KB_P=tmp&line;       //令KB_P.n=0n=0、1、2、3
    asm(“NOP“);            //等待,消除按键抖动
    asm(“NOP“);
    tmp=KB_P;
    tmp&=0b11110000;       //看第n行是否有键按下
    if(tmp!=0xf0)          //本行有键按下
     {
        tmp=KB_P;
        if(tmp==0xe7||tmp==0xd7)
        {
           line1=0b11111110;
           for(i=1;i<=3;i++)
           {
            tmp1=KB_P;            //取KB_P->tmp
                tmp1|=0b00001111;     //KB_P.7-4保留KB_P.3-0为1
                KB_P=tmp1&line1;       //令KB_P.n=0n=0、1、2、3
            asm(“NOP“);            //等待,消除按键抖动
            asm(“NOP“);
            tmp1=KB_P;
            tmp1&=0b1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件         35  2007-06-18 09:21  电子琴6.6WAN\diazq.lk

     文件      36186  2007-06-18 09:21  电子琴6.6WAN\diazq.lst

     文件        599  2007-06-18 09:21  电子琴6.6WAN\diazq.mak

     文件       3648  2007-06-18 09:21  电子琴6.6WAN\diazq.mp

     文件        187  2007-06-18 09:21  电子琴6.6WAN\diazq.prj

     文件       5316  2007-06-18 09:21  电子琴6.6WAN\diazq.s19

     文件         93  2007-06-18 09:21  电子琴6.6WAN\diazq.src

     文件       5592  2006-04-12 11:14  电子琴6.6WAN\gp32c.h

     文件        500  2006-04-12 11:14  电子琴6.6WAN\KB.h

     文件       6230  2007-06-07 20:16  电子琴6.6WAN\KBsub.c

     文件      27215  2007-06-18 09:21  电子琴6.6WAN\KBsub.lis

     文件       5158  2007-06-18 09:21  电子琴6.6WAN\KBsub.o

     文件      12111  2007-06-18 09:21  电子琴6.6WAN\KBsub.s

     文件       4773  2007-06-07 20:07  电子琴6.6WAN\main.c

     文件      26285  2007-06-18 09:21  电子琴6.6WAN\main.lis

     文件       6426  2007-06-18 09:21  电子琴6.6WAN\main.o

     文件      10913  2007-06-18 09:21  电子琴6.6WAN\main.s

     文件       1803  2005-04-16 11:05  电子琴6.6WAN\setup.c

     文件       3286  2007-06-18 09:21  电子琴6.6WAN\setup.lis

     文件        273  2007-06-18 09:21  电子琴6.6WAN\setup.o

     文件       2156  2007-06-18 09:21  电子琴6.6WAN\setup.s

     文件       1655  2007-06-06 11:02  电子琴6.6WAN\vectors08.c

     文件       2722  2007-06-18 09:21  电子琴6.6WAN\vectors08.lis

     文件        672  2007-06-18 09:21  电子琴6.6WAN\vectors08.o

     文件       1481  2007-06-18 09:21  电子琴6.6WAN\vectors08.s

     目录          0  2009-03-25 22:45  电子琴6.6WAN

----------- ---------  ---------- -----  ----

               165315                    26


评论

共有 条评论