【转】C51中断函数的写法
一、中断允许控制
CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。
- § EX0(IE.0),外部中断0允许位;
- § ET0(IE.1),定时/计数器T0中断允许位;
- § EX1(IE.2),外部中断1允许位;
- § ET1(IE.3),定时/计数器T1中断允许位;
- § ES(IE.4),串行口中断允许位;
- § EA (IE.7), CPU中断允许(总允许)位。
80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。
一、工作方式寄存器TMOD
工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:
GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚INT0/1也为高电平时,才能启动定时/计数器工作。即此时定时器的启动条件,加上了INT0/1引脚为高电平这一条件。:定时/计数模式选择位。C/T =0为定时模式;C/T=1为计数模式。
M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。
TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:
- TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。
- TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。
- TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。
- TR0(TCON.4):T0运行控制位,其功能与TR1类同。
3.3.5 定时/计数器应用举例
初始化程序应完成如下工作:
- 对TMOD赋值,以确定T0和T1的工作方式。
- 计算初值,并将其写入TH0、TL0或TH1、TL1。
- 中断方式时,则对IE赋值,开放中断。
- 使TR0或TR1置位,启动定时/计数器定时或计数。
定时器T0中断的初始化
TMOD=0x01; \\设定工作方式为16位定时器
TH0=(65536-50000)/256; \\赋定时器T0高四的值为50MS(对256求模)
TL0=(65536-50000)%256; \\赋定时器T0低四的值为50MS(对256求余)
EA=1; \\开总中断
ET0=1; \\开定时器T0中断
TR0=1; \\启动定时器T0
当定时器时间到产生中断就自动跳到以下中断函数,中断函数不需要做任何声明;
void timer0( ) interrupt 1 \\ 5个中断源的排序:0代表外部中断0中断 ,1代表定时器/计数器0中断 ,2代表外部中断1中断, 3代表定时器/计数器1, 4代表串行中断的中断
{
TH0=(65536-50000)/256; \\重装初值
TL0=(65536-50000)%256; \\重装初值
\\往下写CPU要处理的事情就OK了
}
中断响应条件
- 中断源有中断请求;
- 此中断源的中断允许位为1;
- CPU开中断(即EA=1)。
以上三条同时满足时,CPU才有可能响应中断。
P3.2口的外部中断
EA=1; //开总中断
EX0=1; //开外部中断0
//IT0=1; //当IT=0时为电平的外部中断触发方式,
当IT=1时位跳变沿外部中断触发方式
TCON=0x01; (这是对寄存器将IT置1,和IT0=1的效果是一样的)因为TCON的地址是 可以被8整除,所以可以对其进行位操作。
当符合外部中断的条件时执行下面的中断函数
void exter0() interrupt0 \\ 5个中断源的排序:0代表外部中断0中断 ,1代表定时器/计数器0中断 ,2代表外部中断1中断, 3代表定时器/计数器1, 4代表串行中断的中断
{
\\这里下写CPU要处理的事情就OK了
}
转载于:https://www.cnblogs.com/lzhitian/archive/2012/12/22/2828721.html
【转】C51中断函数的写法相关推荐
- Proteus仿真:C51中断函数实例
实现目标 要求外部中断INT0和INT1为低电平触发,相应引脚分别接一按钮,按钮按下接地输入低电平,产生中断信号:定时器/计数器T0和定时器/计数器T1设置为外部计数输入,相应引脚接1khz的方波信号 ...
- keil中断函数的写法_在 KeilC里,中断子程序与函数有何不同?( )_学小易找答案
[单选题]8051单片机共有( )个中断优先级 [单选题]对定时器 0 进行关中断操作,需要复位中断允许控制寄存器的: ( ) [多选题]真理向谬误转化的原因,主要在于( ) [多选题]"批 ...
- C51 基本函数、中断函数和库函数的详解
函数的定义和调用 此外,C51编译器本身还提供了丰富的库函数,用户可以根据需要随时调用,从而大大提高编程效率. 1. 函数的定义 函数定义的一般形式为: 函数类型 函数名(形参列表) { 局部变量定义 ...
- UCOS中断函数的编写
在以uC/OS为操作系统的项目中,系统可能要处理各种不同的中断请求,如果某个中断处理 程序需要调用uC/OS的各种Post函数向任务发出消息,那么uC/OS建议中断服务程序的写法是: 1.保存全部CP ...
- 20140627-STM8L101F3P6关于微秒级延时函数不同写法的波形
总结一下STM8L101F3P6工作在16MHz下,利用死循环.中断等不同写法的微秒级延时函数精度的情况. 一.死循环空指令的写法,延时函数程序如下: /*********************** ...
- 20140627-STM8L101F3P6关于毫秒级延时函数不同写法的波形
总结一下STM8L101F3P6工作在16MHz下,利用死循环.中断等不同写法的微秒级延时函数精度的情况. 一.死循环空指令的写法,延时函数程序如下: /*********************** ...
- 单片机c51中断 — 中断扫描法行列式键盘
项目文件 文件 关于项目的内容知识点可以见专栏单片机原理及应用 的第五章,中断 在第4章中已介绍过行列式键盘的工作原理,并编写了相应的键盘扫描程序.但应注意的是,在单片机应用系统中,键盘扫描只是 CP ...
- C语言中断服务程序指令,单片机C语言函数之中断函数(中断服务程序)
在开始写中断函数之前,我们来一起回顾一下,单片机的中断系统. 中断的意思(学习过微机原理与接口技术的同学,没学过单片机,也应该知道),我们在这里就不讲了,首先来回忆下中断系统涉及到哪些问题. (1)中 ...
- c语言程序 中断函数示例,单片机_C语言函数_中断函数(中断服务程序)
c语言中的中断函数注意事项 单片机_C语言函数_中断函数(中断服务程序) 在开始写中断函数之前,我们来一起回顾一下,单片机的中断系统. 中断的意思(学习过微机原理与接口技术的同学,没学过单片机,也应该 ...
最新文章
- 显示串中只出现一次的字符.
- 深入java虚拟机学习 -- 类的加载机制(续)
- 华为c语言编程规范_单片机开发之C语言编程基本规范
- cortex m0启动代码详解
- pvr波形是什么意思_PVR的完整形式是什么?
- 前端学习(2842):UI组件的开发和配置
- php打png图片水印颜色失真,ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整...
- [转]Unity3D新手引导开发手记
- Java集合框架——概述
- 怎么看电脑是不是linux系统,怎么查看自己的电脑系统是什么版本
- c语言函数调用原理底层分析
- 使用打印方法将caj、pdz转pdf格式
- latex如何取消自动编号_latex 取消自动编号
- 【MMD动作+镜头】Bo Peep Bo Peep
- 【ansys workbench】19.力学计算对比学习
- JS实现环绕地球飞行的3D飞行线动画效果(JS+HTML)
- 调查 ESXi/ESX 上的虚拟机文件锁定 (10051)
- 星起航:抖音小店截流是什么,怎么玩?
- 网页爬虫1--正则表达式
- HTTP/2协议详细介绍
热门文章
- github html5 预览,github 上如何直接预览仓库中的html
- java n%9==0_用C++实现求N!中末尾0的个数的方法详解
- pybamm库学习-tutorial
- 应用计算机金融 pdf,金融保险计算机技术及其在金融业中的应用.pdf
- 5.2 - Function Basics
- java编写一个个人通信录程序
- java mongo 日期范围_获取指定日期和它之前几天,之间的所有日期?千万不要踩了这个大坑!...
- android 取出list第一页数据_Android传递ListObject的用法
- 零基础入门语义分割——Task2 数据扩增
- B站项目资源过于敏感,稍后删,抓紧保存!!!