C语言
a16839678
喜欢自己想做的事情,坚持做自己想做的事情
展开
-
C语言学习之详解#ifndef预编译
C语言头文件的中的#ifndef,是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 解决办法就是把头文件的内容都放在#ifndef和#endif中。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的:#ifndef #define转载 2012-11-11 20:16:25 · 658 阅读 · 0 评论 -
c语言单链表的基本操作(代码)
c语言实现单链表的基本操作:建立、打印、删除、插入、逆序。仅供学习之用还需不断完善,有待读者自己研究#include #include typedef struct stu{ int data; //数据 struct stu *next; //指向下一节点的指针}node;node *creat(int n)//创建链表{ node *head,*p1,*p2;原创 2012-11-12 13:24:49 · 4433 阅读 · 1 评论 -
基于mini2440简单计算器的实现(裸机代码)
基于mini2440简易计算器使用的是数组实现,并非逆波兰式,因此功能不够强大,仅供驱动学习,以及C语言基础编程学习之用.有时间读者可以用逆波兰式来实现强大功能计算器,原理也很简单,建议读《c程序设计第二版》里面有算法的代码.读者自行研究.此程序基于电子相册的改进,触摸屏,LCD,字符现实,数字输入等等.主函数部分:#include "def.h"#include "option.h原创 2012-11-28 11:55:30 · 1004 阅读 · 1 评论 -
C语言实现bool型
bool取值false和true,是0和1的区别,,false可以代表0,但true有很多种.并非只有1。bool是在C++中的定义类型,我们如何在C中实现bool型的数据呢?我们可以利用枚举型的定义来实现,枚举型是定义常量的一种方式,默认从0一次递增,也可以自行定义,未定义的部分递增。#include #include typedef enum {false = 0, t原创 2012-12-14 12:21:28 · 1267 阅读 · 0 评论 -
基于mini2440的IIC读写(裸机)
在mini2440开发板提供的源代码中IIC操作的源代码写的比较乱,在此根据数据手册和芯片手册,直观的编写代码,有中断模式和轮询模式,两种模式的操作方式相差不大。原创 2013-08-25 21:43:25 · 1553 阅读 · 2 评论 -
基于mini2440的RTC读写(裸机)
很多处理器都有RTC实时时钟功能,s3c2440也提供了这个功能,其功能主要是:实时时钟、闹钟、tick中断等。RTC的操作比较简单。读写时RTCCON最低位应设置为1,不读写时设置为0以免误修改RTC相应寄存器。BCDSEC,BCDMIN,BCDHOUR,BCDDAY,BCDDATE,BCDMON,BCDYEAR可以设置和读取RTC的值,在编程中需要注意一秒只差的问题(具体可查看芯片手册),原创 2013-09-08 14:12:12 · 1253 阅读 · 0 评论 -
基于mini2440的看门狗(裸机)
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗",s3c2440中也集成了看门狗,在受到干扰或者系统错误时是芯片复位。原创 2013-09-15 20:21:12 · 1163 阅读 · 1 评论 -
IO口模拟SPI总线
SPI是一种全双工同步串行接口,四总线结构SCK、MOSI、MISO、CS分别是时钟、主机输出、主机接收、片选。其中各个厂商的写法可能不一致。SPI总线有四种工作模式,在不再做介绍。最常用的SPI总线时序CS为低时SCK上冲沿数据有效,数据从MISO、MOSI输入和输出。我们只要有这个概念就行,具体时序可以直接看芯片手册。很多芯片都集成了SPI总线接口,没有SPI接口的芯片同样可以用IO口模拟其时原创 2013-10-13 23:18:50 · 5069 阅读 · 1 评论 -
基于51单片机的花样流水灯仿真(代码)
《单片机C语言程序设计实训100例基于8051+Proteus仿真》的例子:#include #define uchar unsigned char #define uint unsigned int uchar code Pattern_P0[]= { 0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff原创 2012-11-28 18:51:59 · 6128 阅读 · 1 评论 -
基于mini2440轮询控制LED(裸机代码)
#define GLOBAL_CLK #include "def.h"#include "option.h"#include "2440addr.h" #include "2440lib.h"#include "2440slib.h" #define LED1_on rGPBDAT = ((0xf<<5)^(1<<5)) //GPB5=0#define LED2_原创 2012-11-27 11:53:05 · 541 阅读 · 0 评论 -
基于mini2440流水灯(裸机代码)
#include "def.h"#include "option.h"#include "2440addr.h" #include "2440lib.h"#include "2440slib.h" int System_init(void);void rDelay(unsigned int x );int Main() //主函数 { Syst原创 2012-11-27 11:51:32 · 772 阅读 · 0 评论 -
C语言学习之内存管理函数malloc()和free()
在C语言的学习中,对内存管理这部分知识的掌握尤其重要。malloc()和free()的基本概念以及基本用法:1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。 void free(void *转载 2012-11-11 20:15:38 · 605 阅读 · 0 评论 -
C语言学习之sizeof和strlen对比
strlen()是用来求字符串长度的一个函数,sizeof()是用来求指定变量或者变量类型等所占内存大小的操作符。看下面几个例子就明白了:char ss[] = "0123456789";sizeof(ss) 结果 11 ===》ss是数组,计算到\0位置,因此是10+1sizeof(*ss) 结果 1 ===》*ss是第一个字符char* ss = "012345转载 2012-11-11 20:14:49 · 447 阅读 · 0 评论 -
#ifdef __cplusplus详解
时常看到这样的代码:#ifdef __cplusplus extern "C" { #endif//一段代码#ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是c++中的自定义宏,那么定义了这个宏的话表示这是一段c++的代码,也就是说,上面的代码的含义是:如果这是一段c++的代码,那么加入extern转载 2012-11-11 20:03:05 · 373 阅读 · 0 评论 -
编写一个可变参数的C函数——头文件stdarg.h中宏va_start ,va_arg和va_end的应用
我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的:int printf( const char* format, ...);它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法:printf("%d",i);printf("%s",s);printf("the number转载 2012-11-11 20:33:27 · 704 阅读 · 0 评论 -
基于mini2440按键控制电子相册(裸机代码)
#define GLOBAL_CLK 1#include "def.h"#include "option.h"#include "2440addr.h"#include "profile.h"#define LCD_WIDTH 320 //屏幕宽度#define LCD_HEIGHT 240 //屏幕高度#define CLKVAL 4 //时钟信号//垂直同步信号的脉宽、原创 2012-11-27 11:55:52 · 1283 阅读 · 0 评论 -
基于mini2440触摸屏版电子相册(裸机代码)
主函数:#include "def.h"#include "option.h"#include "2440addr.h"#include "profile.h"#define LED1_on rGPBDAT = ((0xf<<5)^(1<<5)) //GPB5=0#define LED4_on rGPBDAT = ((0xf<<5)^(1<<8)) //GPB8=0原创 2012-11-27 12:12:06 · 1876 阅读 · 0 评论 -
堆栈,堆栈,堆和栈的区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态转载 2012-11-12 13:56:22 · 702 阅读 · 0 评论