按换行键结束。0.3秒一个音,不要按得太快。码御
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
void main()
{
char p
int i=0
printf("input 12345678..\n")
while ( i <50 ){
p = getch()
if (p == '\r') break
switch(p-'0'){
case 1: Beep(523,300)break
case 2: Beep(587,300)break
case 3: Beep(659,300)break
case 4: Beep(698,300)break
case 5: Beep(784,300)break
case 6: Beep(880,300)break
case 7: Beep(980,300)break
case 8: Beep(1060,300)break
default: break
}
i++
}
exit(0)
}
这是使用实验仪器键盘上的数字键1,2,3,4,5,6,7作为闹数键盘键,按适当的音的问题。 8255 PA.0口音频脉差弯轮冲以驱动扬声器的问题。可以参考一下。#包括
#定义模式0X82
外部数据无符号字符型音箱_at_ 0X8000
外部数据无符号字符型OUTBIT _at_ 0x9002
外部数据无符号字符型OUTSEG _at_ 0x9004
外部数据无符号字符型IN _at_ 0x9001
代码无符号字符型KEYTABLE [] = {
0X16,0X15,0X14 ,是0xFF,
0X13,0X12,0X11,0X10,
0X0D,0X0C,0X0B,0X0A,
0X0E,0X03,0X06,0X09,
0x0F的,0X02,0X05,0X08 ,
0X00,0X01,0x04的0X07
}
无符号字符型testkey的()
{
OUTBIT = 0
回报( &0X0F)
}
无符号字符型的getKey()
{
无符号字符位置
无符号字符型
无符号字符K
= 6
POS = 0x20的
{
OUTBIT =位置
POS >>= 1 K = IN&0X0F
}(( - = 0)&&(K == 0))
(k! = 0){ * = 4
(K&2)
+ = 1
其他(K&4)
+ = 2
否则,如果(K&8)
+ = 3
OUTBIT = 0
返回(KEYTABLE [])
}否则返回(0XFF)
}
/ * ================================== ============================================== * / />代码unsigned int类型ToneTable [7] = {
64578,64686,64778,64821,64898,64968,65029
无符号字符型PulseCNT
无符号字符虚信型脉冲
无符号ToneHigh ToneLow
无效计时器()中断1
{
TR0 = 0
TH0 = ToneHigh/ a>TL0 = ToneLow
TR0 = 1,
扬声器=脉冲
脉冲+ +
PulseCNT -
无效的主要()
{
无符号的字符键
控制模式
OUTSEG = 0
脉冲= 0
BR />TMOD = 0X01/ / 1,头脑
IE = 0X82/ / EA = 1,IT0 = 1
(1){
同时(testkey的)/ /按钮
关键的getKey()
((>= 1)&&(<= 7)){
ToneHigh = ToneTable [键1] >>8
ToneLow = ToneTable [1]&0xff的
TH0 = ToneHigh
TL0 = ToneLow
TR0 = 1
PulseCNT = 100
(PulseCNT! = 0)/ / 100脉冲
音箱= 0
TR0 = 0
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)