Linux编程实现蜂鸣器演奏康定情歌

摘自:https://blog.csdn.net/jiazhen/article/details/3490979
 
2008年12月10日 15:40:00 jiazhengod 阅读数:1714 标签: linux编程delay
 

  1. #include   <sys/io.h>
  2. #include   <unistd.h>
  3. void   play(unsigned   int*   freq,   unsigned   int*   delay);
  4. main()
  5. {
  6. int   i;
  7. unsigned   int   freq[]={   330   ,   392   ,   330   ,   294   ,   330   ,   392   ,
  8. 330   ,   394   ,   330   ,   330   ,   392   ,   330   ,
  9. 294   ,   262   ,   294   ,   330   ,   392   ,   294   ,
  10. 262   ,   262   ,   220   ,   196   ,   196   ,   220   ,
  11. 262   ,   294   ,   330   ,   262   ,   0   }   ;
  12. unsigned   int   time[]={   50   ,   50   ,   50   ,   25   ,   25   ,   50   ,
  13. 25   ,   25   ,   100,   50   ,   50   ,   25   ,
  14. 25   ,   50   ,   50   ,   25   ,   25   ,   100,
  15. 50   ,   25   ,   25   ,   50   ,   25   ,   25   ,
  16. 50   ,   25   ,   25   ,   100   };
  17. unsigned   int   freq2[]={
  18. 196,262,262,262,330,294,262,294,330,294,262,
  19. 330,394,440,440,394,330,330,262,294,262,294,
  20. 330,294,262,230,230,196,262,440,394,330,330,
  21. 262,294,262,294,440,394,330,330,394,440,523,
  22. 394,330,330,262,294,262,294,330,294,262,230,
  23. 230,196,262,440,394,330,330,262,294,262,294,
  24. 440,394,330,330,394,440,523,394,330,330,262,
  25. 294,262,294,330,294,262,230,230,196,262,0
  26. };
  27. unsigned   int   time2[]={
  28. 25,38,12,25,25,38,12,25,12,12,56,25,25,50,25,
  29. 38,12,12,12,38,12,25,12,12,38,12,25,25,100,25,
  30. 38,12,12,12,38,12,25,25,38,12,25,25,100,25,38,
  31. 12,12,12,38,12,25,12,12,38,12,25,25,100,25,38,
  32. 12,12,12,38,12,25,25,38,12,25,25,100,25,38,12,
  33. 12,12,38,12,25,12,12,38,12,25,25,100
  34. };
  35. unsigned   int   freq_alert[]={
  36. 2000,   2400,   0
  37. };
  38. unsigned   int   time_alert[]={
  39. 50,   60
  40. };
  41. for(i   =   0;   i   <   5;   i++)
  42. {
  43. play(freq_alert,   time_alert);
  44. }
  45. play(freq2,   time2);
  46. }
  47. void play(unsigned   int*   freq,   unsigned   int*   time)
  48. {
  49. int   i;
  50. for(i=0;freq[i]!=0;i++)
  51. {
  52. speaker(freq[i],   time[i]);
  53. }
  54. }
  55. int speaker(unsigned   int   freq,unsigned   int   delay)
  56. {
  57. static   int   flag=0,bit;
  58. if(fl   ag==0)
  59. {
  60. flag=1;
  61. iopl(3);
  62. }
  63. outb(0xb6,0x43);
  64. outb((freq & 0xff),     0x42);
  65. outb((freq>>8), 0x42);
  66. bit=inb(0x61);
  67. outb(3   |   bit,0x61);
  68. usleep(10000*delay);
  69. outb(0xfc   |   bit,0x61);
  70. }

