欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新51单片机中断程序大全.doc

    • 资源ID:33803004       资源大小:152.50KB        全文页数:24页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新51单片机中断程序大全.doc

    精品资料51单片机中断程序大全./实例42:用定时器T0查询方式P2口8位控制LED闪烁#include<reg51.h> / 包含51单片机寄存器定义的头文件/*函数功能:主函数*/void main(void) / EA=1; /开总中断/ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式1TH0=(65536-46083)/256; /定时器T0的高8位赋初值TL0=(65536-46083)%256; /定时器T0的高8位赋初值TR0=1; /启动定时器T0TF0=0;P2=0xff; while(1)/无限循环等待查询 while(TF0=0) ; TF0=0; P2=P2; TH0=(65536-46083)/256; /定时器T0的高8位赋初值 TL0=(65536-46083)%256; /定时器T0的高8位赋初值 /实例43:用定时器T1查询方式控制单片机发出1KHz音频#include<reg51.h> / 包含51单片机寄存器定义的头文件sbit sound=P37; /将sound位定义为P3.7引脚/*函数功能:主函数*/void main(void) / EA=1; /开总中断/ET0=1; /定时器T0中断允许 TMOD=0x10; /使用定时器T1的模式1TH1=(65536-921)/256; /定时器T1的高8位赋初值TL1=(65536-921)%256; /定时器T1的高8位赋初值TR1=1; /启动定时器T1TF1=0;while(1)/无限循环等待查询 while(TF1=0) ; TF1=0;sound=sound; /将P3.7引脚输出电平取反 TH1=(65536-921)/256; /定时器T0的高8位赋初值 TL1=(65536-921)%256; /定时器T0的高8位赋初值 /实例44:将计数器T0计数的结果送P1口8位LED显示#include<reg51.h> / 包含51单片机寄存器定义的头文件sbit S=P34; /将S位定义为P3.4引脚/*函数功能:主函数*/void main(void) / EA=1; /开总中断/ET0=1; /定时器T0中断允许 TMOD=0x02; /使用定时器T0的模式2TH0=256-156; /定时器T0的高8位赋初值TL0=256-156; /定时器T0的高8位赋初值TR0=1; /启动定时器T0while(1)/无限循环等待查询 while(TF0=0) /如果未计满就等待 if(S=0) /按键S按下接地,电平为0 P1=TL0; /计数器TL0加1后送P1口显示 TF0=0; /计数器溢出后,将TF0清0 /实例45:用定时器T0的中断控制1位LED闪烁#include<reg51.h> / 包含51单片机寄存器定义的头文件sbit D1=P20; /将D1位定义为P2.0引脚/*函数功能:主函数*/void main(void) EA=1; /开总中断ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式2TH0=(65536-46083)/256; /定时器T0的高8位赋初值TL0=(65536-46083)%256; /定时器T0的高8位赋初值TR0=1; /启动定时器T0while(1)/无限循环等待中断 ; /*函数功能:定时器T0的中断服务程序*/void Time0(void) interrupt 1 using 0 /“interrupt”声明函数为中断服务函数 /其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器 D1=D1; /按位取反操作,将P2.0引脚输出电平取反 TH0=(65536-46083)/256; /定时器T0的高8位重新赋初值TL0=(65536-46083)%256; /定时器T0的高8位重新赋初值 /实例46:用定时器T0的中断实现长时间定时#include<reg51.h> / 包含51单片机寄存器定义的头文件sbit D1=P20; /将D1位定义为P2.0引脚unsigned char Countor; /设置全局变量,储存定时器T0中断次数/*函数功能:主函数*/void main(void) EA=1; /开总中断ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式2TH0=(65536-46083)/256; /定时器T0的高8位赋初值TL0=(65536-46083)%256; /定时器T0的高8位赋初值TR0=1; /启动定时器T0Countor=0; /从0开始累计中断次数while(1)/无限循环等待中断 ; /*函数功能:定时器T0的中断服务程序*/void Time0(void) interrupt 1 using 0 /“interrupt”声明函数为中断服务函数 /其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器 Countor+; /中断次数自加1if(Countor=20) /若累计满20次,即计时满1s D1=D1; /按位取反操作,将P2.0引脚输出电平取反Countor=0; /将Countor清0,重新从0开始计数 TH0=(65536-46083)/256; /定时器T0的高8位重新赋初值TL0=(65536-46083)%256; /定时器T0的高8位重新赋初值 /实例47:用定时器T1中断控制两个LED以不同周期闪烁#include<reg51.h> / 包含51单片机寄存器定义的头文件sbit D1=P20; /将D1位定义为P2.0引脚sbit D2=P21; /将D2位定义为P2.1引脚unsigned char Countor1; /设置全局变量,储存定时器T1中断次数unsigned char Countor2; /设置全局变量,储存定时器T1中断次数/*函数功能:主函数*/void main(void) EA=1; /开总中断ET1=1; /定时器T1中断允许 TMOD=0x10; /使用定时器T1的模式1TH1=(65536-46083)/256; /定时器T1的高8位赋初值TL1=(65536-46083)%256; /定时器T1的高8位赋初值TR1=1; /启动定时器T1Countor1=0; /从0开始累计中断次数Countor2=0; /从0开始累计中断次数 while(1)/无限循环等待中断 ; /*函数功能:定时器T1的中断服务程序*/void Time1(void) interrupt 3 using 0 /“interrupt”声明函数为中断服务函数 /其后的3为定时器T1的中断编号;0表示使用第0组工作寄存器 Countor1+; /Countor1自加1Countor2+; /Countor2自加1if(Countor1=2) /若累计满2次,即计时满100ms D1=D1; /按位取反操作,将P2.0引脚输出电平取反Countor1=0; /将Countor1清0,重新从0开始计数if(Countor2=8) /若累计满8次,即计时满400ms D2=D2; /按位取反操作,将P2.1引脚输出电平取反Countor2=0; /将Countor1清0,重新从0开始计数 TH1=(65536-46083)/256; /定时器T1的高8位重新赋初值TL1=(65536-46083)%256; /定时器T1的高8位重新赋初值 /实例50-1:输出50个矩形脉冲#include<reg51.h> /包含51单片机寄存器定义的头文件sbit u=P14; /将u位定义为P1.4/*函数功能:延时约30ms (3*100*100=30 000s =30m*/void delay30ms(void) unsigned char m,n; for(m=0;m<100;m+) for(n=0;n<100;n+) ;/*函数功能:主函数*/void main(void) unsigned char i; u=1; /初始化输出高电平 for(i=0;i<50;i+) /输出50个矩形脉冲 u=1; delay30ms(); u=0; delay30ms(); while(1) ; /无限循环,防止程序“跑飞” /实例50-2:计数器T0统计外部脉冲数#include<reg51.h> /包含51单片机寄存器定义的头文件/*函数功能:主函数*/void main(void) TMOD=0x06; / TMOD=0000 0110B,使用计数器T0的模式2 EA=1; /开总中断 ET0=0; /不使用定时器T0的中断 TR0=1; /启动T0 TH0=0; /计数器T0高8位赋初值 TL0=0; /计数器T0低8位赋初值 while(1) /无限循环,不停地将TL0计数结果送P1口 P1=TL0; /实例51-2:定时器T0的模式2测量正脉冲宽度#include<reg51.h> /包含51单片机寄存器定义的头文件sbit ui=P32; /将ui位定义为P3.0(INT0)引脚,表示输入电压/*函数功能:主函数*/void main(void) TMOD=0x0a; / TMOD=0000 1010B,使用定时器T0的模式2,GATE置1 EA=1; /开总中断 ET0=0; /不使用定时器T0的中断 TR0=1; /启动T0 TH0=0; /计数器T0高8位赋初值 TL0=0; /计数器T0低8位赋初值 while(1) /无限循环,不停地将TL0计数结果送P1口 while(ui=0) /INT0为低电平,T0不能启动 ; TL0=0; /INT0为高电平,启动T0计时,所以将TL0清0 while(ui=1) /在INT0高电平期间,等待,计时 ;P1=TL0; /将计时结果送P1口显示 /实例53:用外中断0的中断方式进行数据采集#include<reg51.h> /包含51单片机寄存器定义的头文件sbit S=P32; /将S位定义为P3.2,/*函数功能:主函数*/void main(void) EA=1; /开放总中断 EX0=1; /允许使用外中断 IT0=1; /选择负跳变来触发外中断P1=0xff;while(1) ; /无限循环, 防止程序跑飞 /*函数功能:外中断T0的中断服务程序*/void int0(void) interrupt 0 using 0 /外中断0的中断编号为0 P1=P1; /每产生一次中断请求,P1取反一次。 /实例54-1:输出负脉宽为200微秒的方波#include<reg51.h> /包含51单片机寄存器定义的头文件sbit u=P14; /将u位定义为P1.4/*函数功能:主函数*/void main(void) TMOD=0x02; /TMOD=0000 0010B,使用定时器T0的模式2 EA=1; /开总中断ET0=1; /定时器T0中断允许 TH0=256-200; /定时器T0的高8位赋初值TL0=256-200; /定时器T0的高8位赋初值TR0=1; /启动定时器T0while(1) /无限循环,等待中断 ; /*函数功能:定时器T0的中断服务程序*/void Time0(void) interrupt 1 using 0 /"interrupt"声明函数为中断服务函数 u=u; /将P1.4引脚输出电平取反,产生方波 /实例54-2:测量负脉冲宽度#include<reg51.h> /包含51单片机寄存器定义的头文件sbit u=P32; /将u位定义为P3.2/*函数功能:主函数*/void main(void) TMOD=0x02; /TMOD=0000 0010B,使用定时器T0的模式2 EA=1; /开放总中断 EX0=1; /允许使用外中断 IT0=1; /选择负跳变来触发外中断ET0=1; /允许定时器T0中断TH0=0; /定时器T0赋初值0TL0=0; /定时器T0赋初值0TR0=0; /先关闭T0while(1) ; /无限循环, 不停检测输入负脉冲宽度 /*函数功能:外中断0的中断服务程序*/void int0(void) interrupt 0 using 0 /外中断0的中断编号为0 TR0=1; /外中断一到来,即启动T0计时TL0=0; /从0开始计时while(u=0) /低电平时,等待T0计时 ;P1=TL0; /将结果送P1口显示TR0=0; /关闭T0 /实例55:方式0控制流水灯循环点亮#include<reg51.h> /包含51单片机寄存器定义的头文件#include<intrins.h> /包含函数_nop_()定义的头文件unsigned char code Tab=0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F;/流水灯控制码,该数组被定义为全局变量sbit P17=P17;/*函数功能:延时约150ms*/ void delay(void) unsigned char m,n; for(m=0;m<200;m+) for(n=0;n<250;n+) ; /*函数功能:发送一个字节的数据*/void Send(unsigned char dat) P17=0; /P1.7引脚输出清0信号,对74LS164清0 _nop_(); /延时一个机器周期 _nop_(); /延时一个机器周期,保证清0完成 P17=1; /结束对74LS164的清0 SBUF=dat; /将数据写入发送缓冲器,启动发送 while(TI=0) /若没有发送完毕,等待 ; TI=0; /发送完毕,TI被置“1”,需将其清0/*函数功能:主函数*/void main(void) unsigned char i; SCON=0x00; /SCON=0000 0000B,使串行口工作于方式0 while(1) for(i=0;i<8;i+) Send(Tabi); /发送数据 delay(); /延时

    注意事项

    本文(最新51单片机中断程序大全.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开