51单片机C51程序

发布者:二进制心灵最新更新时间:2022-04-20 来源: eefocus关键字:51单片机  C51程序  C语言 手机看文章 扫描二维码
随时随地手机看文章

C51程序

学习C51程序之前需要对C语言有一定的了解和学习;这里只介绍与C语言有区别的地方;

在这里插入图片描述

具体的不同如下:

1、C51中增加了几种针对MSC-51单片机的特有数据类型


a、sfr和sfr16:用于定义特殊功能寄存器,如:sfr PSW = 0xd0(一般情况下这些特殊功能寄存器不需要用户自定义,通常包含在头文件中)

b、bit和sbit: 定义位变量,只占用一个二进制位;bit是位寻址区中的变量(20H~2FH,关于位寻址区详见51单片机之存储器篇);sbit指特殊功能寄存器中的可以位寻址的变量 ,如:sbit P1_0 = P1^0 sbit OV = 0xd2


2、C51的存储模式与存储器密切相关,定义变量时要指明指定的存储器属性

在这里插入图片描述

如:

在这里插入图片描述

其实,对于单片机而言,他有片内、片外存储器,有RAM、ROM之分,RAM中还可以细分为4块(详见51单片机之存储器篇),所以我们需要在定义变量时明确的指出变量要存放在哪里?因此我们需要上图的不同的存储器类型来标识。


3、有专门的关键字和语法规则

在常规的函数定义后加入interrupt n来说明该函数为中断函数。n的取值有6种,分别代表不同的中断类型:

在这里插入图片描述

在使用中断函数时要注意以下几点:

在这里插入图片描述

关键字:51单片机  C51程序  C语言 引用地址:51单片机C51程序

上一篇:51单片机之定时器\计数器的工作原理
下一篇:51单片机之存储器

推荐阅读最新更新时间:2024-11-13 11:22

