单片机两级中断嵌套的示例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程序
推荐阅读最新更新时间:2024-03-16 14:44
单片机实时操作系统中进程与乡程
注意:在单片机中一般没有MMU,最多cortex-3也只能实现MPU功能,所以它不能转换虚拟地址空间。所以只有一个进程。因此基于单片机实现的多任务都是线程。 在32位的Windows系统中,术语多任务是指系统可以同时运行多个进程,而每个进程也可以同时执行多个线程。 ---------------------------------------------------------------------------------------------------------------------- 进程能开多少个? 进程表不可以无限开。 每个进程在系统内核的进程表中都有记录,以便于系统的调度,在进程表中应该会给每个进程
[单片机]
基于高速超微型C8051F300单片机的CCD驱动电路设计
1 常用的CCD驱动时序产生方法 CCD厂家众多,型号各异,其驱动时序的产生方法也多种多样,一般有以下4种: (1)数字电路驱动方法 这种方法是利用数字门电路及时序电路直接构建驱动时序电路,其核心是一个时钟发生器和几路时钟分频器,各分频器对同一时钟进行分频以产生所需的各路脉冲。该方法的特点是可以获得稳定的高速驱动脉冲,但逻辑设计和调试比较复杂,所用集成芯片较多,无法在线调整驱动频率。 (2)EPROM驱动方法 这种驱动电路一般在EPROM中事先存放所有的CCD时序信号数据,并由计数电路产生EPROM的地址使之输出相应的驱动时序。该方法结构相对简单、运行可靠,但仍需地址产生硬件电路,所需EPR0M容量
[工业控制]
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
[单片机]
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
[单片机]
STM32单片机FSMC模块的应用
一、基本概念 1.与非总线复用的16位SRAM接口 FSMC配置 SRAM存储器和NOR闪存存储器共用相同的FSMC存储块,所用的协议依不同的存储器类型而有所不同。 控制SRAM存储器,FSMC应该具有下述功能: 使用或禁止地址/数据总线的复用功能。 选择所用的存储器类型:NOR闪存、SRAM或PSRAM。 定义外部存储器的数据总线宽度:8或16位。 使用或关闭扩展模式:扩展模式用于访问那些具有不同读写操作时序的存储器。 正如配置NOR闪存存储器一样,用户必须按照SRAM存储器的数据手册给出的时序数据,计算和设置下列参数: ADDSET:地址建立时间 ADDHOLD:地址保持时间 DATAST:数据建立时间 二、例程 1.
[单片机]