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