单片机c语言加到4归0,单片机C语言教程四
原标题:单片机C语言教程四
我们把这个项目称为TwoLED,实验程序如下:
#include //预处理命令
void main(void) //主函数名
{
unsigned int a; //定义变量a为unsigned int类型
unsigned char b; //定义变量b为unsigned char类型
do
{ //do while组成循环
for (a=0; a<65535; a++)
P1_0 = 0; //65535次设P1.0口为低电平,点亮LED
P1_0 = 1; //设P1.0口为高电平,熄灭LED
for (a=0; a<30000; a++); //空循环
for (b=0; b<255; b++)
P1_1 = 0; //255次设P1.1口为低电平,点亮LED
P1_1 = 1; //设P1.1口为高电平,熄灭LED
for (a=0; a<30000; a++); //空循环
}
while(1);
}
同样编译烧写,上电运行您就可以看到结果了。很明显D1点亮的时间长于D2点亮的时间。程序中的循环延
时时间并不是很好确定,并不太适合要求精确延时的场合,关于这方面我们以后也会做讨论。这里必须要
讲的是,当定义一个变量为特定的数据类型时,在程序使用该变量不应使它的值超过数据类型的值域。
如本例中的变量b不能赋超出0~255的值,如for (b=0; b<255; b++)改为for (b=0; b<256; b++),编译是
可以通过的,但运行时就会有问题出现,就是说b的值永远都是小于256的,所以无法跳出循环执行下一句
P1_1 = 1,从而造成死循环。同理a的值不应超出0~65535。大家可以烧片看看实验的运行结果,同样软件
仿真也是可以看到结果的。
3. long长整型
long长整型长度为四个字节,用于存放一个四字节数据。分有符号long长整型signed long和无符号长整型unsigned long,默认值为signed long类型。signed int表示的数值范围是-2147483648~+2147483647,
字节中最高位表示数据的符号,"0"表示正数,"1"表示负数。unsigned long表示的数值范围是
0~4294967295。
4. float浮点型
float浮点型在十进制中具有7位有效数字,是符合IEEE-754标准的单精度浮点型数据,占用四个字节。
因浮点数的结构较复杂在以后的章节中再做详细的讨论。 5.* 指针型
指针型本身就是一个变量,在这个变量中存放的指向另一个数据的地址。这个指针变量要占据一定的内存
单元,对不同的处理器长度也不尽相同,在C51中它的长度一般为1~3个字节。指针变量也具有类型,在
以后的课程中有专门一课做探讨,这里就不多说了。
6. bit位标量
bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能
定义位数组。它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和
False。
7. sfr特殊功能寄存器
sfr也是一种扩充数据类型,点用一个内存单元,值域为0~255。利用它可以访问51单片机内部的所有
特殊功能寄存器。如用sfr P1 = 0x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们
用以用P1 = 255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。
8.sfr16 16位特殊功能寄存器
sfr16占用两个内存单元,值域为0~65535。sfr16和sfr一样用于操作特殊功能寄存器,所不同的是它用于
操作占两个字节的寄存器,好定时器T0和T1。
9. sbit可录址位
sbit同位是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存
器中的可寻址位。如先前我们定义了
sfr P1 = 0x90; //因P1端口的寄存器是可位寻址的,所以我们可以定义
sbit P1_1 = P1^1; //P1_1为P1中的P1.1引脚
//同样我们可以用P1.1的地址去写,如sbit P1_1 = 0x91;
这样我们在以后的程序语句中就可以用P1_1来对P1.1引脚进行读写操作了。通常这些可以直接使用系
统提供的预处理文件,里面已定义好各特殊功能寄存器的简单名字,直接引用可以省去一点时间,我自己
是一直用的。当然您也可以自己写自己的定义文件,用您认为好记的名字。
关于数据类型转换等相关操作在后面的课程或程序实例中将有所提及。大家可以用所讲到的数据类型改
写一下这课的实例程序,加深对各类型的认识。返回搜狐,查看更多
责任编辑:
单片机c语言加到4归0,单片机C语言教程四相关推荐
- python调用r语言加载包错误_Python调用R语言
网络上经常看到有人问数据分析是学习Python好还是R语言好,还有一些争论Python好还是R好的文章.每次看到这样的文章我都会想到李舰和肖凯的<数据科学中的R语言>,书中一直强调,工具不 ...
- 0 17在c语言中什么意思,exit(0)在c语言中是什么意思
exit(0)在c语言中是什么意思 exit(0)在c语言中是什么意思? exit(0):正常运行程序并退出程序. exit(1):非正常运行导致退出程序: return():返回函数,若在主函数中, ...
- C语言加取址符的作用,C语言中指针和取地址符的关系
一 概念定义: 严格说起来,应该这么讲:指针存的是地址,而&运算符是取变量的地址. 指针原理: 其实计算机中的内存就像一个个抽屉(一兆内存就相当于1百万个抽屉),每个抽屉都有一个编号,用于存放 ...
- vc c语言坐标图,VC++6.0下C语言画图编程问题
复制内容到剪贴板 代码:#include #include void CSinusoidView::OnDraw(CDC* pDC) { CSinusoidDoc* pDoc = GetDocumen ...
- c语言魔塔编程,魔塔V1.0 用C语言写的魔塔小游戏 - 下载 - 搜珍网
压缩包 : dcd725aa21879836d2b9168396fe6e.zip 列表 audio/ audio/ATACK.wav audio/BUY.wav audio/EXCHANGE.wav ...
- 单片机c语言计数器测速,基于51单片机的光电编码器测速.doc
课程设计报告 课程名称: 微机原理课程设计 题 目: 基于51单片机的光电编码器测速 摘要 光电编码器是高精度位置控制系统常用的一种位移检测传感器.在位置控制系统中,由于电机既可能正转,也可能反转,所 ...
- 51单片机实验 LED半秒闪烁 定时器0方式2 中断实现
51单片机实验 LED半秒闪烁 定时器0方式2 中断实现 实验目的: P1.0接一个发光管,实现亮半秒灭半秒, 要求使用定时器0工作方式2,中断实现. C语言代码: #include "at ...
- 单片机实例20——数字钟(硬件电路图+汇编程序+C语言程序)
20. 数字钟﹝★﹞ 1. 实验任务 (1. 开机时,显示12:00:00的时间开始计时: (2. P0.0/AD0控制"秒"的调整,每按一次加1秒: (3. P0.1/AD1控制 ...
- 单片机c语言除法运算,针对小容量单片机程序优化方式--乘除法篇
原标题:针对小容量单片机程序优化方式--乘除法篇 目前单片机的市场竞争很激烈,许多应用出于性价比的考虑,选择使用程序存储空间较小(如1K,2K)的小资源8位MCU芯片进行开发.一般情况下,这类MCU没 ...
- c语言文件 加载内存吗,把文件中的数据加载到内存进行查找C语言实现.docx
把文件中的数据加载到内存进行查找C语言实现 #define _CRT_SECURE_NO_WARNINGS#include#include#includechar **pp=NULL;void ini ...
最新文章
- UI整理-----part2--UI控件
- SNMP功能开发简介 五 使用MIB Builder创建MIB文件图文介绍
- c++基础———循环结构
- file extension php,.php File Extension
- Flutter 从配制开发环境再到开发第一个应用
- java 抽象类和接口1--基本概念
- linux系统 安卓系统安装教程,Linux系统下安装android sdk的方法步骤
- python练手经典100例-Python 的练手项目有哪些值得推荐?
- 2020年PHP面试题大全
- trunk端口_超全!华为交换机端口vlan详解~
- 趣谈网络协议——UDP协议
- 微软官网下载win10系统
- Jenkins卸载方法
- 郭靖大侠的IT为学之路
- 【知识分享】C语言中的设计模式——命令模式
- 很不错的abap开发入门教程
- 计算机网络(第五版)第五章——习题解答
- oracle杀连接服务器,玩转Oracle服务器连接
- 平台联合卖会员、用户拆着挂闲鱼,巨头联名会员卡命宿何方?
- android8.1字体,Android 8.1采用全新字体:圆润舒适