51单片机中断程序大全(20210511121708)_第1页
51单片机中断程序大全(20210511121708)_第2页
51单片机中断程序大全(20210511121708)_第3页
51单片机中断程序大全(20210511121708)_第4页
51单片机中断程序大全(20210511121708)_第5页
已阅读5页,还剩5页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/实例42 :用定时器TO查询方式P2 口 8位控制LED闪烁 #include / void main(void) 包含51单片机寄存器定义的头文件 z EA二1; ETO二1; TM0D=0 x01; 开总中断 定时器TO中断允许 使用定时器TO的模式1 THO= (65536-46083)7256; /定时器TO的高8位赋初值 TLO= (65536-46083)%256; / 定时器 T0 的高 8 位赋初值 TRO二 1; /启动定时器T0 P2=0 xff; while(1)/无限循环等待查询 while (TFO=O) TFO二0; P2=2; THO二(65536-46083)

2、/256; / TLO=(65536-46083)%256; / 定时器TO的高8位赋初值 定时器T0的高8位赋初值 /实例43:用定时器T1查询方式控制单片机发出1KHZ音频 包含51单片机寄存器定义的头文件 将sound位定义为引脚 #include / sbit sou nd=卩 3 八 7;/ void main(void) / / EA二1;/ ETO二1; TMOD二0 x10;/ TH1=(65536-921)/256; TL1=(65536-921)%256; / TR1=1;/ TF1二0; 开总中断 定时器TO中断允许 使用 定时器T1的模式1定时器 T1的高8位赋初值定时

3、器 T1的高8位赋初值启动定 时器T1 while(1)/无限循环等待查询 while(TFl=0); TF1二0; sound二sound; /将引脚输出电平取反 TH1二(65536-921)/256; / TL1=(65536-921)%256; / 定时器T0的高8位赋初值定时器T0的高8位赋 初值 /实例 将计数器TO计数的结果送Pl 口 8位LED显示 SincMdeO / sbit包含51单片机寄存器定义的头文件将S位定义为 S=P 3 八 4; / void 引脚 main (void)- / EA二1; / ETO二1; /开总中断 TH0D二0 x02; THO二256-1

4、56; TLO二256-156; TRO二1; /定时器T0中断允许 /使用定时器T0的模式2 /定时器T0 的高8位赋初值 /定时器T0的高8位赋初值/启动定时器T0 while(l)/无限循环等待查询 while(TF0=0) / if(S=O) / Pl二TLO; 如果未计满就等待 按键s按下接地,电平为0 计数器TLO加1后送P1 口显示 TFO二0; /计数器溢出后,将TFO清0 实例45:用定时器T0的中断控制1位LED闪烁 #include / 包含51单片机寄存器定义的头文件 sbit Dl= PO / 将D1位定义为引脚 EA=1; ETO=1; TM0D=0 x01; 开总

5、中断 定时器TO中断允许使用定 时器T0的模式2定时器T0 的高8位赋初值 定时器T0的高8位赋初值 启动定时器T0 void main(void) TH0=(65536-46083)/256/ / TLO= (65536-46083)%256; / TRO二1;/ while (1); 函数功能:定时器T0的中断服务程序 *経*/ void TimeO(void) interrupt 1 using 0 寄存器 D1D1; /按位取反操作,将引脚输出电 平取反 THO二(65536-46083)/256; / 定时器 T0 的高 8 位重新赋初值 TLO= (65536- 46083)%25

6、6; /定时器T0的高8位重新赋初值 开总中断 定时器TO中断允许使用定 时器TO的模式2定时器TO 的高8位赋初值 定时器TO的高8位赋初值 启动定时器TO 从0开始累计中断次数 /实例46:用定时器TO的中断实现长时间定时 SincludeO /包含51单片机寄存器定义的头文件sbit Dl= P。;/ 将 D1 位定义为引脚 unsigned char Counter; / void main (void) 设置全局变量,储存定时器TO中断次数 EA二1; ET0二1; TM0D=0 x01;, THO二(65536-46083)/256/ / TLO二(65536-46083)256;

7、 / TRO二1;/ Countor=0; / while(1); *函数功能:定时器T0的中断服务程序 *経* iJimeO(void) interrupt 1 using 0 Countor+; / if(Coi4nj擀决数)自加 i D1=D; / / 若累计满20次,即计时满s 按位取反操作,将引脚输岀电平取反 /将Counter清0 ,重新从0开始计数 THO二(65536-46083)/256; /定时器T0的高8位重新赋初值 TLO= (65536-46083)96256; /定时器T0的高8位重新赋初值 /实例 用定时器T1中断控制两个LED以不同周期闪烁 益e/ sbit庖:

8、含51单片机寄存器定义的头文件 P。;/ sbit D2=P-1Di 位定义为引脚 unsigned char Countor2; void main(void) / unsigned char Cou喑咙 位定义为引脚 设置全局变量,储存定时器T1中断次数 设置全局变量,储存定时器T1中断次数 EA二 1; ET1=1; TH0D二0 x10; 开总中断 定时器T1中断允许 TH1二(65536-46083)/2561 / TL1= (65536-46083)%256; / TR1二1;/ 使用定时器T1的模式1定时 器T1的高8位赋初值 定时 器T1的高8位赋初值启动 定时器T1 Coun

