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++);

}

51单片机中断interrupt……using……的更多相关文章

  1. c语言编写51单片机中断程序,执行过程是怎样的?

    Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序:#include<reg52.h>  void main(void)  {   EA=1;      //开放总中断   E ...

  2. ET 与RETI 基于51单片机中断跳出指令“RETI”浅议

    最近在基于51单片机编程的过程中出现了个很奇怪的问题“程序执行中在寄存器EA=1,ET0=1,TR0=1条件下,单TF0=1时并没有执行中断”.在有过单片机中断编程经历者都知道当EA=1,ET0=1的 ...

  3. [51单片机] HC-SR04超声波测距仪 基础代码

    >_<:超声波测距仪模块: >_<:51单片机,11.0592MHz晶振,将采集数据发送到串口的基础例子: >_<:代码: /******************* ...

  4. [学习笔记]15个QA让你快速入门51单片机开发

    一.C语言相关 Q1:sbit与sfr代表是什么?有什么作用? Q2:#define OSC_FREQ  22118400L这句宏命令里的“L”是什么意思? Q3:我粘贴了别人的代码,怎么发现没有un ...

  5. 51单片机GPIO口模拟串口通信

    51单片机GPIO口模拟串口通信 标签: bytetimer终端存储 2011-08-03 11:06 6387人阅读 评论(2) 收藏 举报 本文章已收录于:   分类: 深入C语言(20) 作者同 ...

  6. 2017.11.18 手把手教你学51单片机-点亮LED

    In Doing We Learning 在操作中学习.如果只是光看教程,没有实际的操作,对编程语言的理解很空泛,所以决定从单片机中学习C语言. #include<reg52.h>     ...

  7. #51单片机#蓝牙模块(ATK-SPP-HC06从机串口)的使用方法

    #include <AT89X51.H> #include <intrins.h> // 函数原形定义 #define uchar unsigned char #define ...

  8. 基于51单片机的CAN通讯协议C语言程序

      //-----------------------函数声明,变量定义-------------------------------------------------------- #includ ...

  9. 51单片机通过ESP8266模块与手机进行通讯(单片机)

    相关连接和资料下载: 个人博客 资料下载 Step1:配置ESP8266 通过USB转TTL模块把ESP8266模块和电脑连接起来,如图: 把ESP8266模块的VCC,GND,CH_PD,UTXD, ...

随机推荐

  1. iOS 判断内容是否是中文,两种实现

    用category实现 新建类别文件,代码 .h文件 #import <Foundation/Foundation.h> @interface NSString (Valid) - (BO ...

  2. java学习之 反射

    以前学习java只是学习了基本语法操作,各种常用方法的使用,随着慢慢学习,很多大神都觉得要想成为大神,就必须把java的反射给理解透,这样我就带着好奇的心去学习到底反射是什么玩意,所以就上网找资料学习 ...

  3. linux-redhat6.4驱动无线网卡rtl8188eu

    无线网卡Realtek Semiconductor Cop. RTL8188EUS  首先下载安装包: ​其中的0BDA是Realtek的代码,8179是设备代码.从网上查到这个设备的芯片是rtl81 ...

  4. PowerShell命令卸载Win10内置应用

    Windows10系统预装了大批的应用,开始菜单右侧的磁贴即显示了其中的大部分,包括:人脉.日历.邮件.资讯.Xbox.Groove音乐.Camera相机.电影和电视.照片.手机助手.天气.OneNo ...

  5. Spark standlone安装与配置

    spark的安装简单,去官网下载与集群hadoop版本相一致的文件即可. 解压后,主要需要修改spark-evn.sh文件. 以spark standlone为例,配置dn1,nn2为master,使 ...

  6. 完全变味的Windows Azure Marketplace中国版

    国际版的Microsoft Azure很早就发布Marketplace了,里面有非常丰富的(超过3000款)第三方应用.服务和虚拟机镜像可以购买.其定价模式也非常灵活,支持按需付费(pay as yo ...

  7. 《Inside UE4》-2-GamePlay架构(一)Actor和Component

    <Inside UE4>-2-GamePlay架构(一)Actor和Component     <Inside UE4>-2-GamePlay架构(一)Actor和Compon ...

  8. Codeforces 715A. Plus and Square Root[数学构造]

    A. Plus and Square Root time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  9. POJ1276Cash Machine[多重背包可行性]

    Cash Machine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 32971   Accepted: 11950 De ...

  10. KEngine策划指南:配置表格的编辑与编译

    策划与程序的桥梁 执行策划在游戏开发的过程中的主要工作是什么?当然就是和Excel打交道了.大量的Excel数据表,最终会被演变成游戏的配置数据.日常游戏开发中,策划编辑配置表一般有两种方式: 编译式 ...