单片机两级中断嵌套的示例C程序

来源:本站
导读:目前正在解读《单片机两级中断嵌套的示例C程序》的相关信息,《单片机两级中断嵌套的示例C程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《单片机两级中断嵌套的示例C程序》的详细说明。
简介:本文给大家分享了一个单片机两级中断嵌套的示例C程序。

#ifndef __DEMO_4_13_C__#define __DEMO_4_13_C__#include#define _MHZ_ 12    // 设置单片机使用的晶振频率void delay10ms(unsigned int count);    // 声明延时函数void LED_show(unsigned long second);unsigned char g_count;    // 全局变量,timer_int函数使用unsigned char g_second;    // 全局变量,timer_int函数使用void main(){ g_count = 0;    // 设置全局变量初值 g_second = 0;   TMOD = 0x10;    // T1使用定时模式,工作模式1,无门控位 TH1 = 0xD8;    // 为T1填入初值,定时时间10ms TL1 = 0xF0; TR1 = 1;    // 启动T1 IT0 = 1;    // 设置INTR0中断方式为边沿触发方式,负跳变时产生中断 PT1 = 1;    // 设置定时器1中断为高优先级 ET1 = 1;    // 允许定时器1中断 EX1 = 1;    // 允许外部中断0中断 EA = 1;    // CPU开放中断 while(1);    // 循环等待}void timer1_int() interrupt 3 using 3  // T1溢出中断,使用工作组3{                                           // 不同级别的中断函数使用不同的工作组 TH1 = 0xD8;    // 重新填入初值 TL1 = 0xF0; g_count++; if(g_count == 100)    // 计时满1s {  g_count = 0;    // 清0  g_second++;    // 总秒数增1,溢出时会自动归0  LED_show(g_second);    // LED送显 }}void intr0_int() interrupt 0 using 2  // INTR0中断,使用工作组2{ unsigned char tmp; EA = 0;    // 关中断 P1 = 0xff;    // 在读取P1口数据前,应先对其寄存器置1 tmp = P1;    // 读P1口 EA = 1;    // 开中断 delay10ms(100); EA = 0;    // 关中断 tmp = ~tmp;    // 变量取反 P1 = tmp;    // 送P1口 EA = 1;    // 开中断}void delay10ms(unsigned int count){ unsigned int i, k; unsigned char j; unsigned int tmp; tmp = (int)((100*_MHZ_)/12); for(i=0; i   for(j=0; j<100; j++)   for(k=0; k }#endif

提醒:《单片机两级中断嵌套的示例C程序》最后刷新时间 2024-03-14 00:58:03,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《单片机两级中断嵌套的示例C程序》该内容的真实性请自行鉴别。