首页 > 其他分享 >蓝桥杯单片机AT24C02

蓝桥杯单片机AT24C02

时间:2024-03-27 18:32:03浏览次数:27  
标签:10 u8 ctrl 读写 蓝桥 单片机 flag AT24C02 include

一个简单的示例程序,统计开机次数。代码如下:

#include <STC15F2K60S2.H>
#include <intrins.h>
#include "onewire.h"
#include "iic.h"
u8 flag_display=0;
u8 flag_ds18b20=0;
u8 flag_at=0;
u8 at=0;
u8 temp=0;
u8 a[8]={10,10,10,10,10,10,10,10};
void ctrl(u8 ctrl)
{
    u8 p2data=P2;
	  P2=ctrl<<5|(0x1f&P2);
    P2=0x1f&p2data;	

}
void display(u8 site,u8 light)
{
    P0=0xff;ctrl(7);
    P0=0x01<<site;ctrl(6);
    switch(light)
		{
			case 0:P0=0xc0;break;
			case 1:P0=0xf9;break;
			case 2:P0=0xa4;break;
			case 3:P0=0xb0;break;
			case 4:P0=0x99;break;
			case 5:P0=0x92;break;
			case 6:P0=0x82;break;
			case 7:P0=0xf8;break;
			case 8:P0=0x80;break;
			case 9:P0=0x90;break;
			case 10:P0=0xff;break;
			default:break;		
		
		}			
	  ctrl(7);
}
void get(u8 a0,u8 a1,u8 a2,u8 a3,u8 a4,u8 a5,u8 a6,u8 a7)
{
   a[0]=a0;a[1]=a1;a[2]=a2;a[3]=a3;a[4]=a4;a[5]=a5;a[6]=a6;a[7]=a7;
}
void Process(void)
{
	if(flag_ds18b20==200){flag_ds18b20=0;temp=(int)ds18b20();}
	if(flag_at==200){EA=0;at=atread(0x55);flag_at=0;EA=1;}


}
void Timer2_Isr(void) interrupt 12
{
	flag_ds18b20++;
	flag_display++;
	flag_at++;
	flag_display=flag_display%8;
	display(flag_display,a[flag_display]);
}

void Timer2_Init(void)	
{
	AUXR &= 0xFB;		
	T2L = 0x9C;				
	T2H = 0xFF;				
	AUXR |= 0x10;
	IE2 |= 0x04;	
  EA=1;
}

void main()
{
	P0=0x00;ctrl(5);
	P0=0xff;ctrl(4);
	at=atread(0x55);
	Timer2_Init();
	atwrite(0x55,at+1);
	
  while(1)
	{
	 Process();
   get(10,at%100/10,at%10,10,10,10,temp/10,temp%10);		
	}		
   


}

因为ATREAD、ATWRITE中都包含了延时函数,在每1ms进行一次的定时器2中断影响下读写都会失败,所以设立了FLAG_AT标志位,进行读写前先中断,完成读写后再开启。中断函数被关闭时,由于我们一般对全局变量进行操作,所以读写的暂停基本不造成影响。

代码中,只再PROCESS里不断完成读取数据的操作,并没有完成写的操作,大家可以根据同样的方法对写进行完善。

标签:10,u8,ctrl,读写,蓝桥,单片机,flag,AT24C02,include
From: https://blog.csdn.net/zhenghuangjie/article/details/137085424

相关文章

  • 动态规划刷题(算法竞赛、蓝桥杯)--数字三角形(线性DP)
    1、题目链接:[USACO1.5][IOI1994]数字三角形NumberTriangles-洛谷#include<bits/stdc++.h>usingnamespacestd;intr;constintN=1010;inta[N][N];intmain(){ cin>>r; for(inti=1;i<=r;i++){ for(intj=1;j<=i;j++){ cin>>a[i][j]; ......
  • 《安富莱嵌入式周报》第335期:大量嵌入式书籍免费下载,CNC电机同步,智能家居比赛作品,EMF2
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版:https://www.bilibili.com/video/BV151421Q7P4/目录:1、大量嵌入式书籍免费下载,无需注册账号,直接下载2、EMF2024准备的电子胸牌3、CNC电机同步视频4、Hackaday举......
  • 【蓝桥杯3.23小白赛】(详解)
    第一题签到题不多说【二进制王国】#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;//intCmp(strings1,strings2)测试了一下时间差确实很明显,还是用下面的内个intCmp(conststring&s1,conststring&s2)//const修饰表示在函......
  • 【蓝桥杯选拔赛真题48】C++九进制回文数 第十四届蓝桥杯青少年创意编程大赛 算法思维
    目录C++九进制回文数一、题目要求1、编程实现2、输入输出二、算法分析三、程序编写四、程序说明五、运行结果六、考点分析七、推荐资料C++九进制回文数第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题一、题目要求1、编程实现提示信息:回文数:反向排列与原......
  • 蓝桥杯练习题总结(三)线性dp题(摆花、数字三角形加强版)
    目录 一、摆花思路一: 确定状态:初始化:思路二:确定状态:初始化:循环遍历: 状态转移方程: 二、数字三角形加强版一、摆花题目描述小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了......
  • 扫地机器人 二分答案,贪心 蓝桥杯
    二分答案与二分查找类似,二分查找有一个前提就是数列要求是有序的,二分答案则是要求满足条件的答案是单调有序的,它的基本思想是在答案可能的范围([L,R])内二分查找答案,不断检查当前答案是否满足题目的要求,根据检查结果更新查找的区间,最终取得最符合题目要求的答案进行输出。......
  • 蓝桥杯 试题 基础练习 十进制转十六进制 C++
    问题描述十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制......
  • 【蓝桥杯省赛真题33】python单词排序 中小学青少年组蓝桥杯比赛 算法思维python编程省
     目录python单词排序一、题目要求1、编程实现2、输入输出二、算法分析三、程序编写四、程序说明五、运行结果六、考点分析七、 推荐资料1、蓝桥杯比赛2、考级资料3、其它资料python单词排序第十三届蓝桥杯青少年组python比赛省赛真题一、题目要求(注:input......
  • 洛谷 P9237 [蓝桥杯 2023 省 A] 像素放置
    题意:n*m的方格,有的格子是数字,是数字的格子代表了相邻(包括自己)的9个格子内颜色值为1的格子有这么多个。给出这个方格,求满足条件的颜色方格,保证答案唯一。n<=10,m<=10。思路:想不出好办法,直接暴力+剪枝。暴力好说,01dfs即可,关键是如何剪枝。剪枝肯定是已经不会再变动颜色的......
  • [蓝桥杯 2013 国 C] 危险系数 dfs 深搜 递归
    ##题目背景抗日战争时期,冀中平原的地道战曾发挥重要作用。##题目描述地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。我们来定义一个危险系数$DF(x,y)$:对于两个站点$x$和$y(x\neqy),$如果能找到一......