C语言

单片机C语言编程定时器的两种表达方式

单片机C语言编程中,定时器的初值对于初学者真的是比较不好计算,因此我总结了以下几种方法。

第1种方法:

#define FOSC 11059200L //晶振的频率
#define TIMS (65536-FOSC/12/1000) //12T mode 对于8051系列单片机通用
//#define TIMS (65536-FOSC/1000) //1T mode STC单片机可以用这个
unsigned int timer0_tick;
int timer0_count;
void Timer0(void) interrupt 1 using 1 //定时器0中断外理
{
TL0=TIMS;
TH0=TIMS>>8;
if(timer0_tick--==0) //加到1000次即1秒
{
timer0_tick=1000;
LED_Timer=~LED_Timer;
}
}

初值的赋值采用的是移位运算:
TL0=TIMS;
TH0=TIMS>>8;

单片机C语言优化技巧

对程序进行优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个予盾的统一,一般是优化了代码的尺寸,就会带来执行时间的增加,如果优化了程序的执行速度,通常会带来代码增加的副作用,很难鱼与熊掌兼得,只能在设计时掌握一个平衡点。

一、程序结构的优化

1、程序的书写结构

C语言中的指针和内存泄漏

引言

对于任何使用 C 语言的人,如果问他们 C 语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏。这些的确是消耗了开发人员大多数调试时间的事项。指针和内存泄漏对某些开发人员来说似乎令人畏惧,但是一旦您了解了指针及其关联内存操作的基础,它们就是您在 C 语言中拥有的最强大工具。

单片机中C语言的程序与数据存储

一、五大内存分区:

内存分成5个区,它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。

1、栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。

C51编程经验汇总分享

在单片机的开发应用中,已逐渐开始引入高级语言,C语言就是其中的一种。用惯了汇编的人,总觉得高级语言“可控性”不好,不如汇编那样随心所欲。以下是笔者在C51编程中的几点经验,希望对初学C51者有所帮助。

一、C51热启动代码的编制

C语言访问MCU寄存器的三种方式

MCU中的特殊功能寄存器SFR,实际上就是SRAM地址已经确定的SRAM单元,在C语言环境下对其访问归纳起来有3种方法。

1.对C编译器进行语法扩充

对C编译器进行语法扩充。例如MCS51系列单片机的C-51语法中扩充了sfr关键字,举例如下:
sfr P0 = 0x80;

这样操作0x80单元直接写P0即可。

C语言访问MCU寄存器的两种方式

单片机的特殊功能寄存器SFR,是SRAM地址已经确定的SRAM单元,在C语言环境下对其访问归纳起来有两种方法。

1、采用标准C的强制类型转换和指针来实现

采用标准C的强制转换和指针的概念来实现访问MCU的寄存器,例如:
#define DDRB (*(volatile unsigned char *)0x25)

单片机C语言static属性和数码管显示程序

简介:static从英文上翻译是静态的意思,在C语言中static所起的作用也正是静态。对于局部变量而言,其作用域是局部的如某一子函数体,程序在每次执行时调用该子函数时,其声明的局部变量都会重新赋值。那如果我们想让程序在调用该子函数时,其声明的某个局部变量的......

C语言精确微秒级的延时

在使用C语言编程时延时程序是非常常见的,但是实现一个精确的延时是不太容易的,在给一个朋友的公司产品做维护时,发现一段代码,可以实现微妙级的延时。看起来代码非常简单。但是我以前没有想到过。我们一起来看看这段代码。

C语言经典算法100例(三)

1、河内之塔