




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、内部资源C编程资料8051内部资源的C编程中断3 1串行口3 3定时器/T/C)21. 中断中断源31.1中断响应31.3中断的控制1.2寄存器组切换31.4中断编程31.51.1 中断源v1、8051单片机有5个中断,增加很少的硬件就可把各种硬件中断源线或称为一个外部中断输入,然后再顺序检索引起中断的特定源;v2、8051有两个中断优先级,每个中断源的优先级可以编程控制,中断允许受到CPU开中断和中断源开中断的两级控制;1.1 中断源v3、8051单片机的5个中断源:v1)外部中断请求0,由INT0输入;v2)外部中断请求1,由INT1输入;v3)片内定时器/计数器0溢出中断请求;v4)片内
2、定时器/计数器1溢出中断请求;v5)片内串行口发送/接收中断请求;1.1 中断源v4、每个中断源是否产生中断,由对应的多个中断请求触发器实现,分别由SFR中的TCON和SCON相应位锁存;v1)定时器/计数器控制寄存器TCON:TF1TF0IE1 IT1 IE0 IT01.1 中断源vIT0、IT1外部中断0,1触发方式选择位;软件设置;1下降沿触发,高电平到低电平的跳变;0电平触发,低电平可引起中断;vIE0、IE1外部中断0,1请求标志位;当产生中断请求时由硬件置位,CPU响应中断后,由硬件清除;TF1TF0IE1 IT1 IE0 IT01.1 中断源vTF0、TF1定时器/计数器0,1溢
3、出中断请求标志;当定时/计数溢出时由硬件置位,CPU响应中断后由硬件清除;TF1TF0IE1 IT1 IE0 IT01.1 中断源v2)串口控制寄存器SCONvRI串行口接收中断标志位,串行口接收完一帧数据后请求中断,由硬件置位,置位后由软件清“0”;vTI串行口发送中断请求标志位,当串行口发送完一帧数据后请求中断由硬件置位,由软件清零;TIRI1.2 中断的控制v1、中断的控制管理通过寄存器IE和IP编程实现v中断允许寄存器IE:vEX0,EX1:外部中断0,1的中断允许位;1开中断,0关中断;vET0,ET1:定时器/计数器0,1溢出中断允许位,1开中断,0关中断;EAET2 ESET1
4、EX1 ET0 EX0中断允许寄存器IE1.2 中断的控制vES,串行口中断允许位,1串行口开中断,0串行口关中断;vET2,定时器/计数器2溢出中断允许位,1T/C2开中断,0T/C2关中断;vEA,CPU开/关中断控制位;EAET2 ESET1 EX1 ET0 EX0中断允许寄存器IE1.2 中断的控制v2、中断优先级寄存器IPv当系统中有多个中断源同时请求中断时,CPU按中断源的优先级别,由高到低分别响应;v PX0,PX1,外部中断0,1中断优先级控制位;1高优先级,0低优先级v PT0,PT1,定时器/计数器0,1中断优先级控制位;v PS,串行口中断优先级控制位;PSPT1 PX1
5、 PT0 PX0中断优先级寄存器IP1.2 中断的控制v8051被复位后,5个中断源都在同一个优先级,若此时其中几个中断源同时产生中断,CPU按照硬件优先级链路顺序响应中断; 外部中断0 定时器/计数器0 外部中断1 定时器/计数器1 串行口中断PSPT1 PX1 PT0 PX0高低1.3 中断响应v响应中断的阻止条件:v1)CPU正在处理同级或更高级的中断;v2)正在执行的是RETI或是访问IE或IP指令;v3)现行机器周期不是所执行指令的最后一个机器周期;1.3 中断响应vCPU响应中断后执行如下操作:v1)硬件清除相应的中断请求标志;v2)执行一条硬件子程序,保护断点,并转向中断服务程序
6、的入口地址;v3)结束中断时执行RETI指令,恢复断点,返回主程序;1.3 中断响应v各中断服务程序入口地址:v1) 外部中断0 0003Hv2) 定时器/计数器0 000BHv3) 外部中断1 0013Hv4) 定时器/计数器1 001BHv5) 串行口中断 0023Hv各中断程序的入口地址仅间隔8个字节,编译器在这些地址放入无条件转移指令,跳转到服务程序的实际地址;1.4 寄存组切换v当一个特定的任务正在执行,如果遇到更紧急的任务时,在一个具有优先级的系统中,CPU假定第一个任务已经完成,立即处理新任务;v转向新任务后,所使用的通用寄存器破坏了第一个任务使用的中间信息;为避免错误发生,使用
7、上下文切换;v8051有4个寄存器组,每组8个字节,分配R0R7对应8个字节;(PSW中的两位RS0与RS1来设置),寄存器组使得有非常快的上下文切换1.4 寄存组切换v当发生中断任务时,采用不同的寄存器组,一个任务的8个字节保留,另一个不同的8个字节用在新任务中;v除了PSW中的两位设置外,也可采用using指令指定;1.4 寄存组切换v中断服务程序的完整语法如下:v返回值 函数名 (参数) 模式重入interrupt n using nvInterrupt后接一个031的常整数,不允许使用表达式;1.4 寄存组切换v中断不允许用于外部函数,它对目标函数代码的影响如下:v1)当调用函数,SF
8、R中的ACC,B,DPH,DPL和PSW入栈;v2)如果不使用寄存器组切换,中断函数所使用的所有工作寄存器都入栈;v3)函数退出前,所有寄存器出栈;v4)函数由8051的指令“RETI”终止;1.5 中断编程v中断服务程序仅设标志保存I/O输入状态v#include #define uchar unsigned char; uchar status; void service_int1(void) interrupt 2 using 2; flag=1; status=p1; 1.5 中断编程v void main(void) IP=0 x04;/*置INT1高优先级中断*/ IE=0 x84
9、;/*INT1开中断,CPU开中断*/ for( ; ; ) if(flag) switch(status) case 0: break; case 1: break; default: break; flag=0; 1.5 中断编程v 实际上,C51编译器及其C51语言允许对中断所有方面的控制和寄存器组的使用,只需在高级用户编程方式下,关心中断及必要的寄存器组切换;2. 定时器/计数器(T/C)与T/C有关的特殊功能寄存器32.1定时器/计数器的初始化32.3定时器/计数器的工作方式2.2定时器/计数器应用实例32.42.1 与T/C有关的特殊功能寄存器v 1、即可编程作定时器,又可作计数器
10、使用,若是计数内部晶振驱动时钟,即定时器用;若是计数8051的输入管脚的脉冲信号,即计数器用;v2、与T/C有关的特殊功能寄存器包括v1)计数寄存器TH和TL,TH是16位,计数寄存器由高8位和TL低8位构成,定时器/计数器的初始值由TH和TL设置;2.1 与T/C有关的特殊功能寄存器v 2)定时器/计数器控制寄存器TCONv TR0,TR1,T/C启动控制位,1启动,0停止;vTCON复位后清零,T/C需受软件控制才能启动,当计数满溢出时,产生向高位进位TF溢出中断请求标志;TR1TR02.1 与T/C有关的特殊功能寄存器v 3)T/C方式控制寄存器TMODvC/T计数器或定时器选择位,1计
11、数器,0定时器;vGATE门控信号,1T/C的启动受双重控制,即TR和INT同时为高;0T/C的启动仅受TR的控制;GATEC/TM1M0GATEC/TM1M02.1 与T/C有关的特殊功能寄存器v M1和M0,工作方式选择位GATEC/TM1M0GATEC/TM1M0M1 M0 方式功 能0 0013位定时器/计数器,TL存低5位,TH存高8位0 1116位定时器/计数器v 02常数自动装入的8位定时器/计数器1 13仅适用于T/C0,两个8位定时器/计数器2.1 与T/C有关的特殊功能寄存器v 4)定时器/计数器2控制寄存器vTF2,溢出标志,必须由软件清零;vEXF2,T/C2外部标志,
12、当EXEN2=1,且T2EX引脚上出现负跳变引起捕获或重装载时置位,EXF2要靠软件来清除;vRCLK,接受时钟标志,1用定时器2溢出作为串行口的接收时钟,0定时器1溢出脉冲作接收时钟;TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL2.1 与T/C有关的特殊功能寄存器v TCLK,发送时钟标志,1定时器2溢出脉冲作为串行口的发送时钟,0定时器1的溢出脉冲作为发送时钟;vEXEN2,T/C2外部允许标志,1若定时器2未作串行口的波特率发生器,T2EX端的负跳变引起T/C2的捕获或重装载;0T2EX端的外部信号不起作用;TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/
13、RL2.1 与T/C有关的特殊功能寄存器v TR2,T/C2运行控制位;1启动,0停止;vC/T2,计数器或定时器选择位,1计数器,0定时器;vCP/RL,捕获/重载标志,1当EXEN2=1,且T2EX端的信号负跳变,发生捕获操作;0若定时器2溢出,或EXEN2=1条件下T2EX端信号负跳变,都会造成自动重装载操作;TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL2.2 定时器/计数器的工作方式v 1、方式0v为13位的T/C,TH由高8位提供,TL由低5位提供,满计数值为2的13次方;vC/T=0时,T/C定时器用,振荡源的12分频的信号作为计数脉冲;当C/T=1,T/C为计
14、数器,对外部脉冲输入端T0或T1输入的脉冲计数;v当GATE=0,TR=1,则T/C启动;当GATE=1,启动受TR和INT双重控制;2.2 定时器/计数器的工作方式v 1、方式0v当13位计数满时,TH向高位进位,此进位将中断溢出标志TF置1,产生中断请求,表示定时时间到或是计数次数到;v若T/C开中断,且CPU开中断,当CPU响应中断服务程序后,TF自动清零;2.2 定时器/计数器的工作方式v 2、方式1v方式1与方式0基本相同,唯一区别在于计数寄存器的位数是16位的,由TH和TL寄存器各提供8位,满计数值为2的16次方;2.2 定时器/计数器的工作方式v 3、方式2v8位的可自动重装的T
15、/C,满计数值为2的8次方;v方式0,1中,当需要进行下一次定时/计数时,需用软件向TH和TL中重装预置计数初值;v方式2中,TH和TL被当做两个8位计数器,TH寄存8位初值保持不变,由低8位TL进行计数,当计数溢出后,除产生溢出中断请求外,还自动将TH中初值重装到TL中,实现自动装载;2.2 定时器/计数器的工作方式v4、方式3v只适用于T/C0,TH0和TL0成为两个独立的计数器;vTL0可作定时器/计数器,占用T/C0在TCON和TMOD寄存器中的控制位和标志位;vTH0只能做定时器用,占用T/C1的资源TR1和TF1;v只有将T/C1用作串行口波特率发生器,T/C0才工作在方式3,以便
16、增加一个定时器;2.3 定时器/计数器的初始化v1、初始化步骤:v1)确定T/C的工作方式编程TMOD寄存器;v2)计算T/C的计数初值,并装载到TH和TL中来;v3)T/C在中断方式时,须开CPU中断和源中断编程IE寄存器;v4)启动定时器/计数器编程TCON和TR1或TR0位;2.3 定时器/计数器的初始化v2、计数初值计算v (1)定时器计数初值,定时器方式下,T/C是对机器脉冲计数,跟晶振频率有关;v 方式0 13位定时器最大定时间隔v 方式1 16位定时器最大定时间隔v 方式2 8位定时器最大定时间隔= =512us2.3 定时器/计数器的初始化v若使T/C工作在定时器方式1,要求定
17、时1ms,求计数初值。设计数初值为x,则有:2.3 定时器/计数器的初始化v (2)计数器的计数初值v 方式0 13位计数器的满计数值= =8192;v 方式1 16位计数器的满计数值= =65536;v 方式2 8位计数器的满计数值= =256;2.3 定时器/计数器的初始化v (2)计数器的计数初值v 若使T/C工作在计数器方式2,要求计数10个脉冲的计数初值,设计数初值为x,则有:2.4 定时器/计数器的应用举例v 1、设单片机的fosc=12MHz,要求在引脚上输出周期为2ms的方波? 周期为2ms的方波要求定时间隔为1ms,每次定时时间到取反;v (1)用定时器0的方式1编程,采用查
18、询方式;v #include sbit P1_0=P10; void main(void) TMOD=0 x01; TR0=1;2.4 定时器/计数器的应用举例 for( ; ; ) TH0=0 xFC;/*根据计算的定时器初值而定*/ TL1=0 x18; do while(!TF0); P1_0!=P1_0; TF0=0; 2.4 定时器/计数器的应用举例v (2)用定时器0的方式1编程,采用中断方式 #include sbit P1_0=P10; void Timer0_INT(void) interrupt 1 using 1 P1_0 !=P1_0; TH0=0 xFC; TL0=0
19、 x18;2.4 定时器/计数器的应用举例 void main(void) TMOD=0 x01; P1_0=0; TH0=0 xFC; TL0=0 x18; EA=1; ET0=1; TR0=1; while(1);2.4 定时器/计数器的应用举例v 2、在端接有一个发光二极管,要求利用T/C控制,使用LED亮一秒,灭一秒,周而复始?v 因为定时1秒,T/C的三种工作方式不能满足定时间隔,对于较长时间的定时,应采用复合定时的方法;v 使T/C0工作在定时器方式1,定时100ms,定时时间到后取反,即端输出周期为200ms的方波脉冲;v 同时设T/C1工作在计数器方式2,对T1输入的脉冲计数,
20、当计数满5次,定时1s时间到将端反相,改变灯的状态;2.4 定时器/计数器的应用举例v #include sbit P1_0=P10; sbit P1_7=P17; void Timer0_INT(void) interrupt 1 using 1 P1_0 ! = P1_0; TH0= TL0= void Timer1_INT(void) interrupt 3 using 2 P1_7 != P1_7;2.4 定时器/计数器的应用举例 main( ) P1_7=0; P1_0=1; TMOD=0 x61; TH0=0 x3C; TL0=0 xB0; TH1=-5; TL1=-5; IP=0
21、 x08; EA=1;ET0=1;ET1=1;TR0=1;TR1=1; while(1);3. 串行口与串行口有关的特殊功能寄存器33.1串行口的初始化33.3串行口的工作方式3.2串行口应用实例33.43.1 与串行口有关的特殊功能寄存器v 1、串行口控制寄存器SCONSM0SM1SM2RENTB8RB8TIRISM0 SM1工作方式说 明波特率0 0方式0同步移位寄存器 fosc/120 1方式110位异步收发 由定时器控制v 0方式211位异步收发 fosc/32或fosc/641 1方式311位异步收发 由定时器控制3.1 与串行口有关的特殊功能寄存器v SM2,多机通信控制位(方式2
22、,3),1只有接收到第9位为1,RI才置位;0接收到字符RI就置位;v REN,串行口接收允许位,1允许串行口接收,0禁止接收;v TB8,方式2,3,为发送的第9位数据;v RB8,方式2,3,为接收到的第9位数据;v TI,发送中断标志,硬件置位,软件清零;v RI,接收中断标志,硬件置位,软件清零;SM0SM1SM2RENTB8RB8TIRI3.1 与串行口有关的特殊功能寄存器v 2、电源控制寄存器PCONv SMOD,串行口波特率加倍位;1方式1,3波特率=定时器1溢出率/16;方式2波特率为fosc/32;0方式1,3波特率=定时器1溢出率/32;方式2波特率为fosc/64;v GF0、GF1:两个通用标志位;v PD、IDL:CHMOS器件的低功耗控制位;SMODGF1GF0PDIDL3.2 串行口的工作方式v 1、方式0v 方式0为移位寄存器输入/输出方式,串行数据通过RXD输入/输出,TX
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030连锁火锅产业运行态势及投资规划深度研究报告
- 物流仓储文件管理制度范文
- 2025至2030中国租车管理软件行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国磷酸酯阻燃剂市场经营趋势与投资方向可行性报告
- 2025至2030中国矿用洗选设备行业市场发展现状及发展前景与投资风险报告
- 2025至2030中国盒袋行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国电动煎锅行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国电动凿岩机行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国瓦楞纸板行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国玻璃钢化炉行业发展趋势分析与未来投资战略咨询研究报告
- 水利工程阀门安装及调试方案
- 旅游住宿安排协议
- CT设备故障处理及应急方案
- 代持股协议书
- 【网易云听音乐的品牌营销问题及优化建议探析(论文)11000字】
- 历届“挑战杯”全国大学生课外科技学术作品竞赛获奖作品
- 辽宁省锦州市2023-2024学年高二下学期期末考试+政治试卷(含答案)
- 贵州省2024年小升初语文模拟考试试卷(含答案)
- 会员体系构建与个性化服务提升策略
- 辽宁省营口市2024年中考物理真题试卷含解析
- 创业大赛承办服务投标方案(技术方案)
评论
0/150
提交评论