![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
Cool_Bob
这个作者很懒,什么都没留下…
展开
-
STARTUP.A51详解
STARTUP.A51 这个文件有什么用,有必要添加到工程吗? 如果不添加"startup.a51"文件,编译器就会自动加入一段初始化内存以及堆栈等的代码,这时的内存初始化部分你就无法去控制了,当然这在大部分情况下没什么关系。但是如果你想你的程序在复位后,内存里面的信息依然还保存着(所说的“热复位”),那么你就需要添加该启动文件,并且去里面修改内存初始化部分,不要初始化你需要保留的部分内存。转载 2014-07-13 18:00:38 · 3713 阅读 · 0 评论 -
Keil C51编译及连接技术
主要介绍Keil C51的预处理方法如宏定义、常用的预处理指令及文件包含指令,C51编译库的选择及代码优化原理,C51与汇编混合编程的方法与实现以及超过64KB空间的地址分页方法的C51实现。教学目标 1.了解Keil C51的预处理方法,主要有宏定义#define、常用的预处理指令#define、#error、#if 、#else、#elif、#endif、#ifdef、#ifndef转载 2014-09-17 15:34:56 · 4247 阅读 · 0 评论 -
动态库和静态库的创建
使用Automake 创建和使用静态库1. 目录结构如下:example|——src 目录(存放源代码文件) |——hello.c|——lib 目录(存放用来生成库的文件) |——test.c 用来生成静态库libhello.a|——include 目录(存放程序中使用的头文件) |——hello.h2. 编写的各个转载 2014-09-17 16:26:17 · 685 阅读 · 0 评论 -
Linux时间函数
简介本文旨在为了解Linux各种时间类型与时间函数提供技术文档。1、Linux下常用时间类型Linux下常用时间类型有四种:time_t、struct tm、struct timeval、struct timespec1.1 time_t时间类型time_t类型在time.h中定义:[cpp] view plaincopyprint?转载 2014-08-15 11:55:48 · 402 阅读 · 0 评论 -
sprintf使用
对于熟悉C的人来说,sprintf并不陌生,在很多情况下,一般都会使用sprintf来代替itoa.sprintf函数的原型是:int sprintf(char* str, const char* format, ...); 除了前两个参数类型固定外,后面可以接任意多个参数,格式化输出一个字符串:1) 整数格式化输出 如果要将数字 3915 保存到字符串str中/*假定转载 2014-08-07 17:10:52 · 557 阅读 · 0 评论 -
STRTOK函数和STRTOK_R函数
1.一个应用实例网络上一个比较经典的例子是将字符串切分,存入结构体中。如,现有结构体typedef struct person{ char name[25]; char sex[10]; char age[4]; }Person;需从字符串 char buffer[INFO_MAX_SZ]="Fred male 25,John male 62,A转载 2014-08-07 16:27:03 · 732 阅读 · 0 评论 -
C语言#pragma预处理
在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma 指令对每个编译器给出了一个方法,在保持与C 和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #pragma para其中para 为参数,下面转载 2014-07-13 18:14:39 · 415 阅读 · 0 评论 -
有关 sizeof和strlen的总结
先看看sizeof()一、sizeof的概念sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。其实可以简单的理解sizeof是征对"类型"的。二、sizeof的使用方法 1、用于数据类型 sizeof使用形式转载 2014-07-13 17:44:58 · 435 阅读 · 0 评论 -
hex和bin文件格式的区别
Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录,由十六进制数组成的机器码或者数据常量。Intel HEX文件经常被用于将程序或数据传输存储到ROM、EPROM,大多数编程器和模拟器使用Intel HEX文件。 很多编译器的支持生成HEX格式的烧录文件,尤其是Keil c。但是编程器能够下载的往往是BIN格式,因此HEX转BIN是每个转载 2014-07-13 17:37:57 · 821 阅读 · 0 评论 -
BIN和HEX文件的区别
HEX文件和BIN文件是我们经常碰到的2种文件格式。下面简单介绍一下这2种文件格式的区别: 1、HEX文件是包括地址信息的,而BIN文件格式只包括了数据本身。在烧写或下载HEX文件的时候,一般都不需要用户指定地址,因为HEX文件内部的信息已经包括了地址。而烧写BIN文件的时候,用户是一定需要指定地址信息的。 2、BIN文件格式,对二进制文件而言,其实没有”格式”。文件只是包括了纯粹的二转载 2014-07-13 17:35:29 · 927 阅读 · 0 评论 -
51单片机:存储器结构
1、片内程序存储器2、片外程序存储器3、片内数据存储器4、片外数据存储器但在逻辑上,即从用户的角度上,8051单片机有三个存储空间:1、片内外统一编址的64K的程序存储器地址空间(MOVC)2、256B的片内数据存储器的地址空间(MOV)3、以及64K片外数据存储器的地址空间(MOVX)在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时转载 2014-07-13 16:54:44 · 1881 阅读 · 1 评论 -
C51单片机内存优化
52本身有256B的数据存储区,如果没在意一些细节,很容易出现RAM超过128就报错的情况。现讲其问题解释如下: 最常见的是以下两种: ① 超过变量128后必须使用compact模式编译,实际的情况是只要内存占用量不超过256.0,就可以用 small 模式编译 ② 128以上的某些地址为特殊寄存器使用,不能给程序用。与 PC 机不同,51 单片机不使用线性编址,特殊寄存器与 R转载 2014-07-13 17:06:28 · 965 阅读 · 0 评论 -
内存动态分配与释放
1. C语言的函数malloc和free (1) 函数malloc和free在头文件中的原型及参数 void * malloc(size_t size)动态配置内存,大小有size决定,返回值成功时为任意类型指针,失败时为NULL。 void free(void *ptr)释放动态申请的内存空间,调用free()后ptr所指向的内存空间被收回,如果转载 2014-07-08 09:18:42 · 551 阅读 · 0 评论 -
interrupt 和 using 在C51中断中的使用
32个I/O口(4 组8bit 端口);两个16位定时计数器;全双工串行通信;6个中断源(2个外部中断、2个定时/计数器中断、1个串口输入/输出中断),两级中断优先级;128字节内置RAM;独立的64K 字节可寻址数据和代码区。中断发生后,MCU 转到 5 个中断入口处之一,然后执行相应的中断服务处理程序。中断程序的入口地址被编译器放在中断向量中,中断向量位于程序代码段的最转载 2014-07-22 14:18:52 · 1546 阅读 · 0 评论 -
Base64编码解码C语言实现
static const char *codes = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; static const unsigned char map[256] = { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 2转载 2014-06-28 15:52:19 · 2141 阅读 · 0 评论 -
C语言中的数据类型及其转换详解
C语言中的类型按其组成可以分为简单类型和构造类型,按是否预定义了类型名字和值集可以分为基本类型和非基本类型,按是否加了类型限定符可以分为限定类型和非限定类型。 ANSI C99标准中类型定义的BNF语法如下图。 说明:typedef可以定义新数据类型,如typedef long int FOUR_BYTE_INT,即定义了和long int一样的数据类型FOUR_BYTE_转载 2014-06-09 17:44:04 · 554 阅读 · 0 评论 -
内存对齐
一.内存对齐的初步讲解内存对齐可以用一句话来概括:“数据项只能存储在地址是数据项大小的整数倍的内存位置上”例如int类型占用4个字节,地址只能在0,4,8等位置上。例1:#include struct xx{ char b; int a; int c; char d;};int main()转载 2014-06-23 23:50:18 · 344 阅读 · 0 评论 -
16/24点阵字库(经典)
比如汉字“中”的内码是0xd6d0,而他的区位码是5448.这个是怎么转换的呢?区位码不是内码减去0xa0a0吗?怎么算的呢?问题补充: 找到答案了:汉字机内码、国标码和区位码三者之间的关系为: 区位码(十进制)的两个字节分别转换为十六进制后加20H得到对应的国标码; 机内码是汉字交换码(国标码)两个字节的最高位分别加1,即汉字交换码(国标码)的两个字节分转载 2015-07-26 23:37:16 · 2737 阅读 · 0 评论