单片机程序设计基础

单片机程序设计基础,单片机C语言程序的可读性、模块化和资源共享方面与汇编相比有明显的优势,因此单片机程序开发和项目设计越来越多的采用C语言程序。51单片机编程所用的C语言,在Keil µVision3 集成开发环境中称为Keil C51,简称为C51,指的是用于51单片机的C程序

应用介绍

在简单了解单片机原理和C语言的基础上,初学者可以采用C语言试着编写一些单片机的入门程序,完成简单的项目设计。本章主要学习单片机I/O口输入与输出程序设计。     I/O口的输出程序设计先从驱动单只LED驱动入手,然后讨论多个I/O口的驱动问题;I/O口的输入也先从最简单的一个按键输入开始研究,然后讨论多个按键输入程序设计方法。在这些单元实例完成的基础上,实现两位数码管现实4×4按键矩阵的程序设计。本章中每个项目的程序利用Keil软件编写,电路原理图采用Proteus软件设计,通过软件仿真来验证程序设计的完整性。

本章将要完成的项目有:

项目1  P0.0驱动LED闪烁;

项目2 流水灯(跑马灯)设计;

项目3 数码管0~9显示;

项目4 单片机的按键

4-1按键抬起有效输入

4-2按下有效输入

4-3 4×4按键矩阵

4-4 按键调整(思考题3-6)

单片机C语言程序的可读性、模块化和资源共享方面与汇编相比有明显的优势,因此单片机程序开发和项目设计越来越多的采用C语言程序。51单片机编程所用的C语言,在Keil µVision3 集成开发环境中称为Keil C51,简称为C51,指的是用于51单片机的C程序。Keil C51语言在兼容ANSI C的基础上,又增加很多与51单片机硬件资源相关的关键字、库函数和编译特性,使得开发51系列单片机程序变得更为方便和快捷。因为标准的C数据、运算以及函数同样可以用到C51中,因此本节介绍的单片机C语言包含标准C语言部分。

C51特点

与标准的ANSI C相比,C51程序在头文件、数据类型、数据的存储类型、中断处理以及库函数等方面都有一定差异,主要原因是单片机程序更服从于硬件系统。

一、系统硬件头文件

51系列单片机的差异在于内部资源(如定时器、中断、I/O等数量)以及功能的不同,而对使用者来说,只需要将相应的功能寄存器的头文件加载到程序内,就可实现所具有的功能。因此,Keil C51系列的头文件集中体现了各系列芯片的不同资源及功能。

例如MCS-51架构的单片机系统头文件为reg51.h,增强型51由于内部增加了定时器T2,因此要用到的头文件为reg52.h。程序设计时,程序须包含reg51.h或reg52.h头文件。

二、数据类型

51系列单片机含位操作空间和位操作指令,单片机片内寄存器也可以由用户定义,因此Keil C51在标准C数据类型的基础上扩展了bit、sbit、sfr 4种类型声明,以便能够灵活地进行操作。

另外,由于51单片机有片内、外程序存储器,还有片内、外数据存储器,因此Keil C51中增加了数据存储类型操作指令。C语言最初是为通用计算机设计的,在通用计算机中只有一个程序和数据统一寻址的内存空间,标准C并没有提供这部分存储器的地址范围的定义

由于标准C中部分库函数不适于嵌入式处理器系统,因此这些函数库没有被Keil C51采用,如字符屏幕和图形函数。有一些标准C库函数可以在Keil C51继续使用,但这些库函数都必须针对51单片机的硬件特点来作出相应的开发,与标准C库函数的构成与用法有很大的不同。例如库函数printf和scanf,在标准C中,这两个函数通常用于屏幕打印和接收字符,而在Keil C51中,它们主要用于串行口数据的收发。

51单片机的硬件资源有限,编译系统不允许太多的程序嵌套。标准C所具备的递归特性不被Keil C51支持。在C51中,要使用递归特性,必须用reentrant进行声明才能使用。

在Keil C51中还定义了与单片机中断处理有关的关键字,这一点与标准C语言有较大差异。从数据运算操作、程序控制语句以及函数的使用上来说,Keil C51与标准C几乎没有什么明显的差别。注意Keil C51与标准C的不同之处,并熟悉51单片机的硬件结构,能够较快地掌握Keil C51的编程应用。

Keil C51的基本数据类型如表3-1-1所示。根据51单片机的硬件特点,C51在标准C的基础上,扩展了4种数据类型(见表中最后4行),这4种数据类型不能使用指针对它们存取。下面对扩展的4种数据类型进行说明。

image.png

文件列表(部分)

名称 大小 修改日期
第1节-单片机的C语言.ppt204.94 KB2019-09-03
第2节-单片机驱动一个LED闪烁(项目1、2).ppt399.80 KB2019-09-03
第3节-数码管驱动(项目3).ppt453.32 KB2019-09-03
第4节-单片机系统的按键(项目4).ppt247.93 KB2019-09-03

立即下载

相关下载

[磁耦合谐振buckss仿真] 无线电能传输技术可有效地解决电源接入问题,使充电过程便捷、安全,解决了传统依靠电导体直接进行物理接触的电源直接接触式输电模式所带来的插电火花、积碳、不易维护、易产生磨损,特别是在特殊环境下用电存在的安全隐患等问题。
[QT学习日记篇01(1)-QT界面初探- *.pro文件详解] Qt基础课程完结项目,完成一款小游戏并封装:翻金币游戏,通过点击金币进行翻面,让所有金币为同一面就游戏通过进入下一关。 过程中会使用前面学到的 “信号和槽”,“Qt图片资源显示”,“Qt播放音频”,“Qt绘图函数”,“Qt消息控件”等等知识。是一次前面所学知识的汇总。
[MMC模块化多电平换流器常用调制策略的对比分析] 在Matlab/Simulink环境下分别搭建了桥臂数量为6和10的两种调制方法的仿真模型,分析了模块数量与调制方法对输出的正弦电压的影响。
[svpwm同步调制] 同步调制下,通过把载波的频率固定为参考波频率的整数倍,同时固定两者的相位关系。通过这种方法可以消除3的倍数次谐波,并且通过适合pwm波正负半周期对称(N载波比取奇数),消除偶次谐波,总体同步调制所含谐波只为6k+1也就是5 7 11 13次谐波等。
[避雷器comsol仿真] comsol实现避雷器的电,磁,热仿真计算模型
[FPGA车牌识别代码

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部