《第5章80C51单片微机的中断系统原理及应用.ppt》由会员分享,可在线阅读,更多相关《第5章80C51单片微机的中断系统原理及应用.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、51单片机单片机IO端口操作的一个有趣现象:我想实现端口操作的一个有趣现象:我想实现P1.1端端口跟随口跟随P1.4端口同步输出端口同步输出,都是,都是驱动驱动LED,P1.4端口使用端口使用定时器定时器定时翻转,主循环程序随时判断定时翻转,主循环程序随时判断P1.4状态,同步状态,同步驱驱动动P1.1。程序如下:。程序如下:看来没问题,可是下载到单片机中,看来没问题,可是下载到单片机中,只见只见OUT闪烁,闪烁,LED根本不动,奇根本不动,奇怪怪?FLAG BIT 00HCPL FLAGMOV C,FLAGMOV OUT,CMOV C,FLAG第五章第五章 80C51单片微机的单片微机的中断
2、系统原理及应用中断系统原理及应用 中断系统概述中断系统概述 80C5180C51的中断系统的中断系统 中断的控制中断的控制 中断的响应过程和响应时间中断的响应过程和响应时间 外部中断源的扩展外部中断源的扩展 中断服务程序的设计中断服务程序的设计 中断的基本概念中断的基本概念 80C5180C51中断源中断源 中断控制寄存器中断控制寄存器 中断处理过程中断处理过程 中断优先控制和中断嵌套中断优先控制和中断嵌套 中断系统的应用中断系统的应用要点:要点:中断系统的几个概念:中断系统的几个概念:中断中断如如图图51所示。所示。中断源:能产生中断的外部和内部事件。中断源:能产生中断的外部和内部事件。中断
3、优先级中断优先级中断嵌套中断嵌套5.1 中断系统概述中断系统概述 5.1.1单片微机的中断系统需要解决的问题单片微机的中断系统需要解决的问题单片微机的中断系统需要解决的问题单片微机的中断系统需要解决的问题 CPU能及时响应中断(能及时响应中断(S5P2查询)查询),处理完后能返回处理完后能返回多个中断源同时申请时,能实现中断优先级的控制多个中断源同时申请时,能实现中断优先级的控制实现中断嵌套,并能逐级正确返回原断点处实现中断嵌套,并能逐级正确返回原断点处5.1 中断系统概述中断系统概述 5.1.1单片微机的中断系统需要解决的问题单片微机的中断系统需要解决的问题实现实现CPU与外部设备的速度配合
4、与外部设备的速度配合通过中断的方法来协调快速通过中断的方法来协调快速CPU与慢速外部设备之间的工作。与慢速外部设备之间的工作。实现实时控制实现实时控制依靠中断技术能实现实时控制。依靠中断技术能实现实时控制。实现故障的及时发现及处理实现故障的及时发现及处理中断技术使单片微机就能及时发现故障并自动处理中断技术使单片微机就能及时发现故障并自动处理实现人机联系实现人机联系如通过键盘向单片微机发出中断请求如通过键盘向单片微机发出中断请求 5.1.2 中断的主要功能中断的主要功能80C5180C51的中断系统包括的中断系统包括:中断源中断源中断允许寄存器中断允许寄存器IEIE中断优先级寄存器中断优先级寄存
5、器IPIP中断矢量等中断矢量等。5.2 80C51 5.2 80C51 的中断系统的中断系统在在80C51中,有中,有两级两级中断优先级。中断优先级。图图5280C5180C51有有5 5个个中中断断源源,80C5280C52有有6 6个个(增增加加一一个个定定时时器器计计数数器器T2)T2)2 2个个外外部部中中断断源源INT0INT0和和INT1INT1:外外部部设设备备的的中中断断请请求求信信号号、掉掉电电等等故故障障信信号号都都可可以以从从INT0INT0或或INT1INT1引引脚脚输入。输入。3 3个个内部中断源:内部中断源:T0T0、T1T1、和和串行口串行口。5.2.1 5.2.
6、1 中断源中断源1.1.外部中断外部中断外部中断是从引脚外部中断是从引脚INT0 INT0 和和INT1INT1上引入。上引入。外部中断请求有两种信号触发方式:低电平、下跳沿外部中断请求有两种信号触发方式:低电平、下跳沿当当IT00时,时,INT0INT0低电平有效;低电平有效;当当IT01时,时,INT0INT0下降沿有效。下降沿有效。当当IT10时,时,INT1INT1低电平有效;低电平有效;当当IT11时,时,INT1INT1下降沿有效。下降沿有效。定时中断(定时中断(T0T0、T1T1)当当定定时时器器/计计数数器器T0(T1)T0(T1)发发生生计计数数溢溢出出时时,标标志志位位TF
7、0TF0(TF1TF1)置)置1 1,可以向可以向CPUCPU申请中断。申请中断。串行中断串行中断当当串串行行口口发发送送/接接收收完完一一帧帧串串行行数数据据时时,产产生生一一个个中中断断请求。请求。RXDRXD,TXDTXD:串行中断。:串行中断。矢量中断:就是中断入口地址。矢量中断:就是中断入口地址。矢量地址由硬件直接给出。矢量地址由硬件直接给出。5.2.2 5.2.2 中断矢量中断矢量中断源中断源 中断矢量地址中断矢量地址 外部中断外部中断0(INT0INT0)0003H 定时器定时器/计数器计数器0(T0)000BH外部中断外部中断1(INT1INT1)0013H 定时器定时器/计数
8、器计数器1(T1)001BH 串行口(串行口(RI、TI)0023H定时器定时器/计数器计数器2 002BH表表5-1 5-1 中断矢量地址中断矢量地址5.3 5.3 中断的控制中断的控制5.3.1中断标志中断标志中断系统控制寄存器包括中断系统控制寄存器包括:TCON、IE、SCON、IP定时器计数器控制寄存器定时器计数器控制寄存器TCON(88H)TCONTCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0功能功能 T1 T1 中断中断标志标志启动启动T1T0T0中
9、断中断标志标志启动启动T0中断中断标志标志INT1INT1触发触发方式方式中断中断标志标志 INT0 INT0 触发触发方式方式5.3 5.3 中断的控制中断的控制SCONSCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称SM0SM0SM1SM1 SM2SM2 RENREN TB8TB8 RB8RB8TITIRIRI功能功能 串行发送串行发送中断标志中断标志串行接收串行接收中断标志中断标志 串行口控制寄存器串行口控制寄存器SCONSCON:(98H)(98H)中断允许寄存器中断允许寄存器IEIE:(A8H)(A8H)5.3.2 5.3.2 中断允许控制中断允许
10、控制IEIED7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称EAEAESESET1ET1EX1EX1ET0ET0EX0EX0中断源中断源总中总中断断串行口串行口 T1T1INT1INT1T0T0INT0INT0中断优先级寄存器中断优先级寄存器IPIP(B8H)(B8H)5.3.3 5.3.3 中断优先中断优先级级IPIPD7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称PSPSPT1PT1PX1PX1PET0PET0PX0PX0中断源中断源串行口串行口 T1T1INT1INT1T0T0INT0INT0在在同同一一优优先先级级内内有有一一个个
11、由由内内部部查查询询序序列列确确定定的的笫笫二二个个优先级结构。其排列如下:优先级结构。其排列如下:中断源中断源中断优先级中断优先级 外部中断外部中断0 0最高最高 定时器定时器T0T0中断中断 外部中断外部中断1 1 定时器定时器T1T1中断中断 串行口中断串行口中断 定时器定时器T2T2中断中断最低最低(80C52)(80C52)IT1IT1、IT0IT00 0低电平触发低电平触发 IT1IT1、IT0IT0l l下跳变触发下跳变触发中中断断请请求求信信号号高高、低低电电平平应应至至少少各各保保持持一一个个机机器器周周期期,才能确保,才能确保CPU采集到电平的跳变采集到电平的跳变5.3.4
12、 5.3.4 外部中断触发方式外部中断触发方式5.3.5 5.3.5 中断请求的撤除中断请求的撤除硬件自动清除:硬件自动清除:T0、T1中断,中断,INT0、INT1边沿触发方式中断,边沿触发方式中断,CPU响应中断后,自动清响应中断后,自动清除中断标志除中断标志TF0TF1IE0IE1。软件清除软件清除:串行口中断,用户应在串行中断服串行口中断,用户应在串行中断服务程序中用指令清除务程序中用指令清除TI或或RI。软硬结合的方法软硬结合的方法:外中断电平触发方式,内:外中断电平触发方式,内部自动清除中断标志,但外部低电平必须消失。部自动清除中断标志,但外部低电平必须消失。如如图图5 54 4
13、中断采样中断采样中断查询中断查询中断响应中断响应中中断断采采样样:在在机机器器周周期期的的S5P2S5P2采采样样外外中中断断源源并并置置标标志志5.4 5.4 中断响应过程和响应时间中断响应过程和响应时间 5.4.15.4.1中断的响应过程中断的响应过程中断查询中断查询:在:在S6时按优先级的顺序查询各中断标志。时按优先级的顺序查询各中断标志。若有中断标志,则从下一个机器周期的若有中断标志,则从下一个机器周期的S1状态开始进状态开始进行中断响应。行中断响应。3.中断响应中断响应:由硬件自动产生一条:由硬件自动产生一条LCALL指令,即:指令,即:LCALL addr16 ;addr16:中断
14、入口地址中断结束中断结束:中断服务程序由中断矢量地址开始执行,:中断服务程序由中断矢量地址开始执行,直至遇到直至遇到RETI为止为止中断响应被封锁:中断响应被封锁:(1)CPU正在执行同级或高一级的中断服务程序正在执行同级或高一级的中断服务程序(2)查询中断请求的机器周期不是执行当前指令的最后)查询中断请求的机器周期不是执行当前指令的最后一个周期一个周期(3)当前正在执行)当前正在执行RETI指令或对指令或对IE、IP进行操作进行操作5.4.2 中断响应时间中断响应时间响应时间响应时间-从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。(1)最快响应时间最快响应时间-3 3个机器周期
15、个机器周期外部中断的电平触发为最快,从查询中断请求信号到中断服务程序需要3 3个机器周期:1个周期(查询)2个周期(长调用LCALL)5.4.2 中断响应时间中断响应时间(2)最长时间最长时间若当前指令是RETIRETI或访问IPIP、IEIE指令,紧接着下一条是乘除乘除指令发生,则最长为8 8个周期:2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。5.5 外部中断源的扩展外部中断源的扩展5.5.1 采用采用“OC门门”经经“线或线或”后实现后实现5.5.2 通过片内定时器通过片内定时器/计数器来实现计数器来实现5.5.1 采用采用“OC门门”经经“线或线或
16、”后实现后实现PINT0:PUSHPSW;保护现场保护现场PUSHACCJBP1.0,LOOP1;转向中断服务程序转向中断服务程序1JBP1.l,LOOP2;转向中断服务程序转向中断服务程序2JBP1.2,LOOP3;转向中断服务程序转向中断服务程序3JBP1.3,LOOP4;转向中断服务程序转向中断服务程序4INTFH:POPACC;恢复现场;恢复现场POPPSWRETILOOP1:;中断服务程序中断服务程序1AJMPINTFHLOOP2:;中断服务程序中断服务程序2AJMPINTFHLOOP3:;中断服务程序中断服务程序3AJMPINTFHLOOP4:;中断服务程序中断服务程序4AJMPI
17、NTFH例例把外部中断请求信号把外部中断请求信号2连到连到T1引脚上,引脚上,T1设为方式设为方式2,即,即8位位自动重装载方式,时间常数设为满刻度值自动重装载方式,时间常数设为满刻度值FFH。ORG0000HAJMPMAINORG001BH;T1中断矢量作外部中断中断矢量作外部中断2LJMPINT2ORG0030HMAIN:MOVTMOD,#60H;设;设T1计数器方式计数器方式2MOVTL1,#0FFH;置;置T1计数常数计数常数MOVTH1,#0FFHSETB EA;开中断;开中断SETB ET1;允许计数器;允许计数器1中断中断SETB TR1;启动计数;启动计数SJMP$INT2:-
18、;外部中断;外部中断2服务程序服务程序RETI5.5.2 通过片内定时器通过片内定时器/计数器来实现计数器来实现80C51中断结构有一个中断结构有一个重要特性重要特性,即执行中断返回指,即执行中断返回指令令RETI后后,必须至少执行一条其它指令后,才能响应新的必须至少执行一条其它指令后,才能响应新的中断中断。典型方法是使用外部中断,并将其设为电平触发方。典型方法是使用外部中断,并将其设为电平触发方式。式。硬件上,把按键产生的脉冲连到硬件上,把按键产生的脉冲连到INT0,作为外部中作为外部中断断0的中断请求信号,并把电路设计为不按键时为低电平,的中断请求信号,并把电路设计为不按键时为低电平,按一
19、次键产生一个正脉冲。按一次键产生一个正脉冲。5.6 80C51的单步操作的单步操作外部中断外部中断0的中断服务程序,在中断服务程序的末尾为的中断服务程序,在中断服务程序的末尾为 JNBP3.2,$;INT0=0,则等待则等待JBP3.2,$;INT0=1,则等待则等待RETI;中断返回中断返回在没有按键时,在没有按键时,INT0=0,中断请求有效,响应中断中断请求有效,响应中断后执行中断服务程序,在执行到后执行中断服务程序,在执行到JNBP3.2,$指令时等待。指令时等待。当按下单步键后产生一个正脉冲,执行中断返回,再执行当按下单步键后产生一个正脉冲,执行中断返回,再执行一条指令后,一条指令后
20、,由于已为低电平,所以单片微机再次响应中由于已为低电平,所以单片微机再次响应中断,并进入中断服务程序等待。断,并进入中断服务程序等待。5个中断源,个中断源,4个特殊功能寄存器个特殊功能寄存器TCON/SCON/IE/IP中断中断入口地址入口地址中断请求的允许与禁止。中断请求的允许与禁止。外中断触发方式。外中断触发方式。优先级别。优先级别。开中断开中断/关中断。关中断。5.7 中断服务程序的设计中断服务程序的设计【例例】分析:通过外部中断分析:通过外部中断1,1,在中断服务中将在中断服务中将B B寄存器寄存器里的内容左环移一位。初始化里的内容左环移一位。初始化 (B)=(B)=FEhFEh,采用
21、采用边边沿触发沿触发。要求:一个要求:一个按钮按钮开关控制开关控制8 8个个LEDLED,每按一下按钮灯就移,每按一下按钮灯就移位一次,位一次,依次点亮八盏灯中的一盏。依次点亮八盏灯中的一盏。P1.0P1.0P1.7P1.7INT1INT1300 VCCVCC ORG 0000HORG 0000H LJMP LJMP MAINMAIN ORG 0013H ;ORG 0013H ;中断矢量中断矢量 LJMP LJMP INTINTMAINMAIN:SETB EA ;SETB EA ;开总中断允许开总中断允许“开关开关”SETB EX1 ;SETB EX1 ;开分中断允许开分中断允许“开关开关”S
22、ETB IT1 ;SETB IT1 ;边沿触发边沿触发 MOV B,#0FEH;MOV B,#0FEH;给给 B B 寄存器赋初值寄存器赋初值HEREHERE:SJMP SJMP HEREHERE ;原地等待中断申请原地等待中断申请INTINT:MOV AMOV A,B ;B ;自自B B寄存器中寄存器中取数取数 RL A ;RL A ;左环移一次左环移一次 MOV BMOV B,A ;A ;存回存回B,B,备下次取用备下次取用 MOV P1MOV P1,A ;A ;输出到输出到P1P1口口 RETIRETI ;中断返回中断返回中断服中断服 务程序务程序【例例】出租车计价器计程方法是车轮每运转
23、一出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断圈产生一个负脉冲,从外中断INT0INT0(P3.2P3.2)引脚输入,行驶里程为轮胎周长引脚输入,行驶里程为轮胎周长运转圈数,运转圈数,设轮胎周长为设轮胎周长为2m2m,试实时计算出租车行驶里试实时计算出租车行驶里程(单位米),数据存程(单位米),数据存32H32H、31H31H、30H30H。解:编程如下:解:编程如下:ORGORG 0000H 0000H;复位地址复位地址 LJMPLJMP STAT STAT;转初始化转初始化 ORGORG 0003H 0003H;中断入口地址中断入口地址 LJMPLJMP INT INT;转
24、中断服务程序转中断服务程序 ORG 0100HORG 0100H;初始化程序首地址初始化程序首地址STAT:MOV SP,#60HSTAT:MOV SP,#60H;置堆栈指针置堆栈指针 SETB IT0SETB IT0;置边沿触发方式置边沿触发方式 MOV IP,#01HMOV IP,#01H;置高优先级置高优先级 MOV IE,#81HMOV IE,#81H;开中开中 MOV 30H,#0MOV 30H,#0;里程计数器清里程计数器清0 0 MOV 31H,#0 MOV 31H,#0;MOV 32H,#0 MOV 32H,#0;LJMP MAIN LJMP MAIN;转主程序转主程序,并等待
25、中断并等待中断 ORG 0200HORG 0200H;中断服务子程序首地址中断服务子程序首地址INT:PUSH AccINT:PUSH Acc;保护现场保护现场 PUSH PSWPUSH PSW;MOV A,30H MOV A,30H;读低读低8 8位计数器位计数器 ADD A,#2ADD A,#2;低低8 8位计数器加位计数器加2m2m MOV 30H,A MOV 30H,A;回存回存 CLR ACLR A;ADDC A,31H ADDC A,31H;中中8 8位计数器加进位位计数器加进位 MOV 31H,AMOV 31H,A;回存回存 CLR ACLR A;ADDC A,32H ADDC
26、A,32H;高高8 8位计数器加进位位计数器加进位 MOV 32H,AMOV 32H,A;回存回存 PUSH PSWPUSH PSW;恢复现场恢复现场 PUSH Acc PUSH Acc;RETI RETI;中断返回中断返回MAIN主程序可以处理主程序可以处理循环显示等任务。循环显示等任务。MAIN:ACALL DISP NOP NOP SJMP MAIN【例例5-35-3】现有现有5 5个外中断源个外中断源EX1EX1、EX20EX20、EX21EX21、EX22EX22和和EX23EX23,高电平高电平时表示时表示请求中断请求中断,EX1EX1级级别最高,要求画硬件图,试编制程序。别最高,
27、要求画硬件图,试编制程序。解:解:ORGORG0000H0000H;复位地址复位地址LJMPLJMP MAINMAIN;转主程序转主程序ORGORG0003H0003H;中断入口地址中断入口地址LJMPLJMP PINT0PINT0;转中断服务程序转中断服务程序ORGORG0013H0013H;中断入口地址中断入口地址LJMPLJMP PINT1PINT1;转中断服务程序转中断服务程序 ORGORG0100H0100H ;主程序首地址主程序首地址MAIN:MOVMAIN:MOVSP,#60HSP,#60H;置堆栈指针置堆栈指针 ORLORLTCON,#05HTCON,#05H;置置INT0IN
28、T0、INT1INT1为边沿触发方式为边沿触发方式 SETBSETB PX0 PX0 ;置为高优先级置为高优先级 MOVMOVIE,#0FFHIE,#0FFH;全部开中全部开中 ;主程序内容主程序内容 ORG 1000HORG 1000H;中断服务程序首地址中断服务程序首地址 PINT0:PUSHPINT0:PUSH AccAcc;中断中断,保护现场保护现场 LCALL WORK1LCALL WORK1;调用调用EX1EX1服务子程序服务子程序 POPPOPAccAcc;恢复现场恢复现场 RETIRETI;中断返回中断返回 ORGORG 2000H 2000H ;中断服务程序首地址中断服务程序
29、首地址PINT1:CLRPINT1:CLR EA EA ;CPU;CPU禁中禁中 PUSHPUSH Acc Acc ;中断保护现场中断保护现场 PUSHPUSH DPH DPH ;PUSH PUSH DPL DPL ;SETB SETB EA EA ;CPU;CPU开中开中SETB IT0SETB IT1SETB PX0SETB EX0SETB EX1SETB EA JB P1.0,JB P1.0,LWK20LWK20;P1.0=1,EX20;P1.0=1,EX20请求中断请求中断 JB P1.1,JB P1.1,LWK21LWK21;P1;P1.1=11=1,EX21EX21请求中断请求中断
30、 JB P1.2,JB P1.2,LWK22LWK22;P1.2=1,EX22;P1.2=1,EX22请求中断请求中断 LCALL WORK23 LCALL WORK23 ;P1.3=1,P1.3=1,调用调用EX23EX23服务子服务子LRET:LRET:CLR CLR EA EA;CPUCPU禁中禁中 POPPOP DPL DPL;恢复现场恢复现场 POPPOP DPH DPH;POP POP Acc Acc;SETB SETB EA EA;CPU;CPU开中开中 RETIRETI;中断返回中断返回LWK20LWK20:LCALL WORK20:LCALL WORK20;P1.0=1,;P
31、1.0=1,调用调用EX20EX20服务子程序服务子程序 SJMP LRET SJMP LRET ;转中断返回转中断返回LWK21LWK21:LCALL WORK21:LCALL WORK21;P1.1=1,;P1.1=1,调用调用EX21EX21服务子程序服务子程序 SJMP LRETSJMP LRET;转中断返回转中断返回LWK22LWK22:LCALL WORK22 :LCALL WORK22 ;P1.2=1,;P1.2=1,调用调用EX22EX22服务子程序服务子程序 SJMP LRETSJMP LRET;转中断返回转中断返回 在单片机系统中设置在单片机系统中设置+、四个运算命四个运算
32、命令键,它们的键号分别为令键,它们的键号分别为0 0、1 1、2 2、3 3。当其中一。当其中一个键按下时,进行相应的运算。操作数由个键按下时,进行相应的运算。操作数由P1P1口和口和P3P3口输入,运算结果仍由口输入,运算结果仍由P1P1口和口和P3P3口输出。具体口输出。具体如下:如下:P1P1口口输入被加数、被减数、被乘数和被除输入被加数、被减数、被乘数和被除数,数,输出运算结果的低输出运算结果的低8 8位或商位或商;P3P3口口输入加数、输入加数、减数、乘数和除数,减数、乘数和除数,输出进位(借位)、运算结输出进位(借位)、运算结果的高果的高8 8位或余数位或余数。键盘号已存放在。键盘
33、号已存放在30H30H中。中。单片机四则运算系统单片机四则运算系统解:程序如下:解:程序如下:PRGM:MOV P1,#0FFH PRGM:MOV P1,#0FFH ;P1;P1口置输入态口置输入态 MOV P3,#0FFH MOV P3,#0FFH ;P3;P3口置输入态口置输入态 MOV DPTR,#TBJ MOV DPTR,#TBJ ;置置“”表首地址表首地址 MOV A,30H MOV A,30H ;读键号读键号 RL A RL A ;键号键号 2A2A ADD A,30H ADD A,30H ;键号键号 3A3A JMP A+DPTR JMP A+DPTR ;散转散转TBJ:LJMP
34、 TBJ:LJMP PRGM0PRGM0 ;转转PRGM0(PRGM0(加法加法)LJMP LJMP PRGM1PRGM1 ;转转PRGM1(PRGM1(减法减法)LJMP LJMP PRGM3PRGM3 ;转转PRGM3(PRGM3(除法除法)LJMP LJMP PRGM2PRGM2 ;转转PRGM2(PRGM2(乘法乘法)PRGM0:MOV A,P1 PRGM0:MOV A,P1 ;读加数读加数 ADD A,P3 ADD A,P3 ;P1+P3;P1+P3 MOV P1,A MOV P1,A ;和和P1P1 CLR A CLR A ;ADDC A,#00H ADDC A,#00H ;进位进
35、位A A MOV P3,A MOV P3,A ;进位进位P3P3 AJMP AJMPPRGM(RET)PRGM(RET);PRGM1:MOV A,P1 PRGM1:MOV A,P1 ;读被减数读被减数 CLR C CLR C ;SUBB A,P3 SUBB A,P3 ;P1-P3;P1-P3 MOV P1,A MOV P1,A ;差差P1P1 CLR A CLR A ;RLC A RLC A ;借位借位A A MOV P3,A MOV P3,A ;借位借位P3P3 AJMPAJMPPRGM(RET)PRGM(RET);PRGM2:MOV A,P1 PRGM2:MOV A,P1 ;读被乘数读被乘
36、数MOV B,P3 MOV B,P3 ;置乘数置乘数 MUL ABMUL AB;P1;P1P3P3 MOV P1,A MOV P1,A;积低积低8 8位位P1P1 MOV P3,B MOV P3,B;积高积高8 8位位P3P3 AJMPAJMPPRGM(RET)PRGM(RET);PRGM3:MOV A,P1 PRGM3:MOV A,P1 ;读被除数读被除数 MOV B,P3 MOV B,P3 ;置除数置除数 DIV ABDIV AB;P1;P1P3P3 MOV P1,A MOV P1,A ;商商P1P1 MOV P3,B MOV P3,B ;余数余数P3P3 AJMPAJMPPRGM(RET
37、)PRGM(RET);说明:由于说明:由于LJMPLJMP为为3 3字节指令,因此键号需先乘字节指令,因此键号需先乘3 3,以便转到正确的位置。以便转到正确的位置。在单片机系统中设置在单片机系统中设置+、四个运算命四个运算命令键,当其中一个键按下时,进行相应的运算。令键,当其中一个键按下时,进行相应的运算。操作数由操作数由P1P1口和口和P3P3口输入,运算结果仍由口输入,运算结果仍由P1P1口和口和P3P3口输出。具体如下:口输出。具体如下:P1P1口口输入被加数、被减数、输入被加数、被减数、被乘数和被除数,被乘数和被除数,输出运算结果的低输出运算结果的低8 8位或商位或商;P3P3口口输入
38、加数、减数、乘数和除数,输入加数、减数、乘数和除数,输出进位(借输出进位(借位)、运算结果的高位)、运算结果的高8 8位或余数位或余数。T0T0T1T1INT0INT0INT1INT1加加减减除除乘乘ORG 0000HAJMP MAINORG 0003HAJMP P_ADD;+ORG 000BHAJMP P_SUB;-ORG 0013HAJMP P_MUL;*ORG 001BHAJMP P_DIV;/MAIN:MOV SP,#60HSETB IT0SETB IT1MOV TMOD,#66H;T0、T1都为计数且为方式都为计数且为方式2MOV TH0,#0FFHMOV TL0,#0FFHMOV
39、TH1,#0FFHMOV TL1,#0FFHSETB EX0SETB EX1SETB ET0SETB ET1SETB EASJMP$P_ADD:MOV P1,#0FFH ;P1口置输入态口置输入态 MOV P3,#0FFH ;P3口置输入态口置输入态 MOV A,P1 ;读加数读加数 ADD A,P3 ;P1+P3 MOV P1,A ;和和P1 CLR A ;ADDC A,#00H ;进位进位A MOV P3,A ;进位进位P3 RETI ;P_SUB:MOV P1,#0FFH ;P1口置输入态口置输入态 MOV P3,#0FFH ;P3口置输入态口置输入态MOV A,P1 ;读被减数读被减数
40、 CLR C ;SUBB A,P3 ;P1-P3 MOV P1,A ;差差P1 CLR A ;RLC A ;借位借位A MOV P3,A ;借位借位P3 RETIP_MUL:MOV P1,#0FFH ;P1口置输入态口置输入态 MOV P3,#0FFH ;P3口置输入态口置输入态MOV A,P1 ;读被乘数读被乘数MOV B,P3 ;置乘数置乘数 MUL AB;P1P3 MOV P1,A;积低积低8位位P1 MOV P3,B;积高积高8位位P3 RETI;P_DIV:MOV P1,#0FFH ;P1口置输入态口置输入态 MOV P3,#0FFH ;P3口置输入态口置输入态 MOV A,P1 ;
41、读被除数读被除数 MOV B,P3 ;置除数置除数 DIV AB;P1P3 MOV P1,A ;商商P1 MOV P3,B ;余数余数P3 RETIEND执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回返返 回回图图52 80C5152 80C51的中断系统结构示意图的中断系统结构示意图图图53 53 电平方式外部中断请求电平方式外部中断请求的撤消电路的撤消电路图图54 54 中断响应过程的时序中断响应过程的时序图图55 55 外部中断源的扩展电路外部中断源的扩展电路图图56 56 外部中断源查询流程图外部中断源查询流程图中断源中断源 中断矢量地址中断矢量地址 外部中
42、断外部中断0(INT0INT0)0003H 定时器定时器/计数器计数器0(T0)000BH外部中断外部中断1(INT1INT1)0013H 定时器定时器/计数器计数器1(T1)001BH 串行口(串行口(RI、TI)0023H定时器定时器/计数器计数器2 002BH表表5-1 5-1 中断矢量地址中断矢量地址实验一实验一 清清0、移数、移数将将片内片内50H5FH及及片外片外0010H004FH单元单元清清0;然后将;然后将片片内内30H3FH的数据的数据移到片外移到片外0000H000FH中;判断:中;判断:若(若(30H)15,则求其,则求其平方平方存到存到40H中,并将中,并将位位00H
43、置置1若(若(30H)=15,则则加加15存到存到40H中,中,并并位位01H置置1若(若(30H)15,则则减减15存到存到40H中,并中,并位位02H置置1 实验二实验二 加法、排序加法、排序 有两个长度为有两个长度为10的无符号数分别放在片内的无符号数分别放在片内30H和和40H为首的为首的存储单元中(低位),求其对应项之和(带进位位),放在存储单元中(低位),求其对应项之和(带进位位),放在50H为首的单元中,然后按升序排列放在为首的单元中,然后按升序排列放在60H为首的单元中。为首的单元中。实验三实验三 查表、散转查表、散转设有一表格,表中数为:设有一表格,表中数为:00H、11H、22H、33H、44H、55H、66H、77H、88H、99H、AAH、BBH、CCH、DDH、EEH、FFH。根据片外。根据片外0000H单元的低单元的低4位的数,位的数,取出表中相应的值存到片内取出表中相应的值存到片内30H中;根据片外中;根据片外0000H单元单元的高的高4位的数,将片内位的数,将片内RAM区中可位寻址的相应的位置区中可位寻址的相应的位置1(从位(从位00H位位0FH,只可有一个位地址为,只可有一个位地址为1)
限制150内