如何在C51文件和汇编语言文件中相互调用? 如何在C51文件和汇编语言文件中相互调用对方文件中的函数?答:汇编语言文件中对于函数的调用方法,与调用汇编语言中的函数一样,如:LCALL DISPLAY在C语言文件中调用汇编语言中的函数,必须先声明再调用。声明格式如下:extern 返回值类型 函数名(参数表);例如: extern unsigned cha... 2023-06-13 C语言汇编语言51单片机声明文章基础课
位运算的一些技巧 1、把小写字母变为大写字母,清位:‘a’ & 0xDF,结果为‘A’2、把大写字母变为小写字母,置位:‘A’ | 0x20,结果为‘a’3、对某位取反, 某个位与1 异或即为取反( 第1 位取反):0xFF ^ 0x01,运算的结果为0xFE4、部分乘法的化简,与2 的n 次方... 2023-06-13 C语言位运算嵌入式异或文章基础课C语言基础
【C语言】Volatile的陷阱 对于volatile关键字,大部分的C语言教材都是一笔带过,并没有做太过深入的分析,所以这里简单整理了一些关于volatile的使用注意事项。实际上从语法上来看volatile和const是一样的,但是如果const用错,几乎不会有什么问题;而volatile用错,后果可能很严重。所以在volatile的使用上,建... 2023-06-13 C语言volatile陷阱嵌入式开发文章基础课C语言基础
单片机C语言程序优化 一、程序结构的优化1、程序的书写结构虽然书写格式并不会影响生成的代码质量,但是在实际编写程序时还是应该尊循一定的书写规则,一个书写清晰、明了的程序,有利于以后的维护。在书写程序时,特别是对于While、for、do…while、if…elst、switch…case等... 2023-06-13 单片机C语言程序优化文章基础课C语言基础
嵌入式C语言不可不用的关键字 1.static关键字这个关键字前面也有提到,它的作用是强大的。要对static关键字深入了解,首先需要掌握标准C程序的组成。标准C程序一直由下列部分组成:1)正文段——CPU执行的机器指令部分,也就是你的程序。一个程序只有一个副本;只读,这是为了防止程序由于意外事故而修改... 2023-06-13 嵌入式C语言关键字文章基础课C语言基础
怎样在程序里获得一个空指针 根据语言定义, 在指针上下文中的常数0 会在编译时转换为空指针。也就是说,在初始化、赋值或比较的时候, 如果一边是指针类型的值或表达式, 编译器可以确定另一边的常数0 为空指针并生成正确的空指针值。因此下边的代码段完全合法:char *p = 0;if(p != 0)然而, 传入函数的... 2023-06-13 指针C语言文章基础课C语言基础
你了解C语言中的关键字volatile吗? 举例如下:view plaincopy to clipboardprint?1.struct task_struct {2. volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */3. void *stack;4. atomic_t usage;5. unsigned int flags; /* per process f... 2023-06-13 C语言关键字volatile文章基础课C语言基础
都是main()函数的循环执行惹的祸 首先我跟大家说下我的一下代码需要实现的功能,非常简单就是在定时其溢出也就是进入中断之后单片机通过串口给我的上位机发送一个验证字符H55,但是调试了一个下午就是没法实现。大家先看看以下程序!void main(void){main_init();}//-----------------主函数初始化-----------... 2023-06-13 main函数循环执行C语言程序设计文章基础课C语言基础
C语言初学者常见的问题 看着有错的程序,不知该如何改起,本人通过对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考。1.书写标识符时,忽略了大小写字母的区别。main(){int a=5;printf("%d",A);}编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同... 2023-06-13 C语言初学者常见问题文章基础课C语言基础
关于F2812中用C语言来实现中断的说明 1.首先在.cmd中定位系统中断表:MEMORY{PAGE 0 :......................................PAGE 1 :......................................PIE_VECT : origin = 0x000D00, length = 0x000100................................ 2023-06-13 实现中断F2812C语言DSP文章单片机
单片机C语言编程基础源码六则 1.某单片机系统的P2口接一数模转换器DAC0832输出模拟量,现在要求从DAC0832输出连续的三角波,实现的方法是从P2口连续输出按照三角波变化的数值,从0开始逐渐增大,到某一最大值后逐渐减小,直到0,然后再从0逐渐增大,一直这样输出。试编写一函数,使从P2口输出的值产生三角波,并且使三... 2023-06-13 C语言程序设计单片机文章基础课C语言基础
写好C语言程序的“三板斧” 虽然看起来以上的说法很抽象,给人如坠雾里的感觉,其实就是用C语言进行遇到问题,分析问题和解决问题的过程。那么,下文将给你介绍如何耍这“三板斧”。嵌入式工程师在编写C语言程序的时候,要针对遇到的问题进行程序构架构建。比如我们要处理“猴子选大王”... 2023-06-13 C语言程序设计C文章基础课C语言基础
C/C++语言特点 C语言特点在实际运用过程中可以发现,C语言的一个重要的特色是大量使用函数。比如,所有用C语言编写的程序都必须具有一个名为main的函数,该函数是程序的入口,也就是程序的执行起点,程序将一次执行main函数中的定义的代码,直至main函数的执行完毕,因此,main函数被成为主函数。除主... 2023-06-13 C语言C++数据封装文章基础课C语言基础
如何在程序中得到一个浮点数的组成数(源代码) 要将一个浮点数存入EEPROM,实际上就是要存这四个数。那么如何在程序中得到一个浮点数的组成数呢?浮点数在存储时,是存储连续的字节中的,只要设法找到存储位置,就可以得到这些数了。可以定义一个void的指针,将此指针指向需要存储的浮点数,然后将此指针强制转化为char型,这样,利用指... 2023-06-13 编制浮点数C语言文章基础课C语言基础
在C语言中通过模板规避潜在错误 假设我们有图 1所示的被简化了的定时器管理模块程序。从构造函数来看,它的三个参数分别指明了定时器的延时时间、回调函数和回调函数的参数,其中的回调函数是通过timer_callback_t类加以封装的。当定时器到期时,它的fire()函数会被调用。间接地,fire()函数调用定时器所保存回... 2023-06-13 C语言模板程序设计文章基础课C语言基础
C语言如何向系统接要存 C语言如何向系统接要存,就有这么三种方式:1、向栈要。2、向堆要。3、向数据段要。这一下就扯出了三种内存空间,内存空间的本质是一样的,一个地址对应一个方框,方框里可以放数据。但是为了更好的去管理这篇空间,于是将空间分成了几个不同的区域,这些区域有:1、栈:存放局部变量。2、... 2023-06-13 C语言内存空间代码段文章基础课C语言基础
定义结构体类型变量的方法 1先声明结构体类型再定义变量如:struct student{int num;char name[20];char sex;int age;float score;};struct studentstudent 1,student 2;2.在声明类型的同时定义变量struct student{int num;char name[20];char sex;int age... 2023-06-13 C语言结构体变量文章基础课C语言基础
关于C语言的底层操作问题 下面结合问题分别进行阐述。问题:移位操作在运用移位操作符时,有两个问题必须要清楚:(1)、在右移操作中,腾空位是填 0 还是符号位;(2)、什么数可以作移位的位数。答案与分析:">>"和"移位的位数左移: 变量名<<移位的位数经过移位后, 一端的位被"挤掉",而另一端空出的位以0 ... 2023-06-13 C语言底层操作移位操作文章基础课C语言基础
C语言的几种位操作运算 在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了一些位操作手段,如按位与、按位或、按位取反等,但它们是对一个字节进行操作,如要对具体的一位操作,仍旧不方便,以下给出了一些函数,可以模仿汇编语言的一... 2023-06-13 C语言位操作程序文章基础课C语言基础
C语言宏条件编译详解 预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预... 2023-06-13 C语言宏条件编译指令文章基础课C语言基础
C语言之Main函数返回值问题分析 “The C programming Language(《C 程序设计语言》)用的就是 main( )。”--- 这是因为第一版的C语言只有一种类型,那就是int,没有char,没有long,没有float,…………既然只有一种类型,那么就可以不写,后来的改进版为了兼容以前的代码于是规定:不... 2023-06-13 返回值函数main分析C语言文章基础课C语言基础
C语言的一些误用和知识总结 1.关于自增自减(即++i,i++)要想给一个数加一或减一我们可以:i += 1;j -= 1;而C语言还允许用++和--运算符,其实这里有误导,因为++和--可以作为前缀和后缀,这样的话他们就有可能改变操作数的值,下面让我们来看看:i = 1;printf("i is %dn",++i); /* prints i is 2 */printf("i ... 2023-06-13 误用总结知识C语言文章基础课C语言基础
C语言数组入门之数组的声明与二维数组的模拟 语言中指针与数组这两个概念之间的联系是密不可分的,以至于如果不能理解一个概念,就无法彻底理解另一个概念。C语言中的数组值得注意的地方有以下两点:C语言中只有一维数组,而且数组的大小必须在编译期就作为一个常数确定下来。然而,C语言中数组的元素可以是任何类型的对象,当... 2023-06-13 C语言数组二维数组文章基础课C语言基础
C语言:指针的长度和类型 指针的长度取决于使用的机器和编译器,例如:在现代windows上,指针是32位或是64位长测试代码:#include#include#include#includestruct p{int n;float f;};int main(){struct p *sptr;printf("sizeof *char:... 2023-06-13 C语言指针程序文章基础课C语言基础
C语言中位运算置0操作 代码:/* * test.cpp * * Created on: 2014.05.23 * Author: Spike *//*eclipse cdt, gcc 4.8.1*/#include #define BIT_MASK(bit_pos) (0x01 << (bit_pos)) using namespace std; int Bit_Reset(u... 2023-06-13 C语言位运算程序文章基础课C语言基础