Linux编程实现蜂鸣器演奏康定情歌的更多相关文章

  1. 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结 转载

    基础篇:操作系统.计算机网络.设计模式 一:操作系统 1. 进程的有哪几种状态,状态转换图,及导致转换的事件. 2. 进程与线程的区别. 3. 进程通信的几种方式. 4. 线程同步几种方式.(一定要会 ...

  2. 【转】牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结

    基础篇:操作系统.计算机网络.设计模式 一:操作系统 1. 进程的有哪几种状态,状态转换图,及导致转换的事件. 2. 进程与线程的区别. 3. 进程通信的几种方式. 4. 线程同步几种方式.(一定要会 ...

  3. Linux 编程中的API函数和系统调用的关系【转】

    转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API: ...

  4. linux编程获取本机网络相关参数

    getifaddrs()和struct ifaddrs的使用,获取本机IP 博客分类: Linux C编程   ifaddrs结构体定义如下: struct ifaddrs { struct ifad ...

  5. 面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结

    基础篇:操作系统.计算机网络.设计模式 一:操作系统 1. 进程的有哪几种状态,状态转换图,及导致转换的事件. 2. 进程与线程的区别. 3. 进程通信的几种方式. 4. 线程同步几种方式.(一定要会 ...

  6. Linux编程简介

    Linux编程可以分为Shell(如BASH.TCSH.GAWK.Perl.Tcl和Tk等)编程和高级语言(C语言,C++语言,java语言等)编程,Linux程序需要首先转化为低级机器语言即所谓的二 ...

  7. Linux编程return与exit区别

    Linux编程return与exit区别 exit  是用来结束一个程序的执行的,而return只是用来从一个函数中返回. return return 表示从被调函数返回到主调函数继续执行,返回时可附 ...

  8. linux 编程技术

    linux 编程技术No.1前期准备工作 GCC的编译过程分为预处理.生成汇编代码.生成目标代码和链接成可执行文件等4个步骤. 使用vim编写C 文件 : [lining@localhost prog ...

  9. Linux编程之给你的程序开后门

    这里说的"后门"并不是教你做坏事,而是让你做好事,搭建自己的调试工具更好地进行调试开发.我们都知道,当程序发生异常错误时,我们需要定位到错误,有时我们还想,我们在不修改程序的前提下 ...

随机推荐

  1. [欢乐赛]班服 状压DP

    班服 (shirt.pas/.c/.cpp) 时间限制:1s:内存限制 128MB 题目描述: 要开运动会了,神犇学校的n个班级要选班服,班服共有100种样式,编号1~100.现在每个班都挑出了一些样 ...

  2. k8s1.4.3安装实践记录(3)下载基础镜像

    下载基础镜像,因为Google被墙,所以我们用时速云中的镜像来tag docker pull index.tenxcloud.com/google_containers/pause-amd64:3.0 ...

  3. python 笔记2016

    列表,元组(不可添加和修改),字典 3种集合模式 模块----类---函数 要把文件变成双击运行,要把文件的属性选择python安装目录下的python.exe 1,查看数据类型 print(type ...

  4. java代码----对于数据类型Integer

    总结: 主要是方法的理解 老师曾经说过final 和fianlly的区别 我自己的理解就是 如果一个类的前面定义了final,那么它就不能被继承,派生子类,对于方法,那么方法就不能改变,变量前面也是必 ...

  5. Linux系统启动流程与系统目录

    启动流程 # 1,开机BIOS自检 检查一系列的硬件,最后根据启动顺序启动,是硬盘还是光驱等 # 2,MBR引导 读硬盘0柱面0磁道1扇区的前446字节 1扇区=512字节 MBR=4446字节 四个 ...

  6. 枚举生成1~n的排序

    /*枚举生成1~n的排列*/ #include <iostream> #include<algorithm> #include<queue> #include< ...

  7. ISIS与OSPF的区别与联系

    共同之处: 1 都是链路状态路由协议,都要求区域内的路由器交换链路状态信息,链路状态信息被收集到链路状态数据库中 2 都是用了一种实现路由选择信息交换相似机制 3 都在广播网络中选择指定路由器来控制扩 ...

  8. Python极其简单的分布式异步作业管理系统RQ入门

    Python极其简单的分布式异步作业管理系统RQ入门 原创 2017-08-19 lixing 生信人 Python极其简单的分布式异步作业管理系统RQ入门 1. 什么是Job? Job直译过来就是工 ...

  9. EasyUI介绍及常见问题

    JQuery Easy UI介绍 1.JQuery Easy UI环境搭建和调试: https://jingyan.baidu.com/article/67508eb4342f9f9cca1ce426 ...

  10. 1.celery概述

    1. 问题抛出 我们在做网站后端程序开发时,会碰到这样的需求:用户需要在我们的网站填写注册信息,我们发给用户一封注册激活邮件到用户邮箱,如果由于各种原因,这封邮件发送所需时间较长,那么客户端将会等待很 ...