资源简介
单片机课程设计,实现电子琴功能,用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上传到网站
相关资源
- 单片机课程设计电子秤电子称proteus仿
- 51单片机数码管显示万年历的程序
- HMC830_HMC_MODE.rar
- AES单片机加密解密 C语言源代码
- 原创:51单片机操作ds18b20ds1302,lcd1
- Modbus源码(PIC单片机版)
- 32乘以32点阵屏源代码与仿真
- 51单片机驱动步进电机(含电路图和
- 51F单片机jtag程序.pdf
- 基于pic单片机的数字pfc源码
- 基于单片机的json编解码源码.zip
- 单片机控制1602液晶滚动显示字符
- STC15的modbus程序
- 基于单片机花样流水灯原理图及源码
- 自己编写的基于单片机的自己编的4
- 51单片机c语言4x4矩阵键盘实验详细操
- 51单片机-舵机控制C语言程序
- 《新概念51单片机C语言教程--入门提高
- 电子琴.zip
- 51单片机DIY制作:旋转LED数字显示电子
- AVR单片机C语言程序设计精粹程序
- DSM501A基于51单片机code
- 各种语言编写的pcm代码
- STC单片机与si4432C语言程序
- 用单片机控制ADC0804实现5V电压表程序
- 51单片机-数码管时钟秒表
- 国密SM4加密解密51单片机版C源程序.
- 单片机常用的C语言程序和继电器备用
- 4*5键盘
- 简易电子琴_proteus.rar
评论
共有 条评论