51单片机中断程序大全

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//实例42 :用定时器T0 查询方式

P2 口8 位控制LED 闪烁

//#include单片机寄存器定义的头文件

51包含

/******************************************************* *******函数功能:主函数

******************************************************** ******/void main(void){

// EA=1;开总中断//

中断允许T0 // 定时器// ET0=1;

1的模式TMOD=0x01;// 使用定时器T0

位赋初值定时器T0 的高8

TH0=(65536-46083)/256; // 位赋初值的高8

TL0=(65536-46083)%6; // 定时器T0

T0启动定时器TR0=1;// TF0=0;P2=0xff;

无限循环等待查询while(1)// {while(TF0==0); TF0=0;P2=~P2;

位赋初值的高8 定时器TH0=(65536-46083)/256; // T0 位赋初值T0 TL0=(65536-46083)%6; //

定时器的高8 }}

1KHzT1:用定时器43 实例// 音频查询方式控制单片机发出

#include 单片机寄存器定义的头文件51 // 包含sbit sound=P3^7;将// 引脚sound P3.7 位定义为

/********************************************************** ****

函数功能:主函数

******************************************************** ******/void main(void){// EA=1;开总中断//

中断允许ET0=1;// // 定时器T0 1的模式使用定时器// T1 TMOD=0x10;

位赋初值// TH1=(65536-921)/256; T1 定时器的高8

TL1=(65536-921)%6; // 定时器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)%6; // 定时器T0 的高8 位赋初值}}

//实例44 :将计数器T0 计数的结果送P1 口8 位LED 显示

#include // 包含51 单片机寄存器定义的头文件sbit

S=P3^4; // 将S位定义为P3.4 引脚

/******************************************************* *******函数功能:主函数

******************************************************** ******/void main(void)

{// EA=1;// 开总中断// ET0=1;// 定时器T0 中断允许2的模式T0 // 使用定时器

TMOD=0x02;

TH0=256-156; // 定时器T0 的高8 位赋初值TL0=256-156; // 定时器T0 的高8 位赋初值TR0=1;// 启动定时器T0

while(1)// 无限循环等待查询{

while(TF0==0)// 如果未计满就等待{0if(S==0)按下接地,电平为按键S //

P1=TL0; //计数器TL0 加1 后送P1 口显示}

TF0=0; // 计数器溢出后,将TF0清0

}}

//实例45 :用定时器T0 的中断控制1 位LED 闪烁

#include // 包含51 单片机寄存器定义的头文件

sbit D1=P2^0; // 将D1 位定义为P2.0 引脚

/******************************************************* *******函数功能:主函数

******************************************************** ******/void main(void){

EA=1;// 开总中断

ET0=1;// 定时器T0 中断允许

TMOD=0x01;// 使用定时器T0 的模式2

TH0=(65536-46083)/256; //定时器T0 的高8 位赋初值

TL0=(65536-46083)%6; //定时器T0 的高8 位

赋初值

TR0=1;// 启动定时器T0

while(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)%6; //定时器T0 的高8 位

重新赋初值}

相关文档
最新文档