当前位置: 首页 > article >正文

单片机中断系统工作原理及定时器中断应用

文件目录

main.c

#include <REGX52.H>
#include "TIMER0.H"
#include "KEY.H"
#include "DELAY.H"//void Timer0_Init() {
//	TMOD = 0x01;
//	TL0 = 64536 % 256;
//	TH0 = 64536	/ 256;
//	ET0 = 1;
//	EA = 1;
//	TR0 = 1;
//}unsigned char keyNum = 0;                           //链接文件会拼到一起,不要起一样的名字void main() {
//	Timer0_Init();while(1) {keyNum = Key();if(keyNum) {                                 //if来缓解闪动if(keyNum == 1) P2_1 = ~P2_1;if(keyNum == 2) P2_2 = ~P2_2;if(keyNum == 3) P2_3 = ~P2_3;if(keyNum == 4) P2_4 = ~P2_4;}}
}//static unsigned int T0Count = 0;
//void Timer0_Routine() interrupt 1{
//	TL0 = 64536 % 256;
//	TH0 = 64536 / 256;
//	T0Count ++;
//	if(T0Count >= 1000) {
//		T0Count = 0;
//		P2_0 = ~P2_0;
//	}
//}

Key.c

unsigned char Key() {unsigned char keyNumber = 0;         //不要放在外面,每次没按动的时候默认if全部经过就是 keyNumber                        if(P3_1 == 0){Delay(20);while(P3_1 == 0);Delay(20);keyNumber = 1;}if(P3_0 == 0){Delay(20);while(P3_0 == 0);Delay(20);keyNumber = 2;}if(P3_2 == 0){Delay(20);while(P3_2 == 0);Delay(20);keyNumber = 3;}if(P3_3 == 0){Delay(20);while(P3_3 == 0);Delay(20);keyNumber = 4;}return keyNumber;}

Key.h

#ifndef __KEY_H__
#define	__KEY_H__unsigned char Key();             //要有返回类型,要有“;”结尾
#endif


下面是对的

Timer0.c

#include <REGX52.H>void Timer0_Init() {TMOD = 0x01;TL0 = 64536 % 256;TH0 = 64536	/ 256;ET0 = 1;EA = 1;TR0 = 1;
}

Timer0.h

#ifndef __TIMER0_H__
#define	__TIMER0_H__void Timer0_Init(void);#endif

Delay.c


void Delay(unsigned int xms)
{unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);}
}

Delay.h

#ifndef __DELAY_H__
#define __DELAY_H__void Delay(unsigned int xms);#endif

http://www.lryc.cn/news/2385221.html

相关文章:

  • LangGraph-agent-天气助手
  • 深度学习——超参数调优
  • 阿里云API RAG全流程实战:从模型调用到多模态应用的完整技术链路
  • 创建型:建造者模式
  • Jenkins集成Docker与K8S构建
  • redis缓存实战-19(使用 Pub/Sub 构建简单的聊天应用程序)
  • UE4游戏查找本地角色数据的方法-SDK
  • 游园安排--最长上升子序列+输出序列
  • 缓存一致性与AI内容生成的幂等控制
  • Java 连接并操作 Redis 万字详解:从 Jedis 直连到 RedisTemplate 封装,5 种方式全解析
  • python web 开发-Flask-Login使用详解
  • 快速排序算法的C++和C语言对比
  • 分布式事务知识点整理
  • 微信小程序数据接收
  • 鸿蒙UI开发——badge角标的使用
  • 批量打印的趣事
  • 车载中央域控制器测试【BCM模块介绍-外灯3】
  • Linux系统基础——是什么、适用在哪里、如何选
  • MySQL与Oracle六大方面之比较
  • 二层和三层交换机的概念
  • 计算机网络学习20250524
  • 无损图片压缩 本地处理 批量处理提升效率 无需联网+无广告
  • C++标准库中 std::string 类提供的 insert 成员函数的不同重载版本
  • Qt window frame + windowTitle + windowIcon属性(3)
  • 解决:VMware 虚拟机 Ubuntu 系统共享文件夹无法访问问题
  • Dify源码学习
  • 静态网站部署:如何通过GitHub免费部署一个静态网站
  • 【拯救小狗】2022-1-3
  • PS2025 v26.7 Photoshop2025+AI生图扩充版,支持AI画图
  • 怎么开发一个网络协议模块(C语言框架)之(三) 全局实例