51单片机中断interrupt……using……
51单片机中断细节的一些问题。
interrupt0:外部中断0
interrupt1:定时器中断0
interrupt2:外部中断
interrupt3:定时器中断1
interrupt4:串口
using 0 是第0组寄存器; using 1 是第1组寄存器; using 2 是第2组寄存器; using 3 是第3组寄存器;
51单片机内的寄存器是R0--R7(不是R0-R3)
R0-R7在数据存储器里的实际地址是由特殊功能寄存器PSW里的RS1、RS0位决定的。
using 0时设置 RS1=0,RS0 =0,用第0组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(00H)....R7(07H)
using 1时设置 RS1=0,RS0 =1,用第1组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(08H)....R7(0FH)
using 2时设置 RS1=1,RS0 =0,用第2组寄存器,R0--R7的在数据存储区里的实际地址是08H-0FH。R0(10H)....R7(17H)
using 3时设置 RS1=1,RS0 =1,用第3组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(18H)....R7(1FH)
EA是总中断允许位,
EX是外部中断允许位
(EX0,EX1分别指外部中断INT0,INT1),
ET是内部定时器/计数器中断允许位,
TR定时器/计数器启动位,它们都是高电平1有效。
TH、TL分别指定时器/计数器的高8位和低8位(后面加0/1表示定时器/计数器0/1,如TH0=255表示给定时器0的高八位赋初值255)。
这里附上SG90舵机的中断程序:
/********TIME0中断服务程序************/
void Time0_Int(void) interrupt 1 {
TH0 = (65536 - 92)/256;
TL0 = (65536 - 92)%256; //重装初值
if(Time0_OutCounter < Angle0) //判断0.1ms的次数是否小于角度标识
PWM0 = 1;
else
PWM0 = 0;
Time0_OutCounter = Time0_OutCounter+1; //溢出标志位:加1 //次数始终保持为200,即保持周期为20ms
if(Time0_OutCounter == 200)
{
Time0_OutCounter = 0;
flag0 = 1; //一个周期结束标志 }
else flag0 = 0;
}
void Timer0_Init( void ) { TMOD=0x01; //定时器0工作于方式1:16位定时器
TH0 = (65536 - 92)/256;
TL0 = (65536 - 92)%256; 装入初值:定时0.1ms溢出,晶振为11.0592MHz
EA = 1; //开总中断
ET0 = 1; //允许定时器0中断
TR0 = 1; //开定时器0 }
void MostLeft_Servo0( void ) {
unsigned char i;
for(i=21;i>=6;i--)
{ while(flag0 != 1);
Angle0 = i;
Time0_OutCounter = 0;
}
}
void Servo0_Init( void )
{ Timer0_Init(); }
//舵机右满舵
void MostRight_Servo0( void )
{ unsigned char i;
for(i=6;i<=21;i++)
{
while(flag0 != 1);
Angle0 = i;
Time0_OutCounter = 0; }
}
void delay10ms(unsigned int x)
{
unsigned int i;
while(x--)for(i=0;i<125;i++);
}
转载于:https://www.cnblogs.com/alantechnique/p/5453647.html
51单片机中断interrupt……using……相关推荐
- c语言编写51单片机中断程序,执行过程是怎样的?
Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序: #include<reg52.h> void main(void) { EA=1; //开放总中断 ...
- 用51单片机中断控制LED灯亮灭
用51单片机中断控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k3=P3^2;//位定义按键 void dela ...
- c语言T1中断程序编写步骤,用51单片机中断编写的4x4键盘程序
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章 用51单片机中断编写的4x4键盘程序 作者:未知 来源:山涧一溪流 点击数:- 更新时间:2014年06 ...
- 51单片机中断与计时器
文章目录 1.配置下图中各寄存器 1. 定时器/计数器控制寄存器TCON 2.定时器.计数器模式控制寄存器TMOD 3.TH0及TL0 2.中断设置 二.中断程序 51单片机中断与计时器 # 一.定时 ...
- 51单片机 | 中断系统
文章目录 一.中断介绍 1.中断概念 二.中断结构及相关寄存器 1.中断结构 2.中断相关寄存器 这一节专门介绍 51单片机的中断系统,为后面学习外部中断.定时器中断.串口中断做好铺垫. 一.中断 ...
- 51单片机中断系统实验
51单片机中断系统实验 一.实验内容 INT0端接单次脉冲发生器.按一次脉冲产生一次中断,CPU使P1.0状态发生一次反转,P1.0接LED灯,以查看信号反转. 根据实验内容编写一个程序,并在实验系统 ...
- 单片机c语言reti的用法,基于51单片机中断跳出指令“RETI”浅议
原标题:基于51单片机中断跳出指令"RETI"浅议 =RET指令+通知CPU中断服务已结束. 最近在基于编程的过程中出现了个很奇怪的问题"程序执行中在寄存器EA=1,ET ...
- 单片机c语言中断意义,51单片机中断系统的重要性
描述 在接下来的教程中,将会介绍定时器.串口通信等外设的基本使用,而这些外设的使用都要涉及中断,而且中断是单片机或嵌入式开发中一个相当重要的概念.不能掌握中断系统,就无法灵活应用这些外设. 1.什么是 ...
- 51单片机中断与定时器计数器,基于普中科技HC6800-ESV2.0
目录 寄存器 置位复位 中断系统 中断概念 中断系统 中断系统构造 外部中断 计时器.定时器中段 串口中断 中断允许控制(控制中断方式) 总中断 各个中断 中断请求标志(控制触发方式) 外部中断触发方 ...
最新文章
- 简要叙述matlab的含义,1,简述MATLAB组成部分? 2,说明使用M文件编辑/调试器的方法和优点? 3,存储在工作空间中的数组能编辑吗...
- 成功解决Redirection is not supported
- java socket 连接异常_java.net.SocketException:软件导致连接中止:套接字写错误
- 【玩转cocos2d-x之三十】点九图和输入框的使用
- scrapy从安装到爬取煎蛋网图片
- 深入理解Scala的隐式转换系统
- 依赖反转原则DIP 与使用了Repository模式的asp.net core项目结构
- Scala深入浅出实战初级入门经典视频课程
- 51CTO微职位一次通过PMP之经验浅谈
- pic32用PICKIT3烧写bootloader
- 发现策略中的孪生兄弟——期权交易中的等价或相似策略解析
- win10设置保护色
- php js广告,JavaScript_用JS调用谷歌 AdSense广告的方法, 具体的google广告的js文件做 - phpStudy...
- 编制现金流量表3个步骤!
- 事件绑定,事件类型,事件委托
- People Counter - People Counting
- WP模板阁怎么样?能买吗
- 设置-安全-手机加密功能解说
- 好莱坞经典十大战争电影排行榜 男人必看十大战争片
- 全国天气查询API接口
热门文章
- 决胜蓝桥杯python组-字符串、列表
- 来学习几个简单的Hive函数啦
- 联系服务器安装系统教程,服务器安装系统教程
- java cookie p3p_P3P script src 解决cookie存取的跨域问题 java 终极解决办法
- Service Mesh 落地挑战
- 集合覆盖模型例题_在打CodeForces的过程中发现的一个小模型
- java volatile实例_Java的Volatile实例用法及讲解
- 扫地机器人水箱背景_水箱尘盒组件及扫地机器人的制作方法
- Java基础---认识IO流---字节流、字符流---缓冲流---转换流
- AJAX异步--ajax请求