本文主要是介绍嵌入式学习——51单片机——(按键、中断)day17,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 按键程序
1.1 主函数
#include <reg51.h>
#include "digit.h"
#include "key.h"void delay(int n)
{while (n--);
}int main(void)
{int cnt = 0;init_digit();init_key();while (1){ if (2 == key_pressed()){cnt++;delay(0x5fff);}show_number(cnt);}return 0;
}
1.2 头文件
#ifndef _KEY_H_
#define _KEY_H_extern void init_key(void);
extern int key_pressed(void);#endif
1.3 源文件
#include <reg51.h>
#include "digit.h"
#include "key.h"void init_key(void)
{P1 |= ((1 << 4) | (1 << 5) | (1 << 6) | (1 << 7));P3 |= (1 << 5);
}int key_pressed(void)
{int ret = 0;if (0 == (P1 & (1 << 4))){ret = 1;}else if (0 == (P1 & (1 << 5))){ret = 2;}else if (0 == (P1 & (1 << 6))){ret = 3;}else if (0 == (P1 & (1 << 7))){ret = 4;}else if (0 == (P3 & (1 << 5))){ret = 5;}return ret;
}
2. 中断
2.1 中断的定义
当CPU正在处理某件事情的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完后,再回到原来中断的地方继续原来的工作。
2.2 中断源的定义
可以引发中断是事件、条件或者硬件模块
常见的中断源
1. 外部中断源
2. 定时器、计数器中断源
3. 串口中断源
4. ADC中断源
5. 比较器中断源
6. 看门狗定时器中断源
2.3 中断执行流程
1. 中断源发出中断请求
2. CPU查询中断是否被运行、以及中断是否被屏蔽
3. CPU考察中断优先级
4. CPU保护现场
5. 执行中断服务函数
6. 恢复现场
2.4 外部中断的初始化函数
void init_eint(void)
{P3 |= ((1 << 2) | (1 << 3) );IE |= ((1 << 7) | (1 << 2) | (1 << 0));TCON |= ((1 << 0) | (1 << 2));}
2.5 外部中断的的作用函数
void eint0_handeler(void) interrupt 0
{delay(0x1fff);cnt++;
}void eint1_handeler(void) interrupt 2
{delay(0xfff);cnt--;
}
3.定时器
这篇关于嵌入式学习——51单片机——(按键、中断)day17的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!