51单片机学习——1--点亮第一个LED
点亮LED 原理: 此单片机的LED灯就是个发光二极管,只能单向通行。图中LED阴极接IO口,阳极接VCC,也就是电源,为高电平,而正常情况下P2口默认输出高电平,所以只需令P2口输出低点平即可。 代码: #include reg52.h sbit led=P2^0;//通过位定义,令led代表P20口 void main() { while(1) { led=0;//令P20为低电平 } } 总结: 知识点: 设置管脚sbit name=Px^x(IO口) 令目标led灯对应的IO口输出低电平 拓展: 也可以直接对P2的所有IO口进行赋值输出。即1111 1111从高位到低位分别对应从左到右
[单片机]
<font color='red'>51单片机</font>学习——1--点亮第一个LED
如何提高单片机C语言程序的执行效率
首先什么是执行效率。我们平常所说的执行效率就是使用相同的算法在相同输入条件下完成相同计算所产生的系统开销,目前来说一般会更多关注执行时间方面的开销。所有语言编写的代码最终要运行,都要转化成机器码。在更短的时间内完成相同的事那么效率就高。 关于如何提高C语言程序的执行效率,以我多年的编程经验在这里我来谈谈我的想法: 1.尽量避免调用延时函数 没有带操作系统的程序只能在while(1)里面循环执行,如果在这里面调用大量的延时这样会很消耗CPU的资源,延时等于是让他在这歇着不干事了,只有中断里面的才会执行。如果仅仅是做一个LED一秒闪烁一次的程序,那么很简单,可以直接调用延时函数,但是实际的项目中往往在大循环里有很多事要做,对于
[单片机]
如何提高单片机<font color='red'>C语言</font><font color='red'>程序</font>的执行效率
51单片机IO口的几点说明
P0、P1、P2、P3四个I/O口作为通用IO口用是都是准双向口,即作为输入(读引脚)前先要对IO口置为1,截止俩个场效应管。 单片机扩展外部存储器时,P0口可作为数据/地址复用线使用。即使得控制信号为1。控制信号为0时,P0口作为通用IO口使用,由于采用漏极开路,要是1信号正常输出,必须外接上拉电阻。 P1口仅作为输入输出端口,P2口还可以作为外部存储器的高八位地址,P0口为低八位。单片机复位后,所用IO口为1,作为输入输出端口使用。 P3端口可以使用第二功能。如果没有设置第二功能则自动运行第一功能,即输入输出。当设置P3口如下功能时,则运行第二功能。1、串行I/O处于运行状态(RXD,TXD); 2、打开了处部中断(
[单片机]
51单片机制作的简单计算器程序
一、硬件仿真图 件部分比较简单,当键盘按键按下时它的那一行、那一列的端口为低电平。因此,只要扫描行、列端口是否都为低电平就可以确定是哪个键被按下。 二、主程序流程图 程序的主要思想是:将按键抽象为字符,然后就是对字符的处理。将操作数分别转化为字符串存储,操作符存储为字符形式。然后调用compute()函数进行计算并返回结果。具体程序及看注释还有流程图。 三、程序源代码 #include /font reg51.h #include /font intrins.h #include /font ctype.h #include /font
[单片机]
用<font color='red'>51单片机</font>制作的简单计算器<font color='red'>程序</font>
基于51单片机的炭黑复合导电材料的电阻一温度测量系统
0 引 言 随着电子工业及信息技术等产业的迅速发展,对于具有导电功能的高分子材料的需求越来越迫切。导电复合材料具有质量轻、无锈蚀、易于加工成各种复杂形状,尺寸稳定性好,电导率在较大范围内可调,易于大批量生产以及价格便宜等特点,因此广泛应用于抗静电、微波吸收、自控温发热材料、电磁波屏蔽等领域。其中,炭黑复合导电材料是目前应用最广,用量最大的一种。在此以AT89S51单片机为核心,设计一种简易的测量炭黑复合导电材料电阻和温度系统,系统框图如图1所示。 单片机通过热电偶放大器芯片采集当前的温度值;通过电压转换电路采集电阻值,送到FM24C02以备查询,LCD显示当前的电阻和温度情况,使用者可以方便地读出电阻和温度的变化,还可以通
[单片机]
基于<font color='red'>51单片机</font>的炭黑复合导电材料的电阻一温度测量系统
51单片机入门 - 自己动手搭建实验板
前面介绍了几种准备实验板的方案。这里先介绍方案一,我将同大家一起搭建一块简易的单片机实验板,一起感受动手实践的乐趣。 我们有两种自己搭建实验板的方案,一是用面包板,二是用万用焊板。本篇我们介绍面包板搭建电路。 面包板和面包板线 面包板是一种用于电路实验的器材,上面有很多孔,我们可以将元器件和导线插进去,组成我们需要的电路。如果发现电路有错,拔下元件和导线重新插接即可。电路做完后,所有元件还可以拔下来再次使用。 面包板搭建电路简单易行,节省时间和材料。但是缺点在于,面包板只能搭建一些比较简单的电路,而且是对电气连接要求不高的电路。如果电路太复杂,面包板上全是各种导线,出现某些导线或元件松动的情况,不容易找到;有些电
[单片机]
<font color='red'>51单片机</font>入门 - 自己动手搭建实验板
C51程序设计中的内存分配问题
C中内存分为四个区 栈:用来存放函数的形参和函数内的局部变量。由编译器分配空间,在函数执行完后由编译器自动释放。 堆:用来存放由动态分配函数(如mal LOC )分配的空间。是由程序员自己手动分配的,并且必须由程序员使用free释放。如果忘记用free释放,会导致所分配的空间一直占着不放,导致内存泄露。 全局区:用来存放全局变量和静态变量。存在于程序的整个运行期间,是由编译器分配和释放的。 文字常量区:例如char *c = “123456”;则”123456”为文字常量,存放于文字常量区。也由编译器控制分配和释放。 程序代码区:用来存放程序的 二进制 代码。 例子(一) int a = 0; //全局区 void main()
[单片机]
51单片机——LCD1602
1、1602液晶读写时序 (1)、读状态 RS=L,R/W=H,E=H。(判断忙完毕后释放总线) (2)、读数据 RS=H,R/W=H,E=H。 (3)、写指令 RS=L,R/W=L,D0~D7=指令码,E=高脉冲 (4)、写数据 RS=H,R/W=L,D0~D7=数据,E=高脉冲 2、液晶显示驱动文件 #include reg52.h #define LCD1602_DB P0 sbit LCD1602_RS = P1 ^ 0; sbit LCD1602_RW = P1 ^ 1; sbit LCD1602_E = P1 ^ 5; /* 等待液晶准备好
[单片机]

推荐帖子

用上了IAREWSTM81.2,很好用,但是暴露出STM8的库有问题
刚去ST的新网站看了下,STM8的库还是1.1.1的在用1.1编译器的时候,虽然在C/C++Compiler里勾选上了Requireprototype,但是发现没有函数原型的话编译器是不会报错的,也就是说IAREWSTM81.1并没有严格检查函数原型是否声明了,但是在1.2下发现这一项的检查非常严格了,加上函数原型声明后,剩下几十个错误信息都是因为库函数没有原型声明造成的,观察下发现,在STM8库的头文件里,只声明了COSMIC编译器下的函数原型,并没有IAR下的头文件声明,我把
笑哈哈 stm32/stm8
如何在pda上实现拦截电话并设置屏幕横竖方式
想做个小程序,使其起到如下效果:当按通话键或有来电时,无论屏幕是处于横屏还是竖屏,立即切换到竖屏,当挂断电话后再恢复到原来的屏幕方式想以服务的方式做,能安装能卸载给个例子或思路如何在pda上实现拦截电话并设置屏幕横竖方式首先,显示驱动要支持转屏。其次,LZ的应用要能检测到来电信息不用做成服务啊,做成服务,你的小程序做什么?小弟是个新手,不知从何处下手,那位给个思路
maq9627 嵌入式系统
电动车防盗 方案SI24r2E,与芯片介绍
经调查,中国现在电动自行车保有量3亿,在中东部地区,平均每3人就有一辆电瓶自行车,在沿海城市,外来人口较大,电动自行车使用率极高,超过60%以上,一个500万人口的城市,电动自行车的数量就高大250万辆以上。低碳环保,符合国家环保要求,轻便灵活,让人出行方便,性价比高三个方面使电动自行车增加迅速。方案简述:随着电动自行车的急速增加,相对应的社会治安问题也急剧攀升。一些地区的电动自行车丢失报案率占总治安报警率的60%以上,严重影响社会治安。电动自行车智能防盗备案,是利
动能世纪 RF/无线
有奖直播:罗姆DC/DC转换器设计研讨会,资深电源领域专家上实战干货~
一本正经的管理员(定睛一看):罗姆的要开DC/DC设计转换器研讨会线上直播没事儿瞎跑的小记者(得瑟得瑟):我今年3月份刚去了罗姆世界最小消耗电流180nA的DC/DC转换器BD70522GUL(点此查看详情)的发布会。一本正经的管理员:这个“最”字,太傲娇了没事儿瞎跑的小记者(轻蔑地一看):傲娇而有实力,发布会上来的也是谦和且技术牛的开发部的大佬一本正经的管理员:这次研讨会直播来的,也是一位电源领域的专家,拥有从电
EEWORLD社区 电源技术
倾力奉献——uCOS-IIv2.52源码中文译注
把这个读懂了,ucos也就差不多了。大家加油啊,呵呵呵呵倾力奉献——uCOS-IIv2.52源码中文译注谢谢分享!谢谢楼主markXIEXIE浪费了,原来这份文档我也有,还说是原创...好东西,帮顶了大概看了下,下载还是很值的也是该跑跑OS的时候了!读不懂再看嘛谢谢楼主了谢谢分享!刚开始接触ucos学习了。谢谢楼主倾力奉献——uCOS-IIv2.52源码中文译注感谢分享那好,既然这么说了,就好好看看楼主爱死你了……谢谢楼主了好东西不至于吧,怎么都学
zzhere2007 实时操作系统RTOS
C语言嵌入式系统编程修炼之道
C语言嵌入式系统编程修炼之道不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力。无疑,汇编语言具备这样的特质。但是,归因于汇编语言开发过程的复杂性,它并不是嵌入式系统开发的一般选择。而与之相比,C语言--一种高级的低级语言,则成为嵌入式系统开发的最佳选择。笔者在嵌入式系统项目的开发过程中,一次又一次感受到C语言的精妙,沉醉于C语言给嵌入式开发带来的便利。http://download.eew
tiankai001 下载中心专版
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved