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

发布者:自由思考最新更新时间:2016-01-15 来源: eefocus关键字:单片机  中断嵌套  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程序 引用地址:单片机两级中断嵌套的示例C程序

上一篇:单片机写串口上位机时的一点心得
下一篇:Freescale 16位单片机命名参考规则

推荐阅读最新更新时间:2024-03-16 14:44

单片机实时操作系统中进程与乡程
注意:在单片机中一般没有MMU,最多cortex-3也只能实现MPU功能,所以它不能转换虚拟地址空间。所以只有一个进程。因此基于单片机实现的多任务都是线程。 在32位的Windows系统中,术语多任务是指系统可以同时运行多个进程,而每个进程也可以同时执行多个线程。 ---------------------------------------------------------------------------------------------------------------------- 进程能开多少个? 进程表不可以无限开。 每个进程在系统内核的进程表中都有记录,以便于系统的调度,在进程表中应该会给每个进程
[单片机]
基于高速超微型C8051F300单片机的CCD驱动电路设计
1 常用的CCD驱动时序产生方法   CCD厂家众多,型号各异,其驱动时序的产生方法也多种多样,一般有以下4种:   (1)数字电路驱动方法   这种方法是利用数字门电路及时序电路直接构建驱动时序电路,其核心是一个时钟发生器和几路时钟分频器,各分频器对同一时钟进行分频以产生所需的各路脉冲。该方法的特点是可以获得稳定的高速驱动脉冲,但逻辑设计和调试比较复杂,所用集成芯片较多,无法在线调整驱动频率。   (2)EPROM驱动方法   这种驱动电路一般在EPROM中事先存放所有的CCD时序信号数据,并由计数电路产生EPROM的地址使之输出相应的驱动时序。该方法结构相对简单、运行可靠,但仍需地址产生硬件电路,所需EPR0M容量
[工业控制]
基于高速超微型C8051F300<font color='red'>单片机</font>的CCD驱动电路设计
PIC单片机生成lib文件
PIC C编译后会生成.P1的文件; 在windows 下运行cmd 命令后出现DOS窗口- 将路径设置到.P1文件所以目录(即PIC 工程文件所以目录)- 输入:libr r XX.lib XX1.p1 XX2.P1... 或 libr r XX.lpp XX1.p1 XX2.P1... 后即可把名称为XX1.P1 XX2.P1 的文件生成XX.lib(XX.lpp)的库文件。 生成库文件的好处是当最终用户只要知道如何使用,而不需要知道如何实现时。可以把重要的函数算法等保护起来。调用时只需通过头文件调用即可。
[单片机]
单片机的简单学习心得
要学习单片机,必须基本的模拟与数字电路的知识、基本的计算机理论知识与操作知识、明白C语言的基本规则与语句,同时还要有一本经典的单片机教材,下面是学习单片机的一些心得体会,希望对大家有所帮助。 1、万事开头难、要勇敢迈出第一步。开始的时候,不要老是给自己找借口,说KEIL不会建项目啦、没有实验板啦之类的。遇到困难要一件件攻克,不会建项目,就先学它,这方面网上教程很多,随便找找看一下,做几次就懂了。然后可以参考别的人程序,抄过来也无所谓,写一个最简单的,让它运行起来,先培养一下自己的感觉,知道写程序是怎么一回事,无论写大程序还是小程序,要做的工序不会差多少,总得建个项目,再配置一下项目,然后建个程序,加入项目中,再写代码、编译、生成H
[单片机]
STC12C5A60S2引脚详解
  STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。   STC12C5A60S2是8051系列单片机,与普通51单片机相比有以下特点:   1、同样晶振的情况下,速度是普通51的8~12倍   2、有8路10位AD   3、多了两个定时器,带PWM功能   4、有SPI接口   5、有EEPROM   6、有1K内部扩展RAM   7、有WATCH_DOG   
[单片机]
STC12C5A60S2引脚详解
PT1000 C程序 单片机 分度表 程序
python数据处理: import numpy as np A = 0.0038623139728 B = -0.00000065314932626 t1 = np.asarray(range(-150, 152, 1)) print(t1) t = t1 - 0.5 print(t) Rt = 1000 * (1 + A * t + B * t * t) print(Rt) RT1 = list(map(lambda x: str(int(x)), Rt.tolist())) print( , .join(list(map(str, RT1)))) print(len(RT1)) 移植到单片机函数的情况:
[单片机]
单片机项目 温度记录仪
main.c /** * 工程名称:温度记录仪 * Mode 0: 温度采集间隔选择模式,用以确定温度采集间隔 * Mode 1: 采集并显示实时时间,采集温度并缓存 * Mode 2: 查看采集到的10个温度样本 * * */ #include stc15f2k60s2.h #include stdint.h #include timer.h #include digitalTube.h #include independentKey.h #include DS18B20.h #include DS1302.h uint8_t mode = 0; //工作模式 uint8_t c
[单片机]
<font color='red'>单片机</font>项目 温度记录仪
STM32单片机FSMC模块的应用
一、基本概念 1.与非总线复用的16位SRAM接口 FSMC配置 SRAM存储器和NOR闪存存储器共用相同的FSMC存储块,所用的协议依不同的存储器类型而有所不同。 控制SRAM存储器,FSMC应该具有下述功能: 使用或禁止地址/数据总线的复用功能。 选择所用的存储器类型:NOR闪存、SRAM或PSRAM。 定义外部存储器的数据总线宽度:8或16位。 使用或关闭扩展模式:扩展模式用于访问那些具有不同读写操作时序的存储器。 正如配置NOR闪存存储器一样,用户必须按照SRAM存储器的数据手册给出的时序数据,计算和设置下列参数: ADDSET:地址建立时间 ADDHOLD:地址保持时间 DATAST:数据建立时间 二、例程 1.
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved