单片机编程开发技巧

工作了7个月之久,对单片机的编程也开始慢慢熟悉起来,以前总是知道单片机就是定时器,状态机,中断这些东西结合起来效率是相当高的,但是自从接手开发GPF这个芯片之后,我发现了另外一种单片机的开发技巧,高手请绕道。

      我们都知道,在程序中,延时会影响单片机的实时性能,导致效率明显降低,但是在GPF这个芯片的开发中,系统延时和初始化被供应商做到了一块,所以调用程序,必须要做一定的loop才能使得程序能够正常的跑起来,其实我也不知道她们为什么要这么做。

      在工作中,改一份源码不是随随便便就可以改的,当时做了这么一个程序,源码我就不公开了,写个案例解释:

void test()
{
	int i = 0 ;
	int tick ;
	int BatteryStatus = 0;
	int Voltage ;
	int count = 0 ;
	int Voltage_value ;
	char ch ;
	scanf("%d",&BatteryStatus);
	while(1)
	{
		delay_20ms();
		switch(BatteryStatus)
		{
			case 1:
				   if(count == 50)
				   {
                        		printf("0x%x\n",0xE1);
						count = 0 ;
				   };break ;
			case 2:
				   if(count == 50)
				   {
					printf("0x%x\n",0x90); //发通用'1'信号
						count = 0 ;
				   };break ;
			default:
					break ;
		}
		count++ ;
		#if 0
		ch = getch();   //假设我在这设立一个按键
		if(ch == 'q')
		{
			printf("%x",0x48);
            break ;
		}
		#endif
	}
}

在while循环中,首先进去是延时20个ms,然后count计数器加加,当加到50次也就是一秒钟了,然后清零。此时若按下按键,不会受到干扰,程序正常运行,效率依然很高。如果这时候delay_20ms改成delay_1000ms,程序扫描按键每次就要等待1s钟,影响效率。计数值可以自我估计一下,不需要太准,这样的程序在延时不需要太精准的可以实现和定时器差不多一样的功能。

时间: 2024-07-31 06:20:27

单片机编程开发技巧的相关文章

《51单片机应用开发从入门到精通》——1.4 编程器的安装与使用

1.4 编程器的安装与使用 除了上一小节uVision2自带的编程器,也可以采用硬件编程器将单片机集成开发系统上生成的HEX文件使用此编程器写入到单片机内,不过需要安装编程器.编程器的安装非常简单,主要有两个步骤:一是将编程器连接到计算机上:二是在计算机上安装编程器程序软件. 下面以一款单一型串口方式连接的AT51S编程器为例介绍编程器安装过程,如图1-23所示. 1.4.1 编程器的连接 编程器采用串口与计算机连接,端口自动识别,无需设置,安装十分简便.先将配套的串口电缆一端与编程器的9芯座连

Android编程开发之性能优化技巧总结_Android

本文详细总结了Android编程开发之性能优化技巧.分享给大家供大家参考,具体如下: 1.http用gzip压缩,设置连接超时时间和响应超时时间 http请求按照业务需求,分为是否可以缓存和不可缓存,那么在无网络的环境中,仍然通过缓存的httpresponse浏览部分数据,实现离线阅读. 2.listview 性能优化 1).复用convertView 在getItemView中,判断convertView是否为空,如果不为空,可复用.如果couvertview中的view需要添加listern

Yii编程开发常见调用技巧集锦_php实例

本文实例汇总了Yii编程开发常见调用技巧.分享给大家供大家参考,具体如下: 1. 设置cookie: $cookie = new CHttpCookie('mycookie','this is my cookie'); $cookie->expire = time()+60*60*24*30; //有限期30天 Yii::app()->request->cookies['mycookie']=$cookie; 2. 读取cookie: $cookie = Yii::app()->r

Android编程开发之性能优化技巧总结

本文详细总结了Android编程开发之性能优化技巧.分享给大家供大家参考,具体如下: 1.http用gzip压缩,设置连接超时时间和响应超时时间 http请求按照业务需求,分为是否可以缓存和不可缓存,那么在无网络的环境中,仍然通过缓存的httpresponse浏览部分数据,实现离线阅读. 2.listview 性能优化 1).复用convertView 在getItemView中,判断convertView是否为空,如果不为空,可复用.如果couvertview中的view需要添加listern

《51单片机应用开发从入门到精通》——2.9 交通灯实例

2.9 交通灯实例 51单片机应用开发从入门到精通 定时器/计数器是单片机中最常用.最重要的功能模块之一,本节通过交通灯控制器实例来演示定时器的使用方法,并复习如何使用上节学习的散转程序. 本节首先介绍交通灯的基础知识以及定时器/计数器的基础知识,接着介绍本实例的硬件电路构成,然后逐步分析定时器的编程以及程序的全貌,最后将总结一下本实例的技巧与注意点. 2.9.1 基础知识 交通灯控制器实例主要使用了8051单片机的定时器/计数器,本实例的基础知识主要包括:交通灯的变化规律.定时器/计数器的概念

《51单片机应用开发从入门到精通》——1.2 学习单片机的必备工具

1.2 学习单片机的必备工具 多动手做实验能够帮助初学者很快理解单片机的原理和开发技巧.单片机开发之前都要创建一个开发环境.所以,学习前应准备好实验所需的器材和单片机开发的相关软件. 1.2.1 计算机 单片机开发对计算机的要求不高,只要能正常运行Windows操作系统的计算机即可. 1.2.2 单片机集成开发系统软件 单片机集成开发系统软件,是指用来在计算机上编写.汇编和仿真.调试单片机程序的软件. 目前用来开发单片机的应用软件比较多,如Keil公司的Keil C51,是比较好的51单片机集成

《51单片机应用开发范例大全(第3版)》——1.2 Keil Vision2

1.2 Keil Vision2 MCS-51单片机的开发除了需要硬件的支持以外,同样离不开软件.CPU真正可执行的是机器码,用汇编语言或C等高级语言编写的源程序必须转换为机器码才能运行,转换的方法有手工汇编和机器汇编两种,前者目前已极少使用.机器汇编是指通过汇编软件将源程序变为机器码的编译方法.这种汇编软件称为编译器.本节将向大家介绍目前十分流行的Keil Vision2. 1.2.1 Keil Vision2集成开发环境介绍 Keil Vision2是一个集成开发环境(Intergrated

《51单片机应用开发从入门到精通》——2.1 简单点亮发光二极管实例

2.1 简单点亮发光二极管实例 51单片机应用开发从入门到精通 单片机最简单的实例之一就是点亮发光二极管(LED)闪烁.本节通过点亮1只发光二极管的实例来介绍单片机的I/O口操作. 本节首先介绍单片机I/O口结构的基础知识,接着介绍实例的硬件电路,然后给出了实例程序,最后将分析操作单片机的I/O口的技巧与注意点. 2.1.1 基础知识 8051单片机有4个并行I/O口:P0-P3.这4个I/O口中只有P0口是真正的双向口,P1-P3是准双向口,P3口还具有第二功能,为系统提供一些控制信号.4个并

单片机编程

(一) 先声明一个概念,裸编程,我创造的名词,指的是在裸机上编写程序,裸机,在单片机领域就是指带着硬件的单片机控制系统,不要想歪咯. 在裸机上编程,就犹如在一片荒地上开垦,任何一锄头下去,都会碰到硬生生的石头,要说做这有什么味?拓荒者追求的是来年的绿洲.而我们这些开垦裸机的所谓的工程师们追求的是什么?我们当然追求的是完成一个任务. 我们一般都自称是高级知识分子,那么我们在拓荒的过程中应该想些什么?当然不是想着如何把任务完成,而应该首先想着我们在想些什么.绕了是不?绕了就对了,这一绕就绕出了思想.