51单片机中断程序大全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
/********************************************************** ****
函数功能:主函数
******************************************************** ******/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
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
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 位
重新赋初值}