完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include #define uchar unsigned char #define uint unsigned int ***it buz=P0^1; uchar keycode; /*各音阶对应计数器初值:1,2,3,4,5,6,7,1(高)*/ uint toneh[8]={ 0xfc43,0xfcab,0xfd08,0xfd32,0xfd81,0xfdc7,0xf05e,oxfe21}; uchar keymode [8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void main() { Sys_Init(); do { keycode=Get_Key(); /*获取键值索引*/ Play(keycode); } } unchar Get_Key () { uchar temp,i; p1=0xff; temp=P1; for (i=0;i<8;i++) { if (temp==keymode ) return i; } return (8); //无正确对应的键值,则忽略 } void sys_init() { TMOD=0x10; /*启动定时器1*/ EA=1; /*开总中断*/ ET1=1; /*允许定时器1中断*/ P1=0xff; /*设置P1口为输入模式*/ } void play (uchar key) { if (key==8)/*无键按下或多键按下,不响应*/ { TR1=0; buz=0; } else { TR1=1; /*有键按下,开中断*/ keycode=key; /*键值索引赋值*/ } } void timer 0(void) interrupt 3 using 1 /*定时器1中断服务程序*/ { buz= !buz; TH0=toneh[keycode]/256; /*获取各键对应的乐音频率所需的定时器高位初值*/ TL0=tonel[keycode]%256; /*获取各键对应的乐音频率所需的定时器低位初值*/ }
|
|
相关推荐
3 个讨论
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 01:01 , Processed in 0.702622 second(s), Total 48, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号