C51 中断服务程序的写法

发布者:梦想启航最新更新时间:2016-12-14 来源: eefocus关键字:C51  中断服务程序 手机看文章 扫描二维码
随时随地手机看文章

格式:void 函数名()interrupt 中断号 using 工作组
{
    中断服务程序内容
}
  注意:中断不能返回任何值,所以前面是 void 后面是函数名,名字可以自己起,但不要与c语言的关键字相同;中断函数不带任何参数,所以 函数名后面的  () 内是 空的,中断号是指单片机的几个中断源的序号。这个序号是单片机识别不同中断的唯一标志。所以一定要写正确。

  后面的using 工作组 是指这个这个中断使用单片机内存中 4 个工作寄存器的哪一组,  c51 编译后会自动分配工作组,因此最后这句话我们通常省略不写。 c51 中断写法实例  
void T1-time() interrupt 3
{
  TH1=(65536-50000)/256;
  TL1=(65536-50000)%256;
}
  上面的意思是定时器  1 的中断服务程序,定时器  1  的中断服务序号是  3 ,因此我们要写成 interrupt 3 ,服务程序的内容是给 两个初值寄存器装入新值。。
  写中断前的准备 
       1  TMOD 赋值  确定工作方式。T0  还是T1  的工作方式。
  2  计算初值  装入 TH0 TL0 或者  TH1 TL1 
  3  中断方式时 ,对 IE 赋值,开放中断。
  4  使 TR0 和 TR1 置位,启动定时器/计数器  定时/计数。

关键字:C51  中断服务程序 引用地址:C51 中断服务程序的写法

上一篇:MCS-51单片机定时器/计数器、串行口、多机通讯
下一篇:c51单片机中断认知

推荐阅读最新更新时间:2024-03-16 15:25

C51里的函数指针
在C语言里面提供了函数指针,我认为它比较重要的功能就是用来提供接口,使得C语言可以模拟面向对象的语言为某些功能提供接口,实现功能代码的隔离。 这不,前些日子写了个小程序,用C51写的,其中有个功能就是操作液晶屏,在上面显示菜单、输出结果什么的。在我看来,这部分功能使用函数指针最好不过了。譬如,不管是什么菜单,总得要显示出来吧,定义一个show()接口就好。这样上层代码很简单,反正对每个菜单都调用其show()接口,它们自己完成显示。 嗯,可是想法是好的,结果是不妙的。首先这么做在C51的语法层面上没有任何问题,编译后没有任何错误。可是实际运行时就发现一些奇怪的现象,譬如调用某个函数,明明入口参数的值是100,跑到函数内部就
[单片机]
C51】源码 5 -- LCD 1602 显示字符
LCD 1602,正式说法叫 LCM 1602(包括了一些外围电路),一般用来显示简单的字符,也可以通过自定义的方式 造字 。 刚学会基本的字符显示,仅仅是字符显示就大量应用了各种指令格式,姑且在这个阶段写个程序,总结一下: 程序功能:在 LCD 正中央显示字符: Hello World 、 By Fate 注:LCD 1602 的使用: http://gaebolg.blog.163.com/blog/static/198269068201231665524137/ 附上源码:(初出茅庐,难免有写的不好的地方,仅作备份之用,欢迎指点,喷子退散 ) /*----------------------------------
[单片机]
深入剖析keil c51 --- 从汇编到c51
C插入汇编语句 #pragma asm ljmp 0 #pragma endasm 如果就这样直接编译的话,会出现以下错误: error C272: 'asm/endasm' requires src-control to be active 解决方法:在 Files Toolbar 中选中当前C51文件,点右键查看文件选项,将 Generate Assembler SRC File 与 Assemble SRC File 的勾选由灰色变为黑色,即使这两项有效! 第一节 main()函数和启动代码 汇编是从org 0000h开始启动,那么keil c51是如何启动main()函数的?keil c
[单片机]
单片机C51汇编指令之寻址方式学习心得
1.寄存器寻址 指令举例:MOV A,R0 该指令功能:将寄存器R0中的内容送累加器A中 详细说明:假设R0中的内容是16进制数20H,那么执行这条指令之后,累加器A中的内容是20H 即十进制数:32 2.直接寻址 指令举例:MOV A,30H 该指令功能:将地址单元30H中的内容送累加器A中 详细说明:假设地址单元30H中的内容是20H,那么执行该指令之后,累加器A中的内容是:20H 即十进制数32 3.寄存器间接寻址 指令举例:MOV A,@R0 该指令功能:将R0指向的内存单元中的内容送累加器A中 详细说明:为和寄存器直接寻址区别,汇编语言中,寄存器间接寻址中的寄存器前面会加上一个
[单片机]
STC89C52与AT24C02按字节写(C51
#include reg52.h #include intrins.h #define uchar unsigned char uchar i,a; uchar code table ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8}; sbit wp=P1^0; sbit scl=P1^1; sbit sda=P1^2; sbit led=P2^0; void delay() { _nop_(); _nop_(); _nop_(); } void de1s() //误差 0us { unsigned char a,b,c; for(c=167;c 0;c--)
[单片机]
lcd液晶12232F的串口C51程序
由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教! 由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教! /******************************************************/ /* 12232F串口驱动程序C51,11.0592M晶振 */ /*使用这款LCD应该要注意的问题: */ z /
[单片机]
ASM51调用C51函数的实现
MCS-51系列单片机在目前和今后的相当一段时间内都将是我国的单片机主流机种。但在早期的开发过程中,程序员不得不从深奥的汇编语言开始摸索,同时要求开发人员对硬件亦有相当的子解。相比而言,专用8051系列单片机设计的Franklin C51语言是一种通用的高级结构化的程序设计语言。入门容易,程序可读性强,调试、移植都很方便,故开发效率高,尤其在数值运算处理方便具有很大的优势(这正是ASM51汇编语言的薄弱环节)。不过,C语言虽然也可对计算机的硬件系统进行操作,但在处理特殊I/O口和中断向量方面,不如汇编那样直接、有效。因而,在效率为重的今天,将ASM51汇编与C51语言结合起来,充分发挥各自的优势,无疑是单片机开发人员的最佳选
[单片机]
S51的由来及与C51的区别
AT89很多初学51单片机的网友会有这样的问题:AT89S51是什么?书上和网络教程上可都是8051,89C51等!没听说过有89S51,这里,初学者要澄清单片机实际使用方面的一个产品概念,MCS-51单片机是美国INTEL公司于1980年推出的产品,典型产品有 8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在, MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、已经停产的89C51等),各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved