书签 分享 收藏 举报 版权申诉 / 22
上传文档赚钱

类型单片机C语言-第4章中断系统的C51编程-3课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4289114
  • 上传时间:2022-11-26
  • 格式:PPT
  • 页数:22
  • 大小:118.79KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《单片机C语言-第4章中断系统的C51编程-3课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    单片机 语言 中断 系统 C51 编程 课件
    资源描述:

    1、4.3 外部中断外部中断源的源的C51编程编程 51单片机提供了单片机提供了2个外部中断源个外部中断源:外部中断外部中断0请求请求,占用,占用P3.2引脚,其中断引脚,其中断请求号为请求号为0。外部中断外部中断1请求请求,占用,占用P3.3引脚,其中断引脚,其中断请求号为请求号为2。外部中断源的外部中断源的初始化初始化时通过设置相应的特时通过设置相应的特殊功能寄存器的相应位来实现的。殊功能寄存器的相应位来实现的。(1)TCON寄存器中的寄存器中的IT0、IT1位位 外部中断外部中断0和外部中断和外部中断1的中断触发方式控制位。如:的中断触发方式控制位。如:IT0=0;/外部中断外部中断0为电平

    2、触发方式为电平触发方式 IT1=1;/外部中断外部中断1为脉冲触发方式为脉冲触发方式(2)IP寄存器中的寄存器中的PX0、PX1位位 外部中断外部中断0和外部中断和外部中断1的中断优先级的设定。如:的中断优先级的设定。如:PX0=0;/设定外部中断设定外部中断0为低级中断为低级中断 PX1=1;/设定外部中断设定外部中断1为高级中断为高级中断4.3.1 外部中断源的初始化(3)IE寄存器中的寄存器中的EA、EX0、EX1位位 EA为中断允许总控制位;为中断允许总控制位;EX0、EX1为外部中断为外部中断0中中断和外部中断断和外部中断1中断的中断允许位。如:中断的中断允许位。如:EA=1;/开放

    3、总的中断控制开放总的中断控制 EX0=1;/允许外部中断允许外部中断0中断中断 EX1=0;/禁止外部中断禁止外部中断1中断中断【例【例4-1】初始状态时低初始状态时低4位灯亮,高位灯亮,高4位的位的灯灭,编程实现按一下灯灭,编程实现按一下S0,P1口的发光状口的发光状态发生反转。态发生反转。#include void main()P1=0XF0;/高高4位灭、低位灭、低4位亮位亮 IT1=1;/脉冲触发方式脉冲触发方式 EA=1;EX1=1;/开放相应的中断开放相应的中断 while(1);/等待中断等待中断 void wint0(void)interrupt 2 /外外部中断部中断1 P1

    4、=P1;【例【例4-2】利用利用S0按钮控制按钮控制P1口的灯,要求口的灯,要求每按一下就点亮一盏灯每按一下就点亮一盏灯(其余的灯是灭的其余的灯是灭的)。#include#include /内部函数内部函数 bit flag;/中断标志中断标志 unsigned char ledstatus;void wint1()interrupt 2 flag=1;void main(void)P1=0 xff;ledstatus=0 xfe;IT1=1;EA=1;EX1=1;while(1)if(flag)P1=ledstatus;ledstatus=_crol_(ledstatus,1);flag=0

    5、;修改:利用利用S0按钮控制按钮控制P1口的灯,要求每按口的灯,要求每按一下就点亮一盏灯一下就点亮一盏灯(其余的灯其余的灯保持亮保持亮的的状态状态).。【例【例4-3】当当S0动作时,动作时,P1.0端口的电平反向,当端口的电平反向,当外外S1动作,动作,P1.7端口的电平反向端口的电平反向。#include sbit LED0=P10;sbit LED7=P17;void IS0(void)interrupt 0/外部中断外部中断0 LED0=LED0;void IS1(void)interrupt 2/外部中断外部中断1 LED7=LED7;void main()P1=0 xFF;IT0=

    6、1;IT1=1;EX0=1;EX1=1;EA=1;while(1);修改:(1)S0控制P1.0P1.3的灯,S1控制P1.4P1.7的灯。(2)按下S0后,点亮8只LED;按下S1后,变为闪烁状态。【例【例4-4】P1口控制的灯按一定的频率闪烁,口控制的灯按一定的频率闪烁,S0动作,实现单灯左移,而左移动作,实现单灯左移,而左移3圈结束。圈结束。#include#defineLEDP1 /定义LED接至P 1void delay1ms(int);/声明延迟函数 void left(int);/声明单灯左移函数 main()IE=0 x81;/准许INT 0中断LED=0 x00;/初值=00

    7、00 0000,灯全亮while(1)/无穷循环,程序一直跑 delay1ms(250);/延迟250*1m=0.25s LED=LED;/LED反相 /*INT 0的中断子程序-单灯左移3圈*/void my_int0(void)interrupt 0unsigned saveLED=LED;/储存中断前LED状态 left(3);/单灯左移3圈 LED=saveLED;/写回中断前LED状态/*延迟函数,延迟约x 1ms*/void delay1ms(int x)int i,j;/声明整数变数i,j for(i=0;ix;i+)/计数x次,延迟x 1ms for(j=0;j120;j+);

    8、/计数120次,延迟1ms /*单灯左移函数,执行x圈*/void left(int x)/单灯左移函数开始 int i,j;/声明变数i,jfor(i=0;ix;i+)/i循环,执行x圈 LED=0 xfe;/初始状态=1111 1110,最右灯亮 for(j=0;j7;j+)/j循环,左移7次 delay1ms(250);LED=(LED1)|0 x01;/左移1位後,LSB设为1 delay1ms(250);修改:外部中断外部中断1,右移动,右移动3圈。圈。【例【例4-5】首先通过首先通过P1.7口点亮发光二极管口点亮发光二极管D1,然后外部输入一脉冲串,则发光二极管然后外部输入一脉冲串

    9、,则发光二极管D1亮、暗亮、暗交替。交替。#include sbit P1_7=P17;void interrupt0()interrupt 0 using 2 P1_7=P1_7;void main()EA=1;IT0=1;EX0=1;P1_7=0;do while(1);修改:修改:如果有如果有3个脉冲,则灯亮、暗交替一次,请编程。个脉冲,则灯亮、暗交替一次,请编程。实验1 按钮型开关模拟外部中断实验 实验目的:掌握外部中断的基本使用方法,掌握中断与查询的区别,掌握8段LED静态显示的软件设计。电路与内容:P3.2和P3.3分别接两个按钮开关K0和K1,P1口和P2口接共阴极LED显示器。

    10、编程实现:开始显示数字50,K0和K1分别是加1键和减1键,按K0则显示的数字加1,按K1则显示的数字减1。K0和K1采用中断方式控制。#include#define uchar unsigned char#define uint unsigned intuchar data dir_buf2;/显示缓冲区uchar code dirtable18=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/显示的代码表uchar i;void display()P1=dirtabledir_buf0;/P2口显示 P2=dirta

    11、bledir_buf1;/P3口显示void k0int()interrupt 0 i=i+1;void k1int()interrupt 2 i=i-1;void main()i=50;IT0=1;IT1=1;EA=1;EX0=1;EX1=1;while(1)dir_buf0=i/10;dir_buf1=i%10;display();实验2 外部中断优先级实验 实验目的:掌握外部中断源的基本应用,掌握两个中断源优先级管理。电路与内容:P1口接8个发光二极管,P3.2和P3.3分别接两个按钮开关,用来模拟2个外部中断源。平时8个灯交替按照亮和灭闪烁,一个按键控制左移3圈,另一个按键控制右移3圈

    12、(采用中断方式,左移的中断优先级高于右移中断优先级)。-#include#defineLEDP1/定义LED接至Port 1void delay1ms(int);/声明延迟函数 void left(int);/声明单灯左移函数 void right(int);/单灯右移函数开始main()IE=0 x85;/准许INT 0,INT 1中断IP=0 x01;/设定INT 0具有最高优先权LED=0 x00;/初值=0000 0000,灯全亮while(1)delay1ms(250);/延迟250 1m=0.25s LED=LED;/LED反相/*INT 0的中断子程序-单灯左移3圈*/void

    13、my_int0(void)interrupt 0 /NT0 中断子程序开始 unsigned saveLED=LED;/储存中断前LED状态 left(3);/单灯左移3圈 LED=saveLED;/写回中断前ED状态 /*INT 1的中断子程序-单灯右移3圈*/void my_int1(void)interrupt 2 /INT1 中断子程序开始 unsigned saveLED=LED;/储存中断前LED状态 right(3);/单灯右移3圈 LED=saveLED;/写回中断前LED状态/*延迟函数,延迟约x 1ms*/void delay1ms(int x)int i,j;/声明整数变

    14、数i,j for(i=0;ix;i+)/计数x次,延迟x 1ms for(j=0;j120;j+);/计数120次,延迟1ms/*单灯左移函数,执行x圈*/void left(int x)int i,j;/声明变数i,jfor(i=0;ix;i+)/i循环,执行x圈 LED=0 xfe;/初始状态=1111 1110,最右灯亮 for(j=0;j7;j+)/j循环,左移7次 delay1ms(250);/延迟250 1m=0.25sLED=(LED1)|0 x01;/左移1位後,LSB设为1 delay1ms(250);/延迟250 1m=0.25s/*单灯右移函数,执行x圈*/void right(int x)/单灯右移函数开始 int i,j;/声明变数i,j for(i=0;ix;i+)/i循环,执行x圈 LED=0 x7f;/初始状态=0111 1111for(j=0;j1)|0 x80;/右移1位後,MSB设为1delay1ms(250);/延迟250 1m=0.25s

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:单片机C语言-第4章中断系统的C51编程-3课件.ppt
    链接地址:https://www.163wenku.com/p-4289114.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库