更新:中断函数PPT资料优秀版
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
进制为:FF3F
/*********头文件区域*********/ #include <STC15.H> >
/******常量定义区域********/ #define BUZ P30 #define FOSC 18432000L #define T8KHZ (0xFFFF-FOSC/12/8000)
/*********变量定义区域*****/ unsigned char Count_Time;
/********函数申明***********/ void MCU_Init(void);
/*********主函数模块*******/ main(void) {
MCU_Init(); while(1) {} }
/******常量定义区域********/ #define BUZ P30 #define FOSC 18432000L #define T8KHZ (0xFFFF-FOSC/12/8000)
/*********变量定义区域*****/ unsigned char Count_Time;
/********函数申明***********/ void MCU_ቤተ መጻሕፍቲ ባይዱnit(void);
/********函数申明***********/ void MCU_Init(void);
/*********主函数模块*******/ main(void) {
MCU_Init(); while(1) {} }
/*******函数****************/
void MCU_Init(void) { IE &= ~0x80; //关中断
/*******函数****************/
void MCU_Init(void) { IE &= ~0x80; //关中断
WDT_CONTR = 0x15; //关看门狗
//端口初始化 P3M0 = 0xFD; P3M1 = 0x00; P3 = 0x3E;
//定时器0初始化
AUXR &=~0x80;// 定时器0为12T模式
void函数名() interrupt中断号
中断函数
void函数名() interrupt中断号
使用interrupt关键字申明了这是一个中断函数,使 用中断号则说明了中断类型,如中断号为0,则为 定时器0溢出中断。
中断函数
实操练习一 定时器中断程序代码,在初始化函数中先进行定 时器相关寄存器设置,然后满足中断条件即可进 入定时器中断,中断的频率为8kHz,使用定时器 中断完成了4kHz脉冲驱动蜂鸣器工作。
/*********头文件区域*********/ #include <STC15.H> >
/*******函数****************/
void MCU_Init(void) { IE &= ~0x80; //关中断
WDT_CONTR = 0x15; //关看门狗
/******常量定义区域********/ #define BUZ P30 #define FOSC 18432000L #define T8KHZ (0xFFFF-FOSC/12/8000)
中断程序的开发应当满足必要性原则,由于中断事件 要中断主程序事件的执行,而独占CPU,因此中断程 序只能用于处理紧迫、关键的事件,而中断函数的执 行时间也应越短越好,以满足主程序的正常运行。
中断函数
单片机的中断服务程序是用中断函数来实现的。 使用中断函数无需申明无需调用,只要满足了中 断条件即可进入中断函数执行函数体。中断函数 即没有入口参数也没有返回值。不同单片机的中 断函数书写方法不同,以下为STC15W系列芯片的 中断函数的定义方式:
智能家电控制技术与实施 -----中断函数
宋玉宏 牛俊英
顺德职业技术学院
中断函数
中断是CPU在执行一个程序时,对系统发生的某个事 件(程序自身或外界的原因)作出的一种反应:CPU 暂停正在执行的程序,保留现场后自动转去处理相应 的事件,处理完该事件后,到适当的时候返回断点, 继续完成被打断的程序。
TR0 = 1;// 开始计时
ET0 = 1;// Enable Timer0 interrupt
IE |= 0x80; //开总中断
}
void INT_Timer0() interrupt 1 //中断函数 { BUZ=!BUZ;}
/*********头文件区域*********/ #include <STC15.H> >
TMOD = 0x00;// 模式0,16位自动重载
TL0 = 0x40;
//设置定时初值
TH0 = 0xFF; //设置定时初值
TR0 = 1;// 开始计时
ET0 = 1;// Enable Timer0 interrupt
IE |= 0x80; //开总中断
}
void INT_Timer0() interrupt 1 //中断函数 { BUZ=!BUZ;}
/*********头文件区域*********/ #include <STC15.H> >
/******常量定义区域********/ #define BUZ P30 #define FOSC 18432000L #define T8KHZ (0xFFFF-FOSC/12/8000)
/*********变量定义区域*****/ unsigned char Count_Time;
WDT_CONTR = 0x15; //关看门狗
//端口初始化 P3M0 = 0xFD; P3M1 = 0x00; P3 = 0x3E;
//定时器0初始化
AUXR &=~0x80;// 定时器0为12T模式
TMOD = 0x00;// 模式0,16位自动重载
TL0 = 0x40;
//设置定时初值
TH0 = 0xFF; //设置定时初值
/*********主函数模块*******/ main(void) {
MCU_Init(); while(1) {} }
定义单片机芯片时钟值 18432000L用FOSC表示
程序自动通过该值计算一 些重载值和参数。根据上 一行,用的是的晶振。设 为12T模式,中断频率为 8KHZ时(一秒中断8000次) 需要设定的计数初值为: 65535-192=65343,其十六
/*********头文件区域*********/ #include <STC15.H> >
/******常量定义区域********/ #define BUZ P30 #define FOSC 18432000L #define T8KHZ (0xFFFF-FOSC/12/8000)
/*********变量定义区域*****/ unsigned char Count_Time;
/********函数申明***********/ void MCU_Init(void);
/*********主函数模块*******/ main(void) {
MCU_Init(); while(1) {} }
/******常量定义区域********/ #define BUZ P30 #define FOSC 18432000L #define T8KHZ (0xFFFF-FOSC/12/8000)
/*********变量定义区域*****/ unsigned char Count_Time;
/********函数申明***********/ void MCU_ቤተ መጻሕፍቲ ባይዱnit(void);
/********函数申明***********/ void MCU_Init(void);
/*********主函数模块*******/ main(void) {
MCU_Init(); while(1) {} }
/*******函数****************/
void MCU_Init(void) { IE &= ~0x80; //关中断
/*******函数****************/
void MCU_Init(void) { IE &= ~0x80; //关中断
WDT_CONTR = 0x15; //关看门狗
//端口初始化 P3M0 = 0xFD; P3M1 = 0x00; P3 = 0x3E;
//定时器0初始化
AUXR &=~0x80;// 定时器0为12T模式
void函数名() interrupt中断号
中断函数
void函数名() interrupt中断号
使用interrupt关键字申明了这是一个中断函数,使 用中断号则说明了中断类型,如中断号为0,则为 定时器0溢出中断。
中断函数
实操练习一 定时器中断程序代码,在初始化函数中先进行定 时器相关寄存器设置,然后满足中断条件即可进 入定时器中断,中断的频率为8kHz,使用定时器 中断完成了4kHz脉冲驱动蜂鸣器工作。
/*********头文件区域*********/ #include <STC15.H> >
/*******函数****************/
void MCU_Init(void) { IE &= ~0x80; //关中断
WDT_CONTR = 0x15; //关看门狗
/******常量定义区域********/ #define BUZ P30 #define FOSC 18432000L #define T8KHZ (0xFFFF-FOSC/12/8000)
中断程序的开发应当满足必要性原则,由于中断事件 要中断主程序事件的执行,而独占CPU,因此中断程 序只能用于处理紧迫、关键的事件,而中断函数的执 行时间也应越短越好,以满足主程序的正常运行。
中断函数
单片机的中断服务程序是用中断函数来实现的。 使用中断函数无需申明无需调用,只要满足了中 断条件即可进入中断函数执行函数体。中断函数 即没有入口参数也没有返回值。不同单片机的中 断函数书写方法不同,以下为STC15W系列芯片的 中断函数的定义方式:
智能家电控制技术与实施 -----中断函数
宋玉宏 牛俊英
顺德职业技术学院
中断函数
中断是CPU在执行一个程序时,对系统发生的某个事 件(程序自身或外界的原因)作出的一种反应:CPU 暂停正在执行的程序,保留现场后自动转去处理相应 的事件,处理完该事件后,到适当的时候返回断点, 继续完成被打断的程序。
TR0 = 1;// 开始计时
ET0 = 1;// Enable Timer0 interrupt
IE |= 0x80; //开总中断
}
void INT_Timer0() interrupt 1 //中断函数 { BUZ=!BUZ;}
/*********头文件区域*********/ #include <STC15.H> >
TMOD = 0x00;// 模式0,16位自动重载
TL0 = 0x40;
//设置定时初值
TH0 = 0xFF; //设置定时初值
TR0 = 1;// 开始计时
ET0 = 1;// Enable Timer0 interrupt
IE |= 0x80; //开总中断
}
void INT_Timer0() interrupt 1 //中断函数 { BUZ=!BUZ;}
/*********头文件区域*********/ #include <STC15.H> >
/******常量定义区域********/ #define BUZ P30 #define FOSC 18432000L #define T8KHZ (0xFFFF-FOSC/12/8000)
/*********变量定义区域*****/ unsigned char Count_Time;
WDT_CONTR = 0x15; //关看门狗
//端口初始化 P3M0 = 0xFD; P3M1 = 0x00; P3 = 0x3E;
//定时器0初始化
AUXR &=~0x80;// 定时器0为12T模式
TMOD = 0x00;// 模式0,16位自动重载
TL0 = 0x40;
//设置定时初值
TH0 = 0xFF; //设置定时初值
/*********主函数模块*******/ main(void) {
MCU_Init(); while(1) {} }
定义单片机芯片时钟值 18432000L用FOSC表示
程序自动通过该值计算一 些重载值和参数。根据上 一行,用的是的晶振。设 为12T模式,中断频率为 8KHZ时(一秒中断8000次) 需要设定的计数初值为: 65535-192=65343,其十六