************************** Copyright(C) CaKe ****************************************
========================================================================================
==============**版權(quán)信息 : CaKen工作室 ==============
==============**文件名 : main.c ==============
==============**作者 : CaKen ==============
==============**版本號(hào) : V1.0 ==============
==============**時(shí)間 : 2014.08.23 ==============
==============**功能描述 : 16鍵電子琴實(shí)驗(yàn)測(cè)試 ==============
========================================================================================
****************************************************************************************
#include"reg52.h"
#define uchar unsigned char //宏定義
#define uint unsigned int
#define CaKen_KEY1 P1 //定義按鍵
#define CaKen_KEY2 P2
sbit CaKen_SPEAKER = P3^7; //蜂鳴器
uchar CaKen_MUSIC; //全局變量
uchar CaKen_STH0;
uchar CaKen_STL0;
unsigned int code Tab[]= //電子琴音頻符
{
64021,64103,64260,64400, //低音3開始
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178
};
=====================================================================================
==================函數(shù)名: main
======================================================================================
void main()
{
TMOD = 0x01; //定時(shí)器0工作模式=方式1 (0 0 0 1) 16位定時(shí)器/計(jì)數(shù)器
ET0 = 1; //定時(shí)器0中斷允許
EA = 1; //開啟總中斷
CaKen_KEY1=0xff; //按鍵初始化,高電平
while(1) //進(jìn)入循環(huán)
{
if(CaKen_KEY1!=0xff|CaKen_KEY2!=0xff)
{
switch(~CaKen_KEY1) //顯示的列位置
{
case 0x01: CaKen_MUSIC = 1;break;
case 0x02: CaKen_MUSIC = 2;break;
case 0x04: CaKen_MUSIC = 3;break;
case 0x08: CaKen_MUSIC = 4;break;
case 0x10: CaKen_MUSIC = 5;break;
case 0x20: CaKen_MUSIC = 6;break;
case 0x40: CaKen_MUSIC = 7;break;
case 0x80: CaKen_MUSIC = 8;break;
default:break;
}
switch(~CaKen_KEY2)
{
case 0x01: CaKen_MUSIC = 9 ;break;
case 0x02: CaKen_MUSIC = 10;break;
case 0x04: CaKen_MUSIC = 11;break;
case 0x08: CaKen_MUSIC = 12;break;
case 0x10: CaKen_MUSIC = 13;break;
case 0x20: CaKen_MUSIC = 14;break;
case 0x40: CaKen_MUSIC = 15;break;
case 0x80: CaKen_MUSIC = 16;break;
default:break;
}
CaKen_STH0 = Tab[CaKen_MUSIC]/256;
CaKen_STL0 = Tab[CaKen_MUSIC]%6;
TR0 = 1; //開啟定時(shí)器0 進(jìn)入定時(shí)器中斷函數(shù)
}
else
{
CaKen_SPEAKER = 1; //關(guān)蜂鳴器
TR0 = 0; //關(guān)定時(shí)器
}
}
}
======================================================================================
==================函數(shù)名:定時(shí)器中斷服務(wù)函數(shù)
=======================================================================================
void CaKen_QQ1145266160_TIMER0(void) interrupt 1
{
TH0 = CaKen_STH0;
TL0 = CaKen_STL0;
CaKen_SPEAKER = ~CaKen_SPEAKER;
}
=======================================================================================
------------------- CaKen工作室 原創(chuàng)作品 --------------------
------------------- CaKen工作室 版權(quán)所有 --------------------
========================================================================================