推荐阅读最新更新时间:2024-11-10 21:47
基于BASIC语言的BASCOM-8051开发环境单片机编程系统
BASCOM-8051开发环境是以BASIC语言为基础的单片机编程系统,具有易学易用、功能强大、开发周期短等特点。 一、命令分类示例 1、伪指令 伪指令是一些对开发环境的设置指令,如:$Large是说明应用程序大于2K;$Asm~$End Asm是使用汇编语言;$CrySTal是说明单片机应用系统中的时钟频率等等。 2、一般命令 这一类命令和BASIC语言中的命令用法、功能是一样的。如:For、To、Step、If、Else、End If、While……Wend、Select Case等,初学者十分容易掌握。 3、针对单片机硬件的命令 主要提供了直接对单片机及其外部硬
[单片机]
松翰单片机c语言的中断处理问题
松翰单片机的特殊内核架构,注定了,其中断优先级,只能靠软件实现。怎么在c语言的中断处理函数中,高优先级的标志为需要安排在前面,低优先级的标志没有安排在后面,这是一种软又掀起的实现方法。由于硬件的特殊结构,导致终端不能够实现嵌套,于是就会引出一个新的问题,那就是,中断的,事实性会大打折扣。对于多个中断的程序,这个问题就会凸显出来,无非有这样三种情况,高有仙妻,低优先级的终端同时出发,两个中段飞同时出发,你不不影响,两个终端,非同时出发,但是有相应的影响。对于两个终端同时处罚的情况系统的实时性肯定会受到影响。这是要做到的就是使这种影响叫到最低的程度,解决这个问题,无非只有一种办法,那就是,是每个中断程序,航速尽量的少尽量的简单,这样系统
[单片机]
单片机C语言编程常用的运算符介绍
在单片机C语言 编程 中,通常用到30个运算符,如表1,其中算术运算符13个,关系运算符6个,逻辑运算符3个,位操作符7个,指针运算符1个。 在C语言中,运算符具有优先级和结合性。 算术运算符优先级规定为:先乘除模(模运算又叫求余运算),后加减,括号最优先。结合性规定为:自左至右,即运算对象两侧的算术符优先级相同时,先与左边的运算符号结合。 关系运算符的优先级规定为: 、 、 =、 =四种运算符优先级相同,=、!=相同,但前四种优先级高于后四种。关系运算符的优先级低于算术运算符,高于赋值(=)运算符。 逻辑运算符的优先级次序为:!、&&、||。 当表达式中出现不同类型的运算符时,非(!)运算符优先级最高,算术运算符次
[单片机]
32位单片机c语言编程笔记
1.单片机在系统复位或者上电之后,会在执行main()函数之前先执行一小段由maplab c32连接器自动插入的初始化程序,即所谓的starup(启动)代码或者crt0()代码。启动代码负责基本的内务操作,包括栈的所有重要初始化等。 2.随便调用一个库函数,比如printf(),就可能增加数千字节的执行代码,所以要慎用库函数。 3.crt0代码负责在主程序运行之前,将定义在flash里的数组内容,从flash到RAM里,crt0另一个重要的功能是将程序声明的每个全局变量初始化为0,这会使程序更加安全并且容易预测,但这是有代价的。如果ram中要存放一个很大的数组,那么即使你没有要求初始化他们,crt0代码也会花一段
[单片机]
C语言宏定义的使用原理
使用STM32开发的朋友不知道是否有发现过这样的一些宏定义? 如下: #if defined (__CC_ARM) #pragma anon_unions #endif 看到上面的语句一开始确实搞不懂为什么要写这些东西,通过上网去查询,才搞明白这其中的使用原理。 上面的代码段我们可以看到两部分的内容: 1) __CC_ARM 2) #pragma anon_unions 这两个都有啥用呢? 待我一一道来! 1、__CC_ARM 是 ARM 编译中的宏选项 __CC_ARM 是一个编译器的选项,在ARM开发中根据开发环境的不同,有好几个可选的宏选项。
[单片机]
C语言_单片机_break,return,continue,指针优先级
测试代码如下 #include reg51.h #include stdio.h #include intrins.h typedef void (*p_fun)(unsigned int*); //void (*p_fun)(unsigned int*); p_fun p_fun_a; //函数指针变量 void p_fun_parameter(p_fun p_fun_1,unsigned int *test_b) //函数指针做形参 { p_fun_1(test_b); } char putchar(char s) { SBUF=s; while(TI==0) { _nop_(
[单片机]
C语言根据日期判断星期几(使用基姆拉尔森计算公式)
算法如下: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数,m表示月份数,y表示年数。 注意:在公式中有个与其他公式不同的地方: 把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。 以公元元年为参考,公元元年1月1日为星期一 /PRE PRE 程序如下: #include "stdio.h" void CaculateWeekDay(int y,int m, int d) { if(m==1||m==2) { m+=12; y--; } i
[单片机]
单片机C语言程序设计:单只数码管循环显示 0~9
/* 名称:单只数码管循环显示 0~9 说明:主程序中的循环语句反复将 0~9 的段码送至 P0 口,使数字 0~9 循环显示 */ #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //延时 void DelayMS(uint x) { uchar t; while(x--) for(t=0;t 120;t++); }
[单片机]