好久都没有用KEIL了,突然想动手,一时还真不知道从哪开始写,所以先弄个小实例,以便参考:
#include <reg52.h>  //加载包括一个52标准内核的头文件,里面主要是一些寄存器名定义
#define MSH (665536-50000)/256    //采用12M晶振,所减的值为定时值,单位为MS
#define MSL (665536-50000)%256

sbit VoiceInput=P1^0;   //声音输入
sbit VibrationInput=P1^1; //振动输入
sbit WarnerOutput=P1^2;//报警输出

void timer0() interrupt 1//定时器中断处理函数
{
TF0=0;
TH0=MSH;
TL0=MSL;
WarnerOutput=~WarnerOutput;
}

void main(void)
{
VoiceInput=0;
VibrationInput=0;
TMOD=0x01;//定时器0,16位工作方式
EA=1;//打开总中断
while(1)
    {
      if(VoiceInput && VibrationInput)
        {
         TR0=1;                   //启动定时器
         ET0=1;                   //打开定时器0中断
         VoiceInput=0;
         VibrationInput=0; 
        }
    }
}

注:
void Timer0()  interrupt 1 using 1

Timer0   是函数名,可随便取 
interrupt   xx   using   y 
跟在interrupt   后面的xx   值得是中断号,就是说这个函数对应第几个中断端口,一般在51中 
0 ,外部中断0  ;   1, 定时器0 ;   2 ,外部中断1 ;      3  ,定时器1 ;   4  ,串行中断 
实际上编译的时候就是把你这个函数的入口地址方到这个对应中断的跳转地址

using   y   这个y是说这个中断函数使用的那个寄存器组,51里面一般有4组 : r0-r7寄存器,一共有32个,如果所用函数和别的程序用的不是同一个寄存器组,,则进入中断的时候就不会将寄存器组压入堆栈,返回时也不会弹出来节省代码和时间

最新文章

  1. 1.3 jQuery基础
  2. CURLcode curl_easy_setopt(原创)
  3. linux vi编辑器操作手册
  4. gulp入坑系列(1)——安装gulp
  5. double int char 数据类型
  6. oracle的存储结构
  7. WPF、Windows Forms和Silverlight间的联系和区别(转)
  8. LA 6187 - Never Wait for Weights 并查集的带权路径压缩
  9. Html5新增加的属性
  10. Java集合类具体解释
  11. 使用Dataset
  12. Jersey框架三:Jersey对HTTPS的支持
  13. Monad / Functor / Applicative 浅析
  14. 【Unity3D与23种设计模式】游戏的主循环——Game Loop
  15. webapi从入门到放弃(一)OWIN 自寄宿模式
  16. 【Vue.js】vue引入组件报错:该组件未注册?
  17. 报错libtest: error while loading shared libraries: libuv.so.1: cannot open shared object file: No such file or directory
  18. Python 不可变对象练习
  19. Windows 添加用户
  20. 利用javascript:void(0)制作假的提交按钮替代button

热门文章

  1. 2014-08-05 再次接触VBA
  2. 百度搜索URL参数 搜索关键字
  3. [LeetCode] 61. Rotate List 解题思路
  4. [Python]round四舍五入精度缺失的解决
  5. CentOS 6.3下Samba服务器的安装与配置(转)
  6. mysql中文名字按首字母排序
  7. Swift之高德地图自定义标注弹出气泡样式
  8. NYOJ 16 矩形嵌套(动态规划)
  9. mevan引入容联云通讯jar
  10. mysql 数据库 备份 还原