9、tor1=0;/ 从0开始累计中断次数 Countor2=0; while(1) / 从0开始累计中断次数 void Timel(void) interrupt 3 using o / Countorl+; /Countorl Countor2+; /Countor2 if (Countorl=2) / 1 自加1 D1二DI; / Countorl=0;自加1右1累计满2次,即计 ,辻(Countor2=8) /时满 100ms D2=D2; / Countor2=0; 按位取反操作,将引脚输出电平取反 /将Countorl清0,重新从0开始计数 若累计满8次,即计时满400ms 按位取反操

10、作,将引脚输出电平取反 /将Countorl清0,重新从0开始计数 TH1= (65536-46083)/256; /定时器T1的高8位重新赋初值 TL1= (65536-46083)%256; /定时器T1的高8位重新赋初值 /实例50-1 :输出50个矩形脉冲 SincludeO /包含51单片机寄存器定义的头文件 sbit u=P IM; /将u位定义为 函数功能:延时约 30ms (3*100*100=30 000 卩 s 二30m delav30ms(void) unsigned char m, n; for(m=0;m100;m+) for(n=0;n100;n+); void m

11、ain (void) unsigned char i; u二1; /初始化输出高电平 for(i=0;i50;i+) / 输出 50 个矩形脉冲 u二 1; delay30ms 0; u=0; delay30ms 0; while(1) : 实例50-2 :计数器TO统计外部脉冲数#include /包含51单片机寄存器定义的头文件void main (void) TM0D=0 x06; EA=1; ETO二0; TRO二1; THO二0; TLO二0; / / / / / while(1) / P1=TLO; / / TMOD=0000 0110B,使用计数器TO的模式2开总中 断 不使用定

12、时器T0的中断启动T0 计数器TO A 8位赋初值 计数器T0低8位赋初值 无限循环,不停地将TLO计数结果送P1 口 TM0D=0 x0a; / EA二 1; / / ETO二0; / TRO二1; / THO二0; / TLO二0; / while(1) 实例51-2 :定时器TO的模式2测量正脉冲宽度 #include / sbit ui=P 3 丿I 包含51单片机寄存器定义的头文件 将ui位定义为(INTO )引脚,表示输入电 2; / void丿k main (void) / TMOD=OOOO 1010B,使用定时器TO的模式2, GATE置1开总 中断 不使用定时器TO的中断

13、启动T0 计数器TO高8位赋初值 计数器T0低8位赋初值 无限循环,不停地将TLO计数结果送P1 口 while(ui=0) : /INTO 为低电平,T0不能启动 TLO二0;/INTO 为高电平,启动T0计时,所以将TLO清 while(ui=l): / 在INTO高电平期间,等待,计时 P1=TLO; /将计时结果送P1 口显示 /实例53:用外中断0的中断方式进行数据采集 SincludeO /包含51单片机寄存器定义的头文件 sbit S二P3八2; / 将S位定义为, void main(void) EA二1; /开放总中断允许使用外 EXO二1; / IT0曲断/选择负跳变来触发

14、 P1二Oxff;夕卜中断 while (1) ; void intO(void) interrupt 0 using 0外中断 0 的中断编号为 0 P1=P1; /每产生一次中断请求,P1取反一次。 /实例54-1 :输出负脉宽为200微秒的方波 SincludeO / sbit包含51单片机寄存器定义的头文件 u=P IM; / void main (void) TM0D=0 x02; EA=1; ETO二1; THO二256-200; TLO二256-200; TRO=1; while(1) : 将u位定义为 /TM0D=0000 0010B,使用定时器TO的模式2 /开总中断 /定时

15、器T0中断允许 /定时器T0的高8位赋初值 /定时器T0的高8位赋初值 /启动定时器T0 void TimeO(void) interrupt 1 using 0 无限循环,等侍中断 /interrupt 数声明函数为中断服务函 uU; 将引脚输出电平取反,产生方波* #include / /实例54-2 :测量负脉冲宽 包慕1单片机寄存器定义的头文件 sbit u=P 3 八 2; 将U位定义为 void main(void) TM0D=0 x02; z /THOD二0000 0010B,使用定时器 T0 的模式 2 EA=1; EXO二1; / IT0=l; / ETO二1; 开放总中断允

16、许使用外中断选择负跳变来触 THO二0; 发外中断允许定时器T0中断定时器T0赋 TLO二0; 初值0定时器T0赋初值0先关闭T0 TRO二0; /无限循环,不停检测输入负脉冲宽度 / / / while (1) ;/ void intO(void) interrupt 0 using 0 /外中断 0 的中断编号为 0 TRO二1; /外中断一到来,即启动T0计时 TLO=O; 从 0 开始计时 while(u=0) / 低电平时,等待T0计时 P1二TLO; /将结果送P1 口显示 TR0二0; /关闭 T0 /实例55:方式0控制流水灯循环点亮 SincludeO /包含51单片机寄存器

17、定义的头文件 Sincludeo /包含函数_nop_ ()定义的头文件 unsigned char code Tab = 0 xFE, OxFD, OxFB, 0 xF7, OxEF, OxDF, OxBF, 0 x7F;/ 流水灯 控制码,该数组被定义为全局变量 sbit P17=P 1 八 7; /*林 函数功能:延时约150ms */ void delay (void) unsigned char m, n; for(m=0;m200:m+) for(n=0;n250;n+); 函数功能: 发送一个字节的数据 */ void Send (unsigned char dat) Pl7=0; _nop_(); _nop_();/ PE; / / SBUF=dat; / 引脚输出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论