资源简介
单片机课程设计,实现电子琴功能,用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
- 上一篇:简单的n皇后基于MFC
- 下一篇:VC++ 实现将本地文件通过HTTP上传到网站
相关资源
- 单片机c语言源程序(51定时器 八个按
- 用单片机控制蜂鸣器播放旋律程序(
- 合泰触摸单片机BS84B08C实际应用代码上
- 基于STM32单片机的心率体温测量仪
- 九齐单片机源码
- 单片机PID控制(C语言)
- 基于单片机的交通灯设计.doc
- C51单片机技术教程(304页)
- C51单片机交通
- 单片机C语言实战开发108例
- Arduino 敲琴MIDI电子琴 程序报告.docx
- stm32库函数代码自动生成器V1.2
- 单片机电子密码锁
- 单片机程序(附初级、中级、高级共
- 按键可调万年历(单片机程序)
- 51单片机数码管四层电梯模拟系统
- 基于51单片机的温控系统
- 51单片机protues文件(KST-51.DSN)
- 51单片机交通灯设计
- 基于51单片机的简易计算器
- 单片机按键长按
- 基于51单片机多路超声波报警设计
- 51单片机红外智能小车
- 单片机控制绕线机.c
- qt上位机采集51单片机温湿度数据
- AVR单片机SPI通讯程序 (C语言源代码)
- BP神经网络C语言工程当前最终版
- 汉字取模软件----单片机使用必备
- 基于51单片机射频RFID卡考勤上课上班
- 可以在单片机上计算的BP神经网络C语
评论
共有 